From: Daniel Jacobowitz Date: Tue, 13 Jan 2004 16:12:25 +0000 (+0000) Subject: Merge mainline to branch. GDB is broken until I update cp-names.y. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1232d0e08f9677e386722d9c15df26759a442530;p=thirdparty%2Fbinutils-gdb.git Merge mainline to branch. GDB is broken until I update cp-names.y. --- diff --git a/ChangeLog b/ChangeLog index 8b3aaec6b89..af149b1e1cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,32 @@ +2004-01-04 Nathanael Nerode + + * configure.in: Use ./config.cache, not config.cache. + * configure: Regenerate. + * Makefile.tpl: Special-casing not needed for GCC any more. + * Makefile.in: Regenerate. + + * configure.in: Don't share a cache file for host dirs. + * configure: Regenerate. + + * config-ml.in: Don't mess with the cache file. + +2004-01-03 Nathanael Nerode + + * Makefile.tpl: Make GCC use a separate config.cache. + * Makefile.in: Regenerate. + + PR bootstrap/11932, PR bootstrap/11933 + (I don't know if it will fix either of them, but it relates + to them.) + * configure.in: Don't use shared config.cache for target + directories. + * configure: Regenerate. + +2003-12-31 Roger Sayle + + * configure.in (ia64*-*-hpux*): Disable building java libraries. + * configure: Regenerated. + 2003-12-21 Bernardo Innocenti * configure.in (*-*-uclinux): Exclude newlib, libgloss and rda. diff --git a/Makefile.in b/Makefile.in index 8fe85ff369f..51d9dd4e0ce 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23572,6 +23572,9 @@ install-target-rda: installdirs # build modules. So GCC is a sort of hybrid. # gcc is the only module which uses GCC_FLAGS_TO_PASS. +# Don't use shared host config.cache, as it will confuse later +# directories; GCC wants slightly different values for some +# precious variables. *sigh* .PHONY: configure-gcc maybe-configure-gcc maybe-configure-gcc: configure-gcc: diff --git a/Makefile.tpl b/Makefile.tpl index 3b545c46095..7a7e3eb0403 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1069,6 +1069,9 @@ install-target-[+module+]: installdirs # build modules. So GCC is a sort of hybrid. # gcc is the only module which uses GCC_FLAGS_TO_PASS. +# Don't use shared host config.cache, as it will confuse later +# directories; GCC wants slightly different values for some +# precious variables. *sigh* .PHONY: configure-gcc maybe-configure-gcc maybe-configure-gcc: configure-gcc: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 96654666895..811fb8f3656 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,11401 +1,324 @@ -2003-12-19 Kazuhiro Inaoka - - Adfd m32r-linux and PIC support. Add new ABI that uses RELA. - * config.bfd (m32r*-*-linux*, m32r*le-*-linux*, m32r*le-*-*): Added. - * configure.in (bfd_elf32_m32rlin_vec, bfd_elf32_m32rlelin_vec, - bfd_elf32_m32rle_vec): Added - * configure: Regenerated. - * elf32-m32r.c (m32r_info_to_howto, m32r_elf_adjust_dynamic_symbol, - m32r_elf_size_dynamic_sections, m32r_elf_create_dynamic_sections, - m32r_elf_finish_dynamic_sections, m32r_elf_finish_dynamic_symbol, - allocate_dynrelocs, readonly_dynrelocs, m32r_elf_reloc_type_class, - m32r_elf_fake_sections): Added. - (m32r_elf_howto_table): Added - R_M32R_16_RELA, R_M32R_32_RELA, R_M32R_24_RELA, - R_M32R_10_PCREL_RELA, R_M32R_18_PCREL_RELA, - R_M32R_26_PCREL_RELA, R_M32R_HI16_ULO_RELA, - R_M32R_HI16_SLO_RELA, R_M32R_LO16_RELA, - R_M32R_SDA16_RELA, R_M32R_RELA_GNU_VTINHERIT, - R_M32R_RELA_GNU_VTENTRY, R_M32R_GOT24, - R_M32R_26_PLTREL, R_M32R_COPY, R_M32R_GLOB_DAT, - R_M32R_JMP_SLOT, R_M32R_RELATIVE, R_M32R_GOTOFF, - R_M32R_GOTPC24, R_M32R_GOT16_HI_ULO, - R_M32R_GOT16_HI_SLO, R_M32R_GOT16_LO, - R_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_SLO, - R_M32R_GOTPC_LO. - (m32r_elf_relocate_section, m32r_elf_check_relocs): Changed for - New ABI. - * reloc.c: Add BFD_RELOC_M32R_GOT24, BFD_RELOC_M32R_26_PLTREL, - BFD_RELOC_M32R_COPY, BFD_RELOC_M32R_GLOB_DAT, - BFD_RELOC_M32R_JMP_SLOT, BFD_RELOC_M32R_RELATIVE, - BFD_RELOC_M32R_GOTOFF, BFD_RELOC_M32R_GOTPC24, - BFD_RELOC_M32R_GOT16_HI_ULO, BFD_RELOC_M32R_GOT16_HI_SLO, - BFD_RELOC_M32R_GOT16_LO, BFD_RELOC_M32R_GOTPC_HI_ULO, - BFD_RELOC_M32R_GOTPC_HI_SLO, BFD_RELOC_M32R_GOTPC_LO. - * targets.c (bfd_elf32_m32rlin_vec, bfd_elf32_m32rlelin_vec, - bfd_elf32_m32rle_vec): Added. - * bfd-in2.h: Regenerated. - * libbfd.h: Regenerated. - -2003-12-19 Danny Smith - - * coffcode.h (styp_to_sec_flags): Don't treat .reloc section - as SEC_DEBUGGING. - -2003-12-18 Richard Sandiford - - * elf32-mips.c (elf_mips_howto_table_rel): Replace all uses of - mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. Use - _bfd_mips_elf_hi16_reloc for R_MIPS_HI16 and R_MIPS_GNU_REL_HI16, - _bfd_mips_elf_lo16_reloc for R_MIPS_LO16 and R_MIPS_GNU_REL_LO16, - and _bfd_mips_elf_got16_reloc for R_MIPS_GOT16. Change rightshift - to 16 for R_MIPS_HI16 and R_MIPS_GNU_REL_HI16. - (mips_elf_generic_reloc, struct mips_hi16, mips_elf_hi16_reloc) - (mips_elf_lo16_reloc, mips_elf_got16_reloc): Delete. - (_bfd_mips_elf32_gprel16_reloc): Remove special case. - (mips_elf_gprel32_reloc, mips32_64bit_reloc): Likewise. - - * elf64-mips.c (mips_elf64_howto_table_rel): Replace all uses of - mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. Use - _bfd_mips_elf_hi16_reloc for R_MIPS_HI16, _bfd_mips_elf_lo16_reloc - for R_MIPS_LO16 and _bfd_mips_elf_got16_reloc for R_MIPS_GOT16. - Change R_MIPS_HI16's rightshift to 16. - (mips_elf64_howto_table_rela): Replace all uses of - mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. - Use _bfd_mips_elf_generic_reloc for R_MIPS_GOT16 as well. - (mips_elf64_hi16_reloc, mips_elf64_got16_reloc): Delete. - (mips_elf64_shift6_reloc): Remove special case. Use - _bfd_mips_elf_generic_reloc instead of returning bfd_reloc_continue. - - * elfn32-mips.c (prev_reloc_section): Delete. - (prev_reloc_address, prev_reloc_addend): Delete. - (elf_mips_howto_table_rel, elf_mips_howto_table_rela): As for - elf64-mips.c - (GET_RELOC_ADDEND, SET_RELOC_ADDEND): Delete. - (mips_elf_generic_reloc, struct mips_hi16, mips_elf_hi16_reloc) - (mips_elf_lo16_reloc, mips_elf_got16_reloc): Delete. - (mips_elf_gprel16_reloc): Delete use of GET_RELOC_ADDEND. - (mips_elf_literal_reloc, mips_elf_gprel32_reloc): Likewise. - (mips16_jump_reloc, mips16_gprel_reloc): Likewise. - (mips_elf_shift6_reloc): Likewise. Delete use of SET_RELOC_ADDEND. - - * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Use - _bfd_relocate_contents to install an in-place addend. - (mips_hi16): New structure. - (mips_hi16_list): Moved from elf32-mips.c. - (_bfd_mips_elf_hi16_reloc, _bfd_mips_elf_got16_reloc): New functions. - (_bfd_mips_elf_lo16_reloc, _bfd_mips_elf_generic_reloc): New functions. - (mips_elf_calculate_relocation): Assume addend is unshifted. - (_bfd_mips_elf_relocate_section): Don't apply the howto rightshift - on top of the usual high-part shift. Don't shift the addend right - before calling mips_elf_calculate_relocation. - - * elfxx-mips.h (_bfd_mips_elf_hi16_reloc): Declare. - (_bfd_mips_elf_got16_reloc, _bfd_mips_elf_lo16_reloc): Declare. - (_bfd_mips_elf_generic_reloc): Declare. - -2003-12-16 Eric Youngdale - Nick Clifton - - * peicode.h (pe_ILF_build_a_bfd): Only skip one instance of each - prefix character, if they are present. - -2003-12-15 Dmitry Semyonov - Nick Clifton - - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Ensure that correct flags - are set on known section types. - -2003-12-12 Nick Clifton - - * po/ro.po: Updated translation. - -2003-12-12 Alan Modra - - * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Check for - NULL dyn_h. - -2003-12-11 Nick Clifton - - * elf.c (INCLUDE_SECTION_IN_SEGMENT): Skip PT_GNU_STACK segments. - -2003-12-08 Richard Sandiford - - * elfxx-mips.h, elfxx-mips.c, cpu-mips.c: Convert prototypes. - Remove casts that were only needed for K&R compatibility. - -2003-12-08 Alan Modra - - * elf-bfd.h (struct elf_backend_data): Remove "bfd *" and add - "elflink_hash_entry *" param to elf_backend_link_output_symbol_hook. - Add "elflink_hash_entry *" param to elf_backend_output_arch_syms. - * elflink.h (elf_link_output_sym): Add "elflink_hash_entry *" param, - and pass to output_symbol_hook. - (elf_bfd_final_link): Adjust elf_link_output_sym calls. - (elf_link_output_extsym): Likewise. - (elf_link_input_bfd): Likewise. - * elf32-sh64.c (sh64_elf_link_output_symbol_hook): Adjust. - * elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise. - * elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise. - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise. - * elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise. - * elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise. - * elf64-sparc.c (sparc64_elf_output_arch_syms): Likewise. - * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise. - Validate dynh->h against h. - * elf64-ppc.c (struct ppc_link_hash_entry): Add adjust_done bitfield. - (link_hash_newfunc): Init it. - (adjust_opd_syms): New function. - (ppc64_elf_edit_opd): Set adjust_done when global .opd sym adjusted. - Set opd.adjust for all .opd relocs. Call adjust_opd_syms. - (ppc64_elf_tls_optimize): Adjust possible .opd sym values here. - (ppc64_elf_relocate_section): Also adjust syms not a multiple of 24. - (ppc64_elf_output_symbol_hook): New function. - (elf_backend_link_output_symbol_hook): Define. - -2003-12-07 Richard Sandiford - - * elf32-mips.c, elfn32-mips.c, elf64-mips.c: Convert prototypes. - Remove casts that were only needed for K&R compatibility. - -2003-12-05 Dmitry Semyonov - - * coff-arm.c (aoutarm_std_reloc_howto [ARM_WINCE]): Set - partial_inplace for these relocs to FALSE for comptability with - the MS linker. - Remap ARM_26D relocation from 5 to 0. This fixes "bad fixup" error - generated by MS linker, and brings the relocation in line the MS - PE documentation. - -2003-12-04 H.J. Lu - - * elf32-ppc.c (ppc_elf_relax_section): Don't check relax_finalizing. - -2003-12-04 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_relax_section): Use the - need_relax_finalize field in link_info instead of - relax_finalizing to check if the relax finalize pass is being - done. - -2003-12-04 Dmitry Semyonov - - * coff-arm.c (coff_arm_relocate_section, bfd_arm_process_before_allocation): - Change ARM26* to ARM_26* in comments to match definitions. - (coff_arm_adjust_symndx): Replace hard-coded constants with - appropriate definitions (ARM_26*). - -2003-12-04 Alan Modra - - * coff-i860.c (coff_i860_reloc_nyi): Return bfd_reloc_not_supported. - * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Warning fixes. - (mn10300_elf_relax_section): Likewise. - * nlm32-alpha.c (ONES): Define. - (nlm32_alpha_howto_table): Use it to avoid warnings. - -2003-12-04 Alan Modra - - * elf32-i386.c (elf_i386_object_p): Delete. - (elf_backend_object_p): Don't define. - * elf32-s390.c (elf_s390_object_p): No need to alloc tdata here. - * elf32-sh.c (sh_elf_object_p): Likewise. - * elf32-sparc.c (elf32_sparc_object_p): Likewise. - * elf64-alpha.c (elf64_alpha_object_p): Likewise. - * elf64-s390.c (elf_s390_object_p): Likewise. - * elf64-x86-64.c (elf64_x86_64_elf_object_p): Likewise. - -2003-12-03 Kazuhiro Inaoka - - * archures.c (bfd_mach_m32r2): Add new machine type. - * bfd-in2.h: Regenerate. - * cpu-m32r.c : Add new machine type. - * elf32-m32r.c (m32r_elf_object_p, m32r_elf_final_write_processing, - m32r_elf_merge_private_bfd_data): Add support for new machine - type. - -2003-12-03 Dave Airlie - - * config.bfd: Add vax-linux-gnu target. - * configure.in: Likewise. - * configure: Regenerate. - -2003-12-03 Alan Modra - - * ecoff.c (ecoff_link_add_archive_symbols): Update for renamed - bfd_link_hash_entry field "next" -> "und_next". - * linker.c (_bfd_link_hash_newfunc): Likewise. - (bfd_link_add_undef): Likewise. - (_bfd_generic_link_add_archive_symbols): Likewise. - (_bfd_generic_link_add_one_symbol): Likewise. - * xcofflink.c (xcoff_link_add_symbols): Likewise. - -2003-12-02 Nick Clifton - - * configure.in (ALL_LINGUAS): Add ro. - * po/ro.po: New Romanian translation. - -2003-12-02 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-12-01 Dmitry Semyonov - - * coffcode.h (coff_compute_section_file_positions): Set page_size - to 1 instead of 0 in the case file alignment value is zero. - -2003-12-01 Kazu Hirata - - * coff-rs6000.c: Remove ARGSUSED and VARARGS. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * elf32-vax.c: Likewise. - * hash.c: Likewise. - * hppabsd-core.c: Likewise. - * hpux-core.c: Likewise. - * ihex.c: Likewise. - * netbsd-core.c: Likewise. - * osf-core.c: Likewise. - * pdp11.c: Likewise. - * ptrace-core.c: Likewise. - * sco5-core.c: Likewise. - * section.c: Likewise. - * sunos.c: Likewise. - * trad-core.c: Likewise. - -2003-12-01 Alan Modra - - * elf-bfd.h (is_elf_hash_table): Take hash tab rather than info arg. - * elf.c (_bfd_elf_merge_sections): Adjust to suit. - (_bfd_elf_link_just_syms): Likewise. - (bfd_elf_get_needed_list): Likewise. - (bfd_elf_get_runpath_list): Likewise. - (_bfd_elf_link_hash_copy_indirect): Remove unneeded parens. - * elf32-hppa.c (elf32_hppa_setup_section_lists): Don't check hash tab - creator flavour. - (elf32_hppa_set_gp): Look up output sections rather than using htab. - * elf32-i960.c: Comment fix. Formatting. - * elf32-m32r.c (m32r_elf_add_symbol_hook): Use is_elf_hash_table - rather than testing creator flavour. - * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. - * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. - * elflink.c (_bfd_elf_link_create_dynamic_sections): Adjust for - is_elf_hash_table change. Remove redundant test. - (bfd_elf_record_link_assignment): Use is_elf_hash_table rather than - testing creator flavour. - (elf_link_record_local_dynamic_symbol): Adjust for is_elf_hash_table. - (_bfd_elf_fix_symbol_flags): Likewise. - (_bfd_elf_adjust_dynamic_symbol): Likewise. - * elflink.h (elf_link_add_object_symbols): Likewise. Remove redundant - checks. Use is_elf_hash_table rather than testing creator flavour. - Use hash_table throughout in place of info->hash. - (elf_add_dynamic_entry): Adjust for is_elf_hash_table change. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. Remove redundant - check. - (elf_bfd_final_link): Adjust for is_elf_hash_table change. - (elf_link_check_versioned_symbol): Use is_elf_hash_table rather than - testing creator flavour. - (elf_gc_sections): Add is_elf_hash_table check. - (elf_gc_common_finalize_got_offsets): Likewise. - (elf_bfd_discard_info): Adjust for is_elf_hash_table change. Remove - redundant check. - * elfxx-ia64.c (elfNN_ia64_relax_section): Use is_elf_hash_table - rather than testing creator flavour. - -2003-11-28 Christian Groessler - - * cpu-z8k.c: Convert to ISO C90. - * coff-z8k.c: Likewise. - -2003-11-27 Alexandre Oliva - - * elf-bfd.h (elf_backend_data::elf_backend_modify_segment_map): - Add link info argument. - * elf32-i370.c (elf_backend_modify_segment_map): Likewise. - * elf32-ppc.c (ppc_elf_modify_segment_map): Likewise. - * elf32-xtensa.c (elf_xtensa_modify_segment_map): Likewise. - * elf64-hppa.c (elf64_hppa_modify_segment_map): Likewise. - * elfxx-ia64.c (elfNN_ia64_modify_segment_map): Likewise. - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Likewise. - * elfxx-mips.h (_bfd_mips_elf_modify_segment_map): Likewise. - * elf.c (assign_file_positions_except_relocs, - assign_file_positions_for_segments): Likewise. Adjust calls. - -2003-11-27 Mark Kettenis - - * elf.c (elfcore_grok_netbsd_procinfo): Make a pseudosection out - of the note. - -2003-11-26 Daniel Jacobowitz - Richard Sandiford - - * elfxx-mips.c (mips_elf_set_global_got_offset): Don't set no_fn_stub. - (mips_elf_set_no_stub): New function. - (mips_elf_multi_got): Call it. - (_bfd_mips_elf_finish_dynamic_symbol): If a relocation is needed for - a secondary GOT entry, create an R_MIPS_32 or R_MIPS_64 relocation and - use mips_elf_create_dynamic_relocation to deal with any compatibility - issues. Store the adjusted addend in the GOT slot. - -2003-11-25 Mattias EngdegÄrd - - * stabs.c (_bfd_link_section_stabs): Skip N_EXCL stabs when - procesing N_BINCL stabs. - -2003-11-25 Alan Modra - - * elf64-ppc.c (ppc_type_of_stub): Disallow stubs other than - ppc_stub_plt_call to symbols defined in shared libs. - -2003-11-22 Jakub Jelinek - - * elf-bfd.h (ELF_LINK_POINTER_EQUALITY_NEEDED): Define new flag. - * elf.c (_bfd_elf_link_hash_copy_indirect): Copy it. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - (elf_i386_check_relocs): Set it. - (elf_i386_finish_dynamic_symbol): If it is not set, - clear st_value of SHN_UNDEF symbol. - -2003-11-20 Jim Blandy - - * cpu-powerpc.c (powerpc_compatible): Any ISA in the PowerPC - family is a superset of . - -2003-11-20 Martin Schwidefsky - - * elf32-s390.c (elf_s390_relocate_section): Don't recalculate symbol - section for reloc output and subtract the output section's address - from the addend when converting a relocation into one against a - section symbol. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - -2003-11-18 James E Wilson - - * elfxx-ia64.c (get_fptr): For fptr_rel, use dynobj not abfd. - (elfNN_ia64_size_dynamic_sections): When stripping sections, check - for ia64_info->rel_fptr_sec. - -2003-11-18 Alan Modra - - * elf64-ppc.c (toc_adjusting_stub_needed): Exit early if section - size is zero. - -2003-11-17 Daniel Jacobowitz - - * elf.c (_bfd_elf_link_hash_copy_indirect): Copy - ELF_LINK_HASH_NEEDS_PLT. Fix formatting. - * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Likewise. - * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf32-sh.c (sh_elf_copy_indirect_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. - * elf32-xtensa.c (elf_xtensa_copy_indirect_symbol): Remove. - (elf_backend_copy_indirect_symbol): Don't define. - -2003-11-14 Daniel Jacobowitz - - * elfxx-mips.c (mips_elf_merge_gots): Weaken assert for local - GOT entries. - -2003-11-13 Martin Schwidefsky - - * elf32-s390.c (elf_s390_relocate_section): Only convert R_390_32 - to R_390_RELATIVE. Convert the other relocations against local - symbols to relocations against the start of the section. - * elf64-s390.c (elf_s390_relocate_section): Only convert R_390_64 - to R_390_RELATIVE. Convert the other relocations against local - symbols to relocations against the start of the section. - -2003-11-11 Nick Clifton - - * elf-m10300.c (bfd_mn10300_elf_size_dynamic_sections): Use - info->executable not info->shared to decide if a .interp section - should be present. - * elf32-arm.h (elf32_arm_size_dynamic_sections): Likewise. - * elf32-cris.c (elf_cris_size_dynamic_sections): Likewise. - * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. - * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. - * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. - * elf32-vax.c (elf_vax_size_dynamic_sections): Likewise. - * elf32-xtensa.c (elf_xtensa_size_dynamic_sections): Likewise. - * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. - * elfxx-mips.c (_bfd_mips_size_dynamic_sections): Likewise. - * elflink.h (size_dynamic_sections): Likewise. - -2003-11-10 Jonathan Wilson - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Swap out tls pointer. - (_bfd_XXi_final_link_postscript): Look for __tks_used symbol. If - found initialise the tls data directory entry. - -2003-11-07 Alan Modra - - * elf32-ppc.c (ppc_elf_install_value): Delete. - (shared_stub_entry, stub_entry): Make them arrays of ints. - Remove initial branch. - (ppc_elf_relax_section): Write one branch around all trampolines - instead. Correct bogus R_PPC_PLTREL24 handling. Correct - branch range check. Only use shared_stub_entry when shared. - Test that branches can reach stubs. Write trampolines out at - end so that just one realloc is used. Handle little-endian - mode. Move relevant code from ppc_elf_install_value to here. - (ppc_elf_relocate_section): Move code handling RELAX32 from - ppc_elf_install_value to here. - -2003-11-06 Alan Modra - - * elf32-ppc.c (ppc_elf_howto_raw); Add entry for R_PPC_RELAX32PC. - (ppc_elf_install_value): Handle R_PPC_RELAX32PC. Merge duplicate - cases. - (shared_stub_entry): Correct opcode. - (ppc_elf_relax_section): Generate R_PPC_RELAX32PC relocs. - (ppc_elf_relocate_section): Handle them. - -2003-11-05 Alan Modra - - * elf.c (_bfd_elf_rela_local_sym): Accept asection **, and return - updated section in case of merged section. - * elf-bfd.h (_bfd_elf_rela_local_sym): Update declaration. - * elf-hppa.h (elf_hppa_relocate_section): Adjust call. - * elf-m10200.c (mn10200_elf_relocate_section): Likewise. - * elf-m10300.c (mn10300_elf_relocate_section): Likewise. - * elf32-arm.h (elf32_arm_relocate_section): Likewise. - * elf32-avr.c (elf32_avr_relocate_section): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-fr30.c (fr30_elf_relocate_section): Likewise. - * elf32-frv.c (elf32_frv_relocate_section): Likewise. - * elf32-h8300.c (elf32_h8_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-i860.c (elf32_i860_relocate_section): Likewise. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mcore.c (mcore_elf_relocate_section): Likewise. - * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. - * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-v850.c (v850_elf_relocate_section) Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. - * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-mmix.c (mmix_elf_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - - * elf32-cris.c (cris_elf_relocate_section): Don't recalculate symbol - section for reloc output. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - - * elf32-ppc.c (ppc_elf_relocate_section): Don't recalculate everything - for R_PPC_RELAX32 reloc. Don't bother checking ppc_elf_install_value - return value. - * elf64-ppc.c (ppc64_elf_relocate_section ): Sanity check - sec->id. - -2003-11-05 Alan Modra - - * elf32-d10v.c (extract_rel_addend, insert_rel_addend): New functions. - (elf32_d10v_relocate_section): Use them to handle -r reloc - adjustments, and in place of _bfd_elf_rela_local_sym. - - * cpu-iq2000.c (arch_info_struct): Warning fix. - -2003-11-05 Alan Modra - - * elf32-hppa.c (ELIMINATE_COPY_RELOCS): Define. - (elf32_hppa_copy_indirect_symbol): Don't copy NON_GOT_REF on - weakdefs. - (elf32_hppa_check_relocs): Use ELIMINATE_COPY_RELOCS. - (elf32_hppa_adjust_dynamic_symbol): Likewise. Copy weakdef - NON_GOT_REF. - (allocate_dynrelocs): Use ELIMINATE_COPY_RELOCS and - SYMBOL_CALLS_LOCAL. Discard relocs for undef weak syms with - non-default visibility. - (elf32_hppa_relocate_section): Use ELIMINATE_COPY_RELOCS and - SYMBOL_CALLS_LOCAL. - -2003-11-04 Alan Modra - - * aout-target.h, aoutf1.h, bfdio.c, bfdwin.c: Update copyright date. - * coff-apollo.c, coff-sparc.c, coff-w65.c, coff-we32k.c: Ditto. - * coff-z8k.c, coffgen.c, cpu-frv.c, cpu-h8500.c, cpu-hppa.c: Ditto. - * cpu-ia64-opc.c, cpu-m10300.c, cpu-mips.c, cpu-msp430.c: Ditto. - * cpu-rs6000.c, cpu-z8k.c, efi-app-ia32.c, elf32-am33lin.c: Ditto. - * gen-aout.c, hash.c, hp300hpux.c, init.c, mach-o.c: Ditto. - * nlm-target.h, nlm.c, som.h, stabs.c, sysdep.h, xsym.h: Ditto. - - * elf-m10300.c (_bfd_mn10300_elf_create_got_section): Fix - "dereferencing type-punned pointer" warnings. - - * aout-adobe.c (aout_adobe_set_section_contents): Constify location. - * aoutx.h (NAME(aout,set_section_contents)): Ditto. - * bfd-in2.h: Regenerate. - * binary.c (binary_set_section_contents): Ditto. - * bout.c (b_out_set_section_contents): Ditto. - * coff-tic54x.c (tic54x_set_section_contents): Ditto. - * coffcode.h (coff_set_section_contents): Ditto. - * ecoff.c (_bfd_ecoff_set_section_contents): Ditto. - * elf-bfd.h (_bfd_elf_set_section_contents): Ditto. - * elf.c (_bfd_elf_set_section_contents): Ditto. - * elfxx-mips.c (_bfd_mips_elf_set_section_contents): Ditto. - * elfxx-mips.h (_bfd_mips_elf_set_section_contents): Ditto. - * i386msdos.c (msdos_set_section_contents): Ditto. - * ieee.c (ieee_set_section_contents): Ditto. - * ihex.c (ihex_set_section_contents): Ditto. - * libaout.h (NAME(aout,set_section_contents)): Ditto. - * libbfd-in.h (_bfd_nowrite_set_section_contents): Ditto. - (_bfd_generic_set_section_contents): Ditto. - * libbfd.h: Regenerate. - * libbfd.c (_bfd_generic_set_section_contents): Ditto. - * libecoff.h (_bfd_ecoff_set_section_contents): Ditto. - * libnlm.h (nlmNAME(set_section_contents)): Ditto. - (struct nlm_backend_data ): Ditto. - * mmo.c (mmo_set_section_contents): Ditto. - * nlm32-alpha.c (nlm_alpha_mangle_relocs): Ditto. - * nlm32-i386.c (nlm_i386_mangle_relocs): Ditto. - * nlm32-ppc.c (nlm_powerpc_mangle_relocs): Ditto. - * nlm32-sparc.c (nlm_sparc_mangle_relocs): Ditto. - * nlmcode.h (nlm_set_section_contents): Ditto. - * oasys.c (oasys_set_section_contents): Ditto. - * pdp11.c (NAME(aout,set_section_contents)): Ditto. - * ppcboot.c (ppcboot_set_section_contents): Ditto. - * srec.c (srec_set_section_contents): Ditto. - * targets.c (BFD_JUMP_TABLE_WRITE <_bfd_set_section_contents>): Ditto. - * tekhex.c (tekhex_set_section_contents): Ditto. - (move_section_contents): Ditto. - * versados.c (versados_set_section_contents): Ditto. - * vms-misc.c (_bfd_save_vms_section): Ditto. - * vms.c (vms_set_section_contents): Ditto. - * vms.h (_bfd_save_vms_section): Ditto. - -2003-11-04 Alan Modra - - * elf64-ppc.c (ppc_size_one_stub): Size relbrlt. Accept info arg - rather than htab. - (ppc64_elf_size_stubs): Adjust ppc_size_one_stub traversal. Zero - relbrlt size. - (ppc64_elf_build_stubs): Allocate space for relbrlt. - -2003-11-04 Alan Modra - - * bfd-in.h (_bfd_elf_tls_setup): Declare. - * bfd-in2.h: Regenerate. - * elf-bfd.h (struct elf_link_tls_segment): Delete. - (struct elf_link_hash_table): Add tls_sec and tls_size. - * elf.c (_bfd_elf_link_hash_table_init): Init tls_sec and tls_size. - * elflink.c (_bfd_elf_tls_setup): New function. - * elflink.h (struct elf_final_link_info): Remove first_tls_sec. - (elf_bfd_final_link): Don't set first_tls_sec here. Update code - saving tls segment info, round segment size up. - (elf_link_output_extsym): Adjust code using tls segment info. - (elf_link_input_bfd): Likewise. - * elf32-i386.c (dtpoff_base, tpoff): Likewise. - * elf32-s390.c (dtpoff_base, tpoff): Likewise. - * elf32-sh.c (dtpoff_base, tpoff): Likewise. - * elf32-sparc.c (dtpoff_base, tpoff): Likewise. - * elf64-s390.c (dtpoff_base, tpoff): Likewise. - * elf64-x86-64.c (dtpoff_base, tpoff): Likewise. - * elfxx-ia64.c (elfNN_ia64_tprel_base): Likewise. - (elfNN_ia64_dtprel_base): Likewise. - * elf64-alpha.c (alpha_get_dtprel_base): Likewise. - (alpha_get_tprel_base): Likewise. - (struct alpha_relax_info): Remove tls_segment. - (elf64_alpha_relax_got_load): Adjust invocation of - alpha_get_dtprel_base and alpha_get_tprel_base. - (elf64_alpha_relax_tls_get_addr): Likewise. - (elf64_alpha_relax_section): Likewise. - (elf64_alpha_relocate_section): Likewise. - (elf64_alpha_relax_find_tls_segment): Delete. - * elf32-ppc.c (struct ppc_elf_link_hash_table): Remove tls_sec. - (ppc_elf_tls_setup): Call _bfd_elf_tls_setup. Return section. - (ppc_elf_relocate_section): Adjust to use elf.tls_sec. - * elf32-ppc.h (ppc_elf_tls_setup): Update. - * elf64-ppc.c (struct ppc_link_hash_table): Remove tls_sec. - (ppc64_elf_tls_setup): Call _bfd_elf_tls_setup. Return section. - (ppc64_elf_tls_optimize): Adjust to use elf.tls_sec. - (ppc64_elf_relocate_section): Likewise. - * elf64-ppc.h (ppc64_elf_tls_setup): Update. - -2003-11-03 Daniel Jacobowitz - - * elf-bfd.h (struct elf_backend_data): Remove plt_header_size. - * elf-m10300.c (elf_backend_plt_header_size): Don't define. - * elf32-arm.h (elf_backend_plt_header_size): Don't define. - * elf32-cris.c (elf_backend_plt_header_size): Don't define. - * elf32-i386.c (elf_backend_plt_header_size): Don't define. - * elf32-mips.c (elf_backend_plt_header_size): Don't define. - * elf32-ppc.c (elf_backend_plt_header_size): Don't define. - * elf32-s390.c (elf_backend_plt_header_size): Don't define. - * elf32-sh.c (elf_backend_plt_header_size): Don't define. - * elf32-sparc.c (elf_backend_plt_header_size): Don't define. - * elf64-alpha.c (elf_backend_plt_header_size): Don't define. - * elf64-hppa.c (elf_backend_plt_header_size): Don't define. - * elf64-mips.c (elf_backend_plt_header_size): Don't define. - * elf64-ppc.c (elf_backend_plt_header_size): Don't define. - * elf64-s390.c (elf_backend_plt_header_size): Don't define. - * elf64-sh64.c (elf_backend_plt_header_size): Don't define. - * elf64-sparc.c (elf_backend_plt_header_size): Don't define. - * elf64-x86-64.c (elf_backend_plt_header_size): Don't define. - * elfn32-mips.c (elf_backend_plt_header_size): Don't define. - * elfxx-ia64.c (elf_backend_plt_header_size): Don't define. - * elfxx-target.h (elf_backend_plt_header_size): Don't define - or include in target initializer. - -2003-11-03 Andrew Cagney - - * section.c (bfd_set_section_contents): Make the "location" buffer - constant. - * bfd-in2.h: Re-generate. - -2003-10-30 Andrew Cagney - - * syms.c: Replace "struct symbol_cache_entry" with "struct - bfd_symbol". - * vms.h, targets.c, section.c, reloc.c, peicode.h: Ditto. - * mipsbsd.c, elf.c, linker.c, elf-bfd.h, ecoff.c: Ditto. - * cpu-z8k.c, cpu-ns32k.c, cpu-h8500.c, bfd.c, bfd-in.h: Ditto. - * bfd-in2.h: Re-generate. - -2003-10-30 Jakub Jelinek - - * elfxx-ia64.c: Include objalloc.h, hashtab.h. - (struct elfNN_ia64_local_hash_entry): Remove root. Add id and r_sym - fields. - (struct elfNN_ia64_local_hash_table): Remove. - (struct elfNN_ia64_link_hash_table): Change loc_hash_table's type - to htab_t. Add loc_hash_memory field. - (elfNN_ia64_local_hash_table_init, elfNN_ia64_new_loc_hash_entry): - Removed. - (elfNN_ia64_local_htab_hash, elfNN_ia64_local_htab_eq): New - functions. - (elfNN_ia64_hash_table_create): Use hashtab.h hashtable for - loc_hash_table. Initialize loc_hash_memory. - (elfNN_ia64_hash_table_free): New function. - (elfNN_ia64_local_hash_lookup): Remove. - (elfNN_ia64_local_dyn_sym_thunk): Change into htab_traverse - callback. - (elfNN_ia64_dyn_sym_traverse): Use htab_traverse. - (get_local_sym_hash): Use hashtab.h hashtable for loc_hash_table. - (bfd_elfNN_bfd_link_hash_table_free): Define. - -2003-10-30 Alan Modra - - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Modify versioned - symbol string in place. - -2003-10-30 Jim Blandy - - * cpu-rs6000.c (rs6000_compatible): Check the correct arch_info - object's mach field: all PowerPC machines are supersets of the - original rs6000, but not later rs6000 machines. - -2003-10-30 Alan Modra - - * dwarf2.c (struct attribute): Delete "unsnd", "snd" and "addr". - Add "val" and "sval" fields. - (DW_STRING, DW_UNSND, DW_BLOCK, DW_SND, DW_ADDR): Delete. - (read_attribute_value): Expand and adjust DW_* occurrences. - (scan_unit_for_functions, parse_comp_unit): Likewise. - -2003-10-30 Phil Edwards - - * config.bfd (arm-*-vxworks): Remove separate stanza; merge with - other common ELF triples. - (i[3-7]86-*-vxworks): Change to ELF format. - (mips*-*-windiss): New triple, add to common MIPS/ELF stanza. - (sh-*-vxworks): New stanza. - -2003-10-30 Lars Knoll - Michael Matz - Jakub Jelinek - Alan Modra - - * merge.c (struct sec_merge_sec_info): Update comment. - (struct sec_merge_hash_entry): Remove entsize. - (sec_merge_hash_lookup): Only adjust alignment when creating. - (sec_merge_emit): Remove register keyword. - (cmplengthentry, last4_eq, last_eq): Delete. - (strrevcmp, strrevcmp_align, is_suffix): New. - (merge_strings): Use them to implement fast suffix merging. - * elf-strtab.c (struct elf_strtab_hash_entry): Update comments. - Make "len" signed. - (_bfd_elf_strtab_add): Lose on >2G strings. - (_bfd_elf_strtab_emit): Don't emit strings with len < 0. - (cmplengthentry, last4_eq): Delete. - (strrevcmp, is_suffix): New. - (_bfd_elf_strtab_finalize): Rework to implement fast suffix merging. - -2003-10-29 Daniel Jacobowitz - - * elf32-arm.h (elf32_arm_final_link_relocate): Move check for - SEC_ALLOC. - -2003-10-29 Philip Blundell - - * elf32-arm.h (elf32_arm_plt0_entry, elf32_arm_plt_entry): New - code sequence. - (PLT_HEADER_SIZE): New. - (struct elf32_arm_pcrel_relocs_copied): Rename to ... - (struct elf32_arm_relocs_copied): ... this. Count both - pcrel and non-pcrel relocs. All uses updated. - (struct elf32_arm_link_hash_table): Add pointers to dynamic linker - sections and symbol/section mapping cache. - (create_got_section): New. - (elf32_arm_create_dynamic_sections): New. - (elf_backend_create_dynamic_sections): Use it. - (elf32_arm_final_link_relocate): Support garbage collection of relocs. - (elf32_arm_check_relocs): Likewise. - (elf32_arm_adjust_dynamic_symbol): Likewise. - (elf32_arm_copy_indirect_symbol): New. - (elf32_arm_link_hash_table_create): Initialise new fields. - (elf32_arm_gc_sweep_hook): Implement. - (elf32_arm_discard_copies): Delete. - (elf32_arm_finish_dynamic_symbol): Use new PLT code. - (elf32_arm_finish_dynamic_sections): Likewise. - (elf_backend_can_refcount): Define. - (elf_backend_copy_indirect_symbol): Likewise. - (elf_backend_plt_header_size): Set to PLT_HEADER_SIZE. - -2003-10-29 Alan Modra - - * elf64-ppc.c (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Define. - (ppc64_elf_grok_prstatus, ppc64_elf_grok_psinfo): New functions. - - * elf.c (_bfd_elfcore_make_pseudosection): Allow multiple - sections with the same name. - (elfcore_grok_lwpstatus): Likewise. - (elfcore_grok_win32pstatus): Likewise. - (elfcore_grok_note): Likewise. - (elfcore_grok_nto_status): Likewise. - (elfcore_grok_nto_gregs): Likewise. - -2003-10-27 Daniel Jacobowitz - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic - objects. - -2003-10-14 Richard Sandiford - - * elfxx-mips.c (mips_elf_create_got_section): Initialize global_gotno. - -2003-10-24 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Look up - hash table for real symbols. - -2003-10-23 Michael Snyder - - * section.c (asection): Fix typo in comment. - -2003-10-23 Alan Modra - - * elf64-ppc.c (get_tls_mask): Add toc_symndx param, save toc - reloc symbol index to it. Don't allow gd syms in shared libs - to be optimized. - (ppc64_elf_tls_optimize): Adjust get_tls_mask call. - (ppc64_elf_size_stubs): Likewise. - (ppc64_elf_relocate_section): Check that tls relocs are only used - with tls syms, and similarly for non-tls. Correct symbol used - when optimizing toc tls code. - -2003-10-22 Nick Clifton - - * peicode.h (coff_swap_scnhdr_in): Only remove padding when - processing an executable. - -2003-10-22 Jakub Jelinek - - * elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals - field changes. - (_bfd_elf_link_assign_sym_version): Likewise. - * elflink.h (size_dynamic_sections): Likewise. - -2003-10-21 Alexandre Oliva , - Michael Snyder - - * archures.c (bfd_mach_sh4a, bfd_mach_sh4al_dsp, bfd_mach_sh4_nofpu, - bfd_mach_sh4a_nofpu): New machine types. - * bfd-in2.h: Rebuilt. - * cpu-sh.c (compatible): Remove unused function. - (SH4A_NEXT, SH4AL_DSP_NEXT, SH4_NOFPU_NEXT, SH4A_NOFPU_NEXT): New. - (arch_info_struct): Add sh4a, sh4al_dsp, sh4-nofpu and sh4a-nofpu. - * elf32-sh.c (sh_elf_set_mach_from_flags): Handle them. - -2003-10-21 Wouter van Heyst - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Correct text - describing mismatched formats involving the Maverick FP type. - -2003-10-21 Anil Paranjpe - - * binary.c (binary_object_p): Pass machine flag along with - architecture. - -2003-10-21 Thorsten Brehm - - * archures.c (bfd_default_scan): Add support for mcf528x. - * ieee.c (ieee_write_processor): Likewise. - -2003-10-21 Peter Barada - Bernardo Innocenti - - * archures.c: Add MCF528x (MCFv4) support. - * bfd/cpu-m68k.c (arch_info_struct): Likewise. - * bfd-in2.h: Regenerate. - -2003-10-20 Andrew Cagney - - * targets.c: Replace "struct sec" with "struct bfd_section" - * syms.c, sparclynx.c, section.c, opncls.c: Ditto. - * libcoff-in.h, libbfd-in.h, elfxx-target.h: Ditto. - * elf.c, coffgen.c, bfd.c, bfd-in.h, aoutf1.h: Ditto. - * aout-tic30.c, aout-target.h: - * bfd-in2.h, libcoff.h, libbfd.h: Regenerate. - -2003-10-18 Hans-Peter Nilsson - - Support linker relaxation of new R_MMIX_PUSHJ_STUBBABLE relocs. - * elf64-mmix.c (MAX_PUSHJ_STUB_SIZE): New macro. - (struct _mmix_elf_section_data): New member pjs. - (mmix_set_relaxable_size, mmix_elf_get_section_contents): New - functions. - (elf_mmix_howto_table): New entry for R_MMIX_PUSHJ_STUBBABLE. - (mmix_reloc_map): Ditto. - (mmix_elf_relocate_section): Handle R_MMIX_PUSHJ_STUBBABLE. - (mmix_final_link_relocate, mmix_elf_check_common_relocs): Ditto. - (mmix_elf_perform_relocation): Ditto. Don't mark parameter addr - unused. - (mmix_elf_check_relocs): Move early return to after - mmix_elf_check_common_relocs call. - (mmix_elf_symbol_processing): Fix cut-and-pasto in head comment. - (_bfd_mmix_before_linker_allocation): Rename from - _bfd_mmix_prepare_linker_allocated_gregs. All referers changed. - Arrange to set the initial relaxable size of sections. - (_bfd_mmix_after_linker_allocation): Rename from - _bfd_mmix_finalize_linker_allocated_gregs. - (mmix_elf_relax_section): Relax a R_MMIX_PUSHJ_STUBBABLE reloc. - (bfd_elf64_get_section_contents): Define. - * reloc.c: Add ENUMX for BFD_RELOC_MMIX_PUSHJ_STUBBABLE. - * libbfd.h, bfd-in2.h: Regenerate. - - * reloc.c (bfd_generic_relax_section): Default-set - section->_cooked_size here. - (bfd_generic_get_relocated_section_contents): Don't set it here. - Explain why. - -2003-10-17 John David Anglin - - * elf32-hppa.c (elf32_hppa_relocate_section): Skip relocation if - output section has been discarded. - -2003-10-17 Shrinivas Atre - - * coff-h8300.c (funcvec_hash_newfunc): Handle normal mode. - (h8300_reloc16_extra_cases): Likewise. - (h8300_bfd_link_add_symbols): Likewise. - -2003-10-17 Dhananjay Deshpande - - * cpu-h8300.c (h8300sxn_info_struct): Correct address size. - (h8300sn_info_struct): Likewise. - (h8300hn_info_struct): Likewise. - -2003-10-16 Pavel Roskin - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't calculate image size - for sections which lack size info. - -2003-10-17 Danny Smith - - * configure.host: Add __USE_MINGW_FSEEK to HDEFINES for - mingw32. - -2003-10-16 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also warn - undefined patterns with '*'. - -2003-10-16 H.J. Lu - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't - use the last CIE from a different section. - (_bfd_elf_write_section_eh_frame): Don't pad beyond the raw - size of the output section. - -2003-10-07 Roland McGrath - - * elf.c (_bfd_elf_make_section_from_phdr): Set alignment_power of - new section from p_align header field. - -2003-10-16 H.J. Lu - - * elf32-xtensa.c (xtensa_read_table_entries): The external size - of entry is 8 bytes. - -2003-10-15 Andrew Cagney - - * targets.c (BFD_JUMP_TABLE_SYMBOLS): Replace NAME##_get_symtab - with NAME##_canonicalize_symtab. - * libcoff-in.h (coff_canonicalize_symtab): Update. - * xsym.h (bfd_sym_canonicalize_symtab): Update. - * elf-bfd.h (_bfd_elf_canonicalize_symtab): Update. - * coffgen.c (coff_canonicalize_symtab): Update. - * libbfd-in.h (_bfd_nosymbols_canonicalize_symtab): Update. - * libnlm.h (nlmNAME(canonicalize_symtab)): Update. - * ieee.c (ieee_vec): Update comment. - * libecoff.h (_bfd_ecoff_canonicalize_symtab): Update. - * mmo.c (mmo_canonicalize_symtab): Update. - * nlm-target.h (nlm_canonicalize_symtab): Update. - * nlmcode.h (nlm_canonicalize_symtab): Update. - * i386msdos.c (msdos_canonicalize_symtab): Update. - * hp300hpux.c (MY (canonicalize_symtab)): Update. - * oasys.c (oasys_canonicalize_symtab): Update. - * som.c (som_canonicalize_symtab): Update. - * pef.c (bfd_pef_canonicalize_symtab): Update. - * nlmcode.h (nlm_canonicalize_symtab): Update. - * xsym.c (bfd_sym_canonicalize_symtab): Update. - * vms.c (vms_canonicalize_symtab): Update. - * versados.c (versados_canonicalize_symtab): Update. - * mach-o.c (bfd_mach_o_canonicalize_symtab): Update. - * ieee.c (ieee_canonicalize_symtab): Update. - * pdp11.c (NAME(aout,canonicalize_symtab)): Update. - * reloc.c: Update comment. - * libaout.h (NAME(aout,canonicalize_symtab)): Update. - * coff64-rs6000.c (aix5coff64_vec): Update. - * coff64-rs6000.c (bfd_xcoff_aix5_backend_data): Update. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update. - * aoutx.h (NAME(aout,canonicalize_symtab)): Update. - * elfxx-target.h (bfd_elfNN_canonicalize_symtab): Update. - * hp300hpux.c (MY_canonicalize_symtab): Update. - * ecoff.c (_bfd_ecoff_canonicalize_symtab): Update. - * aout-tic30.c (MY_canonicalize_symtab): Update. - * aout-target.h (MY_canonicalize_symtab): Update. - * ppcboot.c (ppcboot_canonicalize_symtab): Update. - * elf.c (_bfd_elf_canonicalize_symtab): Update. - * elfcode.h (elf_canonicalize_symtab): Update. - * ihex.c (ihex_canonicalize_symtab): Update. - * tekhex.c (tekhex_canonicalize_symtab): Update. - * binary.c (binary_canonicalize_symtab): Update. - * srec.c (srec_canonicalize_symtab): Update. - -2003-10-15 Kazu Hirata - - * elf32-h8300.c (elf_reloc_map): Fix a comment typo. - -2003-10-15 Kaz Kojima - - * elf32-sh.c (sh_elf_relocate_section): Handle R_SH_IMM_*_PCREL - relocations. - (sh_elf_check_relocs): Likewise. - - * elf32-sh64.c (elf_backend_merge_symbol_attribute): Define. - (sh64_elf_merge_symbol_attribute): New. - * elf64-sh64.c (elf_backend_merge_symbol_attribute): Define. - (sh64_elf64_merge_symbol_attribute): New. - -2003-10-14 Kaz Kojima - - * elf-bfd.h (struct elf_backend_data): New function pointer member - elf_backend_merge_symbol_attribute. - * elflink.h (elf_link_add_object_symbols): Adjust call to - elf_backend_merge_symbol_attribute if the backend defined it. - * elfxx-target.h (elf_backend_merge_symbol_attribute): New macro. - (elfNN_bed): Add that to the initializer. - -2003-10-14 Bob Wilson - - * elf32-xtensa.c (get_is_linkonce_section): Delete. - (xtensa_is_property_section, xtensa_is_littable_section): Use - XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Do not recognize - linkonce sections containing ".xt.insn" and ".xt.lit" substrings. - (xtensa_get_property_section_name): Check section name instead of - calling get_is_linkonce_section. Remove unused bfd parameter. Use - XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Never generate - linkonce section names by appending ".xt.insn" or ".xt.lit". - (xtensa_read_table_entries): Remove bfd argument in call to - xtensa_get_property_section_name. Free section name when done. - (elf_xtensa_combine_prop_entries): Free leaking table. - -2003-10-13 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Don't add - DT_MIPS_LIBLIST or DT_MIPS_CONFLICT entries. - (_bfd_mips_elf_finish_dynamic_symbol): Don't handle them. Don't - handle DT_MIPS_MSYM. Set DT_RELSZ based on the number of relocations - that were needed. - (_bfd_mips_elf_modify_segment_map): Fix placement of PT_MIPS_OPTIONS. - (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_UCODE. - -2003-10-13 H.J. Lu - - * bfd-in.h (bfd_elf32_ia64_after_parse): New prototype. - (bfd_elf64_ia64_after_parse): Likewise. - * bfd-in2.h: Regenerated. - - * elfxx-ia64.c (oor_ip): New. - (oor_branch_size): Likewise. - (bfd_elfNN_ia64_after_parse): Likewise. - (elfNN_ia64_relax_section): Use oor_ip if oor_branch_size - equals sizeof (oor_ip). - -2003-10-12 Kaz Kojima - - * elf64-sh64.c (sh_elf64_relocate_section): Tidy up for the - renumbering of some relocation numbers. - -2003-10-11 Alan Modra - - * coff-sh.c: Move definition of MAP and guard more code with - COFF_IMAGE_WITH_PE. - - * section.c (bfd_get_section_size_before_reloc): Ignore reloc_done. - * bfd-in2.h: Regenerate. - -2003-10-10 H.J. Lu - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Likewise. - -2003-10-09 H.J. Lu - - * cofflink.c: Include "safe-ctype.h". - (coff_link_add_symbols): Use ISDIGIT instead of isdigit. - -2003-10-08 Dave Brolley - On behalf of Michael Snyder - - * archures.c: Add FRV fr550 machine. - * cpu-frv.c: Ditto. - * elf32-frv.c: Ditto. - * bfd-in2.h: Regenerate. - -2003-10-08 Thiemo Seufer - - * elfxx-mips.c (STUB_MOVE,STUB_LI16): Fix stub code - for non-SGI N64 ABI. Improve code consitency. - -2003-10-07 Alexandre Oliva - - * elf32-frv.c (elf32_frv_howto_table): Set R_FRV_LABEL16's - rightshift to 2. - -2003-10-07 Nathan Sidwell - - * libbfd-in.h (_bfd_link_section_stabs): Add string offset - parameter. - * cofflink.c (coff_link_add_symbols): Deal with split stab - sections. - * elflink.h (elf_link_add_object_symbols): Deal with split stab - sections. - * stabs.c (_bfd_link_section_stabs): Add string offset parameter. - * libbfd.h: Regenerated. - - * coffcode.h (coff_set_alignment_hook): With PE_COFF reloc - overflow, set reloc start position to after the count - reloc. Subtract one from num relocs. Give error on 0xffff relocs - and no overflow. - * cofflink.c (_bfd_coff_final_link): Deal with PE_COFF reloc - overflow. - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Do overflow if >= - 0xffff. - -2003-10-06 H.J. Lu - - * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the - last CIE/FDE if needed. - -2003-10-06 Nick Clifton - - * targets.c (_bfd_target_vector): Include bfd_elf64_sparc_vec if - BFD64 is enabled. - -2003-10-06 Matt Thomas - - * config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case. - -2003-10-06 Robert Millan - - * configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet. - * config.bfd: Likewise. - * configure: Regenerate. - -2003-10-04 Christian Groessler - - * coff-z8k.c (extra_case): Fix displacement length check for R_JR - and R_CALLR. - -2003-10-04 Stephane Carrez - - * elf32-m68hc1x.c: Update to ISO C90; replace PTR with void*. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc12.c: Likewise. - * elf32-m68hc1x.h: Likewise. - -2003-10-04 Stephane Carrez - - * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Fix merge - of flags between HC12 and HCS12. - -2003-10-04 Bryce McKinlay - - * merge.c (_bfd_merge_sections): Set SEC_EXCLUDE flag on sections - which become empty after merging. - -2003-09-30 Jakub Jelinek - - * elfxx-ia64.c (ia64_howto_table): Fix size of R_IA64_TPREL64[LM]SB, - R_IA64_DTPREL{32,64}[LM]SB and R_IA64_DTPMOD64[LM]SB. - -2003-09-30 Chris Demetriou - - * archures.c (bfd_mach_mipsisa64r2): New define. - * bfd-in2.h: Regenerate. - * aoutx.h (NAME(aout,machine_type)): Handle bfd_mach_mipsisa64r2. - * cpu-mips.c (I_mipsisa64r2): New enum value. - (arch_info_struct): Add entry for I_mipsisa64r2. - * elfxx-mips.c (_bfd_elf_mips_mach) - (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_64R2. - (mips_set_isa_flags): Add bfd_mach_mipsisa64r2 case. - (mips_mach_extensions): Add entry for bfd_mach_mipsisa64r2. - -2003-09-29 H.J. Lu - - * elfxx-ia64.c (elfNN_hpux_backend_symbol_processing): New. - Handle SHN_IA_64_ANSI_COMMON. - (elf_backend_section_from_bfd_section): Defined. - -2003-09-26 H.J. Lu - - * elflink.c (elf_link_read_relocs_from_section): Add an argument - of a pointer to section. Check bad symbol index. - (_bfd_elf_link_read_relocs): Modify calls to - elf_link_read_relocs_from_section. - -2003-09-23 DJ Delorie - - * elf32-sh.c (sh_elf_howto_table): R_SH_SWITCH8, - R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY, - R_SH_LOOP_START,R_SH_LOOP_END moved to "reserved" spaces, - R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U, - R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U, - R_SH_PSHA, R_SH_PSHL added. - (sh_reloc_map): Add R_SH_DIR16 and R_SH_DIR8. - (sh_elf_relocate_section): Support new relocs. - -2003-09-23 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_relocate_section): Fix typo that clobbered - dynamic relocation offsets. - -2003-09-23 Alan Modra - - * simple.c (bfd_simple_get_relocated_section_contents): Free the - hash table using _bfd_generic_link_hash_table_free. - -2003-09-23 Alan Modra - - * elf-bfd.h (struct bfd_elf_special_section): Remove "suffix". Change - type of prefix_length and suffix_length to int. Rename "attributes" - to "attr". Comment. - (_bfd_elf_get_sec_type_attr): Update prototype. - * elf.c (get_special_section): Rewrite. - (_bfd_elf_get_sec_type_attr): Return struct rather than passing in - attr and type pointers. - (_bfd_elf_new_section_hook): Adjust for above. - (special_sections): Merge suffix with prefix. Set - prefix_length for all entries. Set suffix_length appropriately. - * elf32-m32r.c (m32r_elf_special_sections): Likewise. - * elf32-m68hc11.c (elf32_m68hc11_special_sections): Likewise. - * elf32-m68hc12.c (elf32_m68hc12_special_sections): Likewise. - * elf32-mcore.c (mcore_elf_special_sections): Likewise. - * elf32-sh64.c (sh64_elf_special_sections): Likewise. - * elf32-v850.c (v850_elf_special_sections): Likewise. - * elf32-xtensa.c (elf_xtensa_special_sections): Likewise. - * elf64-alpha.c (elf64_alpha_special_sections): Likewise. - * elf64-hppa.c (elf64_hppa_special_sections): Likewise. - * elf64-ppc.c (ppc64_elf_special_sections): Likewise. - * elf64-sh64.c (sh64_elf64_special_sections): Likewise. - * elfxx-ia64.c (elfNN_ia64_special_sections): Likewise. - * elfxx-mips.c (_bfd_mips_elf_special_sections): Likewise. - * elf32-ppc.c (ppc_elf_special_sections): Likewise. Fix .plt flags. - -2003-09-21 Daniel Jacobowitz - - * elf64-alpha.c (elf64_alpha_create_got_section): Initialize - ->got if the section already exists. - -2003-09-19 Nathan Sidwell - - * dwarf2.c (decode_line_info): Cope with an initially empty - filename table. - -2003-09-18 H.J. Lu - - * acinclude.m4: Include ../config/accross.m4. - * aclocal.m4: Regenerated. - - * configure.host (HOST_64BIT_TYPE): Remove if it is set to long - or long long. - (HOST_U_64BIT_TYPE): Remove if it is set to unsigned long long. - (host64): Remove if HOST_64BIT_TYPE is set to long. - - * configure.in (HOST_64BIT_TYPE): Set according to the size of - long and long long. - (HOST_U_64BIT_TYPE): Likewise. - (host64): Likewise. - * configure: Regenerated. - -2003-09-19 Alan Modra - - * elf.c (elfcore_write_note): Don't use sizeof(Elf_External_note) - since some ABIs round up the size of the struct. - -2003-09-18 H.J. Lu - - * elflink.c (_bfd_elf_merge_symbol): Allow type change if - the old symbol is undefined and the new symbol is defined. - -2003-09-18 Andreas Schwab - - * simple.c (bfd_simple_get_relocated_section_contents): Use - _bfd_generic_link_hash_table_create instead of - bfd_link_hash_table_create. - -2003-09-10 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_special_sections): Mark all sections - started with ".sbss" or "".sdata" as SHF_IA_64_SHORT. - -2003-09-10 John David Anglin - Randolph Chung - - * elf32-hppa.c (struct elf32_hppa_link_hash_entry, - hppa_link_hash_newfunc, hppa_build_one_stub, - elf32_hppa_adjust_dynamic_symbol, mark_PIC_calls, allocate_plt_static, - allocate_dynrelocs, elf32_hppa_size_dynamic_sections, - elf32_hppa_finish_dynamic_symbol): Remove pic_call field and all code - for generating import stubs for calls to statically linked PIC - functions. - (hppa_type_of_stub): Don't generate an import stub for calls to - statically linked pic functions. Generate import stubs for calls - in a shared object, to functions not in a regular file, and to - defined weak functions. Add new argument INFO. - (hppa_build_one_stub): Don't undef ADDIL_DP. - (elf32_hppa_check_relocs): Don't set SEC_HAS_GOT_REF flag. - (elf32_hppa_size_stubs): Pass info to hppa_type_of_stub. - (final_link_relocate): Change all DLTIND relocs to DPREL relocs in a - non-shared link. Convert instructions that use the the linkage table - pointer, or a facsimile thereof, to use the global data pointer when - the reloc has been changed. - -2003-09-08 Joel Brobecker - - * archures.c: Add new machine names for hppa. - * bfd-in2.h: Regenerate. - * cpu-hppa.c: Use the new machine names. - -2003-09-06 Stephane Carrez - - * elf32-m68hc1x.h (struct m68hc11_elf_link_hash_table): Remove - all_local_syms member. - * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Use bfd_elf_get_elf_syms - to get the local symbols. - -2003-09-06 Stephane Carrez - - * elf32-m68hc12.c (elf32_m68hc12_special_sections): New for hc11. - (elf_backend_special_sections): Define.a - - PR savannah/4950: - * elf32-m68hc11.c (elf32_m68hc11_special_sections): The .vectors - section is read-only. - -2003-09-04 Nick Clifton - - * archures.c (bfd_mach_v850e1): Define. - * bfd-in2.h: Regenerate. - * cpu-v850.h (scan): Accept bfd_mach_v850e1. - (arch_info_struct): Include an entry for bfd_mach_v850e1. - * elf32-v850.c (v850_elf_object_p): Accept E_V850E1_ARCH flag. - (v850_elf_final_write_processing): Accept bfd_mach_v850e1. - (v850_elf_print_private_bfd_data): Interpret E_V850E1_ARCH flag. - (v850_elf_merge_private_bfd_data): Allow v850e1 binaries to be - linked with v850e binaries. Mark the output as v850e. - -2003-09-03 Nick Clifton - - * cofflink.c (_bfd_coff_link_input_bfd): Do not skip section - symbols that are used in relocs. - -2003-08-30 Robert Millan - - * configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet. - * config.bfd: Likewise. - * configure: Regenerate. - -2003-08-31 Christian Groessler - - * elf32-i860.c (i860_howto_pc26_reloc): Finish relocation here - instead of returning bfd_reloc_continue. - -2003-08-31 Andreas Jaeger - - * merge.c: Update to ISO C90. - -2003-08-27 Ian Lance Taylor - - * configure.in: Check for strtoull. - * bfd.c (bfd_scan_vma): Use strtoull when available. - * configure, config.in: Regenerate. - - * configure.in: Define and substitute BFD_HOST_LONG_LONG. - * bfd-in.h: Define BFD_HOST_LONG_LONG. Test it rather than - __GNUC__ when deciding whether to use long long for - BFD_HOST_64_BIT. - * configure, Makefile.in, doc/Makefile.in, bfd-in2.h: Regenerate. - -2003-08-27 Christian Groessler - - * elf32-i860.c (i860_howto_pc26_reloc, i860_howto_pc16_reloc, - i860_howto_splitn_reloc, i860_howto_highadj_reloc): New - functions. - (elf32_i860_howto_table): Insert the new functions as - 'special_function's in the proper reloc type entries. - -2003-08-27 Richard Sandiford - - * elf32-frv.c (elf32_frv_relocate_section): Use - _bfd_elf_rela_local_sym. - -2003-08-26 Michael Snyder - - * cpu-frv.c: Remove unused enum. - -2003-08-25 Maciej W. Rozycki - - * reloc.c: Fix documentation for MIPS ELF relocations. - libbfd.h: Regenerate. - bfd-in2.h: Regenerate. - -2003-08-24 Jason Eckhardt - - * coff-i860.c (CALC_ADDEND): Define to be a no-op. - -2003-08-24 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and - shift by 2 before storing the relocated value. - -2003-08-23 Jason Eckhardt - - * coff-i860.c (coff_i860_reloc_nyi): New function. - (howto_table): Add entries for relocations PAIR, HIGHADJ, HIGH, - LOWn, SPLITn, and BRADDR. - (RTYPE2HOWTO): Check that the r_type is within the howto_table - before trying to access the entry. - (coff_i860_rtype_to_howto): Likewise. - (coff_i860_reloc_type_lookup): New function. - (i860_reloc_processing): New function. - (coff_bfd_reloc_type_lookup): Define macro. - (RELOC_PROCESSING): Define macro. - Minor formatting adjustments. - -2003-08-23 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Don't crash on NULL owner. - -2003-08-22 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_create_dynamic_sections): Align the - .got section at 8 bytes. - -2003-08-21 Nick Clifton - - * cofflink.c: Update to ISO C90 and tidy up formatting. - -2003-08-21 Randolph Chung - - * elf32-hppa.c (elf32_hppa_object_p): For elf32-hppa-linux, objects - can have OSABI=Linux or OSABI=SysV. Check for both. - * elf64-hppa.c (elf64_hppa_object_p): Likewise. - -2003-08-21 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2003-08-20 Richard Sandiford - - * elf64-mips.c (elf_backend_copy_indirect_symbol): Define. - -2003-08-20 Nick Clifton - - * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): New macro used to - replace some duplicated code in most elfxx-xxxx.c files. This - version uses the new fields in bfd_link_info. - - * elf-m10300.c (mn10300_elf_relocate_section): Use new macro. - * elf32-arm.h (elf32_arm_relocate_section): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - - * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols, - elf_hppa_remark_useless_dynamic_symbols, - elf_hppa_relocate_section): Use the new fields in - bfd_link_info structure. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_check_relocs): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise. - * elfxx-mips.c (mips_elf_calculate_relocation): Likewise. - - * elflink.h (elf_link_output_extsym): Fix test for reporting - undefined symbols in shared libraries. Remove redundant test - of shlib_undefined when reporting references to forced local - symbols. - -2003-08-18 Andreas Schwab - - * libpei.h (bfd_pe_executable_p): Also recognize efi-app - executables. - -2003-08-17 Hans-Peter Nilsson - - * simple.c (bfd_simple_get_relocated_section_contents): Move - reloc_done hack to before first bfd_section_size call. Change all - returns to use new wrapper macro RETURN, restoring sec->reloc_done. - -2003-08-16 Alan Modra - - * elf64-ppc.c: Don't include elf/ppc.h. - -2003-08-14 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Fix PT_DYNAMIC - code to work with 64-bit bfds. - -2003-08-14 Alan Modra - - * dep-in.sed: Remove libintl.h. - * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Unset LC_COLLATE. - (POTFILES.in): Remove target. - * Makefile.in: Regenerate. - -2003-08-12 Alan Modra - - * elf64-ppc.c (ppc64_elf_next_input_section): Update comment. - (ppc64_elf_relocate_section): For zero sym R_PPC64_TOC relocs, - use the function sym from the previous reloc. - -2003-08-11 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Make undefined symbols - fatal if -pie. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - (ppc_elf_relocate_section) : Issue fatal error - on undefined symbols if -pie. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - -2003-08-11 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o - branch to __libc_start_main. - -2003-08-08 Dmitry Diky - - * archures.c: Add xW42 and xE42 parts. Sort MPU list according to - gcc order. - * cpu-msp430.c: Likewise. - * elf32-msp430.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-08-07 Alan Modra - - * elfxx-target.h: Remove PTR cast. - * targets.c (bfd_target): Make backend_data const void *. - * elf-bfd.h: Constify all occurrences of struct elf_backend_data. - * elf-m10300.c: Likewise. - * elf.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * elfxx-mips.h: Likewise. - * elf.c (prep_headers): Remove useless check for null backend_data. - * bfd-in2.h: Regenerate. - - * elf-bfd.h: Remove PARAMS macro. Replace PTR with void *. - (NAME): Use ## rather than CONCAT4 macro. - * elfcode.h: Remove one remaining PARAMS macro. - * elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes. - * elf-strtab.c: Likewise. - * elf-hppa.h: Likewise. - * elf32-hppa.h: Likewise. - * elf32-hppa.c: Likewise. - (elf32_hppa_add_symbol_hook): Delete. - (elf_backend_add_symbol_hook): Don't define. - * libhppa.h: Convert to C90. Replace INLINE with inline. - -2003-08-06 Alan Modra - - * elf64-ppc.c (ppc_stub_name): Tweak names for better readability. - (ppc64_elf_adjust_dynamic_symbol): Allow copy relocs against - function descriptors, but warn. - (ppc_build_one_stub): Remove a couple of vars. Move code creating - stub syms so that we can avoid a stub sym if we already have a - plt sym. Do not redefine an existing symbol. - (ppc64_elf_build_stubs): When --emit-stub-syms, print a symbol for - glink. - -2003-08-06 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-08-06 Alan Modra - - * elflink.c (_bfd_elf_create_dynamic_sections): Mark .dynbss with - SEC_LINKER_CREATED. - -2003-08-05 Daniel Jacobowitz - - * elf32-arm.h (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf32_arm_final_link_relocate, elf32_arm_relocate_section): Use it. - -2003-08-03 Jeff Muizelaar - - * coffcode.h (coff_slurp_line_table): Return with a warning - message if the line number table could not be read. - -2003-08-04 Nick Clifton - - * elflink.h (elf_link_add_object_symbols): Prepend "warning: " - to messages produced for .gnu.warning.SYMBOL sections. - -2003-08-04 Alan Modra - - * elfcode.h: Convert to C90, remove unneeded casts and prototypes. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elf.c (sym_is_global): Remove INLINE. - (align_file_position): Replace INLINE with inline. - * elfcode.h (elf_swap_dyn_in, elf_swap_dyn_out): Remove INLINE. - (elf_file_p): Replace INLINE with inline. - -2003-08-02 Kaz Kojima - - * elf32-sh.c (sh_elf_check_relocs): Don't set DF_TEXTREL here. - -2003-08-01 H.J. Lu - - * elfxx-ia64.c (get_got): Align the .got section at 8 bytes. - -2003-08-01 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_finish_dynamic_symbol): Use - ElfNN_External_Rela instead of Elf64_External_Rela. - -2003-08-01 Nick Clifton - - * config.bfd: Add code to catch obsolete configurations and warn - about them unless --enable-obsolete is used. Use this to mark - vax-vms port as obsolete. - -2003-07-30 Alan Modra - - * elf32-ppc.c (ppc_elf_install_value): Tidy. - (ppc_elf_relax_section): Remove dead code. Remove unnecessary casts. - Formatting. - * elfxx-target.h: Remove PARAMS macro. Formatting. - -2003-07-30 Alan Modra - - * elf.c (bfd_section_from_r_symndx): Test for SHN_UNDEF. - * elf64-ppc.c (get_fdh): New function, split out from - ppc64_elf_edit_opd. - (ppc64_elf_check_relocs): Use get_fdh. - (func_desc_adjust): Likewise. Tidy. - (ppc64_elf_edit_opd): Tighten reloc checks. Free local_syms on error - exit. Use get_fdh. Account for superfluous dynamic relocs. - (ppc64_elf_relocate_section): Warning fix. - -2003-07-30 Jason Eckhardt - - * coff-i860.c: Convert to ISO C90. Remove superflous prototypes. - -2003-07-30 Jason Eckhardt - - * elf32-i860.c: Convert to ISO C90. Remove superflous prototypes. - -2003-07-30 Randolph Chung - - * elf-hppa.h (elf_hppa_relocate_section): Look up dyn_h for undefweak. - * elf64-hppa.c (elf64_hppa_finalize_dlt): Check h->root.type. - -2003-07-30 Alan Modra - - * elf.c: Convert to C90, remove unnecessary prototypes and casts. - Replace PTR with void *. Formatting. - (_bfd_elf_assign_file_position_for_section): Remove INLINE. - (make_mapping): Likewise. - -2003-07-29 Alan Modra - - * elf64-ppc.c (func_desc_adjust): Give linker created function - descriptor symbols a size and type. - (ppc64_elf_relocate_section): Correct lq insn test. - -2003-07-28 Eric Christopher - - * elf32-ppc.c (R_PPC_RELAX32): New relocation. - (ppc_elf_install_value): New function. - (ppc_elf_sort_rela): Remove. - (ppc_elf_relax_section): Rewrite. Remove old relaxation - and replace with out of range branch stubs. - (ppc_elf_relocate_section): Handle R_PPC_RELAX32. - -2003-07-29 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relax_section): Take symbol hash table - from input_bfd. - -2003-07-28 Alan Modra - - * elf.c (special_sections): Set attributes for .got and .plt. - -2003-07-27 Alan Modra - - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Ensure no copy relocs - on function descriptors. - (ELIMINATE_COPY_RELOCS): Expand comment. - (ppc64_elf_special_sections): Move. Don't include non-ppc64 sections. - Do include ".toc1". - -2003-07-25 H.J. Lu - - * elf.c (_bfd_elf_new_section_hook): Set the default section - type to SHT_NULL. - (elf_fake_sections): Set the section type based on asect->flags - if it is SHT_NULL. Don't abort on processor specific section - types. - -2003-07-25 H.J. Lu - - * bfd-in2.h: Regenerated. - -2003-07-25 H.J. Lu - - * elf-bfd.h (bfd_elf_special_section): New. - (elf_backend_data): Add special_sections, a pointer to - bfd_elf_special_section. - (elf_section_type). New. - (elf_section_flags): New. - (_bfd_elf_get_sec_type_attr): New. - - * elf.c (_bfd_elf_make_section_from_shdr): Always use the - real section type/flags. - (special_sections): New. - (get_special_section): New. - (_bfd_elf_get_sec_type_attr): New. - (_bfd_elf_new_section_hook): Check special_section to set - elf_section_type and elf_section_flags. - (elf_fake_sections): Don't use section name to set ELF section - data. - - * elf32-m32r.c (m32r_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-m68hc11.c (elf32_m68hc11_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-mcore.c (mcore_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-ppc.c (ppc_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-sh64.c (sh64_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-v850.c (v850_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-xtensa.c (elf_xtensa_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-alpha.c (elf64_alpha_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-hppa.c (elf64_hppa_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-ppc.c (ppc64_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-sh64.c (sh64_elf64_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-ia64.c (elfNN_ia64_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-mips.c (_bfd_mips_elf_special_sections): New. - - * elfxx-mips.h (_bfd_mips_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-target.h (elf_backend_special_sections): New. Default - to NULL. - (elfNN_bed): Initialize special_sections. - - * section.c (bfd_abs_section): Remove const. - (bfd_und_section): Likewise. - (bfd_com_section): Likewise. - (bfd_ind_section): Likewise. - -2003-07-24 Nick Clifton - - * coff-arm.c (EXTRA_S_FLAGS): Include SEC_CODE so that code - sections are assigned the LOAD attribute. - -2003-07-25 Kaz Kojima - - * elf32-sh.c: Convert to C90. Replace PTR with void *. - * elf32-sh64-com.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sh64.h: Likewise. - * elf64-sh64.c: Likewise. - -2003-07-24 Kaz Kojima - - * elf32-sh.c (sh_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL. - (allocate_dynrelocs): Likewise. - (sh_elf_relocate_section): Likewise. Use SYMBOL_REFERENCES_LOCAL. - (sh_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL. - -2003-07-24 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-07-23 Bob Wilson - - * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Make inline and move - near the beginning of the file. Swap order of arguments. Call - _bfd_elf_dynamic_symbol_p with "ignore_protected" set to 0. - (elf_xtensa_fix_refcounts): Adjust xtensa_elf_dynamic_symbol_p call. - (elf_xtensa_relocate_section): Likewise. - (shrink_dynamic_reloc_sections): Likewise. - -2003-07-23 Bob Wilson - - * elf32-xtensa.c (plt_reloc_count): Fix typo in comment. - (elf_xtensa_size_dynamic_sections): Use elf_discarded_section. - (elf_xtensa_combine_prop_entries): Avoid returning non-zero without - first printing an error message. - (elf_xtensa_finish_dynamic_sections): Likewise. - (elf_xtensa_discard_info_for_section): Adjust size of .got.loc when - discarding literal table entries. - (elf_xtensa_merge_private_bfd_data): Remove newline from error message. - (elf_xtensa_do_asm_simplify): Likewise. - -2003-07-23 Stephane Carrez - - * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Avoid crash when - we have a local symbol in common section. - -2003-07-22 H.J. Lu - - * elflink.c (_bfd_elf_dynamic_symbol_p): Don't return TRUE for - weak symbols. - -2003-07-22 Nick Clifton - - * coffcode.h (coff_slurp_symbol_table): Add C_TCSYM and C_ECOML to - expected RS6000 storage classes. - -2003-07-21 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Mark - output_bfd unused to silence gcc. - -2003-07-21 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2003-07-21 Alan Modra - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use.. - (_bfd_elf_symbol_refs_local_p): ..this. Declare. - * elflink.c (_bfd_elf_symbol_refs_local_p): New function. - * elf32-i386.c (elf_i386_relocate_section): Remove h NULL test - now done in _bfd_elf_symbol_refs_local_p. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2003-07-18 H.J. Lu - - * elflink.c (_bfd_elf_dynamic_symbol_p): Undo the last change. - -2003-07-18 H.J. Lu - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Fix a typo. - (SYMBOL_CALLS_LOCAL): Likewise. - - * elflink.c (_bfd_elf_dynamic_symbol_p): Return TRUE - immediately if symbol isn't defined locally. - -2003-07-18 Richard Henderson - - * elflink.c (_bfd_elf_dynamic_symbol_p): New. - * elf-bfd.h (_bfd_elf_dynamic_symbol_p): Declare it. - (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use it. - * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Likewise. - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise. - * elf64-hppa.c (elf64_hppa_dynamic_symbol_p): Likewise. - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Likewise. - Update all callers to provide the relocation being resolved. - -2003-07-17 Shaun Jackman - - * config.bfd (arm-wince-pe): Add -DARM_COFF_BUGFIX to - targ_cflags. - -2003-07-17 Nick Clifton - - * po/es.po: New Spanish translation. - * po/sv.po: New Swedish translation. - * po/opcodes.pot: Regenerate. - -2003-07-16 Richard Henderson - - * config.bfd, configure.host, configure.in: Remove ia64-aix support. - * elfxx-ia64.c, targets.c: Likewise. - -2003-07-16 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Properly return false - for symbols defined locally plus -Bsymbolic. Tidy logic. - -2003-07-15 Richard Sandiford - - * archures.c (bfd_mach_mips7000): New. - * bfd-in2.h: Regenerated. - * cpu-mips.c (arch_info_struct): Add an entry for mips:7000. - * elfxx-mips.c (mips_set_isa_flags): Handle bfd_mach_mips7000. - (mips_mach_extensions): Add an entry for it. - -2003-07-14 Nick Clifton - - * po/tr.po: Update with latest version. - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * Makfile.in: Regenerate. - * configure: Regenerate. - -2003-07-12 Jeff Baker - - * bfd/config.bfd (__QNXTARGET__): Define for Neutrino architectures. - * bfd/elf32-arm.h (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - * bfd/elf32-sh.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - * bfd/elf32-ppc.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - -2003-07-12 Jeff Muizelaar - - * coffcode.h (coff_set_section_contents): Set the - IMAGE_FILE_32BIT_MACHINE flag for PE targets. - -2003-07-11 Richard Sandiford - - * bfd-in.h (bfd_h8300_pad_address): Declare. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (bfd_h8300_pad_address): New function. - * coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize - addresses before checking whether they can be relaxed. - (h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check. - Don't complain about overflows in general 8-bit relocations. - * elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address. - Fix handling of R_H8_DIR24A8. - -2003-07-11 Richard Sandiford - - * elf32-h8300.c: Convert function prototypes and definitions - to C90 syntax. - * coff-h8300.c: Likewise. - * cpu-h8300.c: Likewise. - -2003-07-11 Alan Modra - - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Likewise. - -2003-07-10 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Create new - .got.loc section. Do not set SEC_ALLOC or SEC_LOAD flags for the - .xt.lit.plt section. - (elf_xtensa_size_dynamic_sections): Set size of the .got.loc section - and allocate memory for it. - (elf_xtensa_combine_prop_entries): Copy contents of .xt.lit output - section to the .got.loc section. - (elf_xtensa_finish_dynamic_sections): Fix up call to - elf_xtensa_combine_prop_entries and set DT_XTENSA_GOT_LOC_OFF to - the address of .got.loc. - (relax_property_section): Shrink .got.loc to match changes in any - literal table section. - (xtensa_is_property_section): Change to match - xtensa_get_property_section_name. - (xtensa_is_littable_section): New. - -2003-07-10 H.J. Lu - - * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1 instead of - -1LL. - -2003-07-10 Alan Modra - - * Makefile.am (BFD32_BACKENDS): Add elf32-am33lin.lo. - (BFD32_BACKENDS_CFILES): elf32-am33lin.c not elf32-am33lin.lo. - Run "make dep-am". - * Makefile.in: Regenerate. - -2003-07-10 Alexandre Oliva - - 2001-09-12 Alexandre Oliva - * elf32-am33lin.c (ELF_MACHINE_CODE): Redefine to EM_MN10300. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300. - 2001-06-02 Nick Clifton - * elf32-am33lin.c: Rename global functions. - 2001-05-09 Alexandre Oliva - * config.bfd (am33_2.0, am33_2.0-*-linux*): Added. - * configure.in (bfd_elf32_am33lin_vec): Added. - * Makefile.am (BFD32_BACKENDS): Added elf32-am33lin.lo. - (elf32-am33lin.lo): List dependencies. - * aclocal.m4, configure, Makefile.in: Rebuilt. - * elf-m10300.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, - ELF_ARCH, ELF_MACHINE_CODE, ELF_MAXPAGESIZE): Define only if - ELF_ARCH was not defined before. - (elf_symbol_leading_char): Define if not defined. - * elf32-am33lin.c: Override the definitions above. - * targets.c (bfd_elf32_am33lin_vec): New. - -2003-07-09 Alexandre Oliva - - 2002-12-12 Alexandre Oliva - * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Initialize - pcrel_relocs_copied. - 2001-12-13 Alexandre Oliva - * elf-m10300.c (ELF_DYNAMIC_INTERPRETER): Renamed from - ld-linux.so.2 to ld.so.1. - 2001-10-10 Alexandre Oliva - * elf-m10300.c (elf_mn10300_sizeof_plt0): New macro. - (_bfd_mn10300_elf_adjust_dynamic_symbol): Use it. - (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. - * elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Allocate - .rela.* section contents with bfd_zalloc. - 2001-09-25 Alexandre Oliva - * elf-m10300.c: Added declarations for functions missing them. - Merge some shared-library changes from the i386 back-end. Use - R_MN10300_RELATIVE instead of R_MN10300_PCREL32 and - R_MN10300_GLOB_DAT instead of R_MN10300_32 where appropriate. - (struct elf32_mn10300_link_hash_entry): Remove duplicates of - members of elf_link_hash_entry. Adjusted references. - (mn10300_elf_final_link_relocate): dynobj was already loaded - into a local variable, use it. - 2001-09-21 Nick Clifton - * elf-m10300.c: Add missing function prototypes. - 2001-08-24 Alexandre Oliva - * elf-m10300.c (mn10300_elf_relocate_section): Don't compute - relocation for dynamic relocations. - 2001-05-16 Alexandre Oliva - * reloc.c (BFD_RELOC_MN10300_GOTOFF24): New. - * elf-m10300.c: Introduce GOTPC16, GOTOFF24, GOTOFF16 and - PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32. - (_bfd_mn10300_elf_create_dynamic_sections): Move creation ot PLT... - (_bfd_mn10300_elf_create_got_section): ... here, so that its - adress is already known at the time we compute relaxations. - (mn10300_elf_relax_section): Relax GOTPC32, GOTOFF32, GOT32 - and PLT32 to narrower relocations. - * libbfd.h, bfd-in2.h: Rebuilt. - 2001-04-12 Alexandre Oliva - * reloc.c (BFD_RELOC_MN10300_GOT32, BFD_RELOC_MN10300_GOT24, - BFD_RELOC_MN10300_GOT16, BFD_RELOC_MN10300_COPY, - BFD_RELOC_MN10300_GLOB_DAT, BFD_RELOC_MN10300_JMP_SLOT, - BFD_RELOC_MN10300_RELATIVE): New relocs. - * libbfd.h, bfd-in2.h: Rebuilt. - * elf-m10300.c (struct elf_mn10300_pcrel_relocs_copied): New. - (struct elf32_mn10300_link_hash_entry): Added DSO-related - fields. - (elf_mn10300_howto): Defined new relocation types. - (mn10300_reloc_map): Map them. - (_bfd_mn10300_elf_create_got_section): New fn. - (mn10300_elf_check_relocs): Handle PIC relocs. - (mn10300_elf_final_link_relocate): Likewise. - (mn10300_elf_relocate_section): Handle DSOs. - (PLT0_ENTRY_SIZE, PLT_ENTRY_SIZE, PIC_PLT_ENTRY_SIZE): New macros. - (elf_mn10300_plt0_entry, elf_mn10300_plt_entry, - elf_mn10300_pic_plt_entry): New. - (elf_mn10300_sizeof_plt, elf_mn10300_plt_plt0_offset, - elf_mn10300_plt0_linker_offset, elf_mn10300_plt0_gotid_offset, - elf_mn10300_plt_temp_offset, elf_mn10300_plt_symbol_offset, - elf_mn10300_plt_reloc_offset: New macros. - (ELF_DYNAMIC_INTERPRETER): Likewise. - (_bfd_mn10300_elf_create_dynamic_sections): New function. - (_bfd_mn10300_elf_adjust_dynamic_symbol): Likewise. - (_bfd_mn10300_elf_discard_copies): Likewise. - (_bfd_mn10300_elf_size_dynamic_sections): Likewise. - (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. - (_bfd_mn10300_elf_finish_dynamic_sections): Likewise. - (elf_backend_can_gc_sections, - elf_backend_create_dynamic_sections, - elf_backend_adjust_dynamic_sections, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): New - macros. - -2003-07-09 Alexandre Oliva - - 2001-05-06 Alexandre Oliva - * elf-m10300.c (compute_function_info): Account for AM33 - registers in `movm' when computing stack space for `call' when - linking for AM33/2.0 link. - 2000-04-01 Alexandre Oliva - * archures.c (bfd_mach_am33_2): Renamed from bfd_mach_am332. - * bfd-in2.h: Rebuilt. - * cpu-m10300.c (bfd_am33_2_arch): Renamed from bfd_am332_arch. - * elf-m10300.c: Updated. - 2000-03-31 Alexandre Oliva - * archures.c (bfd_mach_am332): Defined. - * bfd-in2.h: Rebuilt. - * cpu-m10300.c (bfd_am332_arch): Defined. - (bfd_am33_arch): Chained with am33-2. - * elf-m10300.c (elf_mn10300_mach): Handle am332. - (_bfd_mn10300_elf_final_write_processing): Likewise. - -2003-07-09 H.J. Lu - - * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1LL. - -2003-07-10 Alan Modra - - * elf64-ppc.c (bfd_elf64_mkobject): Define. - (struct ppc64_elf_obj_tdata): New. - (ppc64_elf_tdata, ppc64_tlsld_got): Define. - (ppc64_elf_mkobject): New function. - (struct got_entry): Add "owner". Move "tls_type". - (struct ppc_link_hash_table): Delete "relgot", "tlsld_got". - (ppc64_elf_init_stub_bfd): New function. - (create_got_section): Create header .got in dynobj. Create .got - and .rela.got in each bfd. Stash pointers in ppc64_elf_obj_tdata. - (ppc64_elf_create_dynamic_sections): Don't call create_got_section. - Look for dynobj .got, and test it. - (ppc64_elf_copy_indirect_symbol): Adjust for changed got. - (update_local_sym_info): Likewise. - (ppc64_elf_check_relocs): Likewise. - (ppc64_elf_gc_sweep_hook): Likewise. - (ppc64_elf_tls_optimize): Likewise. - (allocate_dynrelocs): Likewise. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc64_elf_relocate_section): Likewise. - (ppc64_elf_next_toc_section): Update comment. - (toc_adjusting_stub_needed): Remove unneeded cast. - (ppc64_elf_build_stubs): Check for stub sections in stub bfd by - testing section flags. - (ppc64_elf_build_stubs): Likewise. - (ppc64_elf_size_stubs): Likewise. Remove stub_bfd param. - (ppc64_elf_finish_dynamic_sections): Write out got sections. - (func_desc_adjust): Copy over dynamic info for undef weaks. - * elf64-ppc.h (ppc64_elf_init_stub_bfd): Declare. - (ppc64_elf_size_stubs): Update prototype. - * elflink.h (elf_link_sort_relocs): Use link_orders to find reldyn - input sections rather than scanning dynobj. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_link_hash_entry): Remove min_dyn_reloc_index. - (bfd_mips_elf_swap_msym_in, bfd_mips_elf_swap_msym_out): Delete. - (mips_elf_create_msym_section): Delete. - (mips_elf_create_dynamic_relocation): Don't set min_dyn_reloc_index. - (_bfd_mips_elf_copy_indirect_symbol): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Don't create .msym. - (_bfd_mips_elf_size_dynamic_sections): Don't calculate its size. - (_bfd_mips_elf_size_dynamic_sections): Don't add DT_MIPS_MSYM. - (_bfd_mips_elf_finish_dynamic_symbol): Don't add symbols to .msym. - (_bfd_mips_elf_finish_dynamic_sections): Likewise. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_irix6_finish_dynamic_symbol): Make the - symbols protected. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Fix handling - of relocations whose offset is -2. - -2003-07-09 Richard Sandiford - - * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat - forced-local symbols like other locals. Don't create relocations - against STN_UNDEF in irix objects. - -2003-07-09 Richard Sandiford - - * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI- - compatible objects, add the values of defined external symbols - to the addend. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Always - initialize a GOT entry to the symbol's st_value. - -2003-07-08 Alan Modra - - * elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers.. - * elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New. - (ppc_elf_tdata): Define. - (elf_local_ptr_offsets): Adjust. - (ppc_elf_mkobject): New function. - (bfd_elf32_mkobject): Define. - - * elfcode.h (elf_object_p): Allocate tdata via _bfd_set_format. - * elfcore.h (elf_core_file_p): Likewise. - * section.c (bfd_section_init): Remove prototype. - -2003-07-08 Alan Modra - - * elf-bfd.h (struct elf_link_hash_entry): Remove linker_section_pointer - field. - (enum elf_linker_section_enum): Delete. - (struct elf_linker_section): Delete. - (struct elf_linker_section_pointers): Delete. - (struct elf_obj_tdata): Remove #if 0 chunk. Remove linker_section. - Make linker_section_pointers a void**. - (elf_local_ptr_offsets, elf_linker_section): Don't define. - * elf32-ppc.c (enum elf_linker_section_enum): New, cut-down version - of old item in elf-bfd.h. - (struct elf_linker_section): Likewise. - (struct elf_linker_section_pointers): Likewise. - (elf_local_ptr_offsets): Define. - (struct ppc_elf_link_hash_entry): Add linker_section_pointer. - (ppc_elf_link_hash_newfunc): Init it. - (struct ppc_elf_link_hash_table): Add sbss. - (ppc_elf_link_hash_table_create): zmalloc rather than clearing - individual fields. - (elf_create_linker_section): Fold into.. - (ppc_elf_create_linker_section): ..here. Remove hole_size code. - Make rela section here if shared. - (elf_find_pointer_linker_section): Pass lsect rather than enum. - (elf_create_pointer_linker_section): Adjust. zalloc rather than - clearing in a loop. - (elf_finish_pointer_linker_section): Adjust. Don't make rela - section here. - (ppc_elf_check_relocs): Adjust. - (ppc_elf_add_symbol_hook): Tighten hash creator test. Remove code - creating .sbss by hand. - * elf.c (_bfd_elf_link_hash_newfunc): Adjust. - -2003-07-04 Jakub Jelinek - - * elf32-s390.c (elf_howto_table): Change R_390_GOT12 to - complain_overflow_bitfield. - * elf64-s390.c (elf_howto_table): Change R_390_GOT12 to - complain_overflow_bitfield. - -2003-07-04 Jakub Jelinek - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Return - true even if -pie. - -2003-07-04 Jakub Jelinek - - * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add rel_fptr_sec. - (elfNN_ia64_dynamic_symbol_p): Change info->shared into - !info->executable. - (get_fptr): For -pie create .opd as writable section and create - .rela.opd as well. - (elfNN_ia64_check_relocs): Change info->shared into - !info->executable. - (allocate_fptr): Likewise. - (allocate_dynrel_entries): Account for a relative reloc for -pie - @fptr(). Don't account for a relative reloc if -pie want_ltoff_fptr - for undefweak symbol. Account for an IPLT reloc in .rela.opd - section if -pie. - (set_got_entry): Don't create a relative reloc if -pie - want_ltoff_fptr for undefweak symbol. - (set_fptr_entry): Emit an IPLT reloc in .rela.opd for -pie. - (elfNN_ia64_relocate_section): Emit a relative reloc for -pie - @fptr(). - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Issue undefined_symbol - even if -pie. - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - -2003-07-04 Paul Clarke - - * elf32-h8300.c (R_H8_DIR32A16): Fix name field. - (elf32_h8_relax_section) : Adjust position of relocation. - : Fix type of relocation. - -2003-07-04 Kaz Kojima - - * elf32-sh.c (sh_elf_create_dynamic_sections): Return if dynamic - sections were created already. Remove unnecessary tests of - the previous change. - -2003-07-04 Kaz Kojima - - * elf32-sh.c (sh_elf_create_dynamic_sections): Don't call - bfd_make_section for existing sections. - -2003-07-04 Alan Modra - - * elf32-sparc.c (elf32_sparc_check_relocs): Don't call - create_got_section if we already have done so. - * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. - (sh_elf_check_relocs): Likewise. - (sh_elf_adjust_dynamic_symbol): Delete "dynobj" var. Use - htab->root.dynobj instead. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_sections): Likewise. - - * section.c (bfd_make_section): Return NULL for existing section. - -2003-07-04 Alan Modra - - * elf32-ppc.c (ppc_elf_create_dynamic_sections): Don't call - ppc_elf_create_got if we've already done so. - - * elf-bfd.h (_bfd_elf_create_linker_section) Don't declare. - (_bfd_elf_find_pointer_linker_section): Likewise. - (bfd_elf32_create_pointer_linker_section): Likewise. - (bfd_elf32_finish_pointer_linker_section): Likewise. - (bfd_elf64_create_pointer_linker_section): Likewise. - (bfd_elf64_finish_pointer_linker_section): Likewise. - (_bfd_elf_make_linker_section_rela): Likewise. - * elfcode.h (elf_create_pointer_linker_section): Don't define. - (elf_finish_pointer_linker_section): Likewise. - * elflink.c (_bfd_elf_make_linker_section_rela): Delete. - (_bfd_elf_create_linker_section): Move this function.. - (_bfd_elf_find_pointer_linker_section): ..and this.. - * elflink.h (elf_create_pointer_linker_section): ..and this.. - (elf_finish_pointer_linker_section): ..and this.. - * elf32-ppc.c: ..to here, renaming to the following, and adjusting - calls. - (elf_create_linker_section): Convert to C90, tidy. - (elf_find_pointer_linker_section): Likewise. - (elf_create_pointer_linker_section): Likewise. - (elf_finish_pointer_linker_section): Likewise. - * elf32-i370.c: Delete #if 0 code. - -2003-07-02 Alan Modra - - * elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't allow _savef* and - _restf* to be satisfied by shared libs, and always force them local. - (toc_adjusting_stub_needed): Avoid scanning linker created sections. - Correct test for "bl". - (ppc64_elf_relocate_section ): Correct test for - primary opcode 31. - -2003-07-01 Martin Schwidefsky - - * elf32-s390.c (s390_elf_ldisp_reloc): New prototype. - (s390_tls_reloc): New function. - (elf_howto_table): Add long displacement relocations R_390_20, - R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_check_relocs): Likewise. - (elf_s390_gc_sweep_hook): Likewise. - (elf_s390_relocate_section): Likewise. - * elf64-s390.c: Same changes as for elf32-s390.c. - * reloc.c: Add long displacement relocations BFD_RELOC_390_20, - BFD_RELOC_390_GOT20, BFD_RELOC_390_GOTPLT20 and - BFD_RELOC_390_TLS_GOTIE20. - * bfd-in2.h: Regenerate. - * libbfd.h: Likewise. - -2003-06-30 Alan Modra - - * cpu-ia64-opc.c (ext_imms_scaled): Don't sign extend using shifts. - (ins_imms, ins_immsm1u4): Likewise. Warning fix. - -2003-06-29 Alan Modra - - * archive.c: Convert to C90, remove unnecessary prototypes and casts. - Replace PTR with void *. Formatting. - * archive64.c: Likewise. - * archures.c: Likewise. - * bfd-in.h: Likewise. - * bfd.c: Likewise. - * bfdio.c: Likewise. - * bfdwin.c: Likewise. - * cache.c: Likewise. - * corefile.c: Likewise. - * format.c: Likewise. - * init.c: Likewise. - * libbfd-in.h: Likewise. - * libbfd.c: Likewise. - * linker.c: Likewise. - * opncls.c: Likewise. - * reloc.c: Likewise. - * section.c: Likewise. - * simple.c: Likewise. - * syms.c: Likewise. - * targets.c: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - - * ecoff.c (bfd_debug_section): Add missing kept_section initialization. - * libbfd-in.h (_bfd_sh_align_load_span): Don't declare if defined. - * libbfd.c (COERCE32, EIGHT_GAZILLION): Simplify. - (bfd_getb64): Rewrite without parens. - (bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise. - * cache.c (insert, snip): Remove INLINE. - * linker.c (bfd_link_add_undef): Likewise. - -2003-06-29 Andreas Jaeger - - * elf64-x86-64.c: Convert to ISO C90 prototypes, remove - unnecessary prototypes. Replace PTR with void *. - (elf64_x86_64_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL to - trim plt entries. Move undefweak non-default visibility test ... - (allocate_dynrelocs): ... from here. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - Change all callers. - (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. Use - SYMBOL_REFERENCES_LOCAL for dynreloc check. - (elf64_x86_64_relocate_section): Use SYMBOL_CALLS_LOCAL for - dynreloc and .got relocs. - (elf64_x86_64_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL - for .got relocs. - -2003-06-29 Thiemo Seufer - - * elfxx-mips.c: Allow lazy binding for R_MIPS_JALR. - -2003-06-27 Nick Clifton - - * opncls.c (bfd_add_gnu_debuglink_section): Rename to - bfd_add_gnu_debuglink_section and only create the section, do not - fill in its contents. - (bfd_fill_in_gnu_debuglink_section): New function. Fill in the - contents of a .gnu-debuglink section. - * bfd-in2.h: Regenerate. - -2003-06-27 Thiemo Seufer - - * elfxx-mips.c: Revert .got alignment to 2**4. - -2003-06-27 Thiemo Seufer - - * elf32-mips.c: Fix addend for _gp_disp special symbol. - -2003-06-27 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove non-default - relocation header setup. - -2003-06-25 Alan Modra - - * elf32-ppc.c (ppc_elf_howto_table): Remove unnecessary cast. - (ppc_elf_reloc_type_lookup): Modify comment. - (ppc_elf_info_to_howto): Ditto. - (ppc_elf_relocate_section): Ditto. - (ppc_elf_check_relocs): Call ppc_elf_howto_init. - -2003-06-25 Alan Modra - - * aout-ns32k.c: Correct spelling of "relocatable". - * aoutx.h: Likewise. - * bfd-in.h: Likewise. - * bfd.c: Likewise. - * bout.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-arm.c: Likewise. - * coff-i386.c: Likewise. - * coff-i860.c: Likewise. - * coff-i960.c: Likewise. - * coff-m68k.c: Likewise. - * coff-m88k.c: Likewise. - * coff-mcore.c: Likewise. - * coff-mips.c: Likewise. - * coff-or32.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-tic80.c: Likewise. - * coff64-rs6000.c: Likewise. - * cofflink.c: Likewise. - * cpu-ns32k.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - * elf-bfd.h: Likewise. - * elf-eh-frame.c: Likewise. - * elf-hppa.h: Likewise. - * elf-m10200.c: Likewise. - * elf-m10300.c: Likewise. - * elf.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-avr.c: Likewise. - * elf32-cris.c: Likewise. - * elf32-d10v.c: Likewise. - * elf32-dlx.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-frv.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i860.c: Likewise. - * elf32-i960.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-iq2000.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-msp430.c: Likewise. - * elf32-openrisc.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-vax.c: Likewise. - * elf32-xstormy16.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfcode.h: Likewise. - * elflink.h: Likewise. - * elfn32-mips.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * i386linux.c: Likewise. - * ieee.c: Likewise. - * libcoff-in.h: Likewise. - * linker.c: Likewise. - * m68klinux.c: Likewise. - * pdp11.c: Likewise. - * pe-mips.c: Likewise. - * peXXigen.c: Likewise. - * reloc.c: Likewise. - * reloc16.c: Likewise. - * sparclinux.c: Likewise. - * sunos.c: Likewise. - * syms.c: Likewise. - * versados.c: Likewise. - * vms.c: Likewise. - * xcofflink.c: Likewise. - * bfd-in2.h: Regenerate. - * libcoff.h: Regenerate. - * libbfd.h: Regenerate. - -2003-06-24 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Report plt reloc against - local sym errors. - - * elf32-i386.c: Convert to C90 function definitions, remove unnecessary - prototypes and casts. Replace PTR with void *. Formatting. - * elf32-ppc.c: Likewise. Break long strings too. - (ppc_elf_relax_section): Use enum elf_ppc_reloc_type for r_type. - (ppc_elf_unhandled_reloc): Internationalize error message. - * elf32-ppc.h: Remove PARAMS. - -2003-06-23 Mark Mitchell - - * elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count - APUinfo slots. - (ppc_elf_final_write_processing): Likewise. - -2003-06-23 H.J. Lu - - * elflink.h (elf_link_input_bfd): Check raw size when using - kept_section to preserve debug information discarded by - linkonce. - -2003-06-20 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_table): Add top_id. - (ppc64_elf_setup_section_lists): Set it. - (ppc64_elf_relocate_section): Check sym section id against top_id. - (ppc_build_one_stub): Comment on top_id. - -2003-06-20 Ralf Corsepius - - * config.bfd: Add tic4x-*-rtems*. - -2003-06-20 Alan Modra - - * elf64-ppc.c: Convert to C90 function definitions, remove unnecessary - prototypes and casts. Replace PTR with void *. Format copyright. - Mention ABI links. - (struct ppc_link_hash_table): Rename sgot, srelgot, splt, srelplt, - sdynbss, srelbss, sglink, sbrlt and srelbrlt to got, relgot .. relbrlt. - (ppc_type_of_stub): Make r_type an enum. - (ppc64_elf_size_stubs): Likewise. - * elf64-ppc.h: Remove PARAMS macro. - -2003-06-19 Alan Modra - - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Reinstate init of - elf hash tab fields. - - * elf64-ppc.c (ppc64_elf_reloc_type_lookup): Tidy prototype. - (ppc64_elf_info_to_howto): Likewise. - (ppc64_elf_build_stubs): Add "stats" param, and print statistics. - * elf64-ppc.h (ppc64_elf_build_stubs): Adjust prototype. - -2003-06-19 Alan Modra - - * elf64-sparc.c (sparc64_elf_relocate_section): Ignore R_SPARC_DISP32 - reloc overflow on discarded eh_frame entries. - -2003-06-19 Alan Modra - - * elf64-ppc.c (toc_adjusting_stub_needed): New function. - (ppc64_elf_next_input_section): Use it here to set has_gp_reloc. - Return error condition. - (ppc64_elf_size_stubs): Restrict toc adjusting stubs to sections - that have has_gp_reloc set. - (struct ppc_link_hash_table): Add stub_count. - (ppc_build_one_stub): Increment it. - (ppc64_elf_link_hash_table_create): zmalloc rather than clearing - individual fields. - * elf64-ppc.h (ppc64_elf_next_input_section): Update prototype. - -2003-06-18 Alan Modra - - * elflink.h (elf_gc_record_vtentry): Revert last change. Correct - size calculation from addend. Round size up. - -2003-06-18 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : When linking a program, don't complain about a - symbol from a normal object or an undefined weak symbol. - -2003-06-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Accept a symbol on - R_PPC64_TOC relocs. - -2003-06-17 H.J. Lu - - * section.c (struct sec): Put back kept_section. - (STD_SECTION): Put back kept_section initialization. - * bfd-in2.h: Regenerate. - - * elflink.h (elf_link_input_bfd): Also check discarded linkonce - sections for relocateable output. Use kept_section to preserve - debug information discarded by linkonce. - -2003-06-17 Roland McGrath - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Support - segment-relative relocation between different segments. - -2003-06-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Do unaligned reloc - optimizations earlier. - - * elf64-ppc.c (struct ppc_link_hash_table): Reinstate top_index. - Restore previous input_list type. - (ppc64_elf_link_hash_table_create): Undo last change. - (ppc64_elf_setup_section_lists): Reinstate code setting up input lists - per output section, but don't bother with bfd_abs_section marker. - (ppc64_elf_next_input_section): Adjust for multiple input section - lists. - (group_sections): Likewise. - -2003-06-17 Jakub Jelinek - - * elf64-ppc.c (ppc64_elf_relocation_section): Ensure - *r_offset == r_addend for RELATIVE relocs against .got. - -2003-06-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Optimize unaligned relocs. - -2003-06-17 Nick Clifton - - * elflink.h (elf_gc_record_vtentry): Allocate an extra element - in the vtable_entries_used array to allow for the accessing - the largest element. - -2003-06-17 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_table): Remove top_index. Modify - input_list. - (ppc64_elf_link_hash_table_create): Init input_list here. - (ppc64_elf_setup_section_lists): Remove code setting up input lists - per output section. Set toc_off for abs and other standard sections. - (ppc64_elf_reinit_toc): Don't set elf_gp on input bfds lacking a toc. - (ppc64_elf_next_input_section): Adjust for single input section list. - Don't set toc_curr from input bfds that haven't set elf_gp. - (group_sections): Adjust for single input section list. - - * elf64-ppc.c (ppc64_elf_relocate_section): Correct pcrel section zero. - -2003-06-16 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): When optimizing toctprel - tls, check that a TOC16_DS or TOC16_LO_DS reloc isn't pointing to a - dtprel entry. Ensure TLS_LD DTPMOD reloc has a zero addend. Write - got section for RELATIVE relocs. Fix wrong comment. Change condition - under which dynamic relocs update the section contents. - -2003-06-13 Robert Millan - - * config.bfd: Add i386-netbsd-gnu target. - -2003-06-12 Nick Clifton - - * opncls.c (calc_crc32): Rename to - bfd_calc_gnu_debuglink_crc32 and export. - (GNU_DEBUGLINK): Define and use to replace occurrences of - hard-coded ".gnu_debuglink" in the code. - (get_debug_link_info): Prevent aborts by replacing call to - xmalloc with a call to malloc. - (find_separate_debug_file): Prevent aborts by replacing calls - to xmalloc and xstrdup with calls to malloc and strdup. - (bfd_add_gnu_debuglink): New function. Add a .gnu_debuglink - section to a bfd. - * bfd-in2.h: Regenerate. - -2003-06-12 Federico G. Schwindt - - * config.bfd (i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]): - New target (was i[3-7]86-*-openbsd* before). - (i[3-7]86-*-openbsd*): Change to use bfd_elf32_i386_vec. - (vax-*-openbsd*): New target. - -2003-06-11 Thiemo Seufer - - * elfxx-mips.c (MIPS_ELF_OPTIONS_SECTION_NAME): Use .MIPS.options - for n32, too. - (MIPS_ELF_STUB_SECTION_NAME): Use .MIPS.stubs for n32, too. - (mips_elf_rel_dyn_section): Use appropriate section alignment. - (mips_elf_create_got_section): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Likewise. - -2003-06-11 Thiemo Seufer - - * elf32-mips.c (mips_elf_generic_reloc): New Function. - (elf_mips_howto_table_rel): Use it. - (gprel32_with_gp): Move prototype. - (mips_elf_hi16_reloc): Check for ! BSF_LOCAL instead of zero addend. - Use mips_elf_generic_reloc. - (mips_elf_got16_reloc): Check for ! BSF_LOCAL instead of zero addend. - Code cleanup. - (_bfd_mips_elf32_gprel16_reloc): Check for ! BSF_LOCAL instead of - zero addend. - (mips_elf_gprel32_reloc): Likewise. Use the same GP assignment logic - as in the other *_gprel*_reloc functions. - (gprel32_with_gp): Handle partial_inplace properly. - (mips32_64bit_reloc): Use mips_elf_generic_reloc. - (mips16_gprel_reloc): Check for ! BSF_LOCAL instead of zero addend. - Do addend handling directly instead of calling - _bfd_mips_elf_gprel16_with_gp. Handle partial_inplace properly. - * elf64-mips.c (mips_elf64_hi16_reloc): Check for ! BSF_LOCAL instead - of zero addend. Handle partial_inplace properly. - (mips_elf64_got16_reloc): Check for ! BSF_LOCAL instead of zero - addend. - (mips_elf64_gprel16_reloc): Likewise. - (mips_elf64_literal_reloc): Likewise. - (mips_elf64_gprel32_reloc): Likewise. Use the same GP assignment - logic as in the other *_gprel*_reloc functions. Handle - partial_inplace properly. - (mips_elf64_shift6_reloc): Check for ! BSF_LOCAL instead of zero - addend. Handle partial_inplace properly. - (mips16_gprel_reloc): Likewise. Do addend handling directly instead - of calling _bfd_mips_elf_gprel16_with_gp. - * elfn32-mips.c (mips_elf_got16_reloc): Check for BSF_LOCAL. - (mips_elf_gprel32_reloc): Check for ! BSF_LOCAL instead - of zero addend. - (mips_elf_shift6_reloc): Handle partial_inplace properly. - (mips16_gprel_reloc): Likewise. Do addend handling directly instead - of calling _bfd_mips_elf_gprel16_with_gp. - * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Handle - partial_inplace properly. Fix wrong addend handling. Fix overflow - check. - (_bfd_mips_elf_sign_extend): Renamed from mips_elf_sign_extend and - exported. - (mips_elf_calculate_relocation): Use _bfd_mips_elf_sign_extend. - (_bfd_mips_elf_relocate_section): Likewise. - (mips_elf_create_dynamic_relocation): Update sec_info_type access. - * elfxx-mips.h (_bfd_mips_relax_section): Fix prototype declaration. - (_bfd_mips_elf_sign_extend): New prototype. - -2003-06-11 Federico G. Schwindt - - * config.bfd (sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1]): - New target (was sparc-*-openbsd* before). - (sparc-*-openbsd*): Change to use bfd_elf32_sparc_vec. - - * configure.in (vax-*-openbsd*): Set COREFILE to netbsd-core.lo. - * configure: Regenerate. - -2003-06-11 H.J. Lu - - * po/Make-in (DESTDIR): New. - (install-data-yes): Support $(DESTDIR). - (uninstall): Likewise. - -2003-06-11 Alan Modra - - * Makefile.am (config.status): Depend on version.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2003-06-10 Alan Modra - Gary Hade - - * elf64-ppc.c (ppc64_elf_relocate_section <*_DS>): Special case lq. - -2003-06-10 Richard Sandiford - - * archures.c (bfd_mach_h8300sxn): New architecture. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (h8300_scan): Check for 'sxn'. - (h8300sxn_info_struct): New. - (h8300sx_info_struct): Link to it. - * elf32-h8300.c (elf32_h8_mach): Add h8300sxn case. - (elf32_h8_final_write_processing): Likewise. - -2003-06-08 Alan Modra - - * elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by - elfxx-target.h so that we can use elf_backend_got_header_size. - (ELF_MACHINE_ALT1, ELF_MACHINE_ALT2): Delete. - (GLINK_CALL_STUB_SIZE): Modify. Define new glink call stub and - associated macros. - (ppc64_elf_howto_raw ): Correct - dst_mask. - (enum ppc_stub_type): Add ppc_stub_long_branch_r2off and - ppc_stub_plt_branch_r2off. - (struct ppc_stub_hash_entry): Reorganize. - (struct ppc_link_hash_table): Add no_multi_toc, multi_toc_needed, - toc_curr, toc_off and emit_stub_syms. - (ppc64_elf_link_hash_table_create): Init them. - (ppc_stub_name): Correct string size. - (ppc64_elf_check_relocs): Set has_gp_reloc on GOT and TOC relocs. - (ppc64_elf_size_dynamic_sections): Set no_multi_toc if GOT entries - used. - (ppc_type_of_stub): Tweak root.type test. - (build_plt_stub): Remove glink code. Adjust for insn macro changes. - (ppc_size_one_stub): Handle ppc_stub_long_branch_r2off and - ppc_stub_plt_branch_r2off. - (ppc_build_one_stub): Likewise. Fix var shadowing. Correct addis,addi - range test. Use toc_off to calculte r2 values. Handle emit_stub_syms. - (ppc64_elf_setup_section_lists): Remove htab creator flavour test. - Initialize elf_gp and toc_curr. - (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): New functions. - (ppc64_elf_next_input_section): Set toc_off. - (group_sections): Ensure groups have the same TOC. - (ppc64_elf_size_stubs): Check whether we need a TOC adjusting stub. - (ppc64_elf_build_stubs): Add emit_stub_syms param, and stash in htab. - Build new glink stub. - (ppc64_elf_relocate_section): Handle multiple TOCs. Fix comments. - (ppc64_elf_finish_dynamic_sections): Adjust DT_PPC64_GLINK. - * elf64-ppc.h (ppc64_elf_build_stubs): Update prototype. - (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): Declare. - * section.c (struct sec): Rename flag12 to has_gp_reloc. - (STD_SECTION): Update. - * ecoff.c (bfd_debug_section): Update comment. - * bfd-in2.h: Regenerate. - -2003-06-05 Daniel Jacobowitz - - * elfcode.h (elf_slurp_reloc_table_from_section): Don't dereference - NULL function pointers. - -2003-06-05 Daniel Jacobowitz - - * simple.c (bfd_simple_get_relocated_section_contents): Call - _bfd_generic_link_add_symbols instead of bfd_link_add_symbols. - -2003-06-04 Svein E. Seldal - - * coff-tic54x.c: Removed the ticoff0_bad_format_hook() and - ticoff1_bad_format_hook() functions. Removed the coff0 and coff1 - swaptables. - * coff-tic4x.c: Ditto - * coffcode.h: Added extra arguments to CREATE_BIG_COFF_TARGET_VEC - and CREATE_LITTLE_COFF_TARGET_VEC. Created the macro - CREATE_BIGHDR_COFF_TARGET_VEC. Created the ticoff0_bad_format_hook(), - ticoff1_bad_format_hook() functions. Created the coff0 and coff1 - swap tables. - * coff-tic4x.c: Adopted new CREATE_xxx_COFF_TARGET_VEC macros. - * coff-a29k.c: Append COFF_SWAP_TABLE argument - * coff-apollo.c: Ditto - * coff-arm.c: Ditto - * coff-h8300.c: Ditto - * coff-h8500.c: Ditto - * coff-i960.c: Ditto - * coff-m68k.c: Ditto - * coff-m88k.c: Ditto - * coff-mcore.c: Ditto - * coff-sh.c: Ditto - * coff-sparc.c: Ditto - * coff-tic80.c: Ditto - * coff-we32k.c: Ditto - * coff-z8k.c: Ditto - * coff-w65.c: Ditto - -2003-06-04 Svein E. Seldal - - * coff-tic4x.c (ticoff0_swap_table, ticoff1_swap_table): Fixed - initialization bug - -2003-06-03 Jakub Jelinek - - * elf.c (_bfd_elf_print_private_bfd_data): Handle PT_GNU_STACK. - (bfd_section_from_phdr): Likewise. - (map_sections_to_segments): Create PT_GNU_STACK segment header. - (get_program_header_size): Count with PT_GNU_STACK. - * elf-bfd.h (struct elf_obj_tdata): Add stack_flags. - * elflink.h (bfd_elfNN_size_dynamic_sections): Set stack_flags. - -2003-06-03 H.J. Lu - - * elflink.h (elf_link_input_bfd): Call linker error_handler - for discarded definitions. - -2003-06-03 Elias Athanasopoulos - - * syms.c (decode_section_type): Return 'n' if section flags are - SEC_HAS_CONTENTS && SEC_READONLY. - -2003-06-03 Nick Clifton - - * elf32-v850.c (v850_elf_howto_t): Rename R_V850_32to - R_V850_ABS32. Add entry for R_V850_REL32. - (v850_elf_reloc_map): Likewise. - (v850_elf_check_relocs): Likewise. - (v850_elf_perform_relocation): Likewise. - (v850_elf_final_link_relocate): Likewise. Include computation - to make R_V850_REl32 pc-relative. - -2003-06-03 Kaz Kojima - - * elf32-sh.c (sh_elf_size_dynamic_sections): Create .interp section - and DT_DEBUG dynamic tag even for position independent executables. - * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewize. - -2003-06-02 Daniel Jacobowitz - - * config.bfd: Move obsolete entries out of the range of the - targmatch sed script. - -2003-06-02 Daniel Jacobowitz - - * config.bfd (mips*-dec-bsd*, mips*-*-pe*): Mark as obsolete. - -2003-05-31 Jakub Jelinek - - * elf32-ppc.c (allocate_dynrelocs): Use single slot for first 8192 - plt entries, not just 8191. - -2003-05-30 Daniel Jacobowitz - - * elfxx-mips.c (_bfd_mips_elf_discard_info): Correct loop index. - Reported by Ken Faiczak . - -2003-05-30 Ulrich Drepper - Jakub Jelinek - - * elflink.h (elf_link_add_object_symbols): Use !info->executable - instead of info->shared where appropriate. - (bfd_elfNN_size_dynamic_sections, elf_link_output_extsym): Likewise. - * elflink.c (_bfd_elf_create_got_section): Likewise. - (_bfd_elf_link_create_dynamic_sections): Likewise. - (_bfd_elf_link_assign_sym_version): Likewise. - * elf32-i386.c (elf_i386_size_dynamic_sections): Create .interp section - and DT_DEBUG dynamic tag even for position independent executables. - * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. - * elf32-s390.c (elf_s390_size_dynamic_sections: Likewise. - * elf64-ppc.c (ppc64_elf_size_dynamic_sections: Likewise. - * elf64-s390.c (elf_s390_size_dynamic_sections: Likewise. - * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections: Likewise. - * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections: Likewise. - * elf32-sparc.c (elf32_sparc_size_dynamic_sections: Likewise. - * elf64-alpha.c (elf64_alpha_size_dynamic_sections: Likewise. - * elf64-sparc.c (sparc64_elf_size_dynamic_sections: Likewise. - -2003-05-30 Kris Warkentin - - * elf.c (elfcore_grok_nto_status): Only set lwpid for the active or - signalled thread. - (elfcore_grok_nto_gregs): Only make .reg section for the active thread. - -2003-05-29 Nick Clifton - - * pef.c: Include "safe-ctype.h" instead of . - Tidy up formatting. - * Makefile.am: Add dependency on safe-ctype.h. - * Makefile.in: Regenerate. - -2003-05-29 Thiemo Seufer - - * elfxx-mips.c: Don't force symbols local unconditionally. - -2003-05-28 Alan Modra - - * elf32-hppa.c (elf32_hppa_relocate_section): Delete bogus - undefined_symbol call. - -2003-05-27 Richard Sandiford - - * elfxx-mips.c (mips_elf_hash_sort_data): Fix formattting. - (mips_elf_link_hash_table): Likewise. - -2003-05-22 Thiemo Seufer - - * elf64-mips.c (elf_mips_gnu_rel16_s2): Add internally used - R_MIPS_GNU_REL16_S2 support. - (bfd_elf64_bfd_reloc_type_lookup): Use it. - (mips_elf64_rtype_to_howto): Use it. - * elfn32-mips.c (elf_mips_gnu_rel16_s2): Add internally used - R_MIPS_GNU_REL16_S2 support. - (bfd_elf32_bfd_reloc_type_lookup): Use it. - (mips_elf_n32_rtype_to_howto): Use it. - -2003-05-21 Stuart F. Downing - - * som.h: Define PA_2_0 before including a.out.h - -2003-05-07 Eric Christopher - Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Adjust - pic tests, change to warning. - (_bfd_mips_elf_final_link): Remove EF_MIPS_CPIC flag setting. - -2003-05-21 Marcus Comstedt - - * config.bfd: Check for a target triplet of shl-...-netbsdelf as - well as shle-...-netbsdelf. Remove duplicate entry. - -2003-05-21 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Fix dst_mask - for X_STORMY16_REL_12 reloc. - - * elf.c (bfd_elf_get_needed_list): Use is_elf_hash_table to check - the type of the hash table in the bfd_link_info structure. - (bfd_elf_get_runpath_list): Likewise. - -2003-05-19 Roland McGrath - - * elf.c (bfd_elf_bfd_from_remote_memory): New function. - * bfd-in.h: Declare it. - * bfd-in2.h: Regenerated. - * elfcode.h (NAME(_bfd_elf,bfd_from_remote_memory)): New function. - * elf-bfd.h (struct elf_backend_data): New function pointer member - elf_backend_bfd_from_remote_memory. - (_bfd_elf32_bfd_from_remote_memory, _bfd_elf64_bfd_from_remote_memory): - Declare them. - * elfxx-target.h (elf_backend_bfd_from_remote_memory): New macro. - (elfNN_bed): Add that to the initializer. - -2003-05-15 Roland McGrath - - * elf.c (elfcore_grok_note): Grok NT_AUXV note, make ".auxv" section. - -2003-05-20 Jakub Jelinek - - * elflink.h (elf_link_output_extsym): Only issue error about != - STV_DEFAULT symbols if they are bfd_link_hash_undefined. - -2003-05-20 H.J. Lu - - * elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF - when removing the old definition for symbols with non-default - visibility. - -2003-05-18 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation. - -2003-05-17 Andreas Schwab - - * elf32-m68k.c (elf_m68k_check_relocs): Cache reloc section in - elf_section_data during processing of pc-relative and absolute - relocations. - (elf_m68k_relocate_section): Use the cached reloc section instead - of computing it again. Fix handling of visibility. Don't modify - addend when copying over a relocation into the output. - -2003-05-17 Alan Modra - - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL - to trim plt entries. Move undefweak non-default visibility test.. - (allocate_dynrelocs): ..from here. - * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't test - dynamic_sections_created here. Update comment. Move undefweak - non-default visibility test.. - (allocate_dynrelocs): ..from here. Fix comment. - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL - to trim plt entries. Move undefweak non-default visibility test.. - (allocate_dynrelocs): ..from here. Fix comment. - * elflink.h (elf_link_output_extsym): Compare ELF_ST_VISIBILITY with - STV_DEFAULT rather than comparing with zero. - * elflink.c (_bfd_elf_merge_symbol): Likewise. - (_bfd_elf_fix_symbol_flags): Likewise. Format comment. - -2003-05-17 Thiemo Seufer - - * bfd.c (_bfd_get_gp_value): Prevent illegal access for abfd null - pointers. - (_bfd_set_gp_value): Likewise. - -2003-05-16 Michael Snyder - From Bernd Schmidt - * archures.c (bfd_mach_h8300sx): New. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (h8300_scan)): Add support for h8300sx. - (h8300sx_info_struct): New. - (h8300s_info_struct): Link to it. - * elf32-h8300.c (elf32_h8_mach): Add support for h8300sx. - (elf32_h8_final_write_processing): Likewise. - (elf32_h8_relax_section): Likewise. - -2003-05-16 Kelley Cook - - * config.bfd: Accept i[3-7]86 variants. - * configure.host: Likewise. - * configure.in: Likewise. - * configure: Regenerate. - -2003-05-15 H.J. Lu - - * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected - symbol. - -2003-05-15 H.J. Lu - - * elflink.h (elf_link_check_versioned_symbol): Also allow - the base version. - -2003-05-15 Alan Modra - H.J. Lu - - * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. - (elf_i386_relocate_section): Likewise. - * elf32-ppc.c (allocate_dynrelocs): Likewise. - (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (allocate_dynrelocs): Likewise. - (ppc64_elf_relocate_section): Likewise. - -2003-05-15 Thiemo Seufer - - * elf32-mips.c (gprel32_with_gp): Remove useless N64 ABI case. - -2003-05-13 Stephane Carrez - - * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Check for - processor capability, allow merge of HC12 and HCS12 in some cases. - (m68hc11_elf_hash_table_create): Use bfd_malloc instead of bfd_zalloc. - * cpu-m68hc12.c (bfd_m68hc12s_arch): New struct. - (bfd_m68hc12_arch): Link it. - (scan_mach): New function. - -2003-05-13 Andrew Haley - - * elf.c (bfd_elf_hash): Mask lower 32 bits of hash. - -2003-05-13 Alan Modra - H.J. Lu - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Move from - elf32-ppc.c. Add ELF_LINK_FORCED_LOCAL check. - * elf32-ppc.c: (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Delete. - (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check. - (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (allocate_dynrelocs): Likewise. - (ppc64_elf_relocate_section): Likewise. Use for .got relocs too. - (ppc64_elf_adjust_dynamic_symbol): Don't assume symbols with .plt - relocs need no other types. - * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for - dynreloc check. - (elf_i386_relocate_section): Likewise. Use for .got relocs too. - (elf_i386_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL for - .got relocs. - -2003-05-13 Kaz Kojima - - * elf32-sh.c (sh_elf_adjust_dynamic_symbol): For weak symbols, - copy ELF_LINK_NON_GOT_REF from weakdef. - (allocate_dynrelocs): For undef weak syms with non-default - visibility, a) don't allocate plt entries, b) don't allocate - .got relocs, c) discard dyn rel space - (sh_elf_relocate_section): d) don't generate .got relocs, e) - don't generate dynamic relocs. - (sh_elf_copy_indirect_symbol): Don't copy ELF_LINK_NON_GOT_REF - for weakdefs when symbol already adjusted. - -2003-05-12 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): use 'bitfield' - overflow detection for R_XSTORMY16_16 reloc. - -2003-05-12 Paul Clarke - - * elf32-h8300.c: Fix typo in name of R_H8_DIR8 reloc. - -2003-05-11 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_highadj): Properly - adjust upper bits. - (elf32_i860_relocate_splitn): Obtain upper 5 bits from the - proper place. - (elf32_i860_relocate_pc16): Obtain upper 5 bits from the - proper place. - -2003-05-11 Andreas Schwab - - * elf32-m68k.c (elf_m68k_relocate_section): Replace ugly - complicated tests for unresolvable relocs with a simple direct - scheme using "unresolved_reloc" var. Report some detail on - bfd_reloc_outofrange and similar errors. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (allocate_dynrelocs, elf_s390_relocate_section): - Fix WILL_CALL_FINISH_DYNAMIC_SYMBOL call. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - * elf64-s390.c: Likewise. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (ELIMINATE_COPY_RELOCS): Define as one. - (elf_s390_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - (elf_s390_copy_indirect_symbol): Test whether the weakdef sym has - already been adjusted before treating it specially. - * el64-s390.c: Likwise. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't make them dynamic, b) discard - space for dynamic relocs. - (elf_s390_relocate_section): Initialize the GOT entries and skip - R_390_{8,16,32}/R_390_PC{16,16DBL,32DBL,32} for weak undefined - symbols with non-default visibility. - * elf64-s390.c: Likewise. - -2003-05-09 Alan Modra - - * cpu-arm.c (arm_check_note): Warning fix. - * elf32-iq2000.c (iq2000_elf_check_relocs): Warning fixes. Arrange - to keep relocs if edited. - (iq2000_elf_print_private_bfd_data): Return TRUE. - * elfxx-ia64.c (elfNN_ia64_relax_section): Use ELFNN_R_SYM, not - ELF64_R_SYM. - (elfNN_ia64_relax_ldxmov): Warning fix. - * xtensa-isa.c (xtensa_add_isa): Warning fix. - * xtensa-modules.c (get_num_opcodes): Warning fix. - -2003-05-09 Andrey Petrov - - * elf.c (elf_fake_sections): Use correct cast for sh_name. - -2003-05-09 Alan Modra - - * elflink.c (_bfd_elf_link_create_dynamic_sections): Move from - elflink.h. Replace LOG_FILE_ALIGN with bed->s->log_file_align. - (_bfd_elf_create_dynamic_sections): Use bed->s->log_file_align. - (bfd_elf_record_link_assignment): Move from elflink.h. - (_bfd_elf_merge_symbol): Likewise. - (_bfd_elf_add_default_symbol): Likewise. - (_bfd_elf_export_symbol): Likewise. - (_bfd_elf_link_find_version_dependencies): Likewise. - (_bfd_elf_link_assign_sym_version): Likewise. - (_bfd_elf_link_read_relocs): Likewise. - (_bfd_elf_link_size_reloc_section): Likewise. - (_bfd_elf_fix_symbol_flags): Likewise. - (_bfd_elf_adjust_dynamic_symbol): Likewise. - (_bfd_elf_link_sec_merge_syms): Likewise. - (elf_link_read_relocs_from_section): Likewise. Use bed->s->sizeof_rel - and bed->s->sizeof_rela. - (_bfd_elf_link_output_relocs): Likewise. - * elf-bfd.h (struct elf_size_info): Rename file_align to - log_file_align. - (struct elf_info_failed): Move from elflink.h. - (struct elf_assign_sym_version_info): Likewise. - (struct elf_find_verdep_info): Likewise. - (_bfd_elf_create_dynamic_sections): Delete duplicate declaration. - (_bfd_elf_merge_symbol, _bfd_elf_add_default_symbol, - _bfd_elf_export_symbol, _bfd_elf_link_find_version_dependencies, - _bfd_elf_link_assign_sym_version, - _bfd_elf_link_create_dynamic_sections, _bfd_elf_link_read_relocs, - _bfd_elf_link_size_reloc_section, _bfd_elf_link_output_relocs, - _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, - _bfd_elf_link_sec_merge_syms): Declare. - (bfd_elf32_link_create_dynamic_sections): Don't declare. - (_bfd_elf32_link_read_relocs): Likewise. - (bfd_elf64_link_create_dynamic_sections): Likewise. - (_bfd_elf64_link_read_relocs): Likewise. - * elflink.h: Move lots o' stuff elsewhere. - * bfd-in.h (bfd_elf32_record_link_assignment): Don't declare. - (bfd_elf64_record_link_assignment): Likewise. - (bfd_elf_record_link_assignment): Declare. - * bfd-in2.h: Regenerate. - * elfcode.h (elf_link_create_dynamic_sections): Don't declare. - (NAME(_bfd_elf,size_info)): Adjust for log_file_align. - * elf.c (_bfd_elf_init_reloc_shdr): Adjust for bed->s->log_file_align. - (assign_file_positions_for_segments): Likewise. - (assign_file_positions_except_relocs): Likewise. - (swap_out_syms, elfcore_write_note): Likewise. - * elf-m10200.c: Adjust for changed function names. - * elf-m10300.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-sh64.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - (MIPS_ELF_LOG_FILE_ALIGN): Use log_file_align. - * elf64-alpha.c (alpha_elf_size_info): Adjust for log_file_align. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-mips.c (mips_elf64_size_info): Likewise. - * elf64-s390.c (s390_elf64_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2003-05-08 H.J. Lu - - * elflink.h (elf_add_default_symbol): After skipping the - unversioned symbol, go to non-default one. - -2003-05-07 H.J. Lu - - * elfxx-ia64.c (_bfd_elf_link_hash_hide_symbol): Also clear the - want_plt field. - (elfNN_ia64_relocate_section): Don't do dynamic symbol lookup - for symbols with non-default visibility. - -2003-05-07 H.J. Lu - - * elflink.h (elf_link_check_versioned_symbol): Also handle the - case that a DSO references a hidden symbol which may be - satisfied by a versioned symbol in another DSO. - (elf_link_output_extsym): Check versioned definition for hidden - symbol referenced by a DSO. - -2003-05-07 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Reset - R_XSTORMY16_16 reloc to ignore overflows. - -2003-05-06 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Improve - error message for mixing different-endian files. Check for ABI - compatibility of input files with the selected emulation. - -2003-05-05 Alan Modra - - * elf32-i386.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't make them dynamic, b) discard - space for dynamic relocs. - * elf64-x86-64.c (allocate_dynrelocs): Likewise. - - * elf32-ppc.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't allocate plt entries, b) don't - allocate .got relocs, c) discard dyn rel space, - (ppc_elf_relocate_section): d) don't generate .got relocs, e) - don't generate dynamic relocs. - * elf64-ppc.c (allocate_dynrelocs): As above. - (ppc64_elf_relocate_section): As above. - -2003-05-05 Andreas Jaeger - - * elf64-x86-64.c (allocate_dynrelocs): Don't allocate dynamic - relocation entries for weak undefined symbols with non-default - visibility. - (elf64_x86_64_relocate_section): Initialize the GOT entries and - skip R_386_32/R_386_PC32 for weak undefined symbols with - non-default visibility. - -2003-05-04 H.J. Lu - - * elf32-i386.c (allocate_dynrelocs): Don't allocate dynamic - relocation entries for weak undefined symbols with non-default - visibility. - (elf_i386_relocate_section): Initialize the GOT entries and - skip R_386_32/R_386_PC32 for weak undefined symbols with - non-default visibility. - - * elfxx-ia64.c (allocate_fptr): Don't allocate function - descriptors for weak undefined symbols with non-default - visibility. - (allocate_dynrel_entries): Don't allocate relocation entries - for symbols resolved to 0. - (set_got_entry): Don't install dynamic relocation for weak - undefined symbols with non-default visibility. - (set_pltoff_entry): Likewise. - - * elflink.h (elf_fix_symbol_flags): Hide weak undefined symbols - with non-default visibility. - (elf_link_output_extsym): Don't make weak undefined symbols - with non-default visibility dynamic. - -2003-05-04 H.J. Lu - - * elflink.h (elf_merge_symbol): Correctly handle weak definition. - -2003-05-04 H.J. Lu - - * elflink.h (elf_merge_symbol): Don't record a hidden/internal - symbol dynamic. Check indirection when removing the old - definition for symbols with non-default visibility. - (elf_add_default_symbol): Skip when told by elf_merge_symbol. - -2003-05-02 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Make the - R_XSTORMY16_8 and R_XSTORMY16_16 relocs detect and complain about - unsigned overflow. - -2003-05-02 Andreas Jaeger - - * elf64-x86-64.c (elf_x86_64_copy_indirect_symbol): Don't copy - ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. - (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. - (elf_x86_64_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - -2003-05-02 Charles Lepple - Nick Clifton - - * acinclude.m4: Fix name of --enable-install-libbfd switch. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * Makefile.in: Regenerate. - -2003-05-01 Alan Modra - - * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Test whether the - weakdef sym has already been adjusted before treating it specially. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Don't copy - ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - (ppc64_elf_check_relocs): Set ELF_LINK_NON_GOT_REF. - -2003-04-28 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_relax_section): Relax ldxmov during - the relax finalize pass. - - * section.c (struct sec): Add need_finalize_relax and remove - flag11. - (STD_SECTION): Update struct sec initializer. - * bfd-in2.h: Regenerated. - -2003-04-28 H.J. Lu - - * elflink.h (elf_merge_symbol): Call elf_backend_copy_indirect_symbol - to copy any information related to dynamic linking when we flip - the indirection. - -2003-04-27 H.J. Lu - - * elf-bfd.h (ELF_LINK_DYNAMIC_DEF): New. - (ELF_LINK_DYNAMIC_WEAK): New. - - * elflink.h (elf_merge_symbol): Add one argument to indicate if - a symbol should be skipped. Ignore definitions in dynamic - objects for symbols with non-default visibility. - (elf_add_default_symbol): Adjusted. - (elf_link_add_object_symbols): Check if a symbol should be - skipped. Don't merge the visibility field with the one from - a dynamic object. - (elf_link_check_versioned_symbol): Use undef_bfd. - (elf_link_output_extsym): Warn if a forced local symbol is - referenced from dynamic objects. Make non-weak undefined symbol - with non-default visibility a fatal error. - -2003-04-27 Daniel Jacobowitz - - * configure.in: Bump version on HEAD to 2.14.90. - * configure: Regenerated. - -2003-04-26 Stephane Carrez - - PR savannah/3331: - * elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group - when we couldn't relax something. - -2003-04-25 Alan Modra - - * elflink.h (elf_merge_symbol): When we find a regular definition - for an indirect symbol, flip the indirection so that the old - direct symbol now points to the new definition. - -2003-04-24 Roland McGrath - - * elf.c (bfd_section_from_phdr): Map PT_GNU_EH_FRAME to "eh_frame_hdr". - -2003-04-24 Alan Modra - - * elf32-ppc.c: Formatting and comment fixes. - (ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol. - (ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs. - -2003-04-24 Dhananjay Deshpande - - * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added. - * bfd-in2.h: Rebuilt. - * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG. - * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC - & H8300SNMAGIC. - (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn. - * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn. - (h8300sn_info_struct, h8300hn_info_struct): New. - * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn - (elf32_h8_final_write_processing): Likewise. - -2003-04-23 Kaz Kojima - - * elf32-sh.c (tpoff): New. - (struct elf_sh_dyn_relocs): Remove tls_tpoff32. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (allocate_dynrelocs): Don't make unnecessary dynamic TLS - relocations. Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses. - (sh_elf_relocate_section): Likewise. Remove unnecessary tests. - (dtpoff_base): Fix wrong indentation. - (sh_elf_check_relocs): Don't set DF_STATIC_TLS flag with non-TLS - relocations. Don't set tls_tpoff32 flag. Don't make unnecessary - R_SH_TLS_TPOFF32 relocations. - -2003-04-23 J"orn Rennecke - - * archures.c (enum bfd_architecture): Amend comment to refer to SuperH. - * cpu-sh.c: Likewise. - * elf32-sh.c: Likewise. - * reloc.c (bfd_reloc_code_real): Likewise. - * elf32-sh64-com.c: Change comment to refer to SuperH. - * elf32-sh64.c: Likewise. - * elf64-sh64.c: Likewise. - * bfd-in2.h (enum bfd_architecture): Regenerate. - -2003-04-23 Alan Modra - - From Julien LEMOINE - * elf32-i386.c (elf_i386_info_to_howto): Delete. - (elf_info_to_howto): Define as elf_i386_info_to_howto_rel. - -2003-04-22 Kazuhiro Inaoka - - * archures.c: Replace references to Mitsubishi M32R with references - to Renesas M32R. - * relocs.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-04-21 Richard Henderson - - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Return false for an - executable when a symbol is defined both regular and dynamic. - -2003-04-21 Stephane Carrez - - * Makefile.am (BFD32_BACKENDS): Add elf32-m68hc1x.lo. - (elf32-m68hc1x.lo): Update dependencies - * configure.in: Add elf32-m68hc1x.lo. - * configure: Rebuild. - * Makefile.in: Rebuild. - -2003-04-21 Stephane Carrez - - * elf32-m68hc1x.c: New file (from elf32-m68hc11.c and elf32-m68hc12.c) - (m68hc11_elf_hash_table_create): New function. - (elf32_m68hc11_link_hash_table_free): New function. - (stub_hash_newfunc): New function. - (m68hc11_add_stub): New function. - (elf32_m68hc11_add_symbol_hook): New function. - (elf32_m68hc11_setup_section_lists): New function. - (elf32_m68hc11_next_input_section): New function. - (elf32_m68hc11_size_stubs): New function. - (elf32_m68hc11_build_stubs): New function. - (m68hc11_get_relocation_value): New function. - (elf32_m68hc11_relocate_section): Call the above to redirect - some relocations to the trampoline code. - (m68hc11_elf_export_one_stub): New function. - (m68hc11_elf_set_symbol): New function. - (elf32_m68hc11_build_stubs): Call it via bfd_hash_traverse. - (m68hc11_elf_get_bank_parameters): Get parameters only when the info - is not yet initialized. - - * elf32-m68hc1x.h: New file (from elf32-m68hc11.c and elf32-m68hc12.c) - (elf32_m68hc11_stub_hash_entry): New struct. - (m68hc11_page_info): Add trampoline handler address. - (m68hc11_elf_link_hash_table): Add stubs generation members. - (elf32_m68hc11_add_symbol_hook): Declare. - (elf32_m68hc11_setup_section_lists): Declare. - (elf32_m68hc11_size_stubs): Declare. - (elf32_m68hc11_build_stubs): Declare. - - * elf32-m68hc11.c (m68hc11_elf_ignore_reloc): Move to elf32-m68hc1x.c. - (elf32_m68hc11_gc_mark_hook, elf32_m68hc11_gc_sweep_hook): Likewise. - (elf32_m68hc11_check_relocs, elf32_m68hc11_relocate_section): Ditto. - (_bfd_m68hc11_elf_set_private_flags): Ditto. - (_bfd_m68hc11_elf_merge_private_bfd_data): Ditto. - (_bfd_m68hc11_elf_print_private_bfd_data): Ditto. - (bfd_elf32_bfd_link_hash_table_create): Define. - (elf_backend_add_symbol_hook): Define. - (m68hc11_elf_bfd_link_hash_table_create): New function. - (m68hc11_elf_build_one_stub): New function. - (m68hc11_elf_size_one_stub): New function. - (m68hc11_elf_bfd_link_hash_table_create): Install the above. - (bfd_elf32_bfd_link_hash_table_create): Define. - - * elf32-m68hc12.c (m68hc11_elf_ignore_reloc): Remove. - (m68hc12_addr_is_banked): Remove, use m68hc11_addr_is_banked. - (m68hc12_phys_addr): Ditto. - (m68hc12_phys_page): Ditto. - (m68hc12_elf_special_reloc): Move to elf32-m68hc1x.c. - (elf32_m68hc11_gc_mark_hook): Likewise. - (elf32_m68hc11_gc_sweep_hook): Likewise. - (elf32_m68hc11_check_relocs): Likewise. - (elf32_m68hc11_relocate_section): Likewise. - (_bfd_m68hc12_elf_set_private_flags): Likewise. - (_bfd_m68hc12_elf_merge_private_bfd_data): Likewise. - (_bfd_m68hc12_elf_print_private_bfd_data): Likewise. - (m68hc12_elf_build_one_stub): New function. - (m68hc12_elf_size_one_stub): New function. - (m68hc12_elf_bfd_link_hash_table_create): New function, use the above. - (elf_backend_add_symbol_hook): Define. - (elf_m68hc11_howto_table): Use TRUE for pcrel relocs; fix masks. - -2003-04-18 Nick Clifton - - * format.c (bfd_check_format_matches): Only check associated - vector if the matching_vector has been created. - -2003-04-15 Alexandre Oliva - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Fix typo in - 2003-04-09's change. - -2003-04-15 Brian Ford - - * peicode.h (coff_swap_scnhdr_in): If a section holds - uninitialized data and is from an object file or from an - executable image that has not initialized the s_size field, or if - the physical size is padded, use the virtual size (stored in - s_paddr) instead. - -2003-04-15 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Properly report - filename for alignment reduction. - -2003-04-15 Rohit Kumar Srivastava - - * archures.c: Replace occurrances of 'Hitachi' with 'Renesas'. - * reloc.c: Likewise. - * coff-h8300.c: Likewise. - * coff-h8500.c: Likewise. - * coff-sh.c: Likewise. - * cpu-h8300.c: Likewise. - * cpu-sh.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64-com.c: Likewise. - * elf32-sh64.c: Likewise. - * elf64-sh64.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-04-14 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Maintain maximum - alignment for common symbols. Warn reducing alignment for - common symbols. Report old filename when symbol size changes. - -2003-04-12 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other - occurrences of the same test changed in the previous patch. - Optimize. - -2003-04-11 Alexandre Oliva - - * elfxx-mips.c (mips_elf_get_global_gotsym_index): New. - (mips_elf_calculate_relocation): Decay GOT_PAGE/GOT_OFST to - GOT_DISP/addend only if the symbol got a global GOT entry. - -2003-04-10 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Decay - GOT_PAGE/GOT_OFST referencing overridable symbol to - GOT_DISP/addend. - (_bfd_mips_elf_check_relocs): Handle GOT_PAGE referencing - global symbol as GOT_DISP. - -2003-04-10 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_relocate_section): Don't continue to the - next relocation on an undefined symbol. - -2003-04-09 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) : - Ignore relocations against r_symndx == 0. - -2003-04-09 H.J. Lu - - * elf64-alpha.c (elf64_alpha_relocate_section): Don't return - FALSE for undefined symbols. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - -2003-04-09 Alexandre Oliva - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Try DWARF3-standard - and IRIX-specific shift-to-64-bit 4-byte lengths before following - addr_size. - -2003-04-08 Alexandre Oliva - - * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): Detect (ctor) - pointer size from ABI, not arch_bits_per_address. - -2003-04-07 Kevin Buettner - - * elfn32-mips.c (elf32_mips_grok_prstatus): Adjust core file related - constants for n32 ABI. - -2003-04-06 Andrew Cagney - - * simple.c (bfd_simple_get_relocated_section_contents): Disable - free that leads to GDB vs BFD memory corruption. - -2003-04-04 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Also adjust - symbols that mark the end of the section. - (m68hc11_elf_relax_section): Use R_M68HC11_PCREL_8 relocs when - converting to a relative branch so that the offset is computed after - the relaxation; also relocate a jsr into a bsr if possible but don't - relax them if they are to a far symbol as we need to call the - trampoline code. - (elf_m68hc11_howto_table): Set pcrel_offset to true. - -2003-04-04 Svein E. Seldal - - * archures.c: Namespace cleanup. Rename bfd_mach_c3x to - bfd_mach_tic3x and bfd_mach_c4x to bfd_mach_tic4x - * bfd-in2.h: Regenerate - * coff-tic4x.c: Namespace cleanup. Replace s/c4x/tic4x/ - * cpu-tic4x.c: Ditto - -2003-04-03 Nick Clifton - - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Compute ps and ss - differently for object files and executables. - * peicode.h (coff_swap_scnhdr_in): Only set the s_size field - for object files or for executables who have not already - initialised the field. - * libpei.h (bfd_pe_executable_p): New macro. Return true if - the PE format bfd is an executable. - -2003-04-03 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Don't use SYMBOL_REFERENCES_LOCAL - here as it's too early to reliably determine locality. - (ppc_elf_gc_sweep_hook): Likewise. - (SYMBOL_REFERENCES_LOCAL): Expand comment. - -2003-04-02 Bob Wilson - - * xtensa-modules.c: Remove comment indicating that this is a - generated file. - -2003-04-02 Alan Modra - - * elfxx-mips.c (_bfd_mips_elf_hide_symbol): Test for NULL dynobj. - -2003-04-01 Bob Wilson - - * Makefile.am (ALL_MACHINES): Add cpu-xtensa.lo. - (ALL_MACHINES_CFILES): Add cpu-xtensa.c. - (BFD32_BACKENDS): Add elf32-xtensa.lo, xtensa-isa.lo, and - xtensa-modules.lo. - (BFD32_BACKENDS_CFILES): Add elf32-xtensa.c, xtensa-isa.c, and - xtensa-modules.c. - (cpu-xtensa.lo): New target. - (elf32-xtensa.lo): Likewise. - (xtensa-isa.lo): Likewise. - (xtensa-modules.lo): Likewise. - * Makefile.in: Regenerate. - * archures.c (bfd_architecture): Add bfd_{arch,mach}_xtensa. - (bfd_archures_list): Add bfd_xtensa_arch. - * config.bfd: Handle xtensa-*-*. - * configure.in: Handle bfd_elf32_xtensa_{le,be}_vec. - * configure: Regenerate. - * reloc.c: Add BFD_RELOC_XTENSA_{RTLD,GLOB_DAT,JMP_SLOT,RELATIVE, - PLT,OP0,OP1,OP2,ASM_EXPAND,ASM_SIMPLIFY}. - * targets.c (bfd_elf32_xtensa_be_vec): Declare. - (bfd_elf32_xtensa_le_vec): Likewise. - (bfd_target_vector): Add bfd_elf32_xtensa_{be,le}_vec. - * cpu-xtensa.c: New file. - * elf32-xtensa.c: Likewise. - * xtensa-isa.c: Likewise. - * xtensa-modules.c: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Likewise. - -2003-04-01 Nick Clifton - - * archures.c (bfd_mach_arm_unknown): Define. - * bfd-in.h (bfd_arm_merge_machines, bfd_arm+update_notes, - bfd_arm_get_mach_from_notes): Prototype. - * bfd-in2.h: Regenerate. - * coff-arm.c (coff_arm_merge_private_bfd_data): Call - bfd_arm_merge_machines. - (coff_arm_final_link_postscript): Call bfd_arm_update_notes. - * coffcode.h (coff_set_arch_mach_hook): Call - bfd_arm_get_mach_from_notes. - * coffgen.c (coff_real_object_p): Revert previous delta. - * cpu_arm.c (arm_check_note): New function. Examine a note in a - .note section. - (bfd_arm_merge_machines): New function: Handle the merging of ARM - binaries compiled for different architectures.. - (bfd_arm_update_notes): New function: Update an ARM note section. - (bfd_arm_get_mach_from_notes): New function: Extract a bfd machine - number from an ARM note section. - * elf32-arm.h (elf32_arm_object_p): Use - bfd_arm_get_mach_from_notes. - (elf32_arm_merge_private_bfd_data): Use bfd_arm_merge_machines. - (elf32_arm_final_write_processing): Use bfd_arm_update_notes. - -2003-04-01 Ben Elliston - - * dwarf2.c (read_attribute_value): Correct typo in comment. - -2003-04-01 Nick Clifton - - * dwarf2.c (concat_filename): Use bfd_malloc() and strdup() - instead of concat(). - (decode_line_info): Only free filename if it is not NULL. - (add_line_info): Make a copy of the filename when storing it into - the info structure. - -2003-03-31 Andreas Schwab - Daniel Jacobowitz - - * simple.c (bfd_simple_get_relocated_section_contents): Add - parameter symbol_table. Optionally use it instead of the symbol - table from the bfd. Save and restore output offsets and output - sections around bfd_get_relocated_section_contents. Fix a memory - leak. - (simple_save_output_info, simple_restore_output_info): New - functions. - * bfd-in2.h: Regenerate. - * dwarf2.c (read_abbrevs): Use - bfd_simple_get_relocated_section_contents instead of - bfd_get_section_contents. - (decode_line_info): Likewise. - (_bfd_dwarf2_find_nearest_line): Likewise. Don't call - find_rela_addend. - (find_rela_addend): Remove. - * elfxx-ia64.c (elfNN_ia64_reloc): Weaken sanity check for - debugging sections. - (elfNN_ia64_hash_table_create): Create the hash table with malloc, - not bfd_zalloc. - -2003-03-31 David Heine - - * aoutx.h (aout_link_hash_table_create): Use bfd_malloc instead of - bfd_alloc. - * dwarf2.c (concat_filename): Always allocate space for the - returned filename. - (decode_line_info): Free the allocated filename returned by - concat_filename. - * elf-eh-frame.c (bfd_elf_write_section_eh_frame): Fix memory leaks. - * elf.c (copy_private_bfd_data): Likewise. - (_bfd_elf_slurp_version_tables): Fix bug freeing contents pointer. - * elflink.h (elf_link_sort_relocs): Fix memory leak. - * format.c (bfd_check_format_matches): Likewise. - * linker.c (bfd_generic_final_link): Likewise. - * opncls.c (find_separate_debug_info): Likewise. - * simple.c (bfd_simple_get_relocated_section_contents): Likewise. - -2003-03-28 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Correctly combine - visibilities. - -2003-03-27 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relax_section): Reset self_dtpmod_offset - to -1 before recomputing got offsets. - -2003-03-26 Andreas Schwab - - * elf32-m68k.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf_m68k_relocate_section): Use it to correctly handle symbols - forced to be local. - (elf_m68k_finish_dynamic_symbol): Emit RELATIVE reloc for got - entries for symbols that are forced to be local. - -2003-03-25 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_relax_section): New function. - * elfxx-mips.h (_bfd_mips_relax_section): Declare. - * elfn32-mips.c, elf64-mips.c: Use it. - -2003-03-25 Stan Cox - Nick Clifton - - Contribute support for Intel's iWMMXt chip - an ARM variant: - - * archures.c: Add bfd_mach_arm_iWMMXt. - * reloc.c: Add BFD_RELOC_ARM_CP_OFF_IMM_S2. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * coff-arm.c (coff_arm_merge_private_bfd_data): Allow iWMMXt - object files to be linked with XScale ones. - (coff_arm_final_link_postscript): Update note section. - * coffcode.h (coff_set_arch_mach_hook): Handle note section. - * coffgen.c (coff_real_object_p): Call bfd_coff_set_arch_mach_hook - after identifying a coff binary. - * cpu-arm.c (processors): Add iWMMXt. - (arch_inf): Likewise. - * elf32-arm.h (arm_object_p): Handle note section. - (elf32_arm_merge_private_bfd_data): Allow iWMMXt object files to - be linked with XScale ones. - (elf32_arm_section_flags): New function: Set flags on note section. - (elf32_arm_final_write_processing): Handle note section. - -2003-03-21 DJ Delorie - - * elf32-xstormy16.c (elf32_xstormy16_relocate_section): Call - _bfd_elf_rela_local_sym. - -2003-03-20 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_relax_section): Don't try relax for - non-ELF outputs. - -2003-03-20 Nick Clifton - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Initialise $idata2 and - $idata5 in case bfd_coff_final_link is not called. - -2003-03-19 Jakub Jelinek - - * elf64-sparc.c (struct sparc64_elf_section_data): Add reloc_count - field. - (canon_reloc_count): Define. - (sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table, - sparc64_elf_canonicalize_dynamic_reloc): Use it instead of - reloc_count. - (sparc64_elf_canonicalize_reloc): New routine. - (bfd_elf64_canonicalize_reloc): Define. - -2003-03-18 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation - againt mergeable sections. Take r_addend into account when caching - trampolines. - -2003-03-18 Richard Henderson - - * elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for - local symbols that have no dyninfo. - -2003-03-14 Gene Smith - - * ieee.c (ieee_write_expression): Handle the case where symbol is - NULL. - General formatting improvements. - -2003-03-13 Nick Clifton - - * configure.in (LINGUAS): Add zh_CN. - * configure: Regenerate. - * po/zh_CN.po: New file. - -2003-03-13 Elias Athanasopoulos - - * aout-cris.c (BYTES_IN_WORD): Don't define. - aout-encap.c: Likewise. - aout-ns32k.c: Likewise. - aout-tic30.c: Likewise. - hp300bsd.c: Likewise. - i386aout.c: Likewise. - i386dynix.c: Likewise. - i386linux.c: Likewise. - i386lynx.c: Likewise. - i386mach3.c: Likewise. - m68k4knetbsd.c: Likewise. - m68klinux.c: Likewise. - m68klynx.c: Likewise. - m68knetbsd.c: Likewise. - m88kmach3.c: Likewise. - mipsbsd.c: Likewise. - newsos3.c: Likewise. - sparclinux.c: Likewise. - sparclynx.c: Likewise. - sparcnetbsd.c: Likewise. - vaxbsd.c: Likewise. Fix comment formatting. - -2003-03-12 Alexandre Oliva - - * Reverted 2003-03-02's patch. - - * elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it - overridable. - * elf64-mips.c (mips_elf64_canonicalize_reloc, - mips_elf64_get_dynamic_reloc_upper_bound, - mips_elf64_canonicalize_dynamic_reloc): New, adapted from elf.c. - (bfd_elf64_get_canonicalize_reloc, - bfd_elf64_get_dynamic_reloc_upper_bound, - bfd_elf64_canonicalize_dynamic_reloc): Define. - (mips_elf64_slurp_reloc_table): Support dynamic. - (mips_elf64_slurp_one_reloc_table): Adjust. - -2003-03-12 Nick Clifton - - * xsym.c (bfd_sym_fetch_type_information_table_entry): Change - 'index' to 'offset' in test for zero value. - -2003-03-11 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Do not create - dynamic relocations pointing to local or section symbols, use the - NULL symbol instead. Document the choice to not emit an - additional R_MIPS_64 relocation. - -2003-03-11 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma from - zero index dynamic tls relocs generated for the GOT. Tidy code. - Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - -2003-03-07 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after - a tls_get_addr call. - - * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. - (ppc_elf_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. - (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. - (elf_i386_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - -2003-03-06 Jakub Jelinek - Andrew Haley - - * elflink.h (elf_bfd_discard_info): Don't process eh frames if - output is relocateable. - -2003-03-06 Steven Konopa - - * som.c (som_fixup_formats): Correct formats for R_AUX_UNWIND and - R_COMMENT. - -2003-03-06 Alan Modra - - * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize - error messages. - (ELIMINATE_COPY_RELOCS): Define to zero. - (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating - TLSLD relocs. Report reloc types on a number of errors. Optimize - LOCAL24PC check for non-local syms. Don't capitalize error messages. - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero. - (ppc64_elf_relocate_section): Don't deref htab->tls_sec when - calculating TLSLD relocs. Report reloc types on a number of errors. - Don't capitalize error messages. - -2003-03-03 H.J. Lu - - * elfxx-ia64.c (USE_BRL): Removed. - (oor_ip): Removed. - -2003-03-03 J"orn Rennecke - - * elf32-sh.c (sh_elf_howto_tab): Make R_SH_IND12W into an ordinary - relocation (no special function), and make it non-partial_inplace. - (sh_elf_relax_section): When creating a bsr, use a consistent value - no matter if the symbol is extern or not; set addend to -4. - Don't swap load / non-load instructions for SH4. - (sh_elf_relax_delete_bytes): In R_SH_IND12W case, check the offset - rather than if the symbol is external to determine if adjusting the - offset makes sense. Adjust the addend too if appropriate. - (sh_elf_relocate_section): In R_SH_IND12W, don't fiddle with the - relocation. - -2003-03-03 Nick Clifton - - * po/da.po: Installed latest translation. - -2003-03-02 Thiemo Seufer - - * elf32-mips.c (elf_mips_howto_table_rel): Change definition of - R_MIPS_PC16 to rightshift 2. - (elf_reloc_map mips_reloc_map): Map to rightshifted BFD reloc. - (bfd_elf32_bfd_reloc_type_lookup): Support - BFD_RELOC_MIPSEMB_16_PCREL_S2. - * elf64-mips.c (mips_elf64_howto_table_rel): Change definition of - R_MIPS_PC16 to rightshift 2. - (mips_elf64_howto_table_rela): Likewise. - (mips_reloc_map): Map to rightshifted BFD reloc. - * elfn32-mips.c: The same as in elf64-mips.c. - * elfxx-mips.c (mips_elf_got_for_ibfd): Typo in comment. - (mips_elf_calculate_relocation): Handle rightshifted addends for - R_MIPS_PC16. - * reloc.c (BFD_RELOC_MIPSEMB_16_PCREL_S2): New BFD relocation for - MIPS Embedded PIC. Remove superfluous empty COMMENT. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2003-02-28 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Correct bounds - for ltoff22x relaxation. - -2003-03-01 Alan Modra - - * bfd-in.h (_bfd): Don't define. - * bfd.c: Rename occurrences of "struct _bfd" to "struct bfd". - * syms.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-02-27 Richard Henderson - - * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add want_gotx; - (elfNN_ia64_check_relocs): Set it. - (allocate_global_data_got): Check it. - (allocate_local_got): Likewise. - (allocate_dynrel_entries): Likewise. - (elfNN_ia64_relax_ldxmov): New. - (elfNN_ia64_relax_section): Handle LTOFF22X, LDXMOV. - (elfNN_ia64_choose_gp): Split out from ... - (elfNN_ia64_final_link): ... here. - -2003-02-27 Andrew Cagney - - * bfd.c (struct bfd): Rename "struct _bfd". - * bfd-in.h: Update copyright. - (struct bfd): Rename "struct _bfd". - (_bfd): Define for backward compatibility. - * bfd-in2.h: Regenerate. - -2003-02-25 Alan Modra - - * elflink.h (elf_bfd_final_link): Apportion reloc counts to rel_hdr - and rel_hdr2 when initially counting input relocs rather than after - creating output reloc sections. - (elf_link_read_relocs_from_section): Don't abort with wrong reloc - sizes. - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-02-24 Kris Warkentin - - * elf.c (elfcore_read_notes): Add check for QNX style core file. - (elfcore_grog_nto_note): New function. - (elfcore_grog_nto_gregs): New function. - (elfcore_grog_nto_status): New function. - -2003-02-24 Alan Modra - - * elflink.c (_bfd_elf_create_got_section): Check existing .got - section flags before concluding that we've already been called. - Don't use register keyword. - (_bfd_elf_create_dynamic_sections): Don't use register keyword. - (_bfd_elf_create_linker_section): Formatting. - -2003-02-20 jmc - - * coff-h8300.c: Fix typo: intial -> initial. - * coff-ppc.c: Likewise. - -2003-02-20 Alan Modra - - * elf32-ppc.c: Formatting. - (allocate_dynrelocs): LD and GD relocs against the same sym need - separate GOT entries. - (ppc_elf_relocate_section): Correct GOT handling for multiple GOT - entries per symbol. - -2003-02-19 Alan Modra - - * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Simplify dynamic reloc - removal. Localize vars. Remove unnecessary dynobj test. - * elf32-i386 (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead - of INFO. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. - (elf_i386_relocate_section): Likewise. - (elf_i386_gc_sweep_hook): Simplify dyn reloc removal. Localize vars. - * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise. - * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise. - * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise. - * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise. - * elf32-sparc.c (elf32_sparc_gc_sweep_hook): Likewise. Remove - local_dynrel for section too. Don't touch HIPLT22, LOPLT10, PCPLT32 - or PCPLT10 relocs. Don't subtract twice on PLT32 relocs. - Formatting. - - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define. - (ppc64_elf_check_relocs): Use it. Correct comment. Move SEC_ALLOC - test. - (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. Use ELIMINATE_COPY_RELOCS. - (ppc64_elf_relocate_section): Likewise. - - * elf32-ppc.c (struct ppc_elf_dyn_relocs): Add pc_count field. - (ppc_elf_copy_indirect_symbol): Copy pc_count field. - (ELIMINATE_COPY_RELOCS): Define. - (ppc_elf_adjust_dynamic_symbol): Convert copy relocs to dynamic. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (MUST_BE_DYN_RELOC): Define. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. Trim dyn_relocs. - (ppc_elf_check_relocs): Don't generate dyn_relocs when we know they'll - not be used. Do generate dyn_relocs for copy reloc avoidance. Keep - track of pc_rel dyn relocs. - (ppc_elf_relocate_section): Remove "will_become_local". Adjust - WILL_CALL_FINISH_DYNAMIC_SYMBOL use. Trim dyn relocs as per - allocate_dynrelocs. Don't recalculate "sec". - -2003-02-18 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test. - * elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount - on invalid LD relocs. - (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry. - (ppc64_elf_relocate_section): Unify new handling of LD relocs and - tlsld_got entry. Use IS_PPC64_TLS_RELOC. - - * elf32-ppc.h: New file. - * elf32-ppc.c: Include elf32-ppc.h. - (NOP, CROR_151515, CROR_313131, TP_OFFSET, DTP_OFFSET): Define. - (struct ppc_elf_link_hash_entry): Rename "root" to "elf". Adjust uses. - Add "tls_mask" field. - (TLS_GD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_TLS, TLS_TPRELGD): Define. - (struct ppc_elf_link_hash_table): Rename "root" to "elf". Adjust uses. - Add got, relgot, plt, relplt, dynbss, relbss, dynsbss, relsbss, - sdata, sdata2, tls_sec, tls_get_addr, tlsld_got fields. - Make use of htab shortcuts throughout file. - (ppc_elf_link_hash_newfunc): Init tls_mask field. - (ppc_elf_link_hash_table_create): Init new fields. - (ppc_elf_copy_indirect_symbol): Copy tls_mask. - (ppc_elf_howto_raw): Add tls relocs. - (ppc_elf_reloc_type_lookup): Handle them. - (ppc_elf_unhandled_reloc): New function. - (ppc_elf_create_got): Stash got section pointer in hash table, - return status. Make .rela.got too. - (ppc_elf_create_dynamic_sections): Stash section pointers in htab. - (ppc_elf_adjust_dynamic_symbol): Only set up copy relocs when - NON_GOT_REF set. Don't allocate space in .plt here.. - (allocate_dynrelocs): ..do so here instead, properly ref-counting and - not allocating plt entries unnecessarily. Allocate got entries here. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (ppc_elf_size_dynamic_sections): Allocate local got entries. Pass - "info" during allocate_dynrelocs hash traversal. Use htab section - shortcuts rather than searching for named sections. Get rid of - "plt" and "strip" booleans. - (update_local_sym_info, bad_shared_reloc): New functions. - (ppc_elf_check_relocs): Handle TLS relocs. Move .rela.got creation to - ppc_elf_create_got. Don't mark got or plt reloc syms dynamic, do so - in allocate_dynreloc. Use update_local_sym_info and bad_shared_reloc. - Disallow R_PPC_EMB_RELSDA, R_PPC_EMB_NADDR32, R_PPC_EMB_NADDR16, - R_PPC_EMB_NADDR16_LO, R_PPC_EMB_NADDR16_HI and R_PPC_EMB_NADDR16_HA - in shared libs. R_PPC_PLTREL32 is a plt reloc too. Refcount all - relocs that might use a plt entry. Set NON_GOT_REF too. - Enumerate all do-nothing relocs. - (ppc_elf_gc_sweep_hook): Simplify removal of dynrelocs. Handle - tls relocs and all plt relocs. - (ppc_elf_tls_setup, ppc_elf_tls_optimize): New functions. - (ppc_elf_finish_dynamic_symbol): Don't build got entries here. - (ppc_elf_finish_dynamic_sections): Rewrite tag code using htab - shortcuts. - (ppc_elf_relocate_section): Tidy. Handle TLS relocs. Use - bfd_elf_local_sym_name. Simplify unresolved reloc code. Build got - entries and got relocs here. Warn on non-zero got reloc addend. - Split out branch taken/not taken reloc code into a separate switch - and correct offset calculation. Allow BRTAKEN/BRNTAKEN dynamic relocs. - Split out HA reloc adjustments to separate switch statement. Don't - warn on reloc overflow if we've already warned about undefined. - Don't rebuild sym name when reporting errors. Report all possible - errors from _bfd_final_link_relocate. - (bfd_elf32_bfd_final_link): Don't define. - -2003-02-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r". Don't - rebuild sym name when reporting errors. - -2003-02-17 Nick Clifton - - * elflink.h (elf_link_output_extsym): Only check - allow_shlib_undefined for shared libraries. - * elf32-i386.c (elf_i386_relocate_section): Remove bogus check - of allow_shlib_undefined. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-hppa.c (elf64_hppa_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise. - -2003-02-17 Nick Clifton - - * elf.c (SEGMENT_AFTER_SEGMENT): Add third parameter - the - address field to use in the comparison. - (SEGMENT_OVERLAPS): Check that LMAs overlap as well. - -2003-02-14 Bob Wilson - - * elfcore.h (elf_core_file_p): Compare alternate machine codes for ELF - backends when checking if the generic ELF target should be used. - - * syms.c (_bfd_stab_section_find_nearest_line): For line number stabs - outside of functions, treat values as absolute addresses. - - * bfd.c: Change embedded documentation to use consistent indentation - and to split up long lines. Change informal style of description - for functions lacking real documentation. - * coffcode.h: Break up long lines in embedded documentation. - * format.c: Likewise. - * targets.c: Likewise. - * libcoff.h: Regenerate. - * bfd-in2.h: Regenerate. - -2003-02-14 Alan Modra - - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Init tls_get_addr. - (ppc64_elf_copy_indirect_symbol): Merge tls_mask too. - (ppc64_elf_gc_sweep_hook): Simplify removal of dyn_relocs. - (allocate_dynrelocs): Don't treat undefined and undefweak specially. - (ppc_size_one_stub): Fix warning, and tighten plt entry check. - (group_sections): Don't share a stub section if stubs are for a large - section. Adjust comment. - (ppc64_elf_size_stubs): Roughly double the size left for stubs if - !stubs_always_before_branch. - (ppc64_elf_relocate_section): Initialize tlsld GOT entry once. Don't - treat undefined and undefweak specially when processing dyn relocs. - -2003-02-13 Jakub Jelinek - - * elflink.h (elf_link_add_object_symbols): Handle .symver x, x@FOO. - -2003-02-13 Nick Clifton - - * elf32-arm.h (elf32_thumb_to_arm_stub): Include section VMAs - in computation of offset to insert into BL instruction. - -2003-02-11 Uwe Stieber - - * config.bfd: Add support for kaOS as cross build target system. - -2003-02-11 Alan Modra - - * elf64-ppc.c (ppc64_elf_check_relocs): Match versioned - .__tls_get_addr too. - (ppc64_elf_tls_setup): Ensure cached tls_get_addr is not indirect. - -2003-02-10 Kaz kojima - - * elf32-sh.c (elf_sh_dyn_relocs): Add tls_tpoff32 field. - (elf_sh_link_hash_entry): Remove tls_tpoff32 field. - (sh_elf_link_hash_newfunc): Remove the initialization of - tls_tpoff32 field. - (allocate_dynrelocs): Keep dyn_relocs if it includes the entry - for which tls_tpoff32 flag is set. - (sh_elf_relocate_section): Covert to LE only if the dyn_relocs - of the symbol includes the entry matched with the input_section - and having tls_tpoff32 flag on. When linking statically, set - symbol index of R_SH_TLS_TPOFF32 relocation to zero if the symbol - is defined in this executable. - (sh_elf_check_relocs): Set tls_tpoff32 flag appropriately. - -2003-02-10 Jakub Jelinek - - * elf32-s390.c (elf_s390_size_dynamic_sections): Set relocs to TRUE - even if there is just non-empty .rela.plt. - -2003-02-10 Nick Clifton - - * archures.c (bfd_mach_arm_ep9312): Define. - * bfd-in2.h: Regenerate. - * cpu-arm.c (processors[]): Add ep9312. - (bfd_arm_arch): Add ep9312. - * elf32-arm.h (elf32_arm_merge_private_data): Update error - messages and add test for Maverick floating point support. - (elf32_arm_print_private_bfd_data): Handle - EF_ARM_MAVERICK_FLOAT flag. - (elf32_arm_object_p): New function. - (elf_backend_object_p): Define. - -2003-02-10 Alan Modra - - * elf64-ppc.c: Rename assorted occurrences of tls_type and similar - variables, structure fields or function params to tls_mask or - similar to better reflect usage. - (struct got_entry): Comment. - (struct ppc_link_hash_entry): Expand comment, and renumber TLS_*. - (get_tls_mask): Rename from get_tls_type. - -2003-02-09 Alan Modra - - * elf64-ppc.c (TLS_GD_LD): Don't define.. - (TLS_GD): ..define this instead and update all uses. - (TLS_TPRELGD): Define. - (ppc64_elf_link_hash_table_create): Tweak initialization of - init_refcount and init_offset. - (ppc64_elf_check_relocs): Add one extra element to t_symndx array. - Mark second slot of GD or LD toc entries. - (get_tls_type): Return an int. Distinguish toc GD and LD entries - from other tls types. - (ppc64_elf_tls_setup): New function, split out from.. - (ppc64_elf_tls_optimize): ..here. Don't optimize when symbols are - defined in a dynamic object. Fix LD optimization. Don't set TLS_TPREL - on GD->IE optimization, use TLS_TPRELGD instead. Use get_tls_type - return value to properly decide whether toc GD and LD entries can - optimize away __tls_get_addr call. Check next reloc after DTPMOD64 - to determine GD or LD rather than looking at TLS_LD flag. Don't - attempt to adjust got entry tls_type here.. - (allocate_dynrelocs): ..instead, adjust got entry tls_type here, and - look for possible merges. - (ppc64_elf_size_dynamic_sections): Adjust local got entries for - optimization. - (ppc64_elf_size_stubs): Tweak __tls_get_addr fudge. - (ppc64_elf_relocate_section): Rename some vars to better reflect usage. - Make use of return value from get_tls_type to properly detect GD and - LD optimizations. Split tlsld/gd hi/ha from lo/ds case. Don't - handle tls_get_addr removal when looking at REL24 relocs, do it when - looking at the previous reloc. Check reloc after DTPMOD64 to determine - GD or LD. - * elf64-ppc.h (ppc64_elf_tls_setup): Declare. - -2003-02-08 Alan Modra - - * elf32-hppa.c (group_sections): Don't share a stub section if - stubs are for a large section. - - * elf32-hppa.c (elf32_hppa_size_stubs): Double the size left for - stubs if !stubs_always_before_branch. - -2003-02-07 Nick Clifton - - * elf.c (swap_out_syms): Generate an error message if an - equivalent output section cannot be found for a symbol. - -2003-02-07 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_relax_section): Don't crash if - local_got_entries is NULL. - -2003-02-06 Andreas Schwab - - * elf-eh-frame.c (get_DW_EH_PE_signed): Define. - (read_value): Add parameter is_signed, use signed extraction if - the value is signed. - (_bfd_elf_write_section_eh_frame): Pass signed flag of the - encoding to read_value. - -2003-02-06 Alan Modra - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and - plt info when called to transfer weak sym info. - -2003-02-05 Alan Modra - - * reloc.c: Add PPC and PPC64 TLS relocs. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * elf64-ppc.c (TP_OFFSET, DTP_OFFSET): Declare. - (ppc64_elf_howto_raw): Add TLS howto's. Adjust R_PPC64_NONE to be - against a 32 bit field. - (ppc64_elf_reloc_type_lookup): Handle TLS relocs. - (_ppc64_elf_section_data): Add t_symndx and comments. - (ppc64_elf_section_data): Use elf_section_data macro. - (ppc64_elf_new_section_hook): American spelling. - (struct got_entry, struct plt_entry): New. - (MUST_BE_DYN_RELOC): Rename from IS_ABSOLUTE_RELOC. - (struct ppc_stub_hash_entry): Add "addend" field. - (struct ppc_link_hash_entry): Add "tls_type". - (TLS_TLS, TLS_GD_LD, TLS_LD, TLS_TPREL, TLS_DTPREL, - TLS_EXPLICIT): Define. - (struct ppc_link_hash_table): Add tls_sec, tls_get_addr, tlsld_got. - (link_hash_newfunc): Init new fields. - (ppc64_elf_link_hash_table_create): Likewise. Set init_refcount and - init_offset to NULL. - (ppc64_elf_copy_indirect_symbol): Copy got and plt info. Don't call - _bfd_elf_link_hash_copy_indirect, rather insert relevant code from - there. - (update_local_sym_info, update_plt_info): New functions. - (ppc64_elf_check_relocs): Use them. Handle TLS relocs. Adjust GOT - handling to use got.glist rather than got.refcount. Likewise for PLT. - (ppc64_elf_gc_sweep_hook): Handle TLS relocs, new GOT and PLT lists. - (func_desc_adjust): Adjust for new PLT list. - (ppc64_elf_adjust_dynamic_symbol): Likewise. - (get_sym_h, get_tls_type): New functions. - (ppc64_elf_edit_opd): Remove unused variable. Use get_sym_h. - (ppc64_elf_tls_optimize): New function. - (allocate_dynrelocs): Adjust for new PLT and GOT lists. Allocate - TLS relocs. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc_type_of_stub): Adjust for new PLT list. - (ppc_build_one_stub): Likewise. - (ppc64_elf_size_stubs): Likewise. Use get_sym_h. Treat __tls_get_addr - calls specially. - (ppc64_elf_relocate_section): Adjust for new GOT and PLT lists. Handle - TLS relocs. Report local syms using bfd_elf_local_sym_name. Don't - init GOT entries that have a reloc. Generate GOT relocs here.. - (ppc64_elf_finish_dynamic_symbol): ..not here. Adjust for PLT list. - * elf64-ppc.h (ppc64_elf_tls_optimize): Declare. - -2003-02-04 Andreas Schwab - - * elf32-m68k.c (elf_m68k_hash_entry): Define. - (elf_m68k_link_hash_traverse): Remove. - (elf_m68k_link_hash_newfunc): Use struct bfd_hash_entry and - elf_m68k_hash_entry instead of struct elf_m68k_link_hash_entry to - reduce casting. - (elf_m68k_check_relocs): Use elf_m68k_hash_entry instead of - casting. - (elf_m68k_size_dynamic_sections): Use elf_link_hash_traverse - instead of elf_m68k_link_hash_traverse. - (elf_m68k_discard_copies): Change first parameter to pointer to - struct elf_link_hash_entry and use elf_m68k_hash_entry when struct - elf_m68k_link_hash_entry is needed. - -2003-02-04 Alan Modra - - * elf-bfd.h (struct got_entry, struct plt_entry): Forward declare. - (struct elf_link_hash_entry): Add "glist" and "plist" fields to - "got" union, and declare as gotplt_union. Use gotplt_uinion for - "plt" field. - (struct elf_link_hash_table): Make "init_refcount" a gotplt_union. - Add "init_offset" field. - (struct elf_obj_tdata ): Add "struct got_entry **" to union. - (elf_local_got_ents): Declare. - * elf.c (_bfd_elf_link_hash_newfunc): Adjust initialization of "got" - and "plt". - (_bfd_elf_link_hash_hide_symbol): Use "init_offset". - (_bfd_elf_link_hash_table_init): Set "init_offset". - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set init_refcount - from init_offset. - (elf_adjust_dynamic_symbol): Set plt and got offsets using init_offset. - - * elf.c (bfd_elf_local_sym_name): Split out from.. - (group_signature): ..here. - * elf-bfd.h (bfd_elf_local_sym_name): Declare. - -2003-02-04 Alan Modra - - * elf-bfd.h (enum elf_link_info_type): Remove. - (struct bfd_elf_section_data): Move sec_info_type, use_rela_p fields - to struct sec. Remove linkonce_p field. - (elf_linkonce_p): Delete. - (elf_discarded_section): Update for sec_info_type change. - * section.c (struct sec): Add sec_info_type, use_rela_p, has_tls_reloc, - flag11, flag12, flag13, flag14, flag15, flag16, flag20, flag24. - (ELF_INFO_TYPE_NONE): Define. - (ELF_INFO_TYPE_STABS): Define. - (ELF_INFO_TYPE_MERGE): Define. - (ELF_INFO_TYPE_EH_FRAME): Define. - (ELF_INFO_TYPE_JUST_SYMS): Define. - (STD_SECTION): Update struct sec initializer. - * ecoff.c (bfd_debug_section): Likewise. - * elf.c: Likewise. Update occurrences of sec_info_type and use_rela_p. - * elflink.h: Likewise. - * elf-eh-frame.c: Likewise. - * elf64-alpha.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * bfd-in2.h: Regenerate. - - * elf32-sparc.c (sec_do_relax): Use elf_section_data macro rather than - referring to used_by_bfd. - * elf64-sparc.c (sec_do_relax): Likewise. - * elf64-mmix.c (mmix_elf_section_data): Likewise. - * elfxx-mips.c (mips_elf_section_data): Likewise. - * ieee.c (ieee_slurp_section_data): Use ieee_per_section macro. - (ieee_get_section_contents): Likewise. - (ieee_new_section_hook): Formatting. - (ieee_canonicalize_reloc): Remove commented out code. - * mmo.c (mmo_section_data): Define. Use throughout file. - * oasys.c (oasys_get_section_contents): Use oasys_per_section macro. - -2003-01-31 Graydon Hoare - - * Makefile.am (opncls.lo): Add dependency upon libiberty.h. - * Makefile.in: Regenerate. - * opncls.c (calc_crc32, get_debug_link_info, - seperate_debug_file_exists, find_seperate_debug_file): New - internal functions. - (bfd_follow_gnu_debuglink): New function. Follow the pointer - contained inside a .gnu_debuglink section. - * bfd-in2.h: Regenerate. - -2003-01-29 Alexandre Oliva - - * elfxx-mips.c (mips_elf_got_entry_hash): Don't dereference - entry->abfd when it's NULL. - -2003-01-27 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Handle - _bfd_elf_section_offset returning -2 the same way as -1. - - * elfxx-mips.c (mips_elf_multi_got): New function. - (struct mips_got_entry): Make symndx and gotidx signed. Moved - addend into union along with address and link hash entry. - (struct mips_got_info): Added bfd2got and next. - (struct mips_elf_hash_sort_data): Added max_unref_got_dynindx. - (mips_elf_got_section, mips_elf_create_got_section): Use - SEC_EXCLUDE bit to tell whether we really need the got - section. Take boolean arguments to disregard an excluded - section, or to create it as excluded. Adjust all callers. - Use mips_elf_got_section all over. - (mips_elf_local_got_index, mips_elf_got_page, - mips_elf_got16_entry): Take input bfd as argument, and pass it - on to mips_elf_create_local_got_entry. - (mips_elf_global_got_index, mips_elf_create_local_got_entry): - Take input bfd as argument, and manage entries in the - appropriate GOT. - (mips_elf_got_offset_from_index): Take input bfd as argument, - and use it to adjust the GP offset of the bfd. - (mips_elf_sort_hash_table, mips_elf_sort_hash_table_f): Move - unreferenced GOT entries of global symbols to the end. - (mips_elf_record_global_got_symbol): Take input bfd as - argument. Add entries to the master GOT hash table. - (struct mips_elf_bfd2got_hash): New. - (struct mips_elf_got_per_bfd_arg): New. - (struct mips_elf_set_global_got_offset_arg): New. - (mips_elf_hash_bfd_vma, mips_elf_multi_got_entry_hash, - mips_elf_multi_got_entry_eq, mips_elf_bfd2got_entry_hash, - mips_elf_bfd2got_entry_eq, mips_elf_make_got_per_bfd, - mips_elf_merge_gots, mips_elf_set_global_got_offset, - mips_elf_resolve_final_got_entry, - mips_elf_resolve_final_got_entries, mips_elf_adjust_gp, - mips_elf_got_for_ibfd): New functions. - (ELF_MIPS_GP_OFFSET): Don't depend on SGI_COMPAT. - (MIPS_ELF_GOT_MAX_SIZE): New macro. - (STUB_LW): Generate 64-bit stub regardless of SGI_COMPAT. - (mips_elf_got_entry_hash): Take new fields into account. Use - mips_elf_hash_bfd_vma. - (mips_elf_got_entry_eq): Take new fields into account. - (mips_elf_create_got_section): Initialize new fields. - (mips_elf_calculate_relocation): Pass input_bfd to functions - that now take it. Adjust gp for the input_bfd. - (mips_elf_allocate_dynamic_relocation, - mips_elf_create_dynamic_relocation, - _bfd_mips_elf_create_dynamic_sections): Use... - (mips_elf_rel_dyn_section): New function. Borrow code from... - (_bfd_mips_elf_check_relocs): Pass input_bfd to functions that - now take it. Create the got section if needed, even if - excluded, before recording a global got symbol. Move some - code to... - (mips_elf_record_local_got_symbol): New fn. - (_bfd_mips_elf_size_dynamic_sections): Disable combreloc. - Compute multi-got global entries offsets. Move GOT code to... - (_bfd_mips_elf_always_size_sections): Call mips_elf_multi_got - if the GOT is too big. - (_bfd_mips_elf_finish_dynamic_symbol): Set got entry of - undefweak symbol to zero. Generate dynamic relocations for - non-primary GOT entries for global symbols. - (_bfd_mips_elf_finish_dynamic_sections): Handle multi-got - case. Generate dynamic relocations for local got entries. - Sort dynamic relocations on N64 too, using... - (sort_dynamic_relocs_64): New fns. - (_bfd_mips_elf_hide_symbol): Adjust multi-got counters. - (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_XGOT. - -2003-01-27 Alexandre Oliva - - * bfd.c (struct _bfd): Added id field. - * opncls.c (_bfd_id_counter): New static variable. - (_bfd_new_bfd): Use it. - * bfd-in2.h: Rebuilt. - -2003-01-25 Alan Modra - - * elf32-sparc.c (bfd_elf32_new_section_hook): Define. - -2003-01-25 Jakub Jelinek - - * elf32-sparc.c (_bfd_sparc_elf_howto_table): Add TLS relocs. - (elf32_sparc_rev32_howto): New variable. - (sparc_reloc_map): Add TLS relocs. - (elf32_sparc_reloc_type_lookup, elf32_sparc_info_to_howto): - Handle REV32. - (sparc_elf_hix22_reloc, sparc_elf_lox10_reloc, elf32_sparc_mkobject): - New functions. - (struct elf32_sparc_dyn_relocs, struct elf32_sparc_link_hash_entry, - struct elf32_sparc_link_hash_table): - New structures. - (elf32_sparc_tdata, elf32_sparc_local_got_tls_type, - elf32_sparc_hash_table): Define. - (link_hash_newfunc, elf32_sparc_link_hash_table_create, - create_got_section, elf32_sparc_create_dynamic_sections, - elf32_sparc_copy_indirect_symbol, elf32_sparc_tls_transition): New - functions. - (elf32_sparc_check_relocs): Handle TLS relocs. Add dynamic reloc - reference counting. - (elf32_sparc_gc_sweep_hook): Likewise. - (elf32_sparc_adjust_dynamic_symbol): Likewise. - (elf32_sparc_size_dynamic_sections): Likewise. - (elf32_sparc_relocate_section): Likewise. - (allocate_dynrelocs, readonly_dynrelocs, dtpoff_base, tpoff): - New functions. - (elf32_sparc_object_p): Allocate backend private object data. - (bfd_elf32_bfd_link_hash_table_create, - elf_backend_copy_indirect_symbol, bfd_elf32_mkobject, - elf_backend_can_refcount): Define. - (elf_backend_create_dynamic_sections): Define to - elf32_sparc_create_dynamic_sections. - * reloc.c: Add SPARC TLS relocs. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf64-sparc.c (sparc64_elf_howto_table): Add TLS relocs. - (sparc_reloc_map): Likewise. - -2003-01-24 Martin Schwidefsky - - * bfd-in2.h: Regenerate. - * elf32-s390.c (elf_s390_mkobject, elf_s390_tls_transition, - s390_tls_reloc, dtpoff_base, tpoff, invalid_tls_insn): New functions. - (elf_howto_table): Add TLS relocs. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_link_hash_entry): Add tls_type. - (elf_s390_hash_entry, elf_s390_obj_tdata, elf_s390_local_got_tls_type): - New macros. - (elf_s390_link_hash_table): Add tls_ldm_got. - (link_hash_newfunc): Initialize tls_type. - (elf_s390_link_hash_table_create): Initialize refcount of tls_ldm_got. - (elf_s390_copy_indirect_symbol): Copy tls_type information. - (elf_s390_check_relocs): Support TLS relocs. - (elf_s390_gc_sweep_hook): Likewise. - (allocate_dynrelocs): Likewise. - (elf_s390_size_dynamic_sections): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject): Define for TLS. - * elf64-s390.c: Same changes as for elf32-s390.c. - * libbfd.h: Regenerate. - * reloc.c: Add s390 TLS relocations. - -2003-01-24 Charles Lepple - - * aclocal.m4: Fix name of --enable-install-libbfd switch. - -2003-01-23 Nick Clifton - - * Add sh2e support: - 2002-04-02 Elena Zannoni - * archures.c (bfd_mach_sh2e): Added. - * bfd-in2.h: Rebuilt. - * cpu-sh.c (arch_info_struct): Added SH2e. - * elf32-sh.c (sh_elf_set_mach_from_flags): Handle EF_SH2E. - -2003-01-23 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data): Remove tdata. Change - dynindx to an int. Rearrange for better packing. - * elf.c (_bfd_elf_new_section_hook): Don't alloc if already done. - * elf32-mips.c (bfd_elf32_new_section_hook): Define. - * elf32-sh64.h: New. Split out from include/elf/sh.h. - (struct _sh64_elf_section_data): New struct. - (sh64_elf_section_data): Don't dereference sh64_info (was tdata). - * elf32-sh64-com.c: Include elf32-sh64.h. - * elf32-sh64.c: Likewise. - (sh64_elf_new_section_hook): New function. - (bfd_elf32_new_section_hook): Define. - (sh64_elf_fake_sections): Adjust for sh64_elf_section_data change. - (sh64_bfd_elf_copy_private_section_data): Likewise. - (sh64_elf_final_write_processing): Likewise. - * elf32-sparc.c (struct elf32_sparc_section_data): New. - (elf32_sparc_new_section_hook): New function. - (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. - (sec_do_relax): Define. - (elf32_sparc_relax_section): Adjust to use sec_do_relax. - (elf32_sparc_relocate_section): Likewise. - * elf64-mips.c (bfd_elf64_new_section_hook): Define. - * elf64-mmix.c (struct _mmix_elf_section_data): New. - (mmix_elf_section_data): Define. Use throughout file. - (mmix_elf_new_section_hook): New function. - (bfd_elf64_new_section_hook): Define. - * elf64-ppc.c (struct _ppc64_elf_section_data): New. - (ppc64_elf_section_data): Define. Use throughout. - (ppc64_elf_new_section_hook): New function. - (bfd_elf64_new_section_hook): Define. - * elf64-sparc.c (struct sparc64_elf_section_data): New. - (sparc64_elf_new_section_hook): New function. - (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. - (sec_do_relax): Define. - (sparc64_elf_relax_section): Adjust to use sec_do_relax. - (sparc64_elf_relocate_section): Likewise. - (bfd_elf64_new_section_hook): Define. - * elfn32-mips.c (bfd_elf32_new_section_hook): Define. - * elfxx-mips.c (struct _mips_elf_section_data): New. - (mips_elf_section_data): Define. Use throughout. - (_bfd_mips_elf_new_section_hook): New function. - (mips_elf_create_got_section): Don't alloc used_by_bfd. - * elfxx-mips.h (_bfd_mips_elf_new_section_hook): Declare. - * elfxx-target.h (bfd_elfNN_new_section_hook): Add #ifndef. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-01-21 Richard Henderson - - * elf64-alpha.c (ALPHA_ELF_LINK_HASH_PLT_LOC): New. - (struct alpha_elf_link_hash_entry): Add plt_old_section, plt_old_value. - (elf64_alpha_adjust_dynamic_symbol): Set them. - (elf64_alpha_size_plt_section_1): Reset them when plt entry removed. - (elf64_alpha_relax_tls_get_addr): Handle LDM relocs. Frob the - symbol index when relaxing LDM to TPREL. - (elf64_alpha_relax_section): Likewise. Allow relaxation of GD - relocs, even if the target isn't locally defined. - (elf64_alpha_check_relocs): Frob LDM reloc symndx to zero. - (elf64_alpha_relocate_section): Likewise. Force TP-relative - relocs vs symndx 0 to the tp base. - -2003-01-21 Fabio Alemagna - - * config.bfd: Handle i[3456]86-*-aros*. - -2003-01-21 Andreas Schwab - - * elf32-ppc.c (struct ppc_elf_dyn_relocs): Define. - (struct ppc_elf_link_hash_entry): Define. - (ppc_elf_hash_entry): New function. - (struct ppc_elf_link_hash_table): Define. - (ppc_elf_hash_table): New function. - (ppc_elf_link_hash_newfunc): New function. - (ppc_elf_link_hash_table_create): New function. - (ppc_elf_copy_indirect_symbol): New function. - (allocate_dynrelocs): New function. - (readonly_dynrelocs): New function. - (ppc_elf_size_dynamic_sections): Allocate space for dynamic - relocs and determine DT_TEXTREL. - (ppc_elf_check_relocs): Don't do that here, just count the - dynamic relocs. - (ppc_elf_gc_sweep_hook): Discard any dynamic relocs against the - removed section. - (bfd_elf32_bfd_link_hash_table_create): Define. - (elf_backend_copy_indirect_symbol): Define. - -2003-01-21 Richard Henderson - - * elf64-alpha.c (alpha_dynamic_entries_for_reloc): GOTTPREL and - TPREL also get a reloc if shared. Remove SREL support. - (elf64_alpha_emit_dynrel): New. - (elf64_alpha_relocate_section): Use it. Resolve dynamic TPREL - and GOTTPREL relocs to local symbols against the tp base. - (elf64_alpha_finish_dynamic_symbol): Use elf64_alpha_emit_dynrel. - - * elf64-alpha.c (elf64_alpha_relax_got_load): Decrement got - use count before clobbering r_type. - (elf64_alpha_relax_tls_get_addr): Don't use pos[1] if insn - ordering would mean dataflow inspection is necessary. - -2003-01-20 Svein E. Seldal - - * coffcode.h (coff_set_flags): Added get/set arch hooks. - -2003-01-20 Fabio Alemagna - - * elf32-sh.c: Treat elfNN_bed like other macros defined in - elfxx-target.h and #undef it before #define'ing it. - * elf32-i386.c: Likewise. - * elf32-sh64.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-sh64.c: Likewise. - -2003-01-20 Martin Schwidefsky - - * bfd-in2.h: Regenerate. - * elf32-s390.c (elf_s390_adjust_gotplt): New prototype. - (elf_howto_table): Rename R_390_GOTOFF to R_390_GOTOFF32. Add - R_390_GOTOFF16, R_390_GOTOFF64, R_390_GOTPLT12, R_390_GOTPLT16, - R_390_GOTPLT32, R_390_GOTPLT64, R_390_GOTPLTENT, R_390_PLTOFF16, - R_390_PLTOFF32 and R_390_PLTOFF64. - (elf_s390_reloc_type_lookup): Likewise. - (struct elf_s390_link_hash_entry): Add gotplt_refcount to keep track - of GOTPLT references to a function. - (link_hash_newfunc): Initialize gotplt_refcount. - (elf_s390_check_relocs): Move allocation of local_got_refcounts array - and creation of the got section out of the main switch. Add support - for the gotoff, gotplt and pltoff relocations. - (elf_s390_gc_sweep_hook): Add reference counting for gotoff, gotplt - and pltoff. - (elf_s390_adjust_gotplt): New function. - (elf_s390_adjust_dynamic_symbol): Adjust gotplt refcount for removed - plt entries. - (allocate_dynrelocs): Add comment. - (elf_s390_relocate_section): Change r_type to unsigned. Add support - for gotoff, gotplt and pltoff relocations. - * elf64-s390.c: Same changes as for elf32-s390.c. - * libbfd.h: Regenerate. - * reloc.c: Add BFD_RELOC_390_GOTOFF64, BFD_RELOC_390_GOTPLT12, - BFD_RELOC_390_GOTPLT16, BFD_RELOC_390_GOTPLT32, BFD_RELOC_390_GOTPLT64, - BFD_RELOC_390_GOTPLTENT, BFD_RELOC_390_PLTOFF16, BFD_RELOC_390_PLTOFF32 - and BFD_RELOC_390_PLTOFF64. - -2003-01-18 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Handle - R_IA64_TPREL64[LM]SB against non-global symbol properly. - -2003-01-16 Jakub Jelinek - - * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add - self_dtpmod_done and self_dtpmod_offset. - (allocate_global_data_got): Only use one got entry for all - dtpmod relocs against local symbols. - (allocate_dynrel_entries): Only need .rela.got entry for - dtpmod against global symbol. - (elfNN_ia64_size_dynamic_sections): Initialize self_dtpmod_offset. - Reserve space in .rela.got for the local dtpmod entry. - (set_got_entry): Initialize the common local dtpmod .got entry. - (elfNN_ia64_relocate_section): Handle R_IA_64_DTPREL64LSB - and R_IA_64_DTPREL64MSB. - -2003-01-16 Alan Modra - - * elf64-ppc.c: Include elf/ppc64.h rather than elf/ppc.h. - (R_PPC_*): Rename all occurrences to R_PPC64_*. - (R_PPC64_ADDR30): Rename all occurrences to R_PPC64_REL30. - (enum elf_ppc_reloc_type): Ditto to enum elf_ppc64_reloc_type. - (ppc64_elf_gc_sweep_hook): Handle R_PPC64_REL30 along with other - relative relocs, not with absolute ones. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2003-01-15 Andreas Schwab - - * elf32-ppc.c (ppc_elf_check_relocs): Don't set DF_TEXTREL for a - relocation against a non-allocated readonly section. - -2003-01-10 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Adjust addend for GOT16_HA. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. PLTGOT16_HA too. - -2002-01-08 Klee Dienes - - * Makefile.am (ALL_MACHINES): Use cpu-msp430.lo, not cpu-msp430.c. - (BFD32_BACKENDS): Use elf32-msp430.lo, not elf32-msp430.c. - * Makefile.in: Regenerate. - -2003-01-08 Alexandre Oliva - - * elfn32-mips.c (prev_reloc_section): New. - (GET_RELOC_ADDEND): Use it. Parenthesize macro arguments. - (SET_RELOC_ADDEND): Parenthesize macro argument. - -2003-01-07 John David Anglin - - * elf32-hppa.c (final_link_relocate): For all DP relative relocations, - adjust addil instructions if the symbol has no section. - -2003-01-07 DJ Delorie - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Make REL_12 not - partial_inplace. - -2003-01-07 Andreas Schwab - - * elf32-m68k.c (elf_m68k_check_relocs): Don't set DF_TEXTREL for - PC relative relocations. - (elf_m68k_discard_copies): Set it here instead. - -2002-01-02 Ben Elliston - Jeff Johnston - - * Makefile.am (ALL_MACHINES): Add cpu-iq2000.lo. - (ALL_MACHINES_CFILES): Add cpu-iq2000.c. - (BFD32_BACKENDS): Add elf32-iq2000.lo. - (BFD32_BACKENDS_CFILES): Add elf32-iq2000.c. - (cpu-iq2000.lo): New target. - * Makefile.in: Regenerate. - * config.bfd: Handle iq2000-*-elf. - * archures.c (bfd_architecture): Add bfd_{arch,mach}_iq2000. - (bfd_archures_list): Add bfd_iq2000_arch. - * configure.in: Handle bfd_elf32_iq2000_vec. - * configure: Regenerate. - * reloc.c: Add BFD_RELOC_IQ2000_OFFSET_16, BFD_RELOC_IQ2000_OFFSET_21, - and BFD_RELOC_IQ2000_UHI16. - * targets.c (bfd_elf32_iq2000_vec): Declare. - (bfd_target_vector): Add bfd_elf32_iq2000_vec. - * elf.c (prep_headers): Set e_machine to EM_IQ2000. - * cpu-iq2000.c: New file. - * elf32-iq2000.c: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Likewise. - -2003-01-02 Richard Sandiford - - * elfxx-mips.c: Include libiberty.h. - (elf_mips_isa, _bfd_mips_elf_mach_extends_p): Remove. - (mips_set_isa_flags): New function, split out from... - (_bfd_mips_elf_final_write_processing): ...here. Only call - mips_set_isa_flags if the EF_MIPS_MACH bits are clear. - (mips_mach_extensions): New array. - (mips_32bit_flags_p): New function. - (_bfd_mips_elf_merge_private_bfd_data): Rework architecture checks. - Use mips_32bit_flags_p to check if one binary is 32-bit and the - other is 64-bit. When adopting IBFD's architecture, adopt the - bfd_mach as well as the flags. - -2003-01-02 Nick Kelsey - - * elf32-ip2k.c: Re-work of linker relaxation code for the ip2k to - fix internal errors, fix bad code generation, fix incorrect stabs - information, and improve ability to eliminate redundant page - instructions. Added code to ip2k_final_link_relocate to self-verify - the linker relaxation. Fix formatting problems. - -2002-12-30 Chris Demetriou - - * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mipsisa32r2 case. - * archures.c (bfd_mach_mipsisa32r2): New define. - * bfd-in2.h: Regenerate. - * cpu-mips.c (I_mipsisa32r2): New enum value. - (arch_info_struct): Add entry for I_mipsisa32r2. - * elfxx-mips.c (elf_mips_isa, _bfd_elf_mips_mach) - (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_32R2. - (_bfd_mips_elf_final_write_processing): Add - bfd_mach_mipsisa32r2 case. - (_bfd_mips_elf_merge_private_bfd_data): Handle merging of - binaries marked as using MIPS32 Release 2. - -2002-12-30 Dmitry Diky - - * Makefile.am: Add msp430 target. - * configure.in: Likewise. - * Makefile.in: Regenerate. - * configure: Regenerate. - * archures.c: Add msp430 architecture vector. - * config.bfd: Likewise. - * reloc.c: Add msp430 relocs. - * targets.c: Add msp320 target. - * cpu-msp430.c: New file: msp430 cpu detection. - * elf32-msp430.c: New file: msp430 reloc processing. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - -2002-12-28 Jakub Jelinek - - * elf.c (elf_sort_sections): Don't reorder .tbss. - (assign_file_positions_for_segments): Only adjust off/voff - for increased alignment in PT_LOAD or PT_NOTE segment, - but adjust p_filesz for .tbss too. in PT_LOAD consider - .tbss to have zero memory size. - (copy_private_bfd_data) [SECTION_SIZE]: Define. - [IS_CONTAINED_BY_VMA, IS_CONTAINED_BY_LMA]: Use it. - [INCLUDE_SECTION_IN_SEGMENT]: Only put SHF_TLS sections - into PT_TLS segment. Never put SHF_TLS sections in - segments other than PT_TLS or PT_LOAD. - - * elf64-alpha.c (elf64_alpha_finish_dynamic_sections): Clear .plt - sh_entsize. - -2002-12-23 DJ Delorie - - * coff64-rs6000.c (xcoff64_ppc_relocate_section): Fix logic reversal. - -2002-12-23 Alan Modra - - * elflink.h (elf_link_output_extsym): Heed strip_discarded. - -2002-12-23 Nick Clifton - - * archures.c (bfd_arch_get_compatible): Add third parameter - 'accept_unknowns'. Only accept unknown format BFDs if - accept_unknowns is true, or if the format is "binary". - * bfd-in2.h: Regenerate. - -2002-12-21 Nick Clifton - - * coff-arm.c (coff_arm_relocate_section): Disable WINCE workaround - that subtracted 8 from pc relative relocations. - -2002-12-20 Kazu Hirata - - * coff-h8300.c: Fix comment typos. - * coffcode.h: Likewise. - * cpu-cris.c: Likewise. - * elf32-vax.c: Likewise. - * genlink.h: Likewise. - * linker.c: Likewise. - * som.c: Likewise. - * tekhex.c: Likewise. - * vms-misc.c: Likewise. - -2002-12-20 DJ Delorie - - * reloc.c: Add BFD_RELOC_XSTORMY16_12. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_12. - (xstormy16_reloc_map): Add R_XSTORMY16_12. - -2002-12-19 Kazu Hirata - - * doc/bfdint.texi: Fix typos. - -2002-12-20 Paul Eggert - - Port to POSIX 1003.1-2001. - * acinclude.m4 (AM_INSTALL_LIBBFD): Do not rely on "test -o". - * configure.in (build-warnings): Likewise. - (Horrible hacks to build DLLs on Windows): Do not rely on "tail -1". - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2002-12-19 Alan Modra - - * coff-h8300.c: Include libiberty.h. - (h8300_reloc16_extra_cases): Check the hash table creator before - referencing h8300 specific fields. Stash the hash table pointer - in a local var. Comment typo fixes. - (h8300_bfd_link_add_symbols): Likewise. - - * reloc.c (struct reloc_howto_struct): Revise src_mask and - dst_mask comments. - * bfd-in2.h: Regenerate. - -2002-12-18 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc - code a little. Comment on dynamic relocs against section symbols. - -2002-12-17 Roger Sayle - - * configure.host (ia64-*-hpux*): Support 64 bit targets using - the HP compiler's "long long". - -2002-12-16 Andrew MacLeod - - * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_LO16 - and R_XSTORMY16_HI16) howto entries. - (xstormy16_reloc_map): Map R_XSTORMY16_{LO,HI}16 to BFD_RELOC_{LO,HI}16. - (xstormy16_info_to_howto_rela): Use R_XSTORMY16_GNU_VTINHERIT to - determine the start of the second reloc table. - -2002-12-16 Nathan Tallent - - * ecofflink.c: Fix the reading of the debugging information - of Tru64/Alpha binaries that are produced by recent Compaq - compilers. - (mk_fdrtab): Fix error in creating the FDR (file descriptor) - table. - (lookup_line): Because of the strange information sometimes - generated by Compaq's recent compilers, change how the FDR - table is searched so that PDRs (procedure descriptors) are - correctly found. Note that this change is really more of a hack; - however, I have included extensive documentation as to why - this is the best solution short of an extensive rewrite or - another hack. - (fdrtab_lookup): Add comments to explain the algorithm. - -2002-12-12 Alexandre Oliva - - * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Reorder - initializers to match struct declaration. - -2002-12-12 Alan Modra - - * dwarf2.c (comp_unit_contains_address): Comment typo fix. - * elf.c (get_program_header_size): Likewise. - * elf32-m32r.c (m32r_elf_lo16_reloc): Likewise. - (m32r_elf_generic_reloc): Likewise. - * elf32-ppc.c (ppc_elf_howto_init): Likewise. - * elflink.h (elf_bfd_discard_info): Likewise. - -2002-12-12 Alan Modra - - * elf32-i386.c (elf_i386_finish_dynamic_sections): Add output_offset - to DT_JMPREL. Use srelplt input section size for DT_PLTRELSZ and - DT_RELSZ adjustment, not output section. Avoid writing tags when - unchanged. Don't assume linker script is sane, adjust DT_REL too. - * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Just use raw - size of srelplt for DT_PLTRELSZ. Use srelplt input section size for - DT_RELASZ adjustment, not output section. Avoid writing tags when - unchanged. Adjust DT_RELA. - * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Tweaks for better - formatting. Avoid writing tags when unchanged. Adjust DT_RELA. - -2002-12-12 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Don't divide - addend by 4. - -2002-12-12 Alexandre Oliva - - * elfxx-mips.c (struct mips_got_entry): New. - (struct mips_got_info): Added got_entries field. - (mips_elf_got_entry_hash, mips_elf_got_entry_eq): New functions. - (mips_elf_local_got_index, mips_elf_got_page, - mips_elf_got16_entry): Re-implement in terms of new... - (mips_elf_create_local_got_entry): Rewrite to use got_entries. - Change return type. - (mips_elf_highest): Warning clean-up. - (mips_elf_create_got_section): Initialize got_entries. - (_bfd_mips_elf_check_relocs): Use got_entries to estimate - local got size. - (_bfd_mips_elf_size_dynamic_sections): Do not account for - GOT_PAGE entries, since we now reuse GOT16 entries. - -2002-12-10 Jason Thorpe - - * aoutx.h (set_section_contents): Allow an otherwise unrepresentable - read-only section that lies after .text and before .data to be - written into the output file and included in a_text. - (translate_to_native_sym_flags): If an otherwise unrepresentable - section was merged with .text, convert its symbols to N_TEXT - symbols. - * libaout.h (aout_section_merge_with_text_p): New macro. - -2002-12-08 Alan Modra - - * bfd-in.h: Comment typo fix. Formatting. - * bfd-in2.h: Regenerate. - * coff64-rs6000.c (xcoff64_openr_next_archived_file): Warning fix. - * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): Prototype. - * elf64-mmix.c (mmix_dump_bpo_gregs): Warning fix. - -2002-12-05 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21BI. - Only send PCREL21B though the plt. Fix installed reloc type. - (elfNN_ia64_relocate_section): Give error for dynamic reloc - against PCREL22 or PCREL64I; clean up error messages for - branch relocs. - -2002-12-04 Kevin Buettner - - * elf64-mips.c (elf64_mips_grok_prstatus, elf64_mips_grok_psinfo): - New functions. - (elf_backend_grok_prstatus, elf_backend_grok_psinfo): Define. - -2002-12-04 David Mosberger - - * cpu-ia64-opc.c: Add operand constant "ar.csd". - -2002-12-04 H.J. Lu - - * elfxx-ia64.c (get_local_sym_hash): Use section ID instead of - BFD address when constructing local name. - -2002-12-04 Andreas Schwab - - * elf32-m68k.c (struct elf_m68k_link_hash_table): Add sym_sec - member. - (elf_m68k_link_hash_table_create): Initialize it. - (elf_m68k_check_relocs): Handle symbols that are forced to be - local due to visibility changes. - (elf_m68k_adjust_dynamic_symbol): Likewise. - (elf_m68k_size_dynamic_sections): Likewise. - (elf_m68k_discard_copies): Likewise. - (elf_m68k_relocate_section): Likewise. - -2002-12-04 Alan Modra - - * elf64-ppc.c (ppc64_elf_edit_opd): Correct typo. - -2002-12-04 Alan Modra - - * srec.c (srec_write_symbols): Restore '$' prefix to address - accidentally removed in 2002-04-04 change. - (srec_get_symtab): Use 0 instead of `(long) FALSE'. - -2002-12-03 Nick Clifton - - * elf32-ppc.c (apuinfo_list_init): New function. - (apuinfo_list_add): New function: Add a value to the list. - (apuinfo_list_length): New function: Return the number of - values on the list. - (apuinfo_list_element): New function: Return a value on the - list. - (apuinfo_list_finish): New function: Free the resources used - by the list. - (ppc_elf_begin_write_processing): New function. Scan the - input bfds for apuinfo sections. - (ppc_elf_write_section): New function: Delay the creation of - the contents of an apuinfo section in an output bfd. - (ppc_elf_final_write_processing): New function. Create the - contents of an apuinfo section in an output bfd. - (elf_backend_begin_write_processing): Define. - (elf_backend_final_write_processing): Define. - (elf_backend_write_section): Define. - -2002-12-03 Richard Henderson - - * cpu-ia64-opc.c (elf64_ia64_operands): Add ldxmov entry. - -2002-12-01 Stephane Carrez - - Fix PR savannah/1417: - * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Don't adjust - branch if it goes to the start of the deleted region. - -2002-12-01 Stephane Carrez - - * bfd-in2.h (bfd_mach_m6812): Rebuild. - * archures.c (bfd_mach_m6812_default, bfd_mach_m6812, - bfd_mach_m6812s): Declare. - - * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): New function. - (_bfd_m68hc12_elf_set_private_flags): Call it. - (_bfd_m68hc12_elf_print_private_bfd_data): Report processor version. - (_bfd_m68hc12_elf_merge_private_bfd_data): Merge the flags and - report microcontroller incompatibilities (HC12 vs HCS12). - (elf_backend_object_p): Update. - -2002-11-30 Alan Modra - - * bfd-in.h (TRUE_FALSE_ALREADY_DEFINED, BFD_TRUE_FALSE): Delete. - (enum bfd_boolean, boolean): Delete. - (bfd_boolean): Typedef to an int. - (FALSE, TRUE): Define. - * aix386-core.c, aix5ppc-core.c, aout-adobe.c, aout-arm.c, aout-cris.c, - aout-encap.c, aout-ns32k.c, aout-target.h, aout-tic30.c, aoutf1.h, - aoutx.h, archive.c, archive64.c, archures.c, bfd-in.h, bfd.c, bfdwin.c, - binary.c, bout.c, cache.c, cisco-core.c, coff-a29k.c, coff-alpha.c, - coff-apollo.c, coff-arm.c, coff-aux.c, coff-h8300.c, coff-h8500.c, - coff-i386.c, coff-i860.c, coff-i960.c, coff-ia64.c, coff-m68k.c, - coff-m88k.c, coff-mcore.c, coff-mips.c, coff-or32.c, coff-ppc.c, - coff-rs6000.c, coff-sh.c, coff-sparc.c, coff-stgo32.c, coff-tic30.c, - coff-tic4x.c, coff-tic54x.c, coff-tic80.c, coff-w65.c, coff-we32k.c, - coff-z8k.c, coff64-rs6000.c, coffcode.h, coffgen.c, cofflink.c, - corefile.c, cpu-a29k.c, cpu-alpha.c, cpu-arc.c, cpu-arm.c, cpu-avr.c, - cpu-cris.c, cpu-d10v.c, cpu-d30v.c, cpu-dlx.c, cpu-fr30.c, cpu-frv.c, - cpu-h8300.c, cpu-h8500.c, cpu-hppa.c, cpu-i370.c, cpu-i386.c, - cpu-i860.c, cpu-i960.c, cpu-ia64.c, cpu-ip2k.c, cpu-m10200.c, - cpu-m10300.c, cpu-m32r.c, cpu-m68hc11.c, cpu-m68hc12.c, cpu-m68k.c, - cpu-m88k.c, cpu-mcore.c, cpu-mips.c, cpu-mmix.c, cpu-ns32k.c, - cpu-openrisc.c, cpu-or32.c, cpu-pdp11.c, cpu-pj.c, cpu-powerpc.c, - cpu-rs6000.c, cpu-s390.c, cpu-sh.c, cpu-sparc.c, cpu-tic30.c, - cpu-tic4x.c, cpu-tic54x.c, cpu-tic80.c, cpu-v850.c, cpu-vax.c, - cpu-w65.c, cpu-we32k.c, cpu-xstormy16.c, cpu-z8k.c, dwarf1.c, - dwarf2.c, ecoff.c, ecofflink.c, efi-app-ia32.c, efi-app-ia64.c, - elf-bfd.h, elf-eh-frame.c, elf-hppa.h, elf-m10200.c, elf-m10300.c, - elf-strtab.c, elf.c, elf32-arc.c, elf32-arm.h, elf32-avr.c, - elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, elf32-fr30.c, - elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, elf32-hppa.h, - elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, - elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, - elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, - elf32-pj.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-sh64-com.c, - elf32-sh64.c, elf32-sparc.c, elf32-v850.c, elf32-vax.c, - elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, - elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-ppc.h, elf64-s390.c, - elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, - elfarm-oabi.c, elfcode.h, elfcore.h, elflink.c, elflink.h, - elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c, elfxx-mips.h, - elfxx-target.h, format.c, freebsd.h, genlink.h, hash.c, hp300hpux.c, - hppabsd-core.c, hpux-core.c, i386aout.c, i386linux.c, i386lynx.c, - i386mach3.c, i386msdos.c, i386os9k.c, ieee.c, ihex.c, irix-core.c, - libaout.h, libbfd-in.h, libbfd.c, libcoff-in.h, libecoff.h, libieee.h, - libnlm.h, liboasys.h, libpei.h, libxcoff.h, linker.c, lynx-core.c, - m68klinux.c, m68klynx.c, mach-o.c, mach-o.h, merge.c, mipsbsd.c, - mmo.c, netbsd-core.c, netbsd.h, nlm.c, nlm32-alpha.c, nlm32-i386.c, - nlm32-ppc.c, nlm32-sparc.c, nlmcode.h, oasys.c, opncls.c, osf-core.c, - pc532-mach.c, pdp11.c, pe-arm.c, pe-i386.c, pe-mcore.c, pe-mips.c, - pe-sh.c, peXXigen.c, pef.c, pei-arm.c, pei-i386.c, pei-mcore.c, - pei-mips.c, pei-sh.c, peicode.h, ppcboot.c, ptrace-core.c, reloc.c, - reloc16.c, riscix.c, rs6000-core.c, sco5-core.c, section.c, simple.c, - som.c, som.h, sparclinux.c, sparclynx.c, srec.c, stabs.c, sunos.c, - syms.c, targets.c, tekhex.c, ticoff.h, trad-core.c, versados.c, - vms-gsd.c, vms-hdr.c, vms-misc.c, vms-tir.c, vms.c, vms.h, - xcoff-target.h, xcofflink.c, xsym.c, xsym.h: Replace boolean with - bfd_boolean, true with TRUE, false with FALSE. Simplify comparisons - of bfd_boolean vars with TRUE/FALSE. Formatting. - * bfd-in2.h, libbfd.h, libcoff.h: Regenerate - -2002-11-28 Alan Modra - - * elf-bfd.h: Replace occurrences of Elf32_Internal_* and - Elf64_Internal_* with Elf_Internal_*. Replace Elf_Internal_Rel - with Elf_Internal_Rela. - * elf-hppa.h, elf-m10200.c, elf-m10300.c, elf32-arc.c, elf32-arm.h, - elf32-avr.c, elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, - elf32-fr30.c, elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, - elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, - elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, - elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, - elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-v850.c, elf32-vax.c, - elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, - elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, - elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, elfarm-oabi.c, - elfcode.h, elflink.h, elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c: Ditto. - * elf-hppa.h (elf_hppa_internal_shdr): Delete. Use Elf_Internal_Shdr - throughout instead. - * elf.c (_bfd_elf_no_info_to_howto_rel): Delete. - * elfcode.h (elf_swap_reloca_in): Pass source operand as a bfd_byte *. - Remove INLINE keyword. - (elf_swap_reloc_in): Likewise. Also clear r_addend. - (elf_swap_reloc_out, elf_swap_reloca_out): Pass destination operand - as a bfd_byte *. - (elf_write_relocs): Consolidate REL and RELA code. - (elf_slurp_reloc_table_from_section): Simplify REL code. - (NAME(_bfd_elf,size_info)): Populate reloc swap entries. - * elf-bfd.h (MAX_INT_RELS_PER_EXT_REL): Define. - * elflink.h (elf_link_read_relocs_from_section): Consolidate REL and - RELA code. - (elf_link_adjust_relocs): Likewise. Don't malloc space for temp - reloc array, use a fixed size of MAX_INT_RELS_PER_EXT_REL. - (elf_link_output_relocs): Likewise. - (elf_reloc_link_order): Likewise. - (elf_finish_pointer_linker_section): Likewise. - (struct elf_link_sort_rela): Remove union. - (elf_link_sort_cmp1): Update to suit. - (elf_link_sort_cmp2): Here too. - (elf_link_sort_relocs): Consolidate REL and RELA code. Fix memory - over-allocation for int_rels_per_ext_rel != 1 case. - * elf32-arm.h: Update all bfd_elf32_swap_reloc_out calls. - * elf32-i386.c: Likewise. - * elf32-cris.c: Likewise for bfd_elf32_swap_reloca_out. - * elf32-hppa.c, elf32-i370.c, elf32-m68k.c, elf32-ppc.c, elf32-s390.c, - elf32-sh.c, elf32-vax.c, elfxx-mips.c: Likewise. - * elf64-alpha.c: Likewise for bfd_elf64_swap_reloca_out. - * elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, - elf64-sparc.c, elf64-x86-64.c: Likewise. - * elfxx-ia64.c: Likewise for bfd_elfNN_swap_reloca_out. - * elfxx-mips.c (sort_dynamic_relocs): Likewise for - bfd_elf32_swap_reloc_in. - - * elf32-arm.h: Update elf32_arm_info_to_howto calls. - * elf32-mips.c: Likewise for mips_info_to_howto_rel. - (mips_elf64_swap_reloc_in): Zero r_addend. - (mips_elf64_be_swap_reloc_in): Likewise. - (mips_elf64_slurp_one_reloc_table): Simplify. - - * elf64-alpha.c (alpha_elf_size_info): Populate reloc swap entries. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2002-11-28 Kaz Kojima - - * elf32-sh.c (sh_elf_relocate_section): Don't complain about - unresolved debugging relocs in dynamic applications. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - -2002-11-26 Alan Modra - - * elf-eh-frame.c (ENSURE_NO_RELOCS): Disregard R_*_NONE relocs. - (_bfd_elf_discard_section_eh_frame): Don't discard duplicate CIEs - on a relocatable link. Comment typos. - * elf.c (_bfd_elf_link_hash_newfunc): Assign elements of structure - in the order they are declared. Clear elf_hash_value too. - (_bfd_elf_link_hash_table_init): Likewise assign in order. Clear - eh_info and tls_segment. - * elflink.h (elf_link_input_bfd ): Keep reloc offsets - sorted when discarding relocs by turning them into R_*_NONE. - - * libbfd.c (warn_deprecated): Comment spelling. - * po/SRC-POTFILES.in: Regenerate. - -2002-11-21 Richard Henderson - - * elflink.h (elf_link_add_object_symbols): Don't overwrite the - arch's st_other bits when merging visibilities. - (elf_link_output_extsym): Tidy clearing of visibility field. - -2002-11-21 Alan Modra - - * coff-mcore.c (SWAP_IN_RELOC_OFFSET): Define. - (SWAP_OUT_RELOC_OFFSET): Define. - -2002-11-20 Alexandre Oliva - - * elf.c (_bfd_elf_link_hash_table_init): Make sure - can_refcount is properly extended to the type of - init_refcount. - -2002-11-19 Alexandre Oliva - - * elfxx-mips.c (MIPS_RELOC_RELA_P): New macro. - (_bfd_mips_elf_relocate_section): Use it. - - * elfxx-mips.c (MNAME): New macro. - (_bfd_mips_elf_check_relocs): Use it. - (_bfd_mips_elf_discard_info): Likewise. - (_bfd_mips_elf_final_link): Likewise. - -2002-11-19 Alan Modra - - * elf64-ppc.c (ppc64_elf_edit_opd): When deleting relocs, adjust - rel_hdr.sh_size too. - -2002-11-18 Klee Dienes - - * Makefile.am (BFD32_LIBS): Add bfdwin.lo, bfdio.lo. - (BFD32_LIBS_CFILES): Add bfdwin.c, bfdio.c. - (BFD_H_FILES): Add bfdwin.c, bfdio.c. - (LIBBFD_H_FILES): Add bfdwin.c, bfdio.c. - Add dependencies for bfdwin.c, bfdio.c. - * bfd.c: Remove bfd_get_mtime, bfd_get_size. - * libbfd.c: Remove real_read, bfd_bread, _bfd_window_internal, - bfd_init_window, bfd_free_window, bfd_get_file_window, bfd_bwrite, - bfd_tell, bfd_flush, bfd_stat, bfd_seek. - * bfdio.c: New file. Contains real_read, bfd_bread, bfd_write, - bfd_tell, bfd_flush, bfd_stat, bfd_seek, bfd_ge_mtime, - bfd_get_size (moved from libbfd.c and bfd.c). - * bfdwin.c New file. Contains _bfd_window_internal, - bfd_init_window, bfd_free_window, bfd_get_file_window (moved from - libbfd.c and bfd.c). - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * aclocal.m4: Regenerate. - * Makefile.in: Regenerate. - * configure: Regenerate. - -2002-11-18 Klee Dienes - - * bfd.c (bfd_preserve_save): Don't zero BFD_IN_MEMORY. - -2002-11-15 Kazu Hirata - - * coff-h8300.c (h8300_reloc16_estimate): Do not optimize away - jsr after a short jump. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - -2002-11-15 Klee Dienes - - * pef.c (bfd_pef_convert_architecture): Move declaration of - ARCH_POWERPC and ARCH_M68K to the start of the function. - -2002-11-14 Svein E. Seldal - - * coff-tic4x.c (tic4x_howto_table): Formatting fixup - -2002-11-14 Hans-Peter Nilsson - - * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): - For bpo_gregs_section->contents, allocate _raw_size, not - _cooked_size. - -2002-11-13 Klee Dienes - - * config.bfd: Add entries for powerpc-*-darwin and cousins. - -2002-11-13 H.J. Lu - - * elfcode.h (elf_object_p): Don't restore abfd->arch_info. - -2002-11-13 Klee Dienes - Alan Modra - - * bfd.c (struct bfd_preserve): New. - (bfd_preserve_save): New function. - (bfd_preserve_restore): Ditto. - (bfd_preserve_finish): Ditto. - * bfd-in2.h: Regenerate. - * mach-o.c: Formatting. - (bfd_mach_o_scan_read_symtab_symbol): Make "value" unsigned. - (bfd_mach_o_object_p): Use bfd_preserve_save/restore/finish. - (bfd_mach_o_core_p): Ditto. - (bfd_mach_o_scan): Pass in mdata. - * mach-o.h (bfd_mach_o_scan): Update prototype. - * pef.c: Formatting. - (bfd_pef_object_p): Use bfd_preserve_save/restore/finish. - (bfd_pef_xlib_object_p): Ditto. - (bfd_pef_scan): Pass in mdata. Move version check to bfd_pef_object_p. - * pef.h (bfd_pef_scan): Update prototype. - * xsym.c: Formatting, K&R fixes. - (bfd_sym_object_p): Use bfd_preserve_save/restore/finish. - (bfd_sym_scan): New function split out from bfd_sym_object_p. - * xsym.h (bfd_sym_scan): Declare. - * elfcode.h (elf_object_p): Use bfd_preserve_save/restore/finish. - * elfcore.h (elf_core_file_p): Likewise. - * targets.c (_bfd_target_vector): Revert 2002-11-08 change. - -2002-11-12 Nick Clifton - - * po/da.po: Updated Danish translation. - -2002-11-12 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Optimize stabs for - relocatable link too. - (elf_link_input_bfd): When emitting relocs, adjust offsets for - eh_frame and stab sections. Zap deleted relocs. - (elf_reloc_symbol_deleted_p): Return true for zero r_symndx. - (elf_bfd_discard_info): Run for relocatable link too. - * elf64-ppc.c (ppc64_elf_edit_opd): Rename from edit_opd. Make global. - Handle ld -r case. - (ppc64_elf_size_dynamic_sections): Don't call edit_opd from here. - * elf64-ppc.h (ppc64_elf_edit_opd): Declare. - - * elf-bfd.h (struct cie_header): Move from elf_eh-frame.c. - (struct cie, struct eh_cie_fde, struct eh_frame_sec_info): Likewise. - (struct eh_frame_array_ent, struct eh_frame_hdr_info): Likewise. - (enum elf_link_info_type): Remove ELF_INFO_TYPE_EH_FRAME_HDR. - (struct eh_frame_hdr_info): Add "hdr_sec", remove "split". - (struct elf_link_hash_table): Add eh_info. - (struct elf_obj_tdata): Change eh_frame_hdr to an asection *. - (_bfd_elf_discard_section_eh_frame): Update prototype. - (_bfd_elf_discard_section_eh_frame_hdr): Likewise. - (_bfd_elf_write_section_eh_frame): Likewise. - (_bfd_elf_write_section_eh_frame_hdr): Likewise. - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Remove "ehdrsec" - param. Get "hdr_info" from link hash table. - (_bfd_elf_discard_section_eh_frame_hdr): Remove "sec" param. Get - header section from link hash table. Save header section to elf_tdata. - (_bfd_elf_maybe_strip_eh_frame_hdr): Remove local "sec". Use - header section from link hash table. Don't alloc hdr_info. Clear - hdr_sec instead of setting "strip". - (_bfd_elf_eh_frame_section_offset): Formatting. - (_bfd_elf_write_section_eh_frame): Remove "ehdrsec", add "info" param. - Get header section from link hash table. - (_bfd_elf_write_section_eh_frame_hdr): Remove "sec", add "info" param. - Get header section from link hash table. - * elf.c (map_sections_to_segments): Use cached eh_frame_hdr. - (get_program_header_size): Likewise. - (_bfd_elf_section_offset): Formatting. - * elflink.h (elf_link_create_dynamic_sections): Stash eh frame header - section pointer in link hash table. - (elf_bfd_final_link): Adjust _bfd_elf_write_section_eh_frame_hdr - and _bfd_elf_write_section_eh_frame calls. Update comment about - eh_frame entries. - (elf_bfd_discard_info): Adjust _bfd_elf_discard_section_eh_frame and - _bfd_elf_discard_section_eh_frame_hdr calls. Remove "ehdr". - - * po/SRC-POTFILES.in: Regenerate. - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't zero - relocs for discarded FDEs. Remove dead code. - (_bfd_elf_write_section_eh_frame_hdr): Remove dead code. - * elflink.h (elf_bfd_discard_info): Don't save edited relocs. - Tidy conditions under which stabs are edited. Formatting. - * elf64-sparc.c (sparc64_elf_relocate_section): Ignore overflows - from discarded relocs. - * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Add reloc output - section adjustments after testing magic values. - -2002-11-12 Thomas Moestl - - * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Correct - references to large plt symbols. - -2002-11-12 Klee Dienes - - * mach-o.c (bfd_mach_o_scan_read_thread): Don't re-use 'i' when - looking for an unused section name. - -2002-11-11 Kazu Hirata - - * coff-h8300.c: Fix formatting. - * elf32-h8300.c: Likewise. - * reloc16.c: Likewise. - -2002-11-09 Jeroen Dobbelaere - - * elf32-arm.h (elf32_arm_size_dynamic_sections): Don't strip output - section when dynamic section unused; _bfd_strip_section_from_output - instead. - -2002-11-08 Alan Modra - - * targets.c (_bfd_target_vector): Disable pef_vec, pef_xlib_vec - and sym_vec. - - * dwarf2.c: Revert last change. - -2002-11-07 Michal Ludvig - - * dwarf2.c (read_indirect_string, read_abbrevs, decode_line_info, - _bfd_dwarf2_find_nearest_line): Use - bfd_simple_get_relocated_section_contents() instead of - bfd_get_section_contents(). - * reloc.c (bfd_perform_relocation): Add sanity check. - * simple.c (simple_get_relocated_section_contents): If the section - does not have any relocs associated with it, just return the - unadjusted contents. - -2002-11-07 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : Correct test for filling in constant .got - contents, enabling for a non-DSO, for symbols defined in the - program with --export-dynamic. - -2002-11-07 Alan Modra - - * elf64-ppc.c: Comment typo fixes. - (ppc64_elf_merge_private_bfd_data): Allow BFD_ENDIAN_UNKNOWN input. - -2002-11-07 Nick Clifton - - * po/da.po: Updated Danish translation. - -2002-11-06 Alexandre Oliva - - * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate - exactly three internal relocs per external reloc. Set reloc_count - to the external reloc count. - -2002-11-06 Klee Dienes - - * coff-stgo32.c (stub_bytes): Mark as const. - Fix comment formatting. - -2002-11-06 Klee Dienes - - * Makefile.am (BFD32_BACKENDS): Add mach-o.lo, pef.lo, and - xsym.lo. - (BFD32_BACKENDS_CFILES): Add mach-o.c, pef.c, and xsym.c. - (SOURCE_HFILES): Add mach-o.h, pef.h, pef-traceback.h, xsym.h - * archures.c (enum bfd_architecture): Add bfd_arch_m98k. - * bfd.c (struct bfd): Add private data for mach-o, pef, and sym. - * targets.c (enum bfd_flavour): Add flavours for mach-o, pef, and - sym. - (_bfd_target_vector): Add target vectors for mach-o, pef, and sym. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * xsym.c: New file. Contains support for the Apple/Metrowerks - xSYM debugging format. - * xsym.h: New file. - * pef.c: New file. Contains support for the Apple Code Fragment - Manager Preferred Executable Format - * pef.h: New file. - * pef-traceback.h: New file. Contains support for parsing PowerPC - traceback tables as used by PEF executables (and perhaps other - systems as well). - * mach-o.c: New file. Contains support for the Mach-O object file - format. - * mach-o.h: New file. - * mach-o-target.c: New file. Declares the mach-o targets - themselves. Included three times by mach-o.c; each time with a - different set of macros set. - -2002-11-06 Graeme Peterson - - * Makefile.am: Remove entries for elf32-qnx.[ch]. - * Makefile.in: Regenerate. - * config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec, - ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use - bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. - * configure.in: Remove support for bfd_elf32_sh{l}qnx_vec, - bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec, - and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets. - bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. - * configure: Regenerate. - * elf32-qnx.c: Remove. - * elf32-qnx.h: Remove. - * elf.c: Remove calls to QNX specific set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf-bfd.h (struct elf_backend_data): Remove set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf32-i386.c: Remove QNX extended bfd support. - * elf32-ppc.c: Remove QNX extended bfd support. - * elf32-sh.c: Remove QNX extended bfd support. - * elfarm-nabi.c: Remove QNX extended bfd support. - * targets.c: Remove qnx vectors. - * elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove - (elf_backend_is_contained_by_filepos): Remove. - (elf_backend_copy_private_bfd_data_p): Remove. - * po/SRC-POTFILES.in: Regenerate. - -2002-11-06 David O'Brien - Alan Modra - - * elf64-sparc.c (sparc64_elf_relocate_section): Adjust addend of - dynamic relocs against section symbols for the output section vma. - -2002-11-05 Alan Modra - - * elf32-arm.h (t2a1_push_insn, t2a2_ldr_insn, t2a3_mov_insn, - t2a4_bx_insn, t2a5_pop_insn, t2a6_bx_insn): Remove. - -2002-11-05 Kaz Kojima - Alan Modra - - * config.bfd (sh-*-linux*): Use bfd_elf*_sh64*lin_vec as sh64 - vectors in target_selvecs. - (shle-*-netbsdelf*): Use bfd_elf*_sh64*nbsd_vec as sh64 vectors - in target_selvecs. - (sh-*-netbsdelf*): Likewise. - * configure.in (assocvecs): New variable. Handle assocvecs like - selvecs. - * configure: Regenerate. - * format.c (bfd_check_format_matches): Store bfd_target pointers - in matching_vector instead of target names. Select first target - from bfd_associated_vector that matches a list of ambiguous targets. - * targets.c (_bfd_associated_vector): New array. - (bfd_associated_vector): New variable. - (_bfd_target_vector): Add bfd_elf*_sh64*lin_vec. - * libbfd-in.h (bfd_associated_vector): Declare. - * libbfd.h: Regenerate. - -2002-11-05 Elias Athanasopoulos - - * vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is - non-NULL before dereferencing. - -2002-11-04 Kaz Kojima - - * vms.c (vms_object_p): Restore the start address when returning - NULL. - -2002-11-04 Alan Modra - Hans-Peter Nilsson - - * elflink.h (struct elf_final_link_info): Add shndxbuf_size. - (elf_bfd_final_link): Don't bother zeroing symtab_hdr fields. - Set up a larger symshndxbuf, and write it out. Free it on - exit rather than freeing symbuf twice. Correct section index - on output section symbol loop. - (elf_link_output_sym): Accumulate symbol extension section - indices, reallocating symshndxbuf rather than writing it out. - (elf_link_flush_output_syms): Don't flush symshndxbuf. - * elf.c (assign_section_numbers): Init i_shdrp to all zero. - Use bfd_zalloc to clear i_shdrp[0] too. - -2002-11-03 Stephen Clarke - - * elf32-sh64-com.c (sh64_address_in_cranges): Use - _raw_size of cranges section if _cooked_size not yet set. - -2002-11-03 Hans-Peter Nilsson - - * elf32-v850.c (v850_elf_relax_delete_bytes): Correct parameters - for bfd_elf32_swap_symbol_out. - -2002-10-31 David O'Brien - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't mix - signed and unsigned in comparison. - -2002-10-30 Daniel Jacobowitz - - * coffcode.h: Remove extraneous '\'. - -2002-10-28 H.J. Lu - - * Makefile.am (targets.lo): Depend on Makefile instead of - config.status. - (archures.lo): Likewise. - * Makefile.in: Regenerated. - -2002-10-25 Jason Thorpe - - * config.bfd (mips*el-*-netbsd*, mips*-*-netbsd*): Add - bfd_elf64_bigmips_vec and bfd_elf64_littlemips_vec to - targ_selvecs. - -2002-10-25 Jim Wilson - - * elf64-sh64.c (sh_elf64_relocate_section): Call - _bfd_elf_rela_local_sym. Handle relocs against STT_SECTION symbol - of SHF_MERGE section. - -2002-10-25 Hans-Peter Nilsson - - * simple.c: Correct placement of ATTRIBUTE_UNUSED. - -2002-10-24 John David Anglin - - * aoutx.h (NAME(aout,swap_ext_reloc_in)): Cast bytes->r_index to - unsigned int. Cast RELOC_BASE10, RELOC_BASE13 and RELOC_BASE22 to - unsigned int. - (NAME(aout,final_link)): Cast enum used in assignment. - (aout_link_write_symbols): Cast enums in comparisons, int values to - boolean, enums in assignments to int. - (aout_link_input_section_std): Cast rel->r_index to unsigned int. - (aout_link_input_section_ext): Likewise. Cast enums used in - comparisons with unsigned ints. - (aout_link_reloc_link_order): Cast enum to int in assignment. - * archive.c (_bfd_generic_read_ar_hdr_mag): Cast result of memchr - calls to char *. - * bfd-in.h (bfd_set_section_vma): Cast enum true to unsigned int in - assignment. - * bfd-in2.h (bfd_set_section_vma): Likewise. - * bfd.c (bfd_record_phdr): Cast enums in assignments. - * binary.c (bfd_alloc): Cast enum to long. - * coffgen.c (_bfd_coff_is_local_label_name): Cast return to boolean. - * dwarf2.c (read_abbrevs): Add casts to enum types. - (read_attribute_value): Likewise. - (arange_add): Cast result of bfd_zalloc call. - (comp_unit_contains_address): Return true and false. - (comp_unit_find_nearest_line): Cast return to boolean. - * format.c (bfd_check_format_matches, bfd_set_format): Likewise. - * gen-aout.c: define macro '_' if not defined. - * libbfd.c (bfd_realloc): Cast malloc and realloc to PTR. - (bfd_bwrite): Cast bfd_realloc to bfd_byte *. - (bfd_write_bigendian_4byte_int): Cast return to boolean. - (bfd_seek): Cast bfd_realloc to bfd_byte *. - (bfd_generic_is_local_label_name): Cast return to boolean. - * libcoff.h (_bfd_coff_adjust_symndx): Remove extraneous '\'. - * linker.c (_bfd_link_hash_newfunc): Cast bfd_hash_allocate result to - struct bfd_hash_entry *. - (_bfd_generic_link_hash_newfunc): likewise. - (_bfd_generic_final_link): Cast enum to unsigned int. - * merge.c (sec_merge_emit): Cast return to boolean. - (merge_strings): Add casts to const unsigned char *. - * reloc.c (bfd_get_reloc_code_name): Cast enums in comparison to int. - (bfd_generic_get_relocated_section_content): Cast enum to unsigned int. - * section.c (bfd_section_hash_newfunc): Cast bfd_hash_allocate result - to struct bfd_hash_entry *. - (bfd_set_section_content): Add cast to PTR in comparison. - * simple.c (simple_dummy_warning, simple_dummy_undefined_symbol, - simple_dummy_reloc_overflow, simple_dummy_reloc_dangerous, - simple_dummy_unattached_reloc, - bfd_simple_get_relocated_section_contents): Add K&R declarations and - function definitions. - * srec.c (S3Forced): Initialize to false. - (srec_get_symtab): Cast return value from bfd_alloc to asymbol *. - * stabs.c (_bfd_link_section_stabs): Cast enum to int in comparisons. - (_bfd_discard_section_stabs): Likewise. Also cast return to boolean. - * syms.c (bfd_is_undefined_symclass): Cast return to boolean. - (_bfd_stab_section_find_nearest_line): Cast enum to bfd_byte in - comparisons. - -2002-10-23 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_check_relocs): Only put maybe_dynamic - relocs into shared lib non-allocated reloc sections. - -2002-10-23 Nathan Tallent - - * dwarf2.c (add_line_info): Ensure that the line_info_table is - sorted even when given an out-of-order line sequence. - (lookup_address_in_line_info_table): When an exact VMA match is - not found, return line information with the closest VMA. - -2002-10-23 Ross Alexander - - * elf64-hppa.c: Force DT_FLAGS to always be set. Required by - HPUX 11.00 patch PHSS_26559. - -2002-10-22 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Don't move - the options section into a separate section unless IRIX 6 - compatibility is enabled. - -2002-10-22 Alexandre Oliva - - * elflink.h (struct elf_link_sort_rela): Turn rel and rela - into arrays. - (elf_link_sort_cmp1, elf_link_sort_cmp2): Adjust. - (elf_link_sort_relocs): Likewise. Take int_rels_per_ext_rel - into account. - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Compose - R_MIPS_REL32 with R_MIPS64 if ABI_64_P. - -2002-10-21 Graeme Peterson - - * targets.c (_bfd_target_vector): Add missing qnx vectors. - -2002-10-21 Alan Modra - - * targets.c (bfd_target_list): Don't return the default target twice. - -2002-10-21 Elias Athanasopoulos - - * archive.c (_bfd_archive_bsd_update_armap_timestamp): Replace - perror with bfd_perror. - -2002-10-19 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Correctly handle - DT_RPATH and DT_RUNPATH. - -2002-10-19 Mark Kettenis - - * elf.c (elfcore_grok_note): Fix recognition on NT_PRXFPREG notes. - -2002-10-17 Denis Chertykov - - * elf32-ip2k.c (ELF_MACHINE_ALT1): Define alternate machine code - for ip2k port. - -2002-10-17 Alan Modra - - * elfxx-target.h (USE_REL): Don't define as 1. - * elf32-arm.h (USE_REL): Provide a default define of 0. - Use #if rather than #ifdef when testing USE_REL. - * elf32-m32r.c: Likewise. - - * elf32-arc.c (USE_REL): Define as 1. - * elf32-d10v.c (USE_REL): Likewise. - * elf32-m32r.c (USE_REL): Likewise. - * elf32-m68hc11.c (USE_REL): Likewise. - * elf32-m68hc12.c (USE_REL): Likewise. - * elf32-or32.c (USE_REL): Likewise. - * elfarm-nabi.c (USE_REL): Likewise. - -2002-10-16 Jakub Jelinek - - * config.bfd (s390-*-linux*): Add targ64_selvecs. - (s390x-*-linux*): Add targ_selvecs. - -2002-10-16 Alan Modra - - * Makefile.am (BFD32_BACKENDS): Remove elfarmqnx-nabi.lo, - elf32-i386-fbsd.lo, elf32-i386qnx.lo, elf32-ppcqnx.lo, - elf32-sh-lin.lo, elf32-sh64-lin.lo, elf32-sh-nbsd.lo, - elf32-sh64-nbsd.lo, elf32-shqnx.lo. Add elf32-qnx.lo. - (BFD32_BACKENDS_CFILES): Likewise for corresponding C files. - (BFD64_BACKENDS): Remove elf64-sh64-lin.lo, elf64-sh64-nbsd.lo. - (BFD64_BACKENDS_CFILES): Likewise for corresponding C files. - (SOURCE_HFILES): Add elf32-qnx.h. - (BUILD_HFILES): Add bfdver.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in Update bfd vector dependencies. - * configure: Regenerate. - * elf32-i386-fbsd.c: Delete. Move code to elf32-i386.c. - * elf32-i386qnx.c: Likewise. - * elf32-ppcqnx.c: Delete. Move code to elf32-ppc.c. - * elf32-sh-nbsd.c: Delete. Move code to elf32-sh.c. - * elf32-sh-lin.c: Likewise. - * elf32-shqnx.c: Likewise. - * elf32-sh64-lin.c: Delete. Move code to elf32-sh64.c. - * elf32-sh64-nbsd.c: Likewise. - * elf64-sh64-lin.c: Delete. Move code to elf64-sh64.c. - * elf64-sh64-nbsd.c: Likewise. - * elfarmqnx-nabi.c: Delete. Move code to elfarm-nabi.c. - * elf32-arm.h (ELF_MAXPAGESIZE): Always define. - * elf32-i386.c: Remove ELF_ARCH and ELF32_I386_C_INCLUDED tests. - * elf32-ppc.c: Remove ELF32_PPC_C_INCLUDED tests. - * elf32-qnx.h (elf_backend_set_nonloadable_filepos): Always define. - (elf_backend_is_contained_by_filepos): Likewise. - (elf_backend_copy_private_bfd_data_p): Likewise. - Globalize and move functions to.. - * elf32-qnx.c: ..here. New file. - * elf32-sh.c: Remove ELF_ARCH and ELF32_SH_C_INCLUDED tests. Don't - emit target vectors when INCLUDE_SHMEDIA. - * elf32-sh64.c: Remove ELF_ARCH test. Move TARGET_* etc. defines to - end of file. - * elf64-sh64.c: Remove ELF_ARCH test. - * elfarm-nabi.c: Remove ELFARM_NABI_C_INCLUDED test. - * po/BLD-POTFILES.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-10-16 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Error out on dynamic objects - loaded with --just-symbols. - - * elf32-i386qnx.c (TARGET_LITTLE_NAME): Define. - * elf32-ppcqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - * elf32-shqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - * elfarmqnx-nabi.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - -2002-10-15 Richard Henderson - - * Makefile.am (BFD64_BACKENDS): Remove elf64-alpha-fbsd. - (BFD64_BACKENDS_CFILES): Likewise. - * configure.in (bfd_elf64_alpha_freebsd_vec): Use elf64-alpha. - * elf64-alpha-fbsd.c: Remove file, move code ... - * elf64-alpha.c: ... here. - * Makefile.in, configure: Rebuild. - -2002-10-14 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: Increment - VALUE, not ADDEND. - -2002-10-14 Stephen Clarke - - * elf32-sh.c (elf_sh_link_hash_entry): Replace - datalabel_got_offset with union of datalabel_got - offset and refcount. - (sh_elf_link_hash_newfunc): Initialize datalabel_got.refcount. - (allocate_dynrelocs): Delete unnecessary code for - STT_DATALABEL type. Create entry in got for - datalabel version of symbol if datalabel_got.refcount > 0. - (sh_elf_relocate_section): Use datalabel_got union. - (sh_elf_gc_sweep_hook): Pull common code to initialize - h and eh out of switch statement. Declare seen_stt_datalabel. - Initialize it. Decrement datalabel_got.refcount for - got relocs when seen_stt_datalabel is true. - Decrement local_got_refcounts entry for datalabel got relocs - of local symbols. - (sh_elf_copy_indirect_symbol): Copy datalabel_got field over. - (sh_elf_check_relocs): Declare seen_stt_datalabel. - Initialize it. When seen_stt_datalabel is true, increment - datalabel_got refcount rather than got.refcount. - (sh_elf_finish_dynamic_symbol): Create relocs to - initialize got entry for datalabel version of symbol. - -2002-10-14 Alan Modra - - * Makefile.am: Run "make dep-am". - (BFD_H_FILES): Remove version.h. - * bfd-in.h (BFD_VERSION, BFD_VERSION_DATE, BFD_VERSION_STRING): Move.. - * version.h: ..to here. - * configure.in (bfd_version_date): Remove. - (AC_OUTPUT): Make bfdver.h from version.h. - * bfd.c: #include "bfdver.h". - * vms-hdr.c: Likewise. - * Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-10-14 Alan Modra - - * archures.c (bfd_mach_i386_i386, bfd_mach_i386_i8086, - bfd_mach_i386_i386_intel_syntax, bfd_mach_x86_64, - bfd_mach_x86_64_intel_syntax bfd_mach_ppc, bfd_mach_ppc64, - bfd_mach_rs6k, bfd_mach_d10v, bfd_mach_sh, bfd_mach_v850, - bfd_mach_arc_5, bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8, - bfd_mach_m32r, bfd_mach_frv, bfd_mach_frvsimple, - bfd_mach_ia64_elf64, bfd_mach_ia64_elf32, - bfd_mach_ip2022, bfd_mach_ip2022ext, - bfd_mach_s390_31, bfd_mach_s390_64, bfd_mach_xstormy16): Renumber. - * bfd-in2.h: Regenerate. - -2002-10-14 Kaz Kojima - - * config.bfd (sh*eb-*-linux*, sh*-*-linux*): Add the alternative - endian vector to targ_selvecs. - -2002-10-13 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Take - save_addend argument. Don't apply the 32-bit mask to a - GPREL32 value if it's to be used in another relocation. Don't - use forced-check computation of local_p to decide whether to - add gp0 to GPREL16 value. Don't use only the lowest 16 bits - of the addend of a non-in-place GPREL16 relocation. - (_bfd_mips_elf_relocate_section): Pass use_saved_addend_p to - mips_elf_calculate_relocation(). - -2002-10-12 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_section): Don't treat relocs - with symbols in other sections if we relaxed something; the sections - output offsets must be re-computed before. - -2002-10-12 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_section): Update symbols - handling to use Elf_Internal_Sym. - (m68hc11_elf_relax_delete_bytes): Likewise. - -2002-10-11 Kaz Kojima - - * elf32-sh.c (sh_elf_optimized_tls_reloc, sh_elf_mkobject, - sh_elf_object_p, dtpoff_base): New functions. - (sh_elf_howto_table): Add TLS relocs. - (sh_reloc_map): Likewise. - (sh_elf_info_to_howto): Support TLS relocs. - (elf_sh_link_hash_entry): Add tls_type and tls_tpoff32. - (sh_elf_hash_entry, sh_elf_tdata, sh_elf_local_got_tls_type): - New macros. - (sh_elf_obj_tdata): New. - (elf_sh_link_hash_table): Add tls_ldm_got. - (sh_elf_link_hash_table_create): Clear refcount of tls_ldm_got. - (allocate_dynrelocs): Support TLS relocs. - (sh_elf_size_dynamic_sections): Likewise. - (sh_elf_relocate_section): Support TLS relocs. Don't try to find - .rela.got section when found already. Return false after printing - error about unresolvable relocation. - (sh_elf_gc_sweep_hook): Support TLS relocs. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject, elf_backend_object_p): Define for TLS case. - * reloc.c: Add SH TLS relocs. - * bfd-in2.h, libbfd.h: Regenerate. - -2002-10-11 Daniel Jacobowitz - - * Makefile.in: Regenerated. - -2002-10-11 Daniel Jacobowitz - - * Makefile.am: Run dep-am. - (BFD_H_DEP): Add simple.c and linker.c. - (BFD32_LIBS): Add simple.lo. - (BFD32_LIBS_CFILES): Add simple.c. - * Makefile.in: Regenerated. - * bfd-in2.h: Regenerated. - * simple.c: New file. - -2002-10-11 Alan Modra - - * coff-arm.c (record_arm_to_thumb_glue): Avoid type-punned pointers. - (record_thumb_to_arm_glue): Likewise. - * ecoff.c (ecoff_link_add_externals): Likewise. - * elf32-arm.h (record_arm_to_thumb_glue): Likewise. - (record_thumb_to_arm_glue): Likewise. - * elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise. - * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. - * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. - * elf64-alpha.c (elf64_alpha_create_dynamic_sections): Likewise. - * elf64-ppc.c (func_desc_adjust): Likewise. - * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. - (sh64_elf64_create_dynamic_sections): Likewise. - * elflink.c (_bfd_elf_create_got_section): Likewise. - (_bfd_elf_create_dynamic_sections): Likewise. - (_bfd_elf_create_linker_section): Likewise. - * elflink.h (elf_add_default_symbol): Likewise. - (elf_link_create_dynamic_sections): Likewise. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. - * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Likewise. - * elfxx-mips.c (mips_elf_create_got_section): Likewise. - (_bfd_mips_elf_add_symbol_hook): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Likewise. - * linker.c (generic_link_add_symbol_list): Likewise. - * xcofflink.c (xcoff_link_add_symbols): Likewise. - - * elfxx-ia64.c (oor_brl, oor_ip): Conditionally define. - - * elf64-ppc.c (edit_opd): Only zero opd syms when function is - completely removed. Correct local sym adjustment. - -2002-10-10 Stephen Clarke - - * elf32-sh.c (elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): - Correct mistake in calculation of address of .got. - * elf64-sh64.c (elf_sh64_pic_plt_entry_be, - elf_sh64_pic_plt_entry_le): Likewise. - -2002-10-09 Richard Shann - Stephen Clarke - - * Makefile.am: Add entries for elf32-sh64-lin.c and - elf64-sh64-lin.c. Regenerate. - * Makefile.in: Regenerate. - * config.bfd: Change sh64eb-*-linux* and sh64-*-linux* - to use sh64 vectors rather than sh vectors. - * configure.in: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, - bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. - * configure: Regenerate. - * elf32-sh64-lin.c: New file. - * elf64-sh64-lin.c: New file. - * targets.c: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, - bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. - -2002-10-08 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section): Re-arrange the - IE->LE transition for R_386_TLS_IE. - -2002-10-08 Alan Modra - - * elf64-ppc.c (edit_opd): Correct test for discarded sections. - -2002-10-07 Mark Elbrecht - - * cofflink.c (mark_relocs): Don't mark relocations in excluded - sections. - -2002-10-07 Alan Modra - - * elflink.h (elf_link_input_bfd): Remove BFD_VERSION_DATE dependent - code. - - * elf64-ppc.c (ppc64_elf_build_stubs): Increment .glink indx. - -2002-10-06 Alan Modra - - * opncls.c: Formatting. - (_bfd_new_bfd): Use a smaller section hash table. - -2002-10-05 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Set the type - of the other two relocations packed with a REL32 to NONE. - -2002-10-02 Stephen Clarke - - * elf32-sh.c (elf_sh_link_hash_entry): Add gotplt_refcount. - (sh_elf_link_hash_newfunc): Initialize it. - (allocate_dynrelocs): Transfer gotplt refs from plt.refcount - to got.refcount for symbols that are forced local or when - we have direct got refs. - (sh_elf_gc_sweep_hook): Adjust gotplt_refcount. Use it - to correctly adjust got.refcount and plt.refcount. - (sh_elf_copy_indirect_symbol): Copy gotplt_refcount across. - (sh_elf_check_relocs): Increment gotplt_refcount. - -2002-10-01 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Fix - movl foo@indntpoff, %eax IE->LE transition. - -2002-10-01 Jakub Jelinek - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Change TLSGD - sequence and its transitions. - -2002-10-01 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Resolve R_386_TLS_LDO_32 - to st_value + addend in non-code sections. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Resolve - R_X86_64_DTPOFF32 to st_value + addend in non-code sections. - -2002-09-30 Gavin Romig-Koch - Ken Raeburn - Aldy Hernandez - Eric Christopher - Richard Sandiford - - * archures.c (bfd_mach_mips4120, bfd_mach_mips5400): New. - (bfd_mach_mips5500): New. - * cpu-mips.c (I_mips4120, I_mips5400, I_mips5500): New. - (arch_info_struct): Add corresponding entries here. - * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_4120, - E_MIPS_MACH_5400 and E_MIPS_MACH_5500. - (_bfd_mips_elf_final_write_processing): Handle bfd_mach_mips4120, - bfd_mach_mips5400 and bfd_mach_mips5500. - (_bfd_mips_elf_mach_extends_p): New function. - (_bfd_mips_elf_merge_private_bfd_data): Use it to help merge - the EF_MIPS_MACH flags. - * bfd-in2.h: Regenerate. - -2002-09-28 Jason Thorpe - - * elf32-vax.c (elf_vax_size_dynamic_section): Don't strip - .got sections. - -2002-09-28 Alan Modra - - * elf.c (map_sections_to_segments): Correct test for start of - writable section in the same page as end of read-only section. - -2002-09-27 Matt Thomas - - * elf32-vax.c (elf_vax_check_relocs): Remove unused - local_got_refcounts usage. Remove allocation of got slot. - (elf_vax_gc_sweep_hook): Remove unused local_got_refcounts usage. - Remove de-allocation of got slot. - (elf_vax_size_dynamic_section): Fix some indentation. Add hash - traversal for elf_vax_instantiate_got_entries. Allow empty .got - sections to be GC'ed. - (elf_vax_instantiate_got_entries): New function. - (elf_vax_relocate_section): Simplify R_VAX_GOT32 handling. Remove - tests that are now handled by elf_vax_instantiate_got_entries. - Assert GOT entry falls within .got section size. Remove redundant - comparisions. Fix comments. - -2002-09-27 Jakub Jelinek - - * reloc.c: Add x86-64 TLS relocs. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf64-x86-64.c (x86_64_elf_howto): Fix size fields for 32-bit - relocs. Add TLS relocs. - (x86_64_reloc_map): Add TLS relocs. - (elf64_x86_64_info_to_howto): Adjust for added TLS relocs. - (struct elf64_x86_64_link_hash_entry): Add tls_type field. - (GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE): Define. - (elf64_x86_64_hash_entry): Define. - (struct elf64_x86_64_obj_tdata): New. - (elf64_x86_64_tdata, elf64_x86_64_local_got_tls_type): Define. - (struct elf64_x86_64_link_hash_table): Add tls_ld_got. - (link_hash_newfunc): Initialize tls_type. - (elf64_x86_64_link_hash_table_create): Initialize tls_ld_got. - (elf64_x86_64_copy_indirect_symbol): Swap tls_type if necessary. - (elf64_x86_64_mkobject): New. - (elf64_x86_64_elf_object_p): Allocate struct elf64_x86_64_obj_tdata. - (elf64_x86_64_tls_transition): New. - (elf64_x86_64_check_relocs): Add r_type variable and use it. - Handle TLS relocs. - (elf64_x86_64_gc_sweep_hook): Handle TLS relocs. - (allocate_dynrelocs): Allocate GOT space for TLS relocs. - (elf64_x86_64_size_dynamic_sections): Likewise. - (dtpoff_base, tpoff): New. - (elf64_x86_64_relocate_section): Handle TLS relocs. - (elf64_x86_64_finish_dynamic_symbol): Only handle non-TLS GOT - entries. - (bfd_elf64_mkobject): Define. - - * elf32-i386.c (elf_i386_check_relocs) [R_386_TLS_LE]: Set - DF_STATIC_TLS if shared. - -2002-09-26 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_fake_sections): Don't emit unneeded - empty relocation sections. - -2002-09-26 Alan Modra - - * elf64-ppc.c (ppc_build_one_stub): Don't build glink stubs here. - (ppc64_elf_build_stubs): Build them here instead. - -2002-09-24 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_relocate_section): Put R_SPARC_RELATIVE - addend into r_addend, not *r_offset. - (elf32_sparc_finish_dynamic_symbol): Likewise. - * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Clear xword at - R_SPARC_RELATIVE's r_offset. - -2002-09-23 Nathan Tallent - - * dwarf2.c (decode_line_info): Update to correctly decode - the (non-standard DWARF2) out-of-order address sequences - generated by the Intel C++ 6.0 compiler for ia64-Linux. - -2002-09-23 Mark Elbrecht - - * config.bfd: For DJGPP targets, match with any cpu and any machine. - -2002-09-23 Alan Modra - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs - for discarded FDEs. Remove redundant assignment. - * elflink.h (elf_bfd_discard_info): Save edited relocs. - -2002-09-22 H.J. Lu - - * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge - the relocation count between different .reloc sections. - -2002-09-21 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Allow ".sbss.*" and - ".sdata.*" for R_PPC_SDAREL16, ".sbss2*" and ".sdata2*" for - R_PPC_EMB_SDA2REL. Similarly for R_PPC_EMB_SDA21 and - R_PPC_EMB_RELSDA. - - * elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount" - unsigned. Move "symcount" assignment out of loop. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regnerate. - -2002-09-19 Nathan Tallent - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is - zero, set it to 8 for (non-standard) 64-bit DWARF2 formats - (e.g. IRIX64). - -2002-09-19 Jakub Jelinek - - * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word - even if generating R_PPC_RELATIVE reloc. - (ppc_elf_relocate_section): Make sure relocation is performed - if skip == -2. Clear memory at r_offset when creating dynamic - relocation. - -2002-09-19 Jakub Jelinek - - * reloc.c (BFD_RELOC_386_TLS_TPOFF, BFD_RELOC_386_TLS_IE, - BFD_RELOC_386_TLS_GOTIE): Add. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf32-i386.c (elf_howto_table): Add R_386_TLS_TPOFF, R_386_TLS_IE - and R_386_TLS_GOTIE. - (elf_i386_reloc_type_lookup): Handle it. - (struct elf_i386_link_hash_entry): Change tls_type type to unsigned - char instead of enum, change GOT_* into defines. - (GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH): Define. - (elf_i386_tls_transition): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - (elf_i386_check_relocs): Likewise. Avoid crash if local symbol is - accessed both as normal and TLS symbol. Move R_386_TLS_LDM and - R_386_PLT32 cases so that R_386_TLS_IE can fall through. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (elf_i386_gc_sweep_hook): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (allocate_dynrelocs): Allocate 2 .got and 2 .rel.got entries if - tls_type is GOT_TLS_IE_BOTH. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (elf_i386_finish_dynamic_symbol): Use tls_type & GOT_TLS_IE to catch - all 4 GOT_TLS_* TLS types. - -2002-09-19 Nick Clifton - - * elflink.h (elf_fix_symbol_flags): When examining weak symbols, - follow indirect links. - -2002-09-19 Nathan Tallent - - * ecoffswap.h (ecoff_swap_pdr_in) : Update to - correctly sign-extend 32-bit ECOFF null values (0xffffffff, -1) - on 64 bit machines. - (ecoff_swap_sym_in) : Likewise. - * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Fix error reading - ECOFF information: 'ioptMax' refers to the actual *size* - of the optimization symtab, not the number of entries. - -2002-09-19 Daniel Jacobowitz - - * elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update - ELF_LINK_HASH_NEEDS_PLT logic. - -2002-09-18 Daniel Jacobowitz - - * elfcode.h (elf_slurp_reloc_table_from_section): Check - correct relocation count. - -2002-09-17 Daniel Jacobowitz - - * bfd-in.h (bfd_get_dynamic_symcount): Define. - * bfd.c (struct _bfd): Add dynsymcount. - * bfd-in2.h: Regenerated. - * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set - abfd->dynsymcount. - * elfcode.h (elf_slurp_reloc_table_from_section): Check - for overflow. - -2002-09-17 Stan Cox - - * elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3. - (mips_elf64_final_gp): Don't make up gp value. - * elfn32-mips.c (mips_elf_final_gp): Likewise. - * elfxx-mips.c (_bfd_mips_elf_final_link): Always create - .MIPS.options/.options section. - -2002-09-17 David O'Brien - - * elf32-i386-fbsd.c: Always label using the EI_OSABI method. - It is benign for FreeBSD < 4.1. Minor reformatting. - * elf64-alpha-fbsd.c: Likewise. - -2002-09-17 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section) [R_386_TLS_TPOFF32]: Negate - addend. - -2002-09-17 Alan Modra - - * elf64-alpha.c (alpha_elf_size_info): Make static. - -2002-09-17 Svein E. Seldal - - * coff-tic4x.c: Add function declarations and ATTRIBUTE_UNUSED. - * cpu-tic4x.c: Ditto. - -2002-09-17 Thiemo Seufer - - * elf64-mips.c (define elf_backend_ignore_discarded_relocs): Remove - duplicate define. - -2002-09-16 Bruno Haible - - * elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included - by a target variant implementation. - * elf64-alpha.c: Likewise. - * elf32-i386-fbsd.c: New file. - * elf64-alpha-fbsd.c: New file. - * targets.c: Support bfd_elf32_i386_freebsd_vec and - bfd_elf64_alpha_freebsd_vec. - * configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec, - bfd_elf64_alpha_freebsd_vec. - * Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c. - (BFD64_BACKENDS): Add elf64-alpha-fbsd.lo. - (BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c. - (elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies. - * config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD - specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate. - -2002-09-12 Jakub Jelinek - - * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is - NULL. - (elf_i386_relocate_section): Return false after printing error about - unresolvable relocation. - -2002-09-12 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Fix handling of - R_ARM_THM_PC11. - -2002-09-11 Jeffrey Law - - * elf32-h8300.c (elf32_h8_relax_section): Fix typo. - -2002-09-11 Andrew Haley - - * elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and - line_ptr before deciding we've found a symbol. - -2002-09-11 Nick Clifton - - * po/da.po: New Danish translation file. - * configure.in (LINGUAS): Add 'da'. - * configure: Regenerate. - -2002-09-10 Michael Snyder - - * irix-core.c (do_sections, do_sections64): New functions. - (irix_core_core_file_p): Call new functions do_sections, - do_sections64, depending on corefile (32-bit or 64-bit). - -2002-09-09 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21M - and PCREL21F like PCREL21B. - -2002-09-04 Kevin Buettner - - * config.bfd (mips*-*-irix6*): Add new ABI vectors. Make n32 default - vector. - -2002-09-02 Nick Clifton - - * elf32-v850.c (v850_elf_final_link_relocate): Use helpful - names instead of cryptically overloaded bfd_reloc error - codes. - (v850_elf_relocate_section): Likewise. - (v850_elf_relax_section): Replace caching of external symbols - with caching of internal symbols obtained from calling - bfd_elf_get_elf_syms(). - Fixup problems with freeing cached allocated memory blocks. - -2002-09-02 Alan Modra - - * cpu-pj.c (scan_mach, compatible, arch_info_struct): Remove. - (bfd_pj_arch): Use bfd_default_scan. - * cpu-v850.c (scan): Remove. - (N): Use bfd_default_scan. - * cpu-z8k.c (scan_mach): Remove. - (arch_info_struct, bfd_z8k_arch): Reorganize so that the default is - first. Use bfd_default_scan. - - * ecoff.c (_bfd_ecoff_set_arch_mach_hook): Don't use hard-coded - bfd_mach constants. - (ecoff_get_magic): Likewise. - * elf32-v850.c (v850_elf_object_p): Likewise. - (v850_elf_final_write_processing): Likewise. - * mipsbsd.c (MY(set_arch_mach)): Likewise. - (MY(write_object_contents)): Likewise. - * coff64-rs6000.c (xcoff64_write_object_contents): Likewise. - * coffcode.h (coff_write_object_contents): Likewise. - (coff_set_arch_mach_hook): Add comment describing machine == 0. - Remove unnecessary "machine" assignments. - (coff_write_relocs): Test for the absolute section sym by testing - section and flags. - - * aoutx.h (NAME(aout,machine_type)): Recognize bfd_mach_i386_i386 - and bfd_mach_i386_i386_intel_syntax. - * pdp11.c (NAME(aout,machine_type)): Likewise. - -2002-08-30 John David Anglin - - * bfd-in.h (align_power): Cast constants to bfd_vma type. - * bfd-in2.h (align_power): Likewise. - -2002-08-30 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * cpu-avr.c (compatible): Don't use hard-coded mach constants. - * cpu-powerpc.c (powerpc_compatible): Likewise. - * cpu-rs6000.c (rs6000_compatible): Likewise. - -2002-08-28 Catherine Moore - - * elf32-v850.c (v850_elf_reloc_map): Add new relocs. - (v850-elf-reloc): Don't resolve pc relative relocs. - (v850_elf_ignore_reloc): New routine. - (v850_elf_final_link_relocate): Handle new relocs. - (v850_elf_relax_delete_bytes ): New routine. - (v850_elf_relax_section): New routine. - (bfd_elf32_bfd_relax_section): Define. - (HOWTO): New entries for new relocs. - * reloc.c (BFD_RELOC_V850_LONGCALL): New reloc. - (BFD_RELOC_V850_LONGJUMP): New reloc. - (BFD_RELOC_V850_ALIGN): New reloc. - * archures.c: Remove redundant v850ea architecture. - * cpu-v850.c: Remove redundant v850ea support. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerated. - -2002-08-28 Svein E. Seldal - - * config.bfd: Add tic4x-*-*coff* and c4x-*-*coff* target. - * configure.in: Add tic4x_coff vector files. - * configure: Regenerate. - * Makefile.am: Add tic4x target. - * Makefile.in: Regenerate. - -2002-08-27 Michael Hayes - - * archures.c: Add the BFD arch type tic4x. - * bfd-in.h: Add BFD_IN_MEMORY flag. - * coff-tic4x.c: New file. - * coffswap.h (coff_swap_sym_out): Add preadjuster. - * cpu-tic4x.c: New file. - * targets.c: Added tic4x- in list of xvecs. - * ticoff.h: New file. - * bfd-in2.h: Regenerate. - -2002-08-27 Adam Nemet - - * elf32-arm.h (elf32_arm_finish_dynamic_sections): Set the last - bit of DT_INIT and DT_FINI for Thumb functions. - -2002-08-26 Alan Modra - - * coffcode.h (coff_set_arch_mach_hook): Handle W65MAGIC. - -2002-08-26 Alan Modra - - * aoutx.h (NAME(aout,reloc_type_lookup)): Handle BFD_RELOC_8. - -2002-08-24 Kaz Kojima - - * elf32-sh.c (sh_elf_copy_indirect_symbol): New. - (create_got_section, allocate_dynrelocs, readonly_dynrelocs): - Likewise. - (struct elf_sh_pcrel_relocs_copied): Removed. - (struct elf_sh_dyn_relocs): New. - (struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied - field with dyn_relocs. - (struct elf_sh_link_hash_table): Add short-cuts to get dynamic - sections and sym_sec. - (sh_elf_link_hash_newfunc): Clear dyn_relocs. - (sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec. - (sh_elf_create_dynamic_sections): Use create_got_section instead - of _bfd_elf_create_got_section. - (sh_elf_check_relocs): Likewise. - (sh_elf_create_dynamic_sections): Use short-cuts to the dynamic - sections. - (sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections, - sh_elf_relocate_section, sh_elf_check_relocs, - sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections): - Likewise. - (sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the - dynamic relocations and avoiding the copy relocation when we - didn't find any dynamic relocations in the section which has - contents or is read-only. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (sh_elf_size_dynamic_sections): Don't reset the size of - .rela.got section even if dynamic_sections_created flag is off. - Don't use sh_elf_discard_copies. Scan all input bfd and use - allocate_dynrelocs. Call readonly_dynrelocs to determine - whether we need DT_TEXTREL. - (sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine - whether the symbol was never referred to. - (sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL. - (sh_elf_gc_sweep_hook): Fill with the real sweep function. - (sh_elf_check_relocs): Call create_got_section if the short-cut - to .got is null. Increment reference counters only instead of - allocating space on dynamic sections here. Don't conditionalize - uninitialized got.offset value when marking the symbol as a - global offset table entry. Keep relocations for symbols satisfied - by a dynamic library to avoid copy relocations for the symbol. - Set dynobj field of an elf hash table if needed. - (sh_elf_finish_dynamic_sections): Handle null section pointer - correctly. - (elf_backend_copy_indirect_symbol): Defined. - (elf_backend_can_refcount): Defined. - -2002-08-23 Nick Clifton - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Undo - previous change. Add comment explaining why. - -2002-08-23 Stephen Clarke - - * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le): Copy - contents of .got.plt[2] to tr0, not address of .got.plt. - (sh_elf_finish_dynamic_symbol): Do not apply GOT_BIAS when - patching absolute plt entry. For shmedia plt entry, set bottom bit - of branch to plt0 as this is a branch to an shmedia instruction. - * elf64-sh64.c (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le): - Copy contents of .got.plt[2] to tr0, not address of .got.plt. - (elf_sh64_plt_entry_be, elf_sh64_plt_entry_le): Use ptrel to - branch to plt0. - (sh64_elf64_finish_dynamic_symbol): Do not apply GOT_BIAS when - patching absolute plt entry. For shmedia plt entry, branch to - plt0 is now ptrel, so use relative offset. Set bottom bit of - branch target as it is a branch to an shmedia instruction. - -2002-08-23 Stephen Clarke , - Richard Shann - - * elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT - value if .init is an SHmedia function. Similarly for DT_FINI. - * elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise. - -2002-08-23 Stephen Clarke - - * elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize - dynamic section. - * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise. - -2002-08-22 Kaz Kojima - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use a simple - byte read when reading the return address register column. - -2002-08-22 Nick Clifton - - * config.bfd: Add powepc64-*-*bsd* target. - -2002-08-22 Graeme Peterson - - * Makefile.am: Add entries for elf32-shqnx.c - * Makefile.in: Regenerate. - * config.bfd: Add support sh-*-nto* target. - * configure.in: Add support for bfd_elf32_sh{l}qnx_vec. - * configure: Regenerate. - * elf32-qnx.h: Changed typo "elf_i386qnx_*" to "elf_qnx_*" . - * elf32-sh.c: Do not include elf32-target.h if - ELF32_SH_C_INCLUDED is defined. - * elf32-shqnx.c: New file: Support for QNX. - * targets.c: Add bfd_elf32_sh{l}qnx_vec. - -2002-08-22 Nick Clifton - - * po/tr.po: Updated Turkish translation. - - * syms.c (_bfd_generic_read_minisymbols): Set bfd_error if the - symbols are not read. - -2002-08-22 Alan Modra - - * elf32-m68hc11.c: Formatting fixes. - (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. - * elf32-m68hc12.c: Formatting fixes. - (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. - -2002-08-22 Alan Modra - - * coff-rs6000.c (rs6000coff_vec ): Add SEC_CODE and - SEC_DATA. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - (aix5coff64_vec): Likewise. - -2002-08-22 Alan Modra - - * elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data - param to elf_backend_copy_indirect_symbol. - (_bfd_elf_link_hash_copy_indirect): Likewise. - * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust - calls to copy_indirect_symbol. - * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. - * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. - * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise. - * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly - test refcounts for "used" values. - -2002-08-21 John David Anglin - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to - argument declaration. - -2002-08-19 Elena Zannoni - - * archures.c (bfd_mach_ppc_e500): Added. - * bfd-in2.h: Rebuilt. - * cpu-powerpc.c (bfd_powerpc_archs): Added e500. - -2002-08-19 Alan Modra - - * elf32-m68hc12.c (elf_backend_can_gc_sections): False. - -2002-08-17 Andrew Cagney - - * elf.c (bfd_elf_get_elf_syms): Change type of `esym' to - `bfd_byte'. - -2002-08-17 Stan Cox - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Use the - IRIX 6 segment layout for NEWABI. - -2002-08-16 Stephen Clarke - - * elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect - symbols when looking for section referred to by a relocation. - * elf64-sh.c (sh_elf64_gc_mark_hook): Likewise. - -2002-08-15 Alan Modra - - * elf32-i370.c: Move reloc enum to include/elf/i370.h. - -2002-08-15 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Add - missing check for whether the symbol is referenced by DSO before - unexporting it as an unneeded dynamic symbol. - -2002-08-14 H.J. Lu - - * libbfd.h: Regenerate. - -2002-08-14 H.J. Lu - - * config.bfd: Always add 64bit vectors to 32bit Linux/mips. - -2002-08-14 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_relax_group): New to relax group of - instructions. - (m68hc11_direct_relax): New to define table of relaxable instructions. - (find_relaxable_insn): New, find a relaxable insn. - (compare_reloc): New to compare two relocs. - (m68hc11_elf_relax_section): New, relax text sections. - (m68hc11_elf_relax_delete_bytes): New, delete bytes and adjust branchs. - (elf32_m68hc11_check_relocs): New function for GC support. - (elf32_m68hc11_relocate_section): New function for GC support. - (bfd_elf32_bfd_relax_section): Define to support linker relaxation. - (elf_backend_check_relocs): Likewise. - (elf_backend_relocate_section): Likewise. - -2002-08-13 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count - definitions in shared objects when checking symbol with - undefined version. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (elf32_m68hc11_gc_mark_hook): New for section GC. - (elf32_m68hc11_gc_sweep_hook): Likewise. - (elf_backend_gc_mark_hook): Define for GC section support. - (elf_backend_gc_sweep_hook): Likewise. - (elf_backend_can_gc_sections): Likewise. - - * elf32-m68hc12.c: Likewise. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (_bfd_m68hc11_elf_print_private_bfd_data): New. - (_bfd_m68hc11_elf_merge_private_bfd_data): New function. - (_bfd_m68hc11_elf_set_private_flags): New function. - Use them to set/check/print ELF flags specific to 68HC11. - - * elf32-m68hc12.c (_bfd_m68hc12_elf_print_private_bfd_data): New. - (_bfd_m68hc12_elf_merge_private_bfd_data): New function. - (_bfd_m68hc12_elf_set_private_flags): New function. - Use them to set/check/print ELF flags specific to 68HC12. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (elf_m68hc11_howto_table): Add the new relocs; - fix masks for PC-rel relocs. - (m68hc11_elf_ignore_reloc): New function. - - * elf32-m68hc12.c (m68hc12_elf_special_reloc): New to handle specific - 68HC12 banked addressing relocs. - (m68hc12_phys_addr): New to compute physical address of banked memory. - (m68hc12_phys_page): Likewise for page. - (m68hc12_addr_is_banked): New to see if address is in banked area. - (elf_m68hc12_howto_table): Add new relocs and rename to xx12. - -2002-08-13 Stephane Carrez - - * reloc.c (BFD_RELOC_M68HC11_RL_JUMP, BFD_RELOC_M68HC11_RL_GROUP, - BFD_RELOC_M68HC11_LO16, BFD_RELOC_M68HC11_PAGE, - BFD_RELOC_M68HC11_24): New relocs for 68HC11/68HC12. - * bfd-in2.h: Regenerate. - -2002-08-12 H.J. Lu - - * elflink.h (elf_add_default_symbol): Preserve section across - elf_merge_symbol. - -2002-08-09 Graeme Peterson - - * Makefile.am: Add entries for elf32-ppcqnx.c, and add - elf32-qnx.h dependency to elfarmqnx-nabi.c and elf32-i386qnx.c. - * Makefile.in: Regenerate. - * config.bfd: Add support for powerpc{le}-*-nto targets. - * configure.in: Add support for bfd_elf32_powerpc{le}qnx_vec. - * configure: Regenerate. - * elf32-i386qnx.c: Moved backend functions into a QNX specific - common file "elf32-qnx.h", and now include that file. - * elf32-qnx.h: New file: QNX specific common elf backend. - * elf32-ppc.c: Do not include elf32-target.h if - ELF32_PPC_C_INCLUDED is defined. - * elf32-ppcqnx.c: New file: Support for QNX. - * elfarmqnx-nabi.c: Include elf32-qnx.h for qnx elf backend. - * targets.c: Add bfd_elf32_powerpc{le}qnx_vec. - -2002-08-09 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2002-08-09 Thiemo Seufer - - * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if - g->global_gotsym is NULL. - -2002-08-08 H.J. Lu - - * elflink.h (elf_add_default_symbol): Don't warn if a definition - overrides an indirect versioned symbol. - -2002-08-08 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend - for R_386_TLS_TPOFF32 relocs against symndx 0. - -2002-08-07 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol - with undefined version if needed. - (elf_link_assign_sym_version): Match a default symbol with a - version without definition. No need to hide the default - definition separately. - -2002-08-08 Alan Modra - - * elflink.h (elf_link_output_extsym): Don't output symbols from - SEC_EXCLUDE sections. - - * aoutx.h (aout_link_write_symbols): Correct handling of warning syms. - -2002-08-07 Alan Modra - - * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd - entries. - -2002-08-07 Thiemo Seufer - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Cast signedness - mismatch. - -2002-08-07 Thiemo Seufer - - * elfxx-mips.c (ABI_64_P): Remove superfluous check. - -2002-08-07 Thiemo Seufer - - * elf32-mips.c (mips_reloc_map): Fix typo. - -2002-08-06 Alan Modra - - * xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section. - -2002-08-06 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries. - -2002-08-06 Alan Modra - - * libxcoff.h: Use PARAMS on function declarations. - * coff-rs6000.c (xcoff_generate_rtinit): Simplify size calc. - * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. - - * coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in - addend. - * coff64-rs6000.c: (xcoff64_rtype2howto): Likewise. - -2002-08-06 Alan Modra - - * coff-rs6000.c: Formatting fixes. - (xcoff_calculate_relocation): Use PARAMS in declaration. - (xcoff_complain_overflow): Likewise. - (xcoff_ppc_relocate_section): Use old-style function pointer call. - (bfd_xcoff_backend_data): Remove useless comments. - (rs6000coff_vec): Likewise. - (bfd_pmac_xcoff_backend_data): Likewise. - (pmac_xcoff_vec): Likewise. - - * coff64-rs6000.c: Formatting fixes. - (xcoff64_calculate_relocation): Use PARAMS in declaration. - (xcoff64_ppc_relocate_section): Use old-style function pointer call. - (bfd_xcoff_backend_data): Remove useless comments. - (rs6000coff64_vec): Likewise. - (bfd_xcoff_aix5_backend_data): Likewise. - (aix5coff64_vec): Likewise. - -2002-08-06 Alan Modra - - * coff-rs6000.c (xcoff_howto_table): Revert some of last change to - mask entries. Use complain_overflow_dont for R_REF. - (xcoff_reloc_type_ba): Revert last change. - (xcoff_reloc_type_br): Likewise. - (xcoff_reloc_type_crel): Likewise. - (xcoff_ppc_relocate_section): Likewise. - * coff64-rs6000.c (xcoff64_reloc_type_br): Likewise. - (xcoff64_ppc_relocate_section): Likewise. - (xcoff64_howto_table): Revert some of last change to mask entries. - Use complain_overflow_dont for R_REF. - - * coff-rs6000.c (xcoff_howto_table): Fix src_mask entries. Make all - relocs with bitsize == 16 have size = 1. - (xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment. - (xcoff_reloc_type_br): Likewise. - (xcoff_reloc_type_crel): Likewise. - (xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly. - * coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and - dst_mask adjustment. - (xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly. - (xcoff64_howto_table): Fix src_mask entries. Make all relocs with - bitsize == 16 have size = 1. - -2002-08-01 Denis Chertykov - - * elf32-ip2k.c: Processor manufacturer changed to Ubicom. - (struct misc): New field isymbuf. All free_* fields removed. - (symbol_value): Pass in internal syms. No need to swap syms in. - (ip2k_elf_relax_section): Use bfd_elf_get_elf_syms. Properly free - possibly cached info. - (tidyup_after_error): Removed. - (ip2k_elf_relax_section_pass1): Don't use removed fields of struct - misc. Use new field. - (adjust_all_relocations): Use internal syms. No need to swap syms - in and out. - (add_page_insn): Don't use removed fields of struct misc. - -2002-08-01 Nick Clifton - - * elf32-arm.h: Revert previous delta. - -2002-08-01 Nick Clifton - - * configure.in (AM_INIT_AUTOMAKE): Bump version number. - * configure: Regenerate. - -2002-07-31 H.J. Lu - - * config.bfd: Add x86-64 vector to Linux/i386 if 64bit BFD is - selected. - -2002-07-31 H.J. Lu - - * config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD - is selected. - -2002-07-31 Jakub Jelinek - - * elf32-i386.c (elf_i386_copy_indirect_symbol): Swap tls_type - if _bfd_elf_link_hash_copy_indirect will swap got.refcount. - -2002-07-31 Ian Dall - - * cpu-ns32k.c (_bfd_ns32k_put_immdeiate, _bfd_ns32k_get_immediate): - There is no 8 byte relocation type for this architecture. - (do_ns32k_reloc): Use bfd_vma instead of native types. - (bfd_ns32k_put_immediate, _bfd_ns32k_relocate_contents) put_data - returns void. - (_bfd_ns32k_put_displacement): Don't check for overflow. We can - rely on generic code to do that. - * aout-ns32k.c (howto_table): Add appropriate overflow detection - to all table entries. - (_bfd_ns32k_relocate_contents): put_data returns void. - * ns32k.h: (_bfd_ns32k_put_displacement, _bfd_ns32k_put_immediate) - (_bfd_do_ns32k_reloc_contents): Fix prototypes. put data functions - return void. - -2002-07-31 Ian Dall - - * aoutx.h (aout_link_check_ar_symbols): Whether to include an - archive object is target dependant. - -2002-07-31 Adam Nemet - - * elf32-arm.h (ARM_PLT_ENTRY_SIZE): Rename PLT_ENTRY_SIZE. - (THUMB_PLT_ENTRY_SIZE): New macro. - (PLT_ENTRY_SIZE): Return the appropriate *_PLT_ENTRY_SIZE. - (elf32_arm_plt0_entry): Rename PLT_ENTRY_SIZE to - ARM_PLT_ENTRY_SIZE. - (elf32_arm_plt_entry): Likewise. - (elf_backend_plt_header_size): Likewise. - (elf32_thumb_plt0_entry): New global. - (elf32_arm_finish_dynamic_sections): Use it. Put Thumb entries - into .plt.thumb. - (elf32_thumb_plt_entry): New global. - (elf32_arm_finish_dynamic_symbol): Use it. Use .thumb.plt for - Thumb entries. Set the bottom bit of the corresponding GOT entry - for a Thumb PLT entry. - (struct elf32_arm_plt_entry_info): New structure. - (struct elf32_arm_link_hash_entry, plt_info): New member of this - type. - (elf32_arm_link_hash_newfunc): Initialize new member. - (elf32_arm_final_link_relocate, R_ARM_THM_PC22 case): Handle - relocations against the PLT. - (elf32_arm_check_relocs, case R_ARM_PLT32 case): Set - first_rel_type if this is the first time we encounter the symbol. - (elf32_arm_check_relocs, case R_ARM_THM_PC22 case): New case. - Determine if relocation needs a PLT entry. Set first_rel_type if - this is the first time we encounter the symbol - (elf32_arm_adjust_dynamic_symbol): Create PLT entries for Thumb - functions as well. - (elf32_arm_size_dynamic_sections): Handle .plt.thumb like .plt. - (elf32_arm_create_dynamic_sections): New function. Create the - .plt.thumb section. - (elf_backend_create_dynamic_sections): Call it. - -2002-07-31 Nick Clifton - - * bfd.c (bfd_alt_mach_code): Rename parameter 'index' to - 'alternative' in order to avoid shadowing global symbol of the - same name. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - -2002-07-31 Thiemo Seufer - - * Makefile.am: Add n32 ABI support. - * Makefile.in: Regenerate. - * config.bfd: Add n32 vectors to mips64*-*-linux* targets. Treat 64 - bit vectors for mips*-*-linux targets as optional. - * configure.in: Add n32 ABI vectors. - * configure: Regenerate. - * elf32-mips.c (mips_elf32_object_p): Reject n32 ABI files. - * elfn32-mips.c: New file, n32 ABI support. - * targets.c: Add n32 ABI vectors. - -2002-07-30 Graeme Peterson - - * elfarmqnx-nabi.c: New file: Support for QNX. - * config.bfd: Add support for arm-*-nto target. - * configure.in: Add support for bfd_elf32_{big|little}armqnx_vec. - * configure: Regenerate. - * Makefile.am: Add entries for elfarmqnx-nabi.c. - * Makefile.in: Regenerate. - * elf32-arm.h (ELF_MAXPAGESIZE): Do not define if already defined. - Do not define global function if ELFARM_NABI_C_INCLUDED is defined. - * elfarm-nabi.c: Do not include elf32-arm.h if - ELFARM_NABI_C_INCLUDED is defined. - * targets.c: Add bfd_elf32_{big|little}armqnx_vec. - -2002-07-30 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2002-07-30 Jakub Jelinek - - * elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type. - -2002-07-30 Alan Modra - - * aoutx.h (some_aout_object_p): Clean up tdata properly on error. - * archive.c (bfd_generic_archive_p): Likewise. - * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise. - (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol. - * coff64-rs6000.c (xcoff64_slurp_armap): Likewise. - (xcoff64_archive_p): Likewise. - (xcoff64_openr_next_archived_file): Likewise. - (xcoff64_archive_p): Clean up tdata properly on error. - * coffgen.c (coff_real_object_p): Likewise. - (coff_object_p): Release filehdr and opthdr. - * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error. - * ieee.c (ieee_archive_p): Likewise. - * ihex.c (ihex_object_p): Likewise. - (ihex_mkobject): Always allocate tdata. - * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error. - * srec.c (srec_mkobject): Always allocate tdata. - (srec_object_p): Clean up tdata properly on error. - (symbolsrec_object_p): Likewise. - * versados.c (versados_object_p): Likewise. - * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc, - and bfd_realloc instead of realloc. - (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections. - * vms.c (vms_initialize): Always allocate tdata. Use bfd_alloc in - place of bfd_malloc, simplifying error freeing. Free hash table too. - (vms_object_p): Clean up tdata on error. - (vms_mkobject): Don't complain on stderr if vms_initialize fails. - (vms_close_and_cleanup): Adjust for bfd_alloc use. - -2002-07-30 Alan Modra - - * elfxx-ia64.c (elfNN_ia64_final_write_processing): Set e_flags. - -2002-07-26 Chris Demetriou - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Merge ASE - flags into resulting BFD. - -2002-07-26 Alan Modra - - From John Reiser - * elf32-i386.c (elf_i386_link_hash_table_create): Clear - tls_ldm_got.refcount. - -2002-07-25 Thiemo Seufer - - * elf64-mips.c: Update TODO comment. - (mips_elf64_higher_reloc,mips_elf64_highest_reloc, - mips_elf64_gprel16_reloca): Remove prototypes. - (mips16_jump_reloc,mips16_gprel_reloc): Add functions. - (UNUSED_RELOC): Replace by EMPTY_RELOC. - (mips_elf64_howto_table_rel): Use special R_MIPS_HI16 handling. Remove - wrong comments. Remove disfunctional support of R_MIPS_HIGHER and - R_MIPS_HIGHEST. - (mips_elf64_howto_table_rela): Fix handling of R_MIPS_GPREL16 and - R_MIPS_GOT16. Remove wrong comments. - (elf_mips16_jump_howto,elf_mips16_gprel_howto, - elf_mips_gnu_vtinherit_howto,elf_mips_gnu_vtentry_howto): New, code - from elf32-mips.c. - (mips_elf64_hi16_reloc): Fix formatting. - (mips_elf64_higher_reloc,mips_elf64_highest_reloc): Remove. - (mips_elf64_got16_reloc): Fix formatting. Remove superfluous code. - Better comment. Fall back to R_MIPS_GOT_DISP instead of abort(). - (mips_elf64_gprel16_reloc): Make static. Add check for - partial_inplace. - (mips_elf64_gprel16_reloca): Remove. - (mips_elf64_literal_reloc): New function. - (mips_elf64_gprel32_reloc): Fix formatting. - (mips_elf64_shift6_reloc): Fix comment. Make static. - (mips16_jump_reloc,mips16_gprel_reloc): New functions, code from - elf32-mips.c. - (elf_reloc_map,mips_reloc_map): New mapping table, similiar as in - elf32-mips.c - (bfd_elf64_bfd_reloc_type_lookup): Use the mapping table. Enable GNU - specific relocations. - (mips_elf64_rtype_to_howto): Enable GNU specific relocations. - (mips_elf64_object_p): Invert logic to check for SGI-ish ABI. - (ELF_MAXPAGESIZE): Add comment. - -2002-07-25 Nick Clifton - - * po/sv.po: Updated Swedish translation. - * po/es.po: Updated Spanish translation. - * po/fr.po: Updated French translation. - -2002-07-25 Alan Modra - - * elf-bfd.h (_bfd_elf32_link_record_local_dynamic_symbol): Define - as elf_link_record_local_dynamic_symbol. - (_bfd_elf64_link_record_local_dynamic_symbol): Likewise. - (elf_link_record_local_dynamic_symbol): Declare. Now returns int. - * elflink.h (elf_link_record_local_dynamic_symbol): Move to.. - * elflink.c: .. here. Use bfd_elf_get_elf_syms. Check whether an - attempt is made to record a symbol in a discarded section, and - return `2' in that case. - -2002-07-24 Nick Clifton - - * po/sv.po: Updated Swedish translation. - * po/es.po: Updated Spanish translation. - -2002-07-23 Alan Modra - - * po/SRC-POTFILES.in: Regenerate. - - * elf-hppa.h (elf_hppa_relocate_section): If relocatable, return - immediately. Remove code handling relocatable linking. - * elf32-avr.c (elf32_avr_relocate_section): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-fr30.c (elf32_frv_relocate_section): Likewise. - * elf32-frv.c (elf32_frv_relocate_section): Likewise. - * elf32-h8300.c (elf32_h8_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-v850.c (v850_elf_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf32-avr.c (elf_backend_rela_normal): Define. - * elf32-cris.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-frv.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-vax.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-sparc.c: Likewise. - * elf32-fr30.c (elf32_frv_relocate_section): Edit comment. - * elf32-frv.c (elf32_frv_relocate_section): Likewise. - * elf32-i860.c (elf32_i860_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. - * elf-m10200.c (USE_RELA): Don't define. - * elf-m10300.c: Likewise. - * elfarm-oabi.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-vax.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfxx-ia64.c: Likewise. - * elf32-avr.c (USE_REL): Don't undef. - * elf32-ip2k.c: Likewise. - -2002-07-23 Nick Clifton - - * elf-bfd.h (struct elf_backend_data): Add new bitfield - 'want_p_paddr_set_to_zero'. - * elfxx-target.h: Set default value for want_p_paddr_set_to_zero - to false; - * elfxx-ia64.c: Set want_p_paddr_set_zero for HPUX target. - * elf.c (copy_private_bfd_data): Test want_p_paddr_set_zero. - -2002-07-23 Gabor Keresztfalvi - - * nlmcode.h (nlm_swap_auxiliary_headers_out): Swapped the order of - the MeSsAgEs and CoPyRiGhT tags to make >=NW4.x NLM loaders to - show the Copyright string. - Minor formatting tidy ups. - -2002-07-23 Nick Clifton - - * po/fr.po: Updated French translation. - * po/sv.po: Updated Swedish translation. - -2002-07-23 Alan Modra - - * elflink.h (elf_link_input_bfd): Don't change internal symbols - when outputting relocs. - -2002-07-20 Jason Thorpe - - * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Only insert - DT_PLTGOT into the dynamic section if there is a PLT. - -2002-07-19 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_discard_info): New function, code from - elf32-mips.c. - (_bfd_mips_elf_write_section): Likewise. - * elfxx-mips.h (_bfd_mips_elf_discard_info): New prototype. - (_bfd_mips_elf_write_section): Likewise. - * elf32-mips.c (elf32_mips_discard_info): Move to elfxx-mips.c. - (elf32_mips_write_section): Likewise. - * elf64-mips.c (_bfd_mips_elf_ignore_discarded_relocs): Use it. - (_bfd_mips_elf_write_section): Likewise. - -2002-07-19 Alan Modra - - * elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan - PT_IA_64_UNWIND segments for a given section. - -2002-07-17 H.J. Lu - - * Makefile.am: Fix a typo. - * Makefile.in: Regenerate. - -2002-07-15 Denis Chertykov - Frank Ch. Eigler - Ben Elliston - Alan Lehotsky - John Healy - Graham Stott - Jeff Johnston - - * Makefile.am: Add support for ip2k. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * archures.c: Add support for ip2k. - * config.bfd: Add support for ip2k. - * configure.in: Add support for ip2k. - * configure: Regenerate. - * reloc.c: Add support for ip2k. - * targets.c: Add support for ip2k. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * cpu-ip2k.c: New file. - * elf32-ip2k.c: New file. - -2002-07-17 Ian Rickards - - * dwarf2.c (concat_filename): If we can't establish the directory - just return the filename. - -2002-07-16 Moritz Jodeit - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Correct order of memset args. - -2002-07-16 Alan Modra - - * elflink.h: Formatting fixes, tidy prototypes. - (elf_link_assign_sym_version): Move common code out of loop. - -2002-07-16 Alan Modra - - * elflink.h (elf_link_input_bfd): Don't call reloc_emitter when - reloc section size is zero. Correct reloc output location. - -2002-07-16 John David Anglin - - * elf-hppa.h (elf_hppa_reloc_final_type): Use R_PARISC_PCREL16F as - the final type for the e_fsel selector when generating PA2.0W code. - (elf_hppa_relocate_insn): Provide support for PA2.0W 16-bit format 1 - relocations. - -2002-07-14 H.J. Lu - - * elflink.h (elf_link_assign_sym_version): Hide the default - definition if there is a hidden versioned definition. - -2002-07-12 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): Drop nonsensical - dynamic reference test in assertion when initializing GOT with - static contents. Just assert that there are either no dynamic - sections, the symbol is defined in the regular objects or that the - symbol is undef weak. Tweak comment. - (elf_cris_finish_dynamic_symbol): Emit .got reloc for a program - only if the symbol isn't defined in the program and isn't undef - weak. - (elf_cris_adjust_dynamic_symbol): Simplify condition for getting - rid of PLT entry: only do it if the symbol isn't defined in a DSO. - When doing so, clear ELF_LINK_HASH_NEEDS_PLT. Tweak comments. - (elf_cris_discard_excess_program_dynamics): Don't consider - ELF_LINK_HASH_REF_DYNAMIC when omitting .got runtime relocs. - -2002-07-11 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Don't complain about - unresolved debugging relocs in dynamic applications. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2002-07-10 Alan Modra - - * elf64-ppc.c (ONES): Define. - (ppc64_elf_howto_table): Use ONES here to avoid warnings. Fill in - missing src_mask fields. Tweak R_PPC64_NONE, R_PPC64_COPY. Fill - in missing dst_mask fields on R_PPC64_PLT32, R_PPC64_PLTREL32. - - * elf64-ppc.c (ppc64_elf_get_symbol_info): Delete. - (ppc64_elf_set_private_flags): Delete. - (ppc64_elf_section_from_shdr): Delete. - (ppc64_elf_merge_private_bfd_data): Remove flag checking/merging code. - (ppc64_elf_fake_sections): Delete. - (bfd_elf64_bfd_set_private_flags): Don't define. - (bfd_elf64_get_symbol_info): Likewise. - (elf_backend_section_from_shdr): Likewise. - (elf_backend_fake_sections): Likewise. - -2002-07-10 Marco Walther - - * elf.c: (assign_section_numbers) Set sh_entsize for .stab only - when not already set. - * elf64-sparc.c: (sparc64_elf_fake_sections): New function. - (elf_backend_fake_sections): Define. - -2002-07-10 Alan Modra - - * merge.c (_bfd_merge_section): Remove redundant output_section check. - Formatting. - (_bfd_merge_sections): Don't set SEC_EXCLUDE on unused sections. - -2002-07-09 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): Move sanity-check for - NULL sym_hashes to just before use. - : In test for local symbol, accept also - symbol with non-default visibility. - : Ditto. - : - Ditto. - (cris_elf_gc_sweep_hook): Only decrease h->plt.refcount for - symbol with non-default visibility. - (cris_elf_check_relocs): At tests for local symbol before - increasing h->plt.refcount, also check for non-default - visibility. Ditto when checking for local symbol to eliminate - pc-relative runtime relocs. - -2002-07-08 Alan Modra - - * elf.c: Formatting. - (IS_SOLARIS_PT_INTERP): Add p_paddr and p_memsz checks. - (INCLUDE_SECTION_IN_SEGMENT): Remove IS_SOLARIS_PT_INTERP. - (copy_private_bfd_data): Set p_vaddr on broken Solaris PT_INTERP - segments. - -2002-07-07 Mark Mitchell - Alan Modra - - * cofflink.c (_bfd_coff_final_link): On PE COFF systems, take into - account the impact of relocation count overflow when computing - section offsets. - * coffcode.h (coff_write_relocs): Use obj_pe when deciding whether - or not to apply the PE COFF reloc overflow handling. Fix a - fencepost error in deciding whether or not to use that technique. - -2002-07-07 Alan Modra - - * elf-bfd.h (struct elf_reloc_cookie): Remove locsym_shndx, - change type of locsyms. - (bfd_elf_get_elf_syms): Declare. - * elf.c (bfd_elf_get_elf_syms): New function. - (group_signature): Use bfd_elf_get_elf_syms. - (bfd_section_from_r_symndx): Likewise. - * elfcode.h (elf_slurp_symbol_table): Likewise. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. Reorganise to increase - locality of various data structures. Properly free internal relocs. - (elf_bfd_final_link): Properly free internal relocs. - (elf_link_check_versioned_symbol): Use bfd_elf_get_elf_syms. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. Properly free internal relocs. - (elf_gc_sweep): Properly free internal relocs. - (elf_reloc_symbol_deleted_p): No need to swap syms in. - (elf_bfd_discard_info): Use bfd_elf_get_elf_syms. Properly free - internal relocs. - * elf-m10200.c (mn10200_elf_relax_section): Use bfd_elf_get_elf_syms. - Properly free possibly cached info. - (mn10200_elf_relax_delete_bytes): Remove symbol swapping code. - (mn10200_elf_symbol_address_p): Pass in internal syms. Remove - symbol swapping code. - (mn10200_elf_get_relocated_section_contents): Use bfd_elf_get_elf_syms. - Properly free possibly cached info. - * elf-m10300.c (mn10300_elf_relax_section): As above for elf-m10200.c. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): As above for elf-m10200.c. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-m32r.c (m32r_elf_relax_section): As above for elf-m10200.c. - (m32r_elf_relax_delete_bytes): Likewise. - (m32r_elf_get_relocated_section_contents): Likewise. - * elf32-sh.c (sh_elf_reloc_loop): Free section contents using - elf_section_data to determine whether cached. - (sh_elf_relax_section): As above for elf-m10200.c. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): As above. - * elf64-alpha.c (elf64_alpha_relax_section): As above. Also delay - reading of local syms. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): As above. - * elfxx-ia64.c (elfNN_ia64_relax_section): As above. - * elfxx-mips.c (_bfd_mips_elf_check_relocs): Properly free internal - relocs. - * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Properly - free internal relocs and section contents. Don't read symbols. - * elf32-hppa.c (get_local_syms): Use bfd_elf_get_elf_syms. - (elf32_hppa_size_stubs): Don't free local syms. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Delay - reading of local syms. Use bfd_elf_get_elf_syms. Properly free - possibly cached info. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Use bfd_elf_get_elf_syms. - * elf64-ppc.c (struct ppc_link_hash_table): Delete bfd_count and - all_local_syms. - (get_local_syms): Delete function. - (edit_opd): Use bfd_elf_get_elf_syms. Free on error exit. Cache - on exit. - (ppc64_elf_size_stubs): Use bfd_elf_get_elf_syms. Free/cache on exit. - -2002-07-05 Jim Wilson - - * syms.c (decode_section_type): New. - (bfd_decode_symclass): Call decode_section_type. - -2002-07-04 Jakub Jelinek - - * merge.c (_bfd_merged_section_offset): Avoid accessing byte before - section content start. - Reported by Michael Schumacher . - -2002-07-04 Alan Modra - - * section.c (_bfd_strip_section_from_output): Remove unnecessary - link order code. Don't actually remove the output section here; - Just set a flag for the linker to do so. - * elflink.c (_bfd_elf_link_renumber_dynsyms): Test for removed - sections when setting up output section dynsyms. - -2002-07-04 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Revert 1999-09-02 hpux - fudge. - * elf.c (bfd_section_from_shdr): Work around broken hpux shared - libs here instead. - -2002-07-02 Martin Schwidefsky - - * elf64-s390.c (create_got_section): Set .got section alignment to - 8 bytes. - (elf_s390_check_relocs): Set .rela.dyn section alignment to 8 bytes. - -2002-07-02 Alan Modra - - * elf.c (_bfd_elf_reloc_type_class): Fix comment grammar. - -2002-07-01 Matt Thomas - - * elf32-vax.c (elf32_vax_print_private_bfd_data): Change EF_* - to EF_VAX_*. - -2002-07-01 Thiemo Seufer - - * elfxx-mips.c (ABI_64_P): Fix comment. - (MIPS_ELF_OPTIONS_SECTION_NAME,MIPS_ELF_STUB_SECTION_NAME): Use the - new section names for N64 ABI. - (mips_elf_output_extsym): No special _gp_disp handling for NewABI. - (mips_elf_calculate_relocation): Code formatting. - (mips_elf_create_dynamic_relocation): Likewise. - (_bfd_mips_elf_fake_sections): IRIX6 needs this hack, too. - (_bfd_mips_elf_size_dynamic_sections): Handle GOT_PAGE for any NewABI. - (_bfd_mips_elf_relocate_section): No special handling for R_MIPS_64 - in any NewABI. - (_bfd_mips_elf_finish_dynamic_symbol): No special _gp_disp handling - for NewABI. - (_bfd_mips_elf_modify_segment_map): Handle any N64 ABI. - (_bfd_mips_elf_gc_sweep_hook): NewABI GOT relocs should be handled - here, too. - -2002-07-01 Andreas Schwab - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Only convert - R_X86_64_64 to R_X86_64_RELATIVE. - -2002-07-01 John David Anglin - - * vaxbsd.c: New BFD backend for VAX BSD and Ultrix. - * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add new backend. - Run "make dep-am". - * config.bfd (vax-*-bsd* | vax-*-ultrix*): Use vaxbsd_vec instead of - host_aout_vec. - * configure.in (vaxbsd_vec): Add. - * targets.c (vaxbsd_vec): Add. - * Makefile.in: Rebuild. - * configure: Rebuild. - * po/SRC-POTFILES.in: Rebuild. - -2002-07-01 Alan Modra - - * elflink.h (elf_gc_mark): Pass in the section whose relocs we are - examining to gc_mark_hook, rather than the bfd. - (elf_gc_sections): Adjust. - * elf-bfd.h (struct elf_backend_data ): Likewise. - * elf-m10300.c (mn10300_elf_gc_mark_hook): Likewise. - * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise. - * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise. - * elf32-cris.c (cris_elf_gc_mark_hook): Likewise. - * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise. - * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise. - * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise. - * elf32-i386.c (elf_i386_gc_mark_hook): Likewise. - * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise. - * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise. - * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise. - * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise. - * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise. - * elf32-s390.c (elf_s390_gc_mark_hook): Likewise. - * elf32-sh.c (sh_elf_gc_mark_hook): Likewise. - * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise. - * elf32-v850.c (v850_elf_gc_mark_hook): Likewise. - * elf32-vax.c (elf_vax_gc_mark_hook): Likewise. - * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise. - * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise. - * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. - * elf64-s390.c (elf_s390_gc_mark_hook): Likewise. - * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. - * elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. - * elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise. - * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. - * elf32-frv.c (elf32_frv_gc_mark_hook): Likewise. Also remove - redundant local sym tests. - * elf64-ppc.c (struct ppc_link_hash_entry): Add is_entry. - (link_hash_newfunc): Init is_entry. - (ppc64_elf_copy_indirect_symbol): Copy is_entry. - (ppc64_elf_link_hash_table_create): Init all_local_syms. - (create_linkage_sections): Use bfd_make_section_anyway rather than - bfd_make_section. - (ppc64_elf_mark_entry_syms): New function. - (ppc64_elf_check_relocs): Don't bother testing elf_bad_symtab. Set - up opd entry to function section map. - (ppc64_elf_gc_mark_hook): Special case opd section relocs, and - relocs that reference the opd section. - (edit_opd): New function. - (ppc64_elf_size_dynamic_sections): Call get_local_syms and edit_opd. - (ppc64_elf_setup_section_lists): Don't calculate htab->bfd_count here. - (get_local_syms): Do so here. Exit if we already have local syms. - Remove bogus comment imported from elf32-hppa.c. Don't attempt to - read local syms on non-ELF input. - (ppc64_elf_size_stubs): Call _bfd_elf64_link_read_relocs rather - than duplicating it's function here. Adjust free of internal - relocs to suit. - (ppc64_elf_relocate_section): Adjust local syms in opd section. - * elf64-ppc.h (ppc64_elf_mark_entry_syms): Declare. - * elf32-hppa.c (elf32_hppa_size_stubs): Call - _bfd_elf32_link_read_relocs rather than duplicating it's function - here. Adjust free of internal relocs to suit. - -2002-07-01 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Certain relocations - are not allowed in shared libs code, enforce -fPIC. - -2002-06-29 Hans-Peter Nilsson - - * mmo.c (mmo_write_loc_chunk): Don't eliminate leading and - trailing zero-sequences when there's previous left-over data. - -2002-06-27 John David Anglin - - * elf64-hppa.c (elf64_hppa_reloc_type_class): New function. - (elf64_hppa_finish_dynamic_sections): Check other_rel_sec, dlt_rel_sec - and opd_rel_sec in order for starting rela section. Check _raw_size. - (elf_backend_reloc_type_class): Define. - -2002-06-27 Kevin Buettner - - * dwarf2.c (decode_line_info): Handle older, non-standard, 64-bit - DWARF2 formats. - -2002-06-27 Alan Modra - - * cpu-powerpc.c: Comment on ordering of arch_info. - * elf32-ppc.c (ppc_elf_object_p): New function. - (elf_backend_object_p): Define. - * elf64-ppc.c (ppc64_elf_object_p): New function. - (elf_backend_object_p): Define. - -2002-06-26 Jason Thorpe - - * configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo. - * configure: Regenerate. - -2002-06-25 Jason Eckhardt - - * dwarf2.c (decode_line_info): Check unit->addr_size - to read in the proper number of prologue bytes. - -2002-06-25 Nick Clifton - - * config.bfd (powerpc-*-aix5*): Only create a selvecs for - aix5coff64_vec if 64-bit bfd support has been enabled. - (powerpc64-*-aix5*): Only define if 64-bit bfd support has - been enabled. - - * targets.c (_bfd_target_vector[]): Only include - aix5coff64_vec if 64-bit bfd support has been enabled. - -2002-06-25 Alan Modra - - * elf64-ppc.c (ppc_add_stub): Replace strcpy/strncpy with memcpy. - * elf32-hppa.c (hppa_add_stub): Likewise. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. - * elflink.h (elf_add_default_symbol): Fix comment typo. - (elf_add_default_symbol): Replace strcpy and strncpy with memcpy. - (elf_link_add_object_symbols): Likewise. - (elf_link_assign_sym_version): Likewise. - * hash.c (bfd_hash_lookup): Likewise. - * linker.c (_bfd_generic_link_add_one_symbol): Likewise. - * section.c (bfd_get_unique_section_name): Likewise. - * syms.c (_bfd_stab_section_find_nearest_line): Likewise. - * elf.c (_bfd_elf_make_section_from_phdr): Likewise. - (assign_section_numbers): Likewise. - (_bfd_elfcore_make_pseudosection): Likewise. - (elfcore_grok_lwpstatus): Likewise. - (elfcore_grok_win32pstatus): Likewise. - (elfcore_write_note): Constify input params. Use PTR instead of - void *. Include terminating NUL in namesz. Correct padding. - Support NULL "name" param. Use memcpy instead of strcpy. - (elfcore_write_prpsinfo): Constify input params. - (elfcore_write_prstatus): Likewise. Use PTR instead of void *. - (elfcore_write_lwpstatus): Likewise. - (elfcore_write_pstatus): Likewise. - (elfcore_write_prfpreg): Likewise. - (elfcore_write_prxfpreg): Likewise. - * elf-bfd.h (elfcore_write_note): Update declaration. - (elfcore_write_prpsinfo): Likewise. - (elfcore_write_prstatus): Likewise. - (elfcore_write_pstatus): Likewise. - (elfcore_write_prfpreg): Likewise. - (elfcore_write_prxfpreg): Likewise. - (elfcore_write_lwpstatus): Likewise. - -2002-06-25 Jason Eckhardt - - * ecoff.c (ecoff_set_symbol_info): Set BSF_FUNCTION for - symbols of type stProc and stStaticProc. - -2002-06-25 Nick Clifton - - * ecoff.c: VArious formatting fixes. - -2002-06-25 Alan Modra - - * coff-rs6000.c (xcoff_generate_rtinit): Fix typo. - -2002-06-25 Alan Modra - - * aout-adobe.c: Don't compare against "true" or "false. - * aout-target.h: Likewise. - * aoutx.h: Likewise. - * archive.c: Likewise. - * bout.c: Likewise. - * cache.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-i386.c: Likewise. - * coff-mips.c: Likewise. - * coff-or32.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffgen.c: Likewise. - * cpu-ns32k.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - * elf.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-cris.c: Likewise. - * elf32-d30v.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-sh64.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.h: Likewise. - * elfxx-mips.c: Likewise. - * i386os9k.c: Likewise. - * ieee.c: Likewise. - * libbfd.c: Likewise. - * linker.c: Likewise. - * mmo.c: Likewise. - * nlm32-alpha.c: Likewise. - * nlm32-i386.c: Likewise. - * nlm32-ppc.c: Likewise. - * nlm32-sparc.c: Likewise. - * nlmcode.h: Likewise. - * oasys.c: Likewise. - * pdp11.c: Likewise. - * peicode.h: Likewise. - * reloc.c: Likewise. - * som.c: Likewise. - * srec.c: Likewise. - * tekhex.c: Likewise. - * vms.c: Likewise. - * xcofflink.c: Likewise. - * elf64-sparc.c: Edit comment to not use "== false". - - * aoutf1.h: Don't use "? true : false". - * ecoff.c: Likewise. - * format.c: Likewise. - * ieee.c: Likewise. - * linker.c: Likewise. - * mmo.c: Likewise. - * oasys.c: Likewise. - -2002-06-23 H.J. Lu - - * elflink.h (elf_link_add_archive_symbols): For the default - version, check references with only one `@' first. - -2002-06-23 John David Anglin - - * elf64-hppa.c (elf64_hppa_mark_milli_and_exported_functions): New - function. - (allocate_global_data_dlt): Don't add millicode symbols to dynamic - symbol table. - (allocate_global_data_opd, allocate_dynrel_entries): Likewise. - (elf64_hppa_size_dynamic_sections): Revise to use - elf64_hppa_mark_milli_and_exported_functions. - (elf64_hppa_finish_dynamic_symbol): Remove code to keep millicode - symbols out of dynamic symbol table. - -2002-06-23 Alan Modra - - * Makefile.in: Regenerate. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - - * elflink.h: Comment typo fixes. - -2002-06-23 H.J. Lu - - * elf-bfd.h (elf_link_loaded_list): New structure. - (elf_link_hash_table): Add "loaded". - * elf.c (_bfd_elf_link_hash_table_init): Initialize "loaded". - * elflink.h (elf_link_check_versioned_symbol): New function. - (elf_link_output_extsym): Call elf_link_check_versioned_symbol. - -2002-06-19 Nick Clifton - - * elflink.h (size_dynamic_sections): If the target does not - support an ELF style hash table, return true, indicating that - nothing needed to be done, rather than false, indicating that the - section's size could not be computed. - -2002-06-18 Dave Brolley - - From Catherine Moore, Michael Meissner, Dave Brolley: - * po/SRC-POTFILES.in: Add cpu-frv.c and elf32-frv.c - * targets.c: Support bfd_elf32_frv_vec. - * reloc.c: Add FRV relocs. - * configure.in: Add support for bfd-elf32-frv-vec. - * config.bfd (targ_cpu): Add support for frv-*-elf. - * archures.c: Add frv arch and machines. - * Makefile.am (ALL_MACHINES): Add cpu-frv.lo. - (ALL_MACHINES_CFILES): Add cpu-frv.c. - (BFD32_BACKENDS): Add elf32-frv.lo. - (BFD32_BACKENDS_CFILES): Add elf32-frv.c - (cpu-frv.lo): New target. - (elf32-frv.lo): New target. - * cpu-frv.c: New file. - * elf32-frv.c: New file. - -2002-06-18 Jakub Jelinek - - * elfcode.h (elf_object_p): Sanity check eh_shoff == 0 implies - e_shnum == 0. - Only read the first section header if e_shoff is non-zero. - Don't consider e_shstrndx if there are no sections. - -2002-06-17 Tom Rix - - * elf32-d10v.c (elf_d10v_howto_table): Change R_D10V_10_PCREL_R, - R_D10V_10_PCREL_L and R_D10V_18_PCREL to use - complain_overflow_bitfield. - -2002-06-17 Alan Modra - - * opncls.c (bfd_openr): Remove redundant bfd_set_error. - (bfd_fdopenr): Likewise. - (bfd_openstreamr): Likewise. - (bfd_openw): Likewise. - - * targets.c: Sort target vecs. - (_bfd_target_vector): Add aix5coff64_vec, bfd_elf32_sh64_vec, - bfd_elf32_sh64l_vec, bfd_elf32_sh64lnbsd_vec, - bfd_elf32_sh64nbsd_vec, bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec, - bfd_elf64_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec. - * configure.in: Sort target vecs. Add m88kmach3_vec. - * configure: Regenerate. - -2002-06-16 Hans-Peter Nilsson - - * elf64-mmix.c (bpo_reloc_request_sort_fn): Use member - bpo_reloc_no to break sort order ties, not address of items. - -2002-06-16 John David Anglin - - * elf-hppa.h (elf_hppa_final_link): Fix formatting in comment. - Skip excluded sections in determing __gp value. - (elf_hppa_final_link_relocate): Use the symbol's address in - R_PARISC_FPTR64 relocations that don't need an opd entry. - * elf64-hppa.c (allocate_dynrel_entries): Simplify code. - (elf64_hppa_finalize_dynreloc): Likewise. - (elf64_hppa_size_dynamic_sections): Move comments and fix typo. - (elf64_hppa_finish_dynamic_symbol): Break up assert. - -2002-06-14 Sergey Grigoriev - - * pei-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Enable 16 byte - alignment for .bss, .data and .text sections so that sse and sse2 - code will work. - * pe-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. - -2002-06013 J"orn Rennecke - - config.bfd: Add support for sh[1234]l*-*-elf* | sh3el*-*-elf*, - sh[1234]*-elf*. - -2002-06-12 John David Anglin - - * elflink.h (elf_bfd_final_link): Improve error handling for missing - dynamic sections. - - * elf64-hppa.c (allocate_global_data_opd): We don't need an opd entry - for a symbol that has no output section. - (allocate_dynrel_entries): Correct comment. - (elf64_hppa_finalize_dynreloc): Likewise. Don't create an opd entry - unless we want one. - (elf64_hppa_finalize_opd): Prevent segfault if dyn_h is NULL. - (elf64_hppa_finalize_dlt): Likewise. Prevent segfault for symbols - with no section. Remove unnecessary parentheses. - -2002-06-11 Tom Rix - - * coffcode.h (coff_compute_section_file_positions): Add data - section to AIX loader alignment check. - - * coff-rs6000.c (_bfd_xcoff_mkobject): Set default text section - alignment to 4 bytes. - (_bfd_xcoff_copy_private_bfd_data): Use text and data alignment - power accessor macro. - (do_shared_object_padding): Remove invalid assertion. - -2002-06-10 Richard Sandiford - - * section.c (_bfd_strip_section_from_output): Set SEC_EXCLUDE - for removed output sections. - -2002-06-10 Geoffrey Keating - - * merge.c (merge_strings): Use htab_create_alloc with calloc, not - htab_alloc. - * elf-strtab.c (_bfd_elf_strtab_finalize): Likewise. - -2002-06-08 H.J. Lu - - * elf.c (copy_private_bfd_data): Don't cast to bfd_size_type to - work around a long long bug in gcc 2.96 on mips. - -2002-06-08 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add vax1knetbsd.lo. - (BFD32_BACKENDS_CFILES): Add vax1knetbsd.c. - Regenerate dependency lists. - * Makefile.in: Regenerate. - * config.bfd (vax-*-netbsdelf*, vax-*-netbsdaout*): Add - vax1knetbsd_vec to targ_selvecs. - * configure.in: Add vax1knetbsd_vec. - * configure: Regenerate. - * targets.c (_bfd_target_vector): Add vax1knetbsd_vec. - * vax1knetbsd.c: New file. - * vaxnetbsd.c: Update copyright years. - (TARGET_PAGE_SIZE): Set to 0x1000. - (DEFAULT_MID): Set to M_VAX4K_NETBSD. - -2002-06-08 Matt Thomas - - * libaout.h (enum machine_type): Add M_VAX4K_NETBSD. - -2002-06-08 Alan Modra - - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Make static. - -2002-06-08 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * armnetbsd.c: Replace CONST with const. - * corefile.c: Likewise. - * elf32-dlx.c: Likewise. - * elf64-mips.c: Likewise. - * mmo.c: Likewise. - * ns32knetbsd.c: Likewise. - - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Check the hash - table is elf64-sparc. - -2002-06-08 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_relocate_section): Simplify code. - Fix RELA addends to get not shifted in the result. Don't do special - handling of R_MIPS_64 for NewABI. - -2002-06-07 Alan Modra - - * aoutx.h (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. - (NAME(aout,slurp_reloc_table)): Likewise. - * coff-mips.c (mips_relax_section): Use bfd_zalloc. - * coff-rs6000.c (xcoff_write_armap_big): Use bfd_zmalloc. - (xcoff_write_archive_contents_big): Likewise. - (xcoff_generate_rtinit): Likewise. - (xcoff_generate_rtinit): Likewise, and check error return. - * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. - * coffgen.c (coff_section_symbol): Use bfd_zalloc. - (coff_get_normalized_symtab): Likewise. - (coff_make_empty_symbol): Likewise. - (bfd_coff_set_symbol_class): Likewise. - * cofflink.c (coff_link_add_symbols): Likewise. - * ecoff.c (_bfd_ecoff_make_empty_symbol): Likewise. - * ecofflink.c (ecoff_write_shuffle): Use bfd_zmalloc. - (bfd_ecoff_write_accumulated_debug): Likewise. - * elf64-alpha.c (get_got_entry): Use bfd_zalloc. - * i386linux.c (bfd_i386linux_size_dynamic_sections): Likewise. - * i386lynx.c (NAME(lynx,slurp_reloc_table)): Use bfd_zmalloc. - * ieee.c (do_with_relocs): Use bfd_zalloc. - * m68klinux.c (bfd_m68klinux_size_dynamic_sections): Likewise. - * pdp11.c (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. - (NAME(aout,slurp_reloc_table)): Likewise. - (NAME(aout,squirt_out_relocs)): Don't memset when zalloc'd. - * reloc16.c (bfd_coff_reloc16_relax_section): Use bfd_zmalloc. - * som.c (som_build_and_write_symbol_table): Likewise. - (som_slurp_string_table): Likewise. - (som_slurp_symbol_table): Likewise. - (som_bfd_ar_write_symbol_stuff): Likewise. - * sparclinux.c (bfd_sparclinux_size_dynamic_sections): Use bfd_zalloc. - * sunos.c (bfd_sunos_size_dynamic_sections): Likewise. - * tekhex.c (find_chunk): Likewise. Get rid of unused "sname". - * vms-gsd.c (_bfd_vms_slurp_gsd): Use bfd_zmalloc. - * xcofflink.c (xcoff_link_add_symbols): Use bfd_zalloc/bfd_zmalloc. - -2002-06-07 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data ): Replace with - "group" union. - (elf_group_name): Update. - (elf_group_id): Define. - (bfd_elf_set_group_contents): Declare. - * elf.c (elf_fake_sections): Qualify use of elf_group_name. - (set_group_contents): Rename to bfd_elf_set_group_contents. Remove - ATTRIBUTE_UNUSED from failedptrarg. If elf_group_id is set, use - that sym for the signature. - (_bfd_elf_compute_section_file_positions): Don't call - set_group_contents for "ld -r" case. - (swap_out_syms): Use bfd_zalloc. - * elflink.h (elf_link_add_archive_symbols): Likewise. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. - (elf_bfd_final_link): Call bfd_elf_set_group_contents. - -2002-06-07 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Allow unresolved - relocs in opd for non-shared too. - -2002-06-06 Jeffrey Law - - * elf32-h8300.c (elf32_h8_relax_section): Ignore uninteresting - relocations. - -2002-06-06 Nick Clifton - - * merge.c: Include libiberty.h. - * elf-strtab.c: Include libiberty.h. - -2002-06-06 Elias Athanasopoulos - - * peXXigen.c (pe_print_idata): Remove unused variable. - -2002-06-06 David Heine - - * elf.c (assign_file_positions_for_segments): Remove unallocated - sections from the section to segment mapping for PT_LOAD segments. - Update comment about empty loadable segments. - -2002-06-06 Richard Sandiford - - * stabs.c (_bfd_link_section_stabs): Check that the symbol offset - is within the .stabstr section. - -2002-06-06 Alan Modra - - * elf-bfd.h (struct elf_size_info ): Function args - are "const PTR", not "const PTR *". - (bfd_elf32_swap_symbol_in): Likewise. - (bfd_elf64_swap_symbol_in): Likewise. - * elfcode.h (elf_swap_symbol_in): Change input args to const PTR. - (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. - (elf_link_record_local_dynamic_symbol): Likewise. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. - (elf_reloc_symbol_deleted_p): Likewise. - * elf-m10200.c (mn10200_elf_relax_section): Likewise. - (mn10200_elf_relax_delete_bytes): Likewise. - (mn10200_elf_symbol_address_p): Likewise. - (mn10200_elf_get_relocated_section_contents): Likewise. - * elf-m10300.c (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-hppa.c (get_local_syms): Likewise. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf32-sh.c (sh_elf_relax_section): Likewise. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. - * elf64-alpha.c (elf64_alpha_relax_section): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-ppc.c (get_local_syms): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - -2002-06-05 J"orn Rennecke - - * config.bfd (sh64l*-*-elf*, shl*-*-elf*): New configurations. - -2002-06-05 Alan Modra - - * elf.c (group_signature): Swap in the whole symbol, and handle - extracting section symbol names. - (setup_group): Add comment. - (set_group_contents): When called from objcopy or ld, arrange for - section contents to be written. Write group member output section - indices to allow objcopy to reorganize sections. - (_bfd_elf_copy_private_section_data): Copy group info. - - * elf-bfd.h (struct elf_size_info): Add swap_symbol_in field. - (bfd_elf32_swap_symbol_in): Update prototype. - (bfd_elf64_swap_symbol_in): Likewise. - * elfcode.h (elf_swap_symbol_in): Change input args to const PTR *. - (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. - (elf_link_record_local_dynamic_symbol): Likewise. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. - (elf_reloc_symbol_deleted_p): Likewise. - * elf-m10200.c (mn10200_elf_relax_section): Likewise. - (mn10200_elf_relax_delete_bytes): Likewise. - (mn10200_elf_symbol_address_p): Likewise. - (mn10200_elf_get_relocated_section_contents): Likewise. - * elf-m10300.c (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-hppa.c (get_local_syms): Likewise. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf32-sh.c (sh_elf_relax_section): Likewise. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. - * elf64-alpha.c (elf64_alpha_relax_section): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-ppc.c (get_local_syms): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - * elfcode.h (NAME(_bfd_elf,size_info)): Update initialiser. - * elf64-alpha.c (alpha_elf_size_info): Likewise. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-mips.c (mips_elf64_size_info): Likewise. - * elf64-s390.c (s390_elf64_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2002-06-05 Maciej W. Rozycki - - * elf32-mips.c (elf32_mips_ignore_discarded_relocs): Move to... - elfxx-mips.c (_bfd_mips_elf_ignore_discarded_relocs): ... here. - elf64-mips.c (elf_backend_ignore_discarded_relocs): Use - _bfd_mips_elf_ignore_discarded_relocs. - elfxx-mips.h (_bfd_mips_elf_ignore_discarded_relocs): Declare. - -2002-06-05 H.J. Lu - - * elfxx-mips.c (mips_elf_calculate_relocation): Call - _bfd_elf_rel_local_sym for STT_SECTION relocations against - the SEC_MERGE section. - -2002-06-05 Alan Modra - - * coff-alpha.c: Update copyright date. - * coff-mips.c: Likewise. - * xcoff-target.h: Likewise. - - * bfd-in.h: Remove "taken from the source" comment. - * libbfd-in.h: Likewise. - * libcoff-in.h: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - - * elf.c (bfd_elf_discard_group): Return true. - * elf-bfd.h (bfd_elf_discard_group): Declare. - * bfd-in.h (bfd_elf_discard_group): Don't declare here. - * section.c (bfd_discard_group): Rename to bfd_generic_discard_group. - * bfd.c (bfd_discard_group): Define. - * targets.c (struct bfd_target): Add _bfd_discard_group. - (BFD_JUMP_TABLE_LINK): Here too. - * libbfd-in.h (_bfd_nolink_bfd_discard_group): Define. - * aout-adobe.c (aout_32_bfd_discard_group): Define. - * aout-target.h (MY_bfd_discard_group): Define. - * aout-tic30.c (MY_bfd_discard_group): Define. - * binary.c (binary_bfd_discard_group): Define. - * bout.c (b_out_bfd_discard_group): Define. - * coff-alpha.c (_bfd_ecoff_bfd_discard_group): Define. - * coffcode.h (coff_bfd_discard_group): Define. - * coff-mips.c (_bfd_ecoff_bfd_discard_group): Define. - * elfxx-target.h (bfd_elfNN_bfd_discard_group): Define. - * i386msdos.c (msdos_bfd_discard_group): Define. - * i386os9k.c (os9k_bfd_discard_group): Define. - * ieee.c (ieee_bfd_discard_group): Define. - * ihex.c (ihex_bfd_discard_group): Define. - * mmo.c (mmo_bfd_discard_group): Define. - * nlm-target.h (nlm_bfd_discard_group): Define. - * oasys.c (oasys_bfd_discard_group): Define. - * ppcboot.c (ppcboot_bfd_discard_group): Define. - * som.c (som_bfd_discard_group): Define. - * srec.c (srec_bfd_discard_group): Define. - * tekhex.c (tekhex_bfd_discard_group): Define. - * versados.c (versados_bfd_discard_group): Define. - * vms.c (vms_bfd_discard_group): Define. - * xcoff-target.h (_bfd_xcoff_bfd_discard_group): Define. - * coff64-rs6000.c (rs6000coff64_vec): Update initialiser. - (aix5coff64_vec): Likewise. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Likewise. - -2002-06-04 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-com.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64-com.c. - (elf32-sh64-com.lo): New dependency list. - * Makefile.in: Regenerate. - * configure.in (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec) - (bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec): Add - elf32-sh64-com.lo. - * configure: Regenerate. - * elf32-sh64.c (sh64_address_in_cranges) - (sh64_get_contents_type, sh64_address_is_shmedia): Move to... - (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb): - (crange_bsearch_cmpl): Prepend _bfd_sh64_ to name and move to... - * elf32-sh64-com.c: ...here. New file. - -2002-06-04 Alan Modra - - * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Remove - ATTRIBUTE_UNUSED on used params. - * elf32-vax.c (elf_vax_gc_mark_hook): Remove unnecessary checks - before calling bfd_section_from_elf_index on local syms. - * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. - -2002-06-04 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c. - (BFD64_BACKENDS): Add elf64-sh64-nbsd.lo. - (BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c. - (elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules. - * Makefile.in: Regenerate. - * config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*) - (sh64-*-netbsd*): New targets. - * configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec, - bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec. - * configure: Regenerate. - * elf32-sh64-nbsd.c: New file. - * elf64-sh64-nbsd.c: New file. - * targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec, - bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and - bfd_elf64_sh64lnbsd_vec. - -2002-06-04 Alan Modra - - * elf.c (setup_group): Set SEC_LINK_ONCE on GRP_COMDAT groups. - (bfd_section_from_shdr): Likewise. Set section name of group - sections from signature. - (group_signature): Split out from setup_group. Ensure symbol table - is available. - (bfd_elf_discard_group): New function. - (_bfd_elf_make_section_from_shdr): Don't set SEC_LINK_ONCE on - .gnu.linkonce* sections if they are members of a group. - (set_group_contents): Set GRP_COMDAT flag. - * section.c (bfd_discard_group): New function. - * bfd-in.h (bfd_elf_discard_group): Declare. - * bfd-in2.h: Regenerate. - * elf-bfd.h (struct bfd_elf_section_data): Add linkonce_p field. - (elf_linkonce_p): Define. - -2002-06-04 Alan Modra - - * elf.c (bfd_section_from_shdr): Make "name" const. - * elf-bfd.h (elf_backend_section_from_shdr): Likewise. - * elf32-i370.c (i370_elf_section_from_shdr): Likewise. - * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise. - * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise. - * elf32-v850.c (v850_elf_section_from_shdr): Likewise. - * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise. - * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. - * elf64-ppc.c (ppc64_elf_section_from_shdr): Likewise. - * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. - * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise. - * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise. - -2002-06-03 Maciej W. Rozycki - - * elfxx-mips.c (ABI_64_P): Use backend's data to determine the - ABI. - -2002-06-02 Kazu Hirata - - * elf32-arc.c: Fix formatting. - * elf32-arm.h: Likewise. - * elf32-cris.c: Likewise. - * elf32-dlx.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i386qnx.c: Likewise. - * elf32-or32.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-vax.c: Likewise. - * elf32-xstormy16.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-x86-64.c: Likewise. - -2002-06-02 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Don't dereference - null when there are no got entries for a symbol. - (elf64_alpha_relax_find_tls_segment): Rearrange to avoid - uninitialized variable warning. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): Don't test for - undefined symbols here. - (elf64_alpha_relax_section): Do it here. Also test for not - defined in the current module. - (elf64_alpha_relocate_section_r): Split out of ... - (elf64_alpha_relocate_section): ... here. Don't dereference - NULL when looking up local got entries. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): Reject undefined - symbols from JSR relaxation. - (elf64_alpha_size_plt_section_1): New. - (elf64_alpha_calc_dynrel_sizes): Split out .rela.got bits ... - (elf64_alpha_size_rela_got_1): ... here. - (elf64_alpha_size_dynamic_sections): Split out .rela.got bits ... - (elf64_alpha_size_rela_got_section): ... here. - (elf64_alpha_size_plt_section): New. - (elf64_alpha_relax_section): Call them. - (elf64_alpha_size_got_sections): Remove output_bfd arg. - (elf64_alpha_finish_dynamic_symbol): Check gotent use_count. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (alpha_get_dtprel_base, alpha_get_tprel_base): New. - (elf64_alpha_relocate_section): Use them. Reject LE TLS relocs - in shared libraries. Fix DTPRELHI and TPRELHI value. - (INSN_ADDQ, INSN_RDUNIQ): New. - (struct alpha_relax_info): Add symtab_hdr, tls_segment, first_gotent. - (elf64_alpha_relax_with_lituse): Return boolean. Remove irelend - argument. Reject dynamic symbols. Use LITUSE symbolic constants. - (elf64_alpha_relax_got_load): Rename from relax_without_lituse. - Handle GOTDTPREL and GOTTPREL relocations. - (elf64_alpha_relax_gprelhilo): New. - (elf64_alpha_relax_tls_get_addr): New. - (elf64_alpha_relax_find_tls_segment): New. - (elf64_alpha_relax_section): Handle TLS relocations. - (ALPHA_ELF_LINK_HASH_TLS_IE): New. - (elf64_alpha_check_relocs): Set it. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_section): Don't store computed gp. - - * elf64-alpha.c (elf64_alpha_check_relocs): Fix typo on maybe_dynamic - check; don't suppress dynamic relocs for non-allocated sections. - - * elf64-alpha.c: Remove dead code. - -2002-05-31 Alan Modra - - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Don't allocate - space for bss .plt. - -2002-05-31 Graeme Peterson - - * Makefile.am (BFD32_BACKENDS): Add elf32-i386qnx.lo. - (BFD32_BACKENDS_CFILES): Add elf32-i386qnx.c. - Run "make dep-am". - * Makefile.in: Regenerate. - * config.bfd: Add i[3456]86-*-nto-qnx* support. - * configure.in: Add bfd_elf32_i386qnx_vec support. - * configure: Regenerate. - * elf-bfd.h (struct elf_backend_data): Add set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf.c (assign_file_positions_for_segments): Call backend - set_nonloadable_filepos. Fix non-K&R call to _bfd_error_handler. - (IS_CONTAINED_BY_FILEPOS): Define. - (INCLUDE_SECTION_IN_SEGMENT): Also test IS_CONTAINED_BY_FILEPOS. - (copy_private_bfd_data): Use IS_CONTAINED_BY_FILEPOS. Typo fix. - Fix non-K&R call to _bfd_error_handler. - (_bfd_elf_copy_private_section_data): Use backend - copy_private_bfd_data_p. - * elf32-i386.c: Don't include elfxx-target.h when - ELF32_I386_C_INCLUDED is defined. - * elf32-i386qnx.c: New QNX elf backend file. - * elfxx-target.h: Add elf_backend_set_nonloadable_filepos, - elf_backend_is_contained_by_filepos, and - elf_backend_do_copy_private_bfd_data. - * targets.c: Add bfd_target bfd_elf32_i386qnx_vec. - -2002-05-31 Alan Modra - - * elfarm-oabi.c (bfd_elf32_arm_add_glue_sections_to_bfd): Define. - Move other similar defines to start of file. - -2002-05-30 Tom Rix - - * coff-rs6000.c (xcoff_rtype2howto): Handle 16 bit R_RBA. - * coff64-rs6000.c (xcoff64_rtype2howto): Same. - -2002-05-30 Richard Henderson - - * elf64-alpha.c (ALPHA_ELF_LINK_HASH_LU_TLSGD, - ALPHA_ELF_LINK_HASH_LU_TLSLDM, ALPHA_ELF_LINK_HASH_LU_FUNC): New. - (ALPHA_ELF_GOT_ENTRY_RELOCS_DONE): Remove. - (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Remove. - (struct alpha_elf_got_entry): Add reloc_type, reloc_done, reloc_xlated. - (struct alpha_elf_obj_tdata): Rename total_got_entries and - n_local_got_entries to total_got_size and local_got_size. - (elf64_alpha_howto, elf64_alpha_reloc_map): Update for TLS relocs. - (alpha_got_entry_size): New. - (elf64_alpha_relax_with_lituse): Use it. - (elf64_alpha_relax_without_lituse): Likewise. - (MAX_GOT_SIZE): Rename from MAX_GOT_ENTRIES. - (get_got_entry): New. - (elf64_alpha_check_relocs): Handle TLS relocs. Reorganize. - (elf64_alpha_adjust_dynamic_symbol): Test LU_FUNC as a mask. - (elf64_alpha_merge_ind_symbols): Check gotent->reloc_type. - (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots): Likewise. - (elf64_alpha_calc_got_offsets_for_symbol): Use alpha_got_entry_size. - (elf64_alpha_calc_got_offsets): Likewise. - (alpha_dynamic_entries_for_reloc): New. - (elf64_alpha_calc_dynrel_sizes): Use it. - (elf64_alpha_size_dynamic_sections): Likewise. - (elf64_alpha_relocate_section): Handle TLS relocations. - * reloc.c: Add Alpha TLS relocations. - * bfd-in2.h, libbfd.h: Rebuild. - -2002-05-29 Ralf Habacker - - * peXXigen.c (pe_print_idata): Remove double printed - import table lines; add Bound-To comment. - -2002-05-29 Matt Thomas - - * Makefile.am (BFD32_BACKENDS): Add elf32-vax.lo. - (BFD32_BACKENDS_CFILES): Add elf32-vax.c. - (elf32-vax.lo): New rule. - * Makefile.in: Regenerate. - * configure.in (bfd_elf32_vax_vec) - (vaxnetbsd_vec): New vectors. - * configure: Regenerate. - * config.bfd (vax-*-netbsdelf*) - (vax-*-netbsdaout*) - (vax-*-netbsd*): New targets. - * elf32-vax.c: New file. - * reloc.c: Add VAX relocations. - * bfd-in2.h: Regenerate. - * targets.c (_bfd_target_vector): Add bfd_elf32_vax_vec. - -2002-05-29 Jason Thorpe - - * config.bfd (arm-*-netbsd*): Add bfd_elf32_littlearm_vec - and bfd_elf32_bigarm_vec to targ_selvecs. - -2002-05-29 Ralf Habacker - - * peXXigen.c (pe_print_idata): Fix seg faults on printing import tables - with auto-imported symbols. - -2002-05-29 Adam Nemet - - * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Don't add glue - sections only record bfd. - (bfd_elf32_arm_add_glue_sections_to_bfd): New function. - * bfd-in.h (bfd_elf32_arm_add_glue_sections_to_bfd): Declare it. - * bfd-in2.h: Regenerate. - -2002-05-28 Nick Clifton - - * syms.c (_bfd_stab_section_find_nearest_line): Move - declaration and initialisation of saw_line and saw_func out of - for loop. - -2002-05-29 Alan Modra - - * elf64-ppc.c (ppc64_elf_get_symbol_info): New function. - (bfd_elf64_get_symbol_info): Define. - * elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef. - -2002-05-29 Andrey Volkov - - * cpu-h8300.c: Make default h8300 machine first in machine list. - -2002-05-28 Kuang Hwa Lin - - * config.bfd: Added DLX configuraton. - * Makefile.am: Added DLX configuraton. - * configure.in: Added DLX configuraton. - * archures.c: Add DLX architecture. - * reloc.c: Add DLX relocs. - * targets.c: Added DLX target vector. - * configure: Regenerate. - * Makefile.in: Regenreate. - * bfd-in2.h: Regenreate. - * elf32-dlx.c: New file: Support DLX target. - * cpu-dlx.c: New file: Support DLX target. - -2002-05-25 Alan Modra - - * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Formatting. - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Revert last change. - (ppc64_elf_check_relocs): Don't set up function descriptor symbol - strings to point inside function code sym string. - (func_desc_adjust): Likewise. - (ppc64_elf_hide_symbol): Rewrite code to look up function code sym. - -2002-05-24 Michal Ludvig - - * elf64-x86-64.c (elf64_x86_64_grok_prstatus): Added. - (elf64_x86_64_grok_psinfo): Added. - -2002-05-24 TAMURA Kent - - * config.bfd: Add a target for i386-netbsdpe. - -2002-05-24 Alan Modra - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy is_func - and is_func_descriptor. - (func_desc_adjust): Hide function code sym in shared libs unless - there is a matching exported function descriptor sym. - -2002-05-23 Jakub Jelinek - - * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL - for symbols from SHF_TLS section. - (_bfd_elf_print_private_bfd_data): Add PT_TLS. - (elf_fake_sections): Set SHF_TLS for SEC_THREAD_LOCAL sections. - (map_sections_to_segments): Build PT_TLS segment if necessary. - (assign_file_positions_for_segments): Likewise. - (get_program_header_size): Account for PT_TLS segment. - (swap_out_syms): Set type of BSF_THREAD_LOCAL symbols and symbols from - SEC_THREAD_LOCAL sections to STT_TLS. - * reloc.c: Add 386 and IA-64 TLS relocs. - * section.c (SEC_THREAD_LOCAL): Define. - (SEC_CONSTRUCTOR_TEXT, SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS): - Remove. - * elflink.h (elf_link_add_object_symbols): Support .tcommon. - (size_dynamic_sections): If DF_STATIC_TLS, set DF_FLAGS - unconditionally. - (struct elf_final_link_info): Add first_tls_sec. - (elf_bfd_final_link): Set first_tls_sec. - Compute elf_hash_table (info)->tls_segment. - (elf_link_output_extsym): Handle STT_TLS symbols. - (elf_link_input_bfd): Likewise. - * syms.c (BSF_THREAD_LOCAL): Define. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - * elf32-i386.c (elf_i386_tls_transition, dtpoff_base, tpoff, - elf_i386_mkobject, elf_i386_object_p): New functions. - (elf_howto_table): Add TLS relocs. - (elf_i386_reloc_type_lookup): Support TLS relocs. - (elf_i386_info_to_howto_rel): Likewise. - (struct elf_i386_link_hash_entry): Add tls_type. - (struct elf_i386_obj_tdata): New. - (elf_i386_hash_entry, elf_i386_tdata, elf_i386_local_got_tls_type): - New macros. - (struct elf_i386_link_hash_table): Add tls_ldm_got. - (link_hash_newfunc): Clear tls_type. - (elf_i386_check_relocs): Support TLS relocs. - (elf_i386_gc_sweep_hook): Likewise. - (allocate_dynrelocs): Likewise. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject, elf_backend_object_p): Define. - * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add tprel_offset, - dtpmod_offset, dtprel_offset, tprel_done, dtpmod_done, dtprel_done, - want_tprel, want_dtpmod, want_dtprel. - (elfNN_ia64_tprel_base, elfNN_ia64_dtprel_base): New functions. - (ia64_howto_table): Add TLS relocs, rename R_IA64_LTOFF_TP22 to - R_IA64_LTOFF_TPREL22. - (elf_code_to_howto_index): Add TLS relocs. - (elfNN_ia64_check_relocs): Support TLS relocs. - (allocate_global_data_got): Account for TLS .got data. - (allocate_dynrel_entries): Account for TLS dynamic relocations. - (elfNN_ia64_install_value): Supprt TLS relocs. - (set_got_entry): Support TLS relocs. - (elfNN_ia64_relocate_section): Likewise. - -2002-05-23 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): For the Thumb - BLX reloc round the relocation up rather than down. - * coff-arm.c (coff_arm_relocate_section): Likewise. - -2002-05-21 H.J. Lu (hjl@gnu.org) - - * linker.c (_bfd_generic_link_add_one_symbol): Allow multiple - definition. - -2002-05-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_stubs): Don't strip .branch_lt. - (ppc64_elf_relocate_section): Handle unresolved relocs in opd. - -2002-05-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Return false for - unresolved relocs. - (ppc64_elf_size_dynamic_sections): Check for splt NULL. - -2002-05-21 Thiemo Seufer - - * bfd.c (bfd_get_arch_size): Remove bfd_set_error call for - non-ELF targets. - -2002-05-21 Thiemo Seufer - - * elf-bfd.h (elf_backend_emit_relocs): Change prototype to return - an error value. - * elflink.h (elf_link_output_relocs): Likewise. Improve error message. - return with false on error. - (elf_link_input_bfd): Check reloc_emitter return value. - -2002-05-21 Jason Thorpe - - * config.bfd (armeb-*-netbsdelf*): New target. - -2002-05-20 Alan Modra - - * elf64-ppc.c (ppc_build_one_stub): Point undefined function syms - at the plt call stub. - -2002-05-19 Thiemo Seufer - - * cpu-mips.c (mips_compatible): Don't try to check machine - compatibility. - -2002-05-18 Tom Rix - - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_out): Fix C_FILE auxent. - -2002-05-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_info_to_howto): Formatting. - (ppc64_elf_relocate_section): Don't warn about reloc overflow when - we've already warned about an undefined symbol. Report more - detail on reloc errors. - -2002-05-17 Alan Modra - - * acinclude.m4 (AM_INSTALL_LIBBFD): New. - * configure.in: Invoke AM_INSTALL_LIBBFD. - * Makefile.am (install-data-local): Revert 2002-05-13. Move to.. - (install_libbfd): .. New target. - (uninstall_libbfd): Likewise. - (install-bfdlibLTLIBRARIES): Likewise. - (uninstall-bfdlibLTLIBRARIES): Likewise. - (bfdlibdir): New. - (bfdincludedir): New. - (lib_LTLIBRARIES): Rename to bfdlib_LTLIBRARIES. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * Makefile.in: Regenerate. - -2002-05-17 Stuart Balfour - - * hash.c (bfd_hash_lookup): Remove computation of len from inside - hash loop. - -2002-05-16 Nick Clifton - - * config.bfd: Add targets for sh64-linux (little endian and - big endian). - -2002-05-15 Laurent Pinchart - - * peXXigen.c (pe_print_idata): Do not assume that the first thunk - is located in the same section as the import table. Instead - check, and if necessary load the section containing the thunk. - -2002-05-15 Nick Clifton - - * aix5ppc-core.c (xcoff64_core_p): Replace bfd_read with - bfd_bread. - (xcoff64_core_file_matches_executable_p): Replace bfd_read - with bfd_bread. - -2002-05-15 Alan Modra - - * aix5ppc-core.c: Warning fixes. - * aout-adobe.c (aout_32_bfd_link_just_syms): Define. - * aout-target.h (MY_bfd_link_just_syms): Define. - * aout-tic30.c (MY_bfd_link_just_syms): Define. - * bfd.c (bfd_link_just_syms): Define. - * binary.c (binary_bfd_link_just_syms): Define. - * bout.c (b_out_bfd_link_just_syms): Define. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update initializer. - * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise. - * coffcode.h (coff_bfd_link_just_syms): Define. - * elf-bfd.h (enum elf_link_info_type): Add ELF_INFO_TYPE_JUST_SYMS. - (elf_discarded_section): Check for ELF_INFO_TYPE_JUST_SYMS. - (_bfd_elf_link_just_syms): Declare. - * elf.c (_bfd_elf_link_just_syms): New function. - * elf-eh-frame.c (_bfd_elf_maybe_strip_eh_frame_hdr): Check that - sections haven't already been discarded by the linker. - * elflink.h (elf_link_add_object_symbols): Likewise for stab - sections and SEC_MERGE sections. - (elf_bfd_discard_info): Similarly here. - * elfxx-target.h (bfd_elfNN_bfd_link_just_syms): Define. - * i386msdos.c (msdos_bfd_link_just_syms): Define. - * i386os9k.c (os9k_bfd_link_just_syms): Define. - * ieee.c (ieee_bfd_link_just_syms): Define. - * ihex.c (ihex_bfd_link_just_syms): Define. - * libbfd-in.h (_bfd_nolink_bfd_link_just_syms): Define. - (_bfd_generic_link_just_syms): Declare. - * libecoff.h (_bfd_ecoff_bfd_link_just_syms): Define. - * linker.c (_bfd_generic_link_just_syms): New function. - * mmo.c (mmo_bfd_link_just_syms): Define. - * nlm-target.h (nlm_bfd_link_just_syms): Define. - * oasys.c (oasys_bfd_link_just_syms): Define. - * ppcboot.c (ppcboot_bfd_link_just_syms): Define. - * som.c (som_bfd_link_just_syms): Define. - * srec.c (srec_bfd_link_just_syms): Define. - * targets.c (struct bfd_target): Add _bfd_link_just_syms. - (BFD_JUMP_TABLE_LINK): And here. - * tekhex.c (tekhex_bfd_link_just_syms): Define. - * versados.c (versados_bfd_link_just_syms): Define. - * vms.c (vms_bfd_link_just_syms): Define. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2002-05-15 Thiemo Seufer - - * elf32-mips.c: Remove superfluous definitions copied from - elfxx-mips.c. - (bfd_elf32_bigmips_vec,bfd_elf32_littlemips_vec): Use the - SGIish vectors to check the special case. - (mips_elf_hi16_reloc): Fix comment. - (mips_elf_got16_reloc): Likewise. - (_bfd_mips_elf32_gprel16_reloc): Likewise. - (elf_reloc_map): Code cleanup. - (mips_reloc_map): Add comment. - (bfd_elf23_bfd_reloc_type_lookup): Code cleanup. - (mips_elf32_rtype_to_howto): Likewise. - (mips_elf32_discard_info): Likewise. - (elf32_mips_irix_compat): Invert logic: Only SGIish vectors - lead to IRIX compatibility now. - -2002-05-15 Thiemo Seufer - - * elfxx-mips.c: Call it IRIX, not Irix in comments. - -2002-05-13 Jason Thorpe - - * config.bfd (shle-*-netbsdelf*): Add target which includes - sh64 support. - -2002-05-13 David Edelsohn - - * configure.in: Revert 2002-04-07. Instead, auto-configure - HAVE_ST_C_IMPL. - * configure: Regenerate. - * config.in: Regenerate. - * rs6000-core.c (CNEW_IMPL): Guard use of c_impl with HAVE_ST_C_IMPL - or AIX_5_CORE. - -2002-05-11 Federico G. Schwindt - - * configure.in (sparc*-*-openbsd*): Support sparc64-openbsd - corefiles as well.2 - * configure: Regenerate. - -2002-05-13 Alan Modra - - * Makefile.am (install-data-local): Install headers to - $(exec_prefix)/include. - * Makefile.in: Regenerate. - -2002-05-11 Ralf Corsepius - Daniel Jacobowitz - - * coff-sh.c (sh_reloc_map): Map to R_SH_IMM32 for non-PE. Don't - map BFD_RELOC_RVA. - -2002-05-11 Federico G. Schwindt - - * config.bfd (alpha*-*-openbsd*, sparc64*-*-openbsd*, - hppa*-*-openbsd*): New targets. - * configure.in (alpha*-*-openbsd*): Set COREFILE. - * configure: Regenerate. - -2002-05-10 Tom Rix - - * coff64-rs6000.c (xcoff64_reloc_type_br): New function for - xcoff64_ppc_relocate_section. - * coff-rs6000.c : Extern common xcoff_reloc_type functions. - * libxcoff.h: Common xcoff_reloc_type function declaration. - -2002-05-10 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Remove overflow checks - added in 2002-05-09 commit. - - * elf32-hppa.c (elf32_hppa_size_stubs): Revert part of 2002-05-04, - don't look for stubs on all undefined syms. - -2002-05-09 Alan Modra - - * elf64-ppc.c (RA_REGISTER_MASK, RA_REGISTER_SHIFT): Delete. - (ppc64_elf_howto_raw ): Not pc_relative or - pcrel_offset. - - * elf32-i386.c (elf_howto_table): Comments. - (elf_i386_relocate_section): Handle more relocs for relocatable - linking and against SEC_MERGE sections. - -2002-05-08 Alan Modra - - * elf32-ppc.c (ppc_elf_create_got): New function. - (ppc_elf_create_dynamic_sections): Call ppc_elf_create_got before - _bfd_elf_create_dynamic_sections. Correct .plt flags. - (ppc_elf_check_relocs): Use ppc_elf_create_got in place of - _bfd_elf_create_got_section. - -2002-05-07 Alan Modra - - * elf-bfd.h (struct elf_backend_data): Add rela_normal. - * elfxx-target.h (elf_backend_rela_normal): Define. - (elfNN_bed): Init rela_normal. - * elflink.h (elf_link_input_bfd ): Handle adjustment - for section symbols here if rela_normal. Simplify abs section test. - * elf-m10200.c (mn10200_elf_relocate_section): If relocatable, - return immediately. Remove code handling relocatable linking. - * elf-m10300.c (mn10300_elf_relocate_section): Likewise. - * elf32-fr30.c (fr30_elf_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-i860.c (elf32_i860_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mcore.c (mcore_elf_relocate_section): Likewise. - * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elf32-arm.h (elf32_arm_relocate_section): Likewise #ifndef USE_REL. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf-m10200.c (elf_backend_rela_normal): Define. - * elf-m10300.c (elf_backend_rela_normal): Define. - * elf32-fr30.c (elf_backend_rela_normal): Define. - * elf32-i370.c (elf_backend_rela_normal): Define. - * elf32-i860.c (elf_backend_rela_normal): Define. - * elf32-m68k.c (elf_backend_rela_normal): Define. - * elf32-mcore.c (elf_backend_rela_normal): Define. - * elf32-openrisc.c (elf_backend_rela_normal): Define. - * elf32-ppc.c (elf_backend_rela_normal): Define. - * elf32-s390.c (elf_backend_rela_normal): Define. - * elf32-xstormy16.c (elf_backend_rela_normal): Define. - * elf64-ppc.c (elf_backend_rela_normal): Define. - * elf64-s390.c (elf_backend_rela_normal): Define. - * elf64-x86-64.c (elf_backend_rela_normal): Define. - * elfxx-ia64.c (elf_backend_rela_normal): Define. - * elf32-arm.h (elf_backend_rela_normal): Define #ifndef USE_REL. - * elf32-m32r.c (elf_backend_rela_normal): Likewise. - -2002-05-06 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Convert - 'reloc_signed_max' and 'reloc_signed_min' into half-word offsets. - -2002-05-06 Alan Modra - - * elflink.h (elf_link_input_bfd ): Adjust r_offset - when not relocatable. Fix reloc_emitter call for K&R. - -2002-05-04 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Reinstate code - reloading local sym addend mistakenly removed in 2002-05-01 change. - - * dwarf2.c (struct line_head): Make prologue_length a bfd_vma. - (read_abbrevs): Change "offset" param to bfd_vma. - (parse_comp_unit): Change "version" and addr_size to unsigned ints. - Change "abbrev_offset" to bfd_vma. - (read_indirect_string): Use correct conversion chars in error - message format string, cast bfd_vma's to unsigned long. - (read_abbrevs): Likewise. - (read_attribute_value): Likewise. - (decode_line_info): Likewise. - (scan_unit_for_functions): Likewise. - (parse_comp_unit): Likewise. - -2002-05-04 Tom Rix - - * coffswap.h (coff_swap_reloc_in): Remove XCOFF support. - (coff_swap_reloc_out): Same. - * coff-rs6000.c: (xcoff_swap_reloc_in): Moved from coffswap.h. - (xcoff_swap_reloc_out): Same. - (xcoff_rtype2howto): Renamed from _bfd_xcoff_rtype2howto. Special - case some 16 bit relocs. Add reloc value to output. - (xcoff_howto_table): Remove 64 bit R_POS, add 16 bit - R_RBR. Improve names. - (_bfd_xcoff_reloc_type_lookup): Adjust for removal of 64 bit R_POS. - (bfd_xcoff_backend_data): Update with new reloc swap names. - (bfd_pmac_xcoff_backend_data) : Same. - * coff64-rs6000.c: (xcoff64_swap_reloc_in): Moved from coffswap.h. - (xcoff64_swap_reloc_out): Same. - (xcoff64_rtype2howto): Special case some 16 bit relocs and 32 bit - R_POS. Add reloc value to output. - (xcoff64_howto_table): Move 64 bit R_POS to first entry. Add 16 - bit R_RBR. Improve names, masks. - (xcoff64_reloc_type_lookup): Adjust for move of 64 bit R_POS. - (bfd_xcoff_backend_data): Update with new reloc swap names. - (bfd_xcoff_aix5_backend_data) : Same. - -2002-05-04 Alan Modra - - * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add - bfd_count top_index, input_list, all_local_syms. - (elf32_hppa_setup_section_lists): New function, split from - elf32_hppa_size_stubs. - (elf32_hppa_next_input_section): Likewise. - (group_sections): Likewise. - (get_local_syms): Likewise. - (elf32_hppa_size_stubs): Adjust for split out functions. Look for - stubs on undefined syms too. - (elf32_hppa_set_gp): Use bfd_link_hash* instead of elf_link_hash*. - Only access htab elf fields when we have an elf hash table. - * elf32-hppa.h (elf32_hppa_setup_section_lists): Declare. - (elf32_hppa_next_input_section): Declare. - -2002-05-04 Bob Byrnes - - * opncls.c (_bfd_new_bfd_contained_in): Check return value of - _bfd_new_bfd. - -2002-05-03 H.J. Lu (hjl@gnu.org) - - * elfxx-mips.c (mips_elf_link_hash_entry): Add forced_local. - (mips_elf_link_hash_newfunc): Initialize forced_local to false. - (mips_elf_record_global_got_symbol): Call _bfd_mips_elf_hide_symbol - to hide a global symbol. - (_bfd_mips_elf_hide_symbol): Return if forced_local is true. Set - forced_local to true. - -2002-05-02 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Force relative relocs - vs SHN_UNDEF to zero. - -2002-05-02 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw ): Change to a - 16 bit reloc. - : Likewise. - (ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to - SECTOFF reloc. - * elf32-ppc.c (ppc_elf_howto_raw ): Correct. - (ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to - SECTOFF reloc. - - * elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete. - (ppc64_elf_ha_reloc): New function. - (ppc64_elf_brtaken_reloc): New function. - (ppc64_elf_sectoff_reloc): New function. - (ppc64_elf_sectoff_ha_reloc): New function. - (ppc64_elf_toc_reloc): New function. - (ppc64_elf_toc_ha_reloc): New function. - (ppc64_elf_toc64_reloc): New function. - (ppc64_elf_unhandled_reloc): New function. - (ppc64_elf_howto_raw): Use the above. - : Mark pc_relative, pcrel_offset. - : Not pc_relative or pcrel_offset. Fix dst_mask. - : Likewise. - (IS_ABSOLUTE_RELOC): Update. - (struct ppc_link_hash_table): Add have_undefweak. - (ppc64_elf_link_hash_table_create): Init. - (func_desc_adjust): Set have_undefweak. - (ppc64_elf_func_desc_adjust): Call func_desc_adjust earlier. Only - add the .sfpr blr when have_undefweak. - (ppc64_elf_setup_section_lists): Check hash table flavour. - (ppc64_elf_next_input_section): Move output_section->owner test to - ppc64elf.em. - (ppc64_elf_set_toc): Rename to ppc64_elf_toc, remove info param - and relocatable test. Return TOCstart and don't set elf_gp. - (ppc64_elf_relocate_section): Correct BRTAKEN/BRNTAKEN branch - offset calculation. Add assert on weak sym branch tweaks. - * elf64-ppc.h (ppc64_elf_set_toc): Delete. - (ppc64_elf_toc): Declare. - (ppc64_elf_next_input_section): Update. - -2002-05-01 Alan Modra - - * syms.c (_bfd_stab_section_find_nearest_line): Don't bomb on NULL - file_name. - -2002-05-01 Alan Modra - - * elf64-ppc.c (CROR_151515, CROR_313131): Define. - (ppc64_elf_relocate_section): Use them. Don't look for plt calls - on R_PPC64_ADDR24 relocs. Require a nop or no link reg on plt - call branches. Correct undefined weak destination. - (ppc64_elf_func_desc_adjust): Always create at least one blr in - .sfpr, and correct case where either only savef* or restf* is - needed. - - Long branch stubs, multiple stub sections. - * elf64-ppc.h (ppc64_elf_setup_section_lists): Declare. - (ppc64_elf_next_input_section): Declare. - * elf64-ppc.c: Move linker-only prototypes. - (STUB_SUFFIX): Define. - (enum ppc_stub_type): New. - (struct ppc_stub_hash_entry): New. - (struct ppc_branch_hash_entry): New. - (struct ppc_link_hash_entry): Add stub_cache, oh. - (struct ppc_link_hash_table): Add stub_hash_table etc. Remove - sstub. Add sbrlt, srelbrlt, has_14bit_branch, stub_iteration. - Rename plt_overflow to stub_error. - (ppc_stub_hash_lookup): Define. - (ppc_branch_hash_lookup): Define. - (stub_hash_newfunc): New function. - (branch_hash_newfunc): New function. - (link_hash_newfunc): Init new fields. - (ppc64_elf_link_hash_table_create): Likewise. - (ppc64_elf_link_hash_table_free): New function. - (ppc_stub_name): New function. - (ppc_get_stub_entry): New function. - (ppc_add_stub): New function. - (create_linkage_sections): Use bfd_make_section_anyway. Create - .branch_lt and .rela.branch_lt sections. Don't create .stub. - (ppc64_elf_check_relocs): Set has_14bit_branch on R_PPC64_REL14*, - and set up for plt call stubs. Link func and func desc syms. - (ppc64_elf_gc_sweep_hook): Handle REL14* as per REL24. - (func_desc_adjust): Avoid hash lookup when func desc sym available - via shortcut, and set links when processing. - (ppc64_elf_hide_symbol): Likewise. - (allocate_dynrelocs): Don't allocate stub section here. - (ppc64_elf_size_dynamic_sections): Handle sbrlt and srelbrlt. - Remove sstub code. - (ppc_type_of_stub): New function. - (build_one_stub): Delete. - (ppc_build_one_stub): New function. - (ppc_size_one_stub): New function. - (ppc64_elf_setup_section_lists): New function. - (ppc64_elf_next_input_section): New function. - (group_sections): New function. - (get_local_syms): New function. - (ppc64_elf_size_stubs): Rewrite. - (ppc64_elf_build_stubs): Rewrite. - (ppc64_elf_relocate_section): Look up stub entry for REL24 - relocs. Don't propagate REL14* to dynamic objects. Look for long - branch stubs if REL14* or REL24 relocs won't reach. - (bfd_elf64_bfd_link_hash_table_free): Define. - -2002-04-30 Mark Mitchell - - * config.bfd: Add support for powerpc-*-windiss. - -2002-04-30 Tom Rix - - * xcofflink.c (xcoff_link_add_symbols): Always copy undef C_EXT - symbol names into the hash table. - -2002-04-28 Tom Rix - - * coff-rs6000.c (xcoff_calculate_relocation) : Function table for - calulating relocations. - (xcoff_complain_overflow) : Function table for relocation errors. - (xcoff_ppc_relocate_section): Use relocation and complain function - tables. - (xcoff_complain_overflow_unsigned_func): New complain function. - (xcoff_complain_overflow_signed_func): Same. - (xcoff_complain_overflow_bitfield_func): Same. - (xcoff_complain_overflow_dont_func): Same. - (xcoff_reloc_type_crel): New recot function. - (xcoff_reloc_type_br): Same. - (xcoff_reloc_type_ba): Same. - (xcoff_reloc_type_toc): Same. - (xcoff_reloc_type_rel): Same. - (xcoff_reloc_type_neg): Same. - (xcoff_reloc_type_pos): Same. - (xcoff_reloc_type_fail): Same. - (xcoff_reloc_type_noop): Same. - * libxcoff.h : Declare common parts for xcoff64. - * coff64-rs6000.c (xcoff64_ppc_relocate_section): Use relocation - and complain function tables. - -2002-04-28 Alan Modra - - * elf64-x86-64.c (struct elf64_x86_64_dyn_relocs): Comment typo. - * elf32-hppa.c (elf32_hppa_final_link): Formatting. - -2002-04-26 Alan Modra - - * opncls.c (bfd_make_readable): Call bfd_section_list_clear. - * xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise. - - * elflink.h (elf_bfd_final_link): Ensure input bfd class is the - same as the output before calling elf_link_input_bfd. - - * coffcode.h (coff_compute_section_file_positions): Set - section_tail after shuffling section list. - -2002-04-24 Christian Groessler - - * coff-z8k.c (extra_case): Fix R_IMM32 relocations: The - addresses are 23bit with a special layout, not plain 32bit - values. Prevent relocation of immediate values. - -2002-04-24 Chris G. Demetriou - - * elfxx-mips.c (_bfd_mips_elf_print_private_bfd_data): If MDMX or - MIPS-16 ASE flags are set, print something to indicate that. - -2002-04-23 Alan Modra - - * elf32-hppa.c (hppa_type_of_stub): Correct and simplify condition - under which a plt call stub is used. - (final_link_relocate): Similarly. - (allocate_plt_static): Clear h-plabel except when plt entry is - exclusively used for a plabel. - (allocate_dynrelocs): Use the above to simplify plt sizing. - (struct elf32_hppa_link_hash_table): Add has_22bit_branch. - (elf32_hppa_link_hash_table_create): Init. - (BL22_RP): Define. - (hppa_build_one_stub): Use BL22_RP if has_22bit_branch. - (elf32_hppa_check_relocs): Set has_22bit_branch. - - * elf32-hppa.c (elf32_hppa_check_relocs): Remove debug message. - (final_link_relocate): Likewise. - -2002-04-22 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build - search table if some FDE is DW_EH_PE_aligned encoded either. - (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially. - -2002-04-22 Richard Smith - Jakub Jelinek - - * elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative. - (_bfd_elf_discard_section_eh_frame): Set it for CIEs with pcrel - encoded personality. - (_bfd_elf_write_section_eh_frame): Adjust pcrel encoded personality - for CIE/FDE removal. - -2002-04-20 Tom Rix - - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Fix C_FILE auxent. - -2002-04-20 Alan Modra - - * archures.c (bfd_lookup_arch): Move the list order comment.. - (struct bfd_arch_info): ..to where it belongs. - * bfd-in2.h: Regenerate. - - * archures.c (bfd_lookup_arch): Add comment on list order. - (bfd_default_set_arch_mach): Use bfd_lookup_arch. - * cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default - is always at head of list. - -2002-04-18 Nick Clifton - - * coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9, - insert_thumb_branch, record_thumb_to_arm_glue): Suppress - definition of these functions for ARM_WINCE builds as they are - not used. - (SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET): Do not define - for ARM_WINCE builds. - -2002-04-18 Nick Clifton - - * coff-arm.c (bfd_arm_process_before_allocation): - -2002-04-17 J"orn Rennecke - - * cpu-sh.c (scan_mach): Delete. - (arch_info_struct): Replace scan_mach with bfd_default_scan. - (bfd_sh_arch): Likewise. - -2002-04-16 Nick Clifton - - * ihex.c (ihex_write_object_contents): Fix check for records - crossing 64K boundaries. - -2002-04-16 Alan Modra - - * elf32-m32r.c (m32r_elf_add_symbol_hook): Check the hash table - type rather than just assuming entries are ELF. - * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. - * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Likewise. - * elf64-mmix.c (mmix_elf_add_symbol_hook): Use bfd_link_hash_entry - rather than elf_link_hash_entry. - -2002-04-15 Richard Henderson - - * elf32-mips.c (mips_elf32_object_p): Revert 0404 fragment: allow - n32 binaries. - -2002-04-15 Michael Snyder - - * opncls.c (bfd_close): Write contents if writeable. - Minor formatting tidy-ups. - -2002-04-15 Alan Modra - - * elf32-ppc.c (ppc_elf_add_symbol_hook): Check the hash table type. - -2002-04-12 Michael Snyder - - * bfd-in.h (bfd_get_section_lma): New access macro. - Minor white-space fix-up. - -2002-04-12 Alan Modra - - * elf.c (prep_headers): Don't zero EI_OSABI, EI_ABIVERSION or - header pad. - -2002-04-09 DJ Delorie - - * elfarm-nabi.c (elf32_arm_howto_table): Fix ABS16 masks. - -2002-04-09 Casper S. Hornstrup - - * coffcode.h (coff_read_word): New. - (coff_compute_checksum): New. - (coff_apply_checksum): New. - (coff_write_object_contents): Call coff_apply_checksum () to - apply checksum to PE image. - -2002-04-08 Randolph Chung - - * elf32-hppa.c (hppa_unwind_entry_compare): Move to elf-hppa.h. - (elf32_hppa_final_link): Split out sorting logic to.. - * elf-hppa.h (elf_hppa_sort_unwind): ..here. - (elf_hppa_final_link): Call elf_hppa_sort_unwind. - -2002-04-07 Andrew Cagney - - * configure.in: Add missing ``|'' to powerpc-*-aix4.[4-9]* - pattern. - * configure: Re-generate. - -2002-04-07 Andrew Cagney - - * configure.in: Only define AIX_CORE_DUMPX_CORE when AIX version - is greater or equal to 4.3.3. - * configure: Regenerate. - Fix PR gdb/344. - -2002-04-05 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_howto_table) : Fix typo in name. - (cris_elf_check_relocs): Always create .rela.got here when - R_CRIS_16_GOTPLT or R_CRIS_32_GOTPLT is seen. - (elf_cris_adjust_gotplt_to_got): Don't create .rela.got here; - assume it's created. - -2002-04-04 Daniel Jacobowitz - - * aout-adobe.c (aout_32_bfd_link_hash_table_free): Define. - * aout-target.h (MY_bfd_link_hash_table_free): Conditionally - define. - * aout-tic30.c (MY_bfd_link_hash_table_free): Likewise. - * bfd.c (bfd_link_hash_table_free): Define. - * binary.c (binary_bfd_link_hash_table_free): Define. - * bout.c (b_out_bfd_link_hash_table_free): Define. - * coff-rs6000.c (rs6000coff_vec): Include - _bfd_generic_link_hash_table_free. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - (aix5coff64_vec): Likewise. - * coffcode.h (coff_bfd_link_hash_table_free): Conditionally define. - * elf-m10300.c (elf32_mn10300_link_hash_table_free): New function. - (bfd_elf32_bfd_link_hash_table_free): Define. - * elf32-hppa.c (elf32_hppa_link_hash_table_free): New function. - (bfd_elf32_bfd_link_hash_table_free): Define. - * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): Conditionally - define. - * i386msdos.c (msdos_bfd_link_hash_table_free): Define. - * i386os9k.c (os9k_bfd_link_hash_table_free): Define. - * ieee.c (ieee_bfd_link_hash_table_free): Define. - * ihex.c (ihex_bfd_link_hash_table_free): Define. - * libbfd-in.h (_bfd_nolink_bfd_link_hash_table_free): Define. - (_bfd_generic_link_hash_table_free): Add prototype. - * libcoff-in.h (_bfd_xcoff_bfd_link_hash_table_free): Add prototype. - * libecoff.h (_bfd_ecoff_bfd_link_hash_table_free): Define. - * linker.c (_bfd_generic_link_hash_table_free): New function. - * mmo.c (mmo_bfd_link_hash_table_free): Define. - * nlm-target.h (nlm_bfd_link_hash_table_free): Define. - * oasys.c (oasys_bfd_link_hash_table_free): Define. - * ppcboot.c (ppcboot_bfd_link_hash_table_free): Define. - * som.c (som_bfd_link_hash_table_free): Define. - * srec.c (srec_bfd_link_hash_table_free): Define. - * tekhex.c (tekhex_bfd_link_hash_table_free): Define. - * versados.c (versados_bfd_link_hash_table_free): Define. - * vms.c (vms_bfd_link_hash_table_free): New function. - * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_free): New function. - - * coff-arm.c (coff_arm_link_hash_table_create): Use bfd_malloc - instead of bfd_alloc. - * coff-h8300.c (h8300_coff_link_hash_table_create): Likewise. - * coff-mcore.c (coff_mcore_link_hash_table_create): Likewise. - * coff-ppc.c (ppc_coff_link_hash_table_create): Likewise. - * cofflink.c (_bfd_coff_link_hash_table_create): Likewise. - * ecoff.c (_bfd_ecoff_bfd_link_hash_table_create): Likewise. - * elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise. - * elf.c (_bfd_elf_link_hash_table_create): Likewise. - * elf32-arm.h (elf32_arm_link_hash_table_create): Likewise. - * elf32-cris.c (elf_cris_link_hash_table_create): Likewise. - * elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise. - * elf32-i386.c (elf_i386_link_hash_table_create): Likewise. - * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise. - * elf32-s390.c (elf_s390_link_hash_table_create): Likewise. - * elf32-sh.c (sh_elf_link_hash_table_create): Likewise. - * elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create): Likewise. - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Likewise. - * elf64-s390.c (elf_s390_link_hash_table_create): Likewise. - * elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise. - * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create): Likewise. - * elf64-x86-64.c (elf64_x86_64_link_hash_table_create): Likewise. - * elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise. - * linker.c (_bfd_generic_link_hash_table_create): Likewise. - * m68klinux.c (linux_link_hash_table_create): Likewise. - * sparclinux.c (linux_link_hash_table_create): Likewise. - * sunos.c (sunos_link_hash_table_create): Likewise. - * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise. - - * targets.c: Add _bfd_link_hash_table_free to xvec. - - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - -2002-04-04 Alan Modra - - * dep-in.sed: Cope with absolute paths. - * Makefile.am (dep.sed): Subst TOPDIR, and not INCDIR. - Run "make dep-am". - * Makefile.in: Regenerate. - * coff-arm.c: Fix copyright date. - * cpu-h8300.c: Likewise. - * cpu-i370.c: Likewise. - * cpu-s390.c: Likewise. - * cpu-mips.c: Likewise. - * po/SRC-POTFILES.in: Regenerate. - -2002-04-04 Thiemo Seufer - - * Makefile.am: Add elfxx-mips.c to the known backends. - (elf32-mips.lo): remove dependency to coff/external.h. - * Makefile.in: Regenerate. - * configure.in: Add elfxx-mips.lo to all vectors using elf32-mips.lo - Remove elf32-mips.lo from 64 bit vectors. Update dependencies - accordingly. - * configure: Regenerate. - * elf-bfd.h: Move all MIPS ELF specific prototypes to elfxx-mips.h. - (irix_compat_t): IRIX compatibility level, moved from elf32-mips.c. - (elf_backend_mips_irix_compat, elf_backend_mips_rtype_to_howto): New - MIPS specific backend functions. - * elf32-mips.c: Moved most code to elfxx-mips.c. - (mips_elf_hi16_reloc): Rename from _bfd_mips_elf_hi16_reloc and make - static. - (mips_elf_lo16_reloc): Likewise, was _bfd_mips_elf_lo16_reloc. - (mips_elf_got16_reloc): Likewise, was _bfd_mips_elf_got16_reloc. - (mips_elf_gprel32_reloc): Likewise, was _bfd_mips_elf_gprel32_reloc. - (mips_elf32_rtype_to_howto): Rename from mips_rtype_to_howto. Changed - interface to allow selection of the right REL or RELA howto table. - (mips_elf32_object_p): Rename from _bfd_mips_elf_object_p and made - static. Let it refuse n32 objects. - (elf32_mips_grok_prstatus): Rename from _bfd_elf32_mips_grok_prstatus. - (elf32_mips_grok_psinfo): Rename from _bfd_elf32_mips_grok_psinfo. - (elf32_mips_discard_info): Rename from _bfd_elf32_mips_discard_info. - (elf32_mips_ignore_discarded_relocs): Rename from - _bfd_elf32_mips_ignore_discarded_relocs. - (elf32_mips_write_section): Rename from _bfd_elf32_mips_write_section. - (elf32_mips_irix_compat): New function, replaces IRIX_COMPAT. - (elf_mips_howto_table_rela): Remove. - * elf64-mips.c: Moved most code to elfxx-mips.c. - (bfd_elf64_bfd_reloc_type_lookup): Make static. - (mips_elf64_rtype_to_howto): New function. - (mips_elf64_object_p): Likewise. - (elf64_mips_irix_compat): Likewise. - * elfxx-mips.c: New file containing common code merged together from - elf32-mips.c and elf64-mips.c. - * elfxx-mips.h: New file containing MIPS specific prototypes from - elf-bfd.h. - * elfxx-target.h: Add handling for elf_backend_mips_irix_compat and - elf_backend_mips_rtype_to_howto. - -2002-04-04 Alan Modra - - * srec.c (MAXCHUNK, Chunk): Revise comments. - (srec_write_record): Correct buffer size. - (srec_write_header): Do without intermediate buffer. - (srec_write_section): Validate Chunk. - (srec_write_terminator): Pass NULL instead of dummy buffer. - (srec_write_symbols): Pass file and symbol names directly to - bfd_bwrite so sprintf won't overflow buffer. - -2002-04-03 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic - PC relative relocs against hidden symbols. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - -2002-04-03 Alan Modra - - * elf.c (_bfd_elf_make_section_from_shdr): When setting section - LMAs, loop over segments until p_vaddr and p_memsz specify an - extent enclosing the section. - -2002-04-02 Nick Clifton - - * ihex.c (ihex_write_object_contents): Do not allow records to - cross a 64K boundary - wrap if necessary. - -2002-04-01 Nathan Williams - - * elf.c (elfcore_netbsd_get_lwpid): Fix off-by-one error - which caused the returned LWP ID to always be 0. - -2002-04-01 Richard Henderson - - * elf32-sparc.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (elf32_sparc_relocate_section): Use it to figure out when to - initialize .got entries. - * elf64-sparc.c: Similarly. - -2002-03-28 Alan Modra - - * linker.c (link_action): Ignore duplicate warning syms. - (_bfd_generic_link_write_global_symbol): Follow warning symbol link. - * elflink.h (elf_adjust_dynstr_offsets): Likewise. - (elf_adjust_dynamic_symbol): Likewise. - (elf_export_symbol): Likewise. - (elf_link_find_version_dependencies): Likewise. - (elf_link_assign_sym_version): Likewise. - (elf_link_sec_merge_syms): Likewise. - (elf_link_output_extsym): Likewise. - (elf_gc_sweep_symbol): Likewise. - (elf_gc_propagate_vtable_entries_used): Likewise. - (elf_gc_smash_unused_vtentry_relocs): Likewise. - (elf_gc_allocate_got_offsets): Likewise. - (elf_collect_hash_codes): Likewise. - * elflink.c (elf_link_renumber_hash_table_dynsyms): Likewise. - * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): Likewise. - (elf_hppa_remark_useless_dynamic_symbols): Likewise. - * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Likewise. - * elf32-arm.h (elf32_arm_discard_copies): Likewise. - * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Likewise. - (elf_cris_discard_excess_dso_dynamics): Likewise. - * elf32-hppa.c (clobber_millicode_symbols): Likewise. - (mark_PIC_calls): Likewise. - (allocate_plt_static): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-i386.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-i370.c (i370_elf_adjust_dynindx): Likewise. - * elf32-m68k.c (elf_m68k_discard_copies): Likewise. - * elf32-mips.c (mips_elf_output_extsym): Likewise. - (mips_elf_sort_hash_table_f): Likewise. - (mips_elf_check_mips16_stubs): Likewise. - * elf32-s390.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-sh.c (sh_elf_discard_copies): Likewise. - * elf32-xstormy16.c (xstormy16_relax_plt_check): Likewise. - (xstormy16_relax_plt_realloc): Likewise. - * elf64-alpha.c (elf64_alpha_calc_got_offsets_for_symbol): Likewise. - (elf64_alpha_output_extsym): Likewise. - * elf64-hppa.c (elf64_hppa_mark_exported_functions): Likewise. - * elf64-mips.c (mips_elf64_sort_hash_table_f): Likewise. - (mips_elf64_check_mips16_stubs): Likewise. - (mips_elf64_output_extsym): Likewise. - * elf64-ppc.c (func_desc_adjust): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf64-s390.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf64-sh64.c (sh64_elf64_discard_copies): Likewise. - * elf64-x86-64.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elfxx-ia64.c (elfNN_ia64_global_dyn_sym_thunk): Likewise. - * aoutx.h (aout_link_write_other_symbol): Likewise. - * cofflink.c (_bfd_coff_write_task_globals): Likewise. - (_bfd_coff_write_global_sym): Likewise. - * i386linux.c (linux_tally_symbols): Likewise. - * m68klinux.c (linux_tally_symbols): Likewise. - * sparclinux.c (linux_tally_symbols): Likewise. - * pdp11.c (aout_link_write_other_symbol): Likewise. - * sunos.c (sunos_scan_dynamic_symbol): Likewise. - * xcofflink.c (xcoff_build_ldsyms): Likewise. - (xcoff_write_global_symbol): Likewise. - - * cofflink.c (_bfd_coff_final_link): Formatting. - * cpu-mips.c (mips_compatible): Make static, prototype. - * elf32-i386.c (elf_i386_check_relocs): Formatting. - * elf32-sh.c (sh_elf_size_dynamic_sections): Likewise. - * elf64-alpha.c (elf64_alpha_output_extsym): Likewise. - * elf64-mips.c (mips_elf64_sort_hash_table): Likewise. - (mips_elf64_final_link): Likewise. - * elflink.h (elf_link_find_version_dependencies): Remove duplicate - prototype. - -2002-03-27 Nick Clifton - - * coff-arm.c (SWAP_IN_RELOC_OFFSET): Define. - (SWAP_OUT_RELOC_OFFSET): Define. - -2002-03-27 Gregory Steuck - - * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for - terminating NULL if empty symbol table. - (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise. - -2002-03-26 H.J. Lu (hjl@gnu.org) - - * elflink.h (elf_link_input_bfd): Revert the last change since - the gcc exception handling isn't fixed yet. - -2002-03-26 H.J. Lu (hjl@gnu.org) - - * elflink.h (elf_link_input_bfd): Complain about relocations - against local symbols in discarded sections. - -2002-03-26 Alan Modra - - * elflink.h (elf_gc_mark): Don't recurse into non-ELF sections. - -2002-03-23 Alan Modra - - * elf.c (_bfd_elf_make_section_from_shdr): Don't set lma based on - section file offset for !SEC_LOAD sections. - -2002-03-21 Richard Earnshaw - - * elf32-arm.h (elf32_arm_final_link_relocate , - ): Handle relocations to Thumb functions. - -2002-03-21 Alan Modra - - * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Prototype. - Whitespace changes. - * archive.c: Update copyright date. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-03-20 Daniel Jacobowitz - - * dwarf2.c (struct funcinfo): Move up. - (lookup_address_in_function_table): New argument function_ptr. - Set it. - (lookup_address_in_line_table): New argument function. If function - is non-NULL, use it to handle ``addr'' before the first line note of - the function. - (comp_unit_find_nearest_line): Update and swap calls to - lookup_address_in_function_table and lookup_address_in_line_table. - * syms.c (_bfd_stab_section_find_nearest_line): Use the first - N_SLINE encountered if we see an N_FUN before any N_SLINE. - -2002-03-20 Tom Rix - - * coff-rs6000.c (_bfd_xcoff_stat_arch_elt): Renamed from - _bfd_xcoff_generic_stat_arch_elt. Fix format check. - * coff64-rs6000.c : Use _bfd_xcoff_stat_arch_elt. - -2002-03-19 Tom Rix - - * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through all - dynamic objects in archives. - -2002-03-19 Hans-Peter Nilsson - - * elflink.h (NAME(bfd_elf,record_link_assignment)): Don't set - STT_NOTYPE symbols to STT_OBJECT. - -2002-03-18 Jan Hubicka - - * cpu-i386.c (bfd_x86_64_arch): Rename to "i386:x86-64" - -2002-03-18 Tom Rix - - * aix5ppc.core.c : New file for AIX 5 64 bit core support. - * bfd-in.h : Add bfd_xcoff_ar_archive_set_magic declaration. - * coff-rs6000 (do_pad) : New function for archive padding. - (do_copy) : New function for object file copying in archives. - (do_shared_object_padding) : New function for padding shared - objects to their text section alignment in archives. - (bfd_xcoff_ar_achive_set_magic) : Stub. - (xcoff_write_armap_big) : Use do_copy and do_pad. - (xcoff_write_archive_contents_big) : Use do_shared_object_padding, - do_copy and do_pad. - * coff64-rs6000.c (xcoff64_write_ojbect_contents) : Use - bfd_xcoff_magic_number. - (xcoff64_bad_format_hook) : New function for _bfd_bad_format_hook - fop. - (xcoff_backend_data_r) : Use xcoff64_bad_format_hook. - (bfd_xcoff_aix5_backend_data) : New Aix 5 backend data. - (aix5coff64_vec) : New Aix 5 target aix5coff64-rs6000. - * rs6000-core.c : Update copyright date. - * xcofflink.c (bfd_xcoff_size_dynamic_sections): Check for NULL - csectpp. - * coffcode.h (coff_new_section_hook) : Use new accessor macros. - (coff_set_arch_mach_hook) : Add Aix 5 U64_TOCMAGIC magic #. - (coff_set_flags) : Use bfd_xcoff_magic_number. - * libxcoff.h (bfd_xcoff_is_xcoff64): Add U64_TOCMAGIC. - * configure.in : Add powerpc-*-aix5 and rs6000-*-aix5 support. - * Makefile.am : Same. - * config.bfd : Same. - * targets.c : Same. - * configure : Regnerate. - * Makefile.in : Same. - * bfd-in2.h : Same. - -2002-03-18 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-18 Alan Modra - - * libbfd.c (bfd_write_bigendian_4byte_int): Return true iff success. - * libbfd.h: Regenerate. - * archive.c (coff_write_armap): Pass on failures from - bfd_write_bigendian_4byte_int. - -2002-03-14 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the BFD - error to bfd_error_nonrepresentable_section for reinit_array - section in DSO. - -2002-03-14 Nick Clifton - - * coffcode.h (coff_slurp_symbol_table): When adding BSF_WEAK flag, - OR it in rather than replacing previously selected flags. - - * elfxx-target.h (TARGET_BIG_SYM): Set ar_max_namelen to 15. - (TARGET_LITTLE_SYM): Set ar_max_namelen to 15. - -2002-03-14 Alan Modra - - * cpu-mips.c (mips_compatible): New. Don't check bits_per_word. - (N): Use the above. - * elflink.h (elf_bfd_final_link): Revert last change. Instead, - ensure reloc size matches before calling elf_link_input_bfd. - Add an assert to check reloc size when counting output relocs. - -2002-03-14 Nick Clifton - - * mmo.c (mmo_get_loc): Return NULL rather than false. - -2002-03-13 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-13 Alan Modra - - * archures.c (bfd_default_compatible): Test bits_per_word. - * cpu-i386.c (i386_compatible): Remove. Replace occurrences with - bfd_default_compatible. - * cpu-i370.c (i370_compatible): Likewise. - * cpu-sparc.c (sparc_compatible): Likewise. - * cpu-h8300.c (compatible): Test in->arch == out->arch. - - * elflink.h: Formatting fixes. - (elf_link_output_extsym): Merge undefined and undef weak cases. - - * elflink.h (elf_bfd_final_link): Only call elf_link_input_bfd - when word size of input matches output word size. - -2002-03-12 Andreas Jaeger - - * cpu-i386.c (i386_compatible): New. Use it instead of - bfd_default_compatible. - -2002-03-07 H.J. Lu (hjl@gnu.org) - - * coff-sh.c (shcoff_reloc_map): Use bfd_reloc_code_real_type - as the type for bfd_reloc_val. - -2002-03-05 John David Anglin - - * elf-hppa.h (elf_hppa_is_dynamic_loader_symbol): New function. - (elf_hppa_relocate_section): Ignore undefined dynamic loader symbols. - (elf_hppa_final_link_relocate): Correct relocations for indirect - references to local data through the DLT. Fix .opd creation for - local symbols using R_PARISC_LTOFF_FPTR32 and R_PARISC_FPTR64 - relocations. Use e_lsel selector for R_PARISC_DLTIND21L, - R_PARISC_LTOFF_FPTR21L and R_PARISC_LTOFF_TP21L as per - "Processor-Specific ELF for PA_RISC, Version 1.43" document. - Similarly, use e_rsel for DLT and LTOFF 'R' relocations. - * elf32-hppa.c (final_link_relocate): Revise relocation selectors - as per "Processor-Specific ELF for PA_RISC, Version 1.43" document. - -2002-03-05 Jakub Jelinek - - * merge.c (_bfd_merge_sections): Don't segfault if there - is nothing to merge due to GC. - -2002-03-05 Alan Modra - - * elf32-hppa.c (clobber_millicode_symbols): Remove hack to keep - symbols that have been forced local. - - * elflink.h (elf_bfd_final_link): Call elf_link_output_extsym - to output forced local syms for non-shared link. - (elf_link_output_extsym): Tweak condition for calling backend - adjust_dynamic_symbol so that previous behaviour is kept. - Whitespace changes throughout file. - -2002-03-04 H.J. Lu - - * elf.c (bfd_section_from_shdr): Handle special sections, - .init_array, .fini_array and .preinit_array. - (elf_fake_sections): Likewise. - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Create the - DT entry only if the section is in output for .init_array, - .fini_array and .preinit_array. Complain about .preinit_array - section in DSO. - (elf_bfd_final_link): Warn zero size for .init_array, - .fini_array and .preinit_array sections. - - * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Remove - SHT_INIT_ARRAY, SHT_FINI_ARRAY and SHT_PREINIT_ARRAY. - (elfNN_ia64_fake_sections): Remove .init_array, .fini_array and - .preinit_array. - -2002-03-04 Alan Modra - - * configure.in (WIN32LIBADD): Don't eval PICFLAG assignment. - * configure: Regenerate. - -2002-03-02 Tom Rix - - * coff64-rs6000.c (xcoff64_howto_table): Replace howto types with - symbolic equiv. - * coff-rs6000.c (xcoff_howto_table): Same. - -2002-03-01 David Mosberger - - * elflink.h (size_dynamic_sections): If section named - ".preinit_array" exists, create DT_PREINIT_ARRAY and - DT_PREINIT_ARRAYSZ entries in dynamic table. Analogously for - ".init_array" and ".fini_array". - (elf_bfd_final_link): Handle DT_PREINIT_ARRAYSZ, DT_INIT_ARRAYSZ, - DT_FINI_ARRAYSZ, DT_PREINIT_ARRAY, DT_INIT_ARRAY, and - DT_FINI_ARRAY. - -2002-02-26 Andrew Macleod - - * elflink.h (elf_bfd_final_link): Don't crash on SHN_UNDEF local - dynsyms. - -2002-02-25 Alan Modra - - * elf64-hppa.h: Update copyright date. - - * elf64-ppc.c (ppc64_elf_check_relocs): Warning fix. - (ppc64_elf_relocate_section): Don't generate power4 style branch - hints for *_BRTAKEN and *_BRNTAKEN relocs. - -2002-02-22 Jakub Jelinek - - * elf64-sh64.c (sh_elf64_relocate_section): Fix a typo from my - last patch. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2002-02-21 Andreas Jaeger - - * elf64-x86-64.c: Major rework that introduces all recent changes - to the x86-64 backend. Get a closer match to elf32-i386. - (struct elf64_x86_64_dyn_relocs): Rename from - elf64_x86_64_pcrel_relocs_copied, add additional fields. Change - all users. - (struct elf64_x86_64_link_hash_table): Add short cuts to some - sections. - (link_hash_newfunc): Rename from elf64_x86_64_link_hash_newfunc, - remove casts, initialize new hash members. - (create_got_section): New. - (elf64_x86_64_create_dynamic_sections): New. - (elf64_x86_64_copy_indirect_symbol): New. - (elf64_x86_64_check_relocs): Don't allocate space for dynamic - relocs, .got or .relgot here but do it in allocate_dynrelocs. - Reference count possible .plt and .got entries. Don't test input - section SEC_READONLY here to try to avoid copy relocs, and keep - dyn_relocs regardless of ELF_LINK_NON_GOT_REF. Don't set - DF_TEXTREL here. Delay setting of variables until needed. Cache - pointer to "sreloc" section in elf_section_data. Tweak condition - under which .got created. Report files with bad relocation - section names. - (elf64_x86_64_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. - Reference count possible .plt entries. Don't deallocate .got and - .relgot space here. - (elf64_x86_64_adjust_dynamic_symbol): Handle nocopyreloc. Don't - do copy reloc processing for weakdefs. Remove redundant casts and - aborts. Delay setting of vars until needed. Move creation of - dynamic symbols and allocation of .plt and .rela.plt to - allocate_dynrelocs. Replace BFD_ASSERT with abort. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (allocate_dynrelocs): New. - (readonly_dynrelocs): New. - (elf64_x86_64_size_dynamic_sections): Call readonly_dynrelocs. - Allocate space for dyn relocs. Replace BFD_ASSERT with abort. - Zero out the dynamic allocated content space. - (elf64_x86_64_discard_copies): Removed. - (elf64_x86_64_relocate_section): Make use of dynamic section - short-cuts. Localise vars, and delay setting. Better error - reporting, replace BFD_ASSERT with abort. Check - ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined in the - regular object file and tread the weak definition as the normal - one. Don't discard relocs for undefweak or undefined symbols and - check !DEF_REGULAR as well as DEF_DYNAMIC in test for avoided copy - relocs. - (elf64_x86_64_finish_dynamic_symbol): Don't copy relocs for - symbols that have been forced local. Use same test to decide if - we can use a relative reloc for got as relocate_section. Expand - SHN_UNDEF comment. Move expressions out of function calls. - Replace BFD_ASSERT with abort. - (bfd_elf64_bfd_final_link): Removed. - (elf_backend_copy_indirect_symbol): Define. - -2002-02-20 Tom Rix - - * coff-rs6000.c (xcoff_howto_table): Add 16 bit R_BA. - (_bfd_xcoff_reloc_type_lookup): Use it. - * coff64-rs6000.c (xcoff64_howto_table): Same. - (xcoff64_reloc_type_lookup): Same. - -2002-02-20 Peter Schauer - - * osf-core.c (osf_core_vec): OSF/1 (Digital Unix) core files are - little endian. - -2002-02-19 Martin Schwidefsky - - * archures.c (bfd_mach_s390_esa): Rename to bfd_mach_s390_31. - (bfd_mach_s390_esame): Rename to bfd_mach_s390_64. - * bfd-in2.h: Regenerate. - * cpu-s390.c (arch_info_struct): Use renamed architecture defines. - Replace architecture name "s390" with "s390:31-bit" and "s390:esame" - with "s390:64-bit". - * elf32-s390.c (elf_howto_table): Add 32 bit pc relative relocations. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_check_relocs): Likewise. - (elf_s390_gc_sweep_hook): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_object_p): Use renamed architecture define. - * elf64-s390.c (elf_s390_object_p): Use renamed architecture define. - -2002-02-19 Frank Ch. Eigler - - * syms.c (stt[]): Sorted. Added .init/.fini -> "t" mapping. - -2002-02-19 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Enable - absptr -> pcrel optimization for shared libs. - Only create minimal .eh_frame_hdr if absptr FDE encoding in shared - library cannot be converted to pcrel. - (_bfd_elf_eh_frame_section_offset): Return -2 if making absptr - relative. - * elf32-i386.c (elf_i386_relocate_section): If - _bfd_elf_section_offset returned -2, skip, but make sure the - relocation is installed. - * elf32-arm.h (elf32_arm_final_link_relocate): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Handle - _bfd_elf_section_offset returning -2 the same way as -1. - * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. - * elf32-mips.c (mips_elf_create_dynamic_relocation): Add FIXME - and BFD_ASSERT. - * elf64-mips.c (mips_elf64_create_dynamic_relocation): Likewise. - -2002-02-18 Tom Rix - - * xcofflink.c (bfd_xcoff_link_gernate_rtinit): Add -brtl support. - (bfd_xcoff_size_dynamic_sections): Same. - * bfd-in.h (bfd_xcoff_link_generate_rtinit): Same. - (bfd_xcoff_size_dynamic_sections): Same. - * coff-rs6000.c (xcoff_generate_rtinit): Same. - * coff-rs646000.c (xcoff64_generate_rtinit): Same. - * libxcoff.h (struct xcoff_backend_data_rec): Same. - * xcofflink.c (xcoff_build_ldsyms, xcoff_link_add_symbols): Clean. - * bfd-in2.h: Regenerate. - -2002-02-18 Alan Modra - - * elf64-ppc.c (STFD_FR0_0R1, LFD_FR0_0R1, BLR): Define. - (struct ppc_link_hash_table): Add sfpr. - (ppc64_elf_link_hash_table_create): Init it. - (ppc64_elf_create_dynamic_sections): Split creation of .stub and - .glink out to.. - (create_linkage_sections): ..here. Make .sfpr too. - (ppc64_elf_check_relocs): Call create_linkage_sections, and set - dynobj early. - (MIN_SAVE_FPR, MAX_SAVE_FPR): Define. - (ppc64_elf_func_desc_adjust): Look for missing ._savef* and - ._restf* functions, and create as needed. - (func_desc_adjust): Only force_local for shared libs. - -2002-02-18 David O'Brien - - * configure.in: Bump version number post 2.12 branching. - * configure: Regenerate. - -2002-02-17 Hans-Peter Nilsson - - * mmo.c: Correct and improve comments. - (mmo_write_chunk): Store trailing byte in bfd buffer; don't - zero-pad. Use input to fill up non-empty bfd buffer. - (mmo_flush_chunk): New function. - (mmo_write_loc_chunk): Add parameter last_vmap, all callers - changed. Don't emit location specifier if VMA is same as - *LAST_VMAP after omitting leading zero contents. Call - mmo_flush_chunk before emitting location specifier. - (mmo_write_loc_chunk_list): Call mmo_flush_chunk when finished - with mmo_write_loc_chunk calls. - (mmo_internal_write_section): Call mmo_flush_chunk after - mmo_write_chunk. - (mmo_write_symbols_and_terminator): Move :Main to first position - in symbol array. Add faked one if it does not exist if there are - other symbols. Don't add it if there are no symbols at all. Move - out test for value of :Main from symbol loop. Rename table - fakemain to maintable and variable mainsym to fakemain. - -2002-02-15 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target - section with no got matches any got. Simplify error generaion. - -2002-02-15 Alan Modra - - Support arbitrary length fill patterns. - * linker.c (bfd_new_link_order): Zero all fields with bfd_zalloc. - (_bfd_default_link_order): Remove bfd_fill_link_order code. - Call default_data_link_order. - (default_fill_link_order): Delete. - (default_data_link_order): New function. - * elf32-mips.c (_bfd_mips_elf_final_link): Replace occurrences - of bfd_fill_link_order with bfd_data_link_order. - * elf64-alpha.c (elf64_alpha_final_link): Likewise. - * elf64-mips.c (mips_elf64_final_link): Likewise. - - * bfd.c (bfd_scan_vma): Clamp overflows to max bfd_vma value. - Correct value returned in "end" for "0x". - -2002-02-14 Nick Clifton - - * cpu-arm.c (processors): Replace 'arch' field with 'mach'. - (scan): Test against 'mach' field in info structure. - -2002-02-14 Alan Modra - - * elf.c (elf_fake_sections): Use SHT_NOBITS when SEC_NEVER_LOAD. - -2002-02-14 Matt Fredette - - * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Recognize - EF_M68000. - -2002-02-13 Nick Clifton - - * elf.c (_bfd_elf_make_section_from_shdr): Do not insist on - non-zero physical addresses when adjusting the LMAs of new - sections. - -2002-02-12 John David Anglin - - * elf-hppa.h (elf_hppa_reloc_final_type): New function stripped - from _bfd_elf_hppa_gen_reloc_type. - (_bfd_elf_hppa_gen_reloc_type): Remove duplicate prototype. - * elf32-hppa.h (elf32_hppa_reloc_final_type): Add protptype. - * elf32-hppa.c: Include elf32-hppa.h before elf-hppa.h. - * elf64-hppa.h (elf64_hppa_reloc_final_type): Add protptype. - -2002-02-12 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relax_section): Skip section before - loading its contents if there's nothing to do in it. - -2002-02-12 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_stubs): Correct test for crossing - 64k boundary. - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Add dynamic - DT_PPC64_OPD and DT_PPC64_OPDSZ tags. - (ppc64_elf_finish_dynamic_sections): Set values for them. - -2002-02-11 Michael Snyder - - * elf-bfd.h (elfcore_write_lwpstatus): Add prototype. - * elf.c (elfcore_grok_pstatus): Add prototype. - (elfcore_grok_lwpstatus): Add prototype. - (elfcore_write_lwpstatus): New function. - (elfcore_write_pstatus): Fix typo, eliminate unnecessary memcpy. - -2002-02-11 Alexandre Oliva - - * elf32-sh.c: Added missing prototypes. - * elf32-sh64.c: Likewise. - (sh_elf_align_loads): Mark unused args as such. - * elf64-sh64.c: Added missing prototypes. - (struct elf_sh64_link_hash_entry): Fix typo. - (sh_elf64_relocate_section): Fix info argument passed to - _bfd_elf_section_offset. - -2002-02-11 Alan Modra - - * Makefile.am: "make dep-am". - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2002-02-10 Daniel Jacobowitz - - * coff-rs6000.c (xcoff_generate_rtinit): Silence uninitialized - variable warnings. - * elf32-sh.c (sh_elf_relax_section): Silence signed/unsigned - comparison warning. - * trad-core.c (trad_unix_core_file_p): Silence pointer/integer - cast warnings for the common case. - -2002-02-10 Hans-Peter Nilsson - - * config.bfd (sh-*-linux*, sh-*-elf* | sh-*-rtemself*): Add sh64 - vectors. - (sh-*-netbsdelf*): New, to trump sh*-*-netbsdelf* and add sh64 - vectors. - -2002-02-09 Richard Henderson - - * elf64-alpha.c (elf64_alpha_howto): Add R_ALPHA_BRSGP. - (elf64_alpha_reloc_map, elf64_alpha_check_relocs): Likewise. - (elf64_alpha_relocate_section): Likewise. - * reloc.c (BFD_RELOC_ALPHA_BRSGP): New. - * bfd-in2.h, libbfd.h: Rebuild. - -2002-02-09 Hans-Peter Nilsson - - * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): Check - that base-plus-offset reloc accounting is consistent. - (mmix_elf_relax_section): Keep base-plus-offset reloc accounting - up to date for undefined symbols. - -2002-02-08 Eric Christopher - - From Rainer Orth - - * elf32-mips.c (_bfd_mips_elf_fake_sections): Don't create .rela - sections for the O32 ABI. - -2002-02-08 Chris Demetriou - - * elf32-arm.h: Fix formatting of _("..."). - * elf32-d10v.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mips.c: Likewise. - -2002-02-08 Ivan Guzvinec - - * coff-or32.c: Fix compile time warning messages. - -2002-02-08 Alexandre Oliva - - Contribute sh64-elf. - 2002-01-23 Alexandre Oliva - * reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16, - R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16, - R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16, - R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16, - R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16, - R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16, - R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16, - R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8, - R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64): - New relocs. - * libbfd.h, bfd-in2.h: Rebuilt. - * elf32-sh.c (sh_elf_howto_table): Define new relocs. - (sh_reloc_map): Map them. - (PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le, - elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be, - elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry, - elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset, - elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset, - elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset, - movi_shori_putval) [INCLUDE_SHMEDIA]: New. - (elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add - datalabel_got_offset. - (sh_elf_link_hash_newfunc): Initialize it. - (sh_elf_relocate_section): Augment the scope of - seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT, - GOT and GOTOFF handling to new SHmedia relocation types. Support - GOT_BIAS. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in - PLT entries using movi_shori_putval. Support GOT_BIAS. - (sh_elf_finish_dynamic_sections): Likewise. - * elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to - relocation, it's now done by the caller. - (GOT_BIAS): New. - * elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt, - elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset, - elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset, - elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER, - elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry, - elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse, - sh64_elf64_hash_table): New. - (sh_elf64_howto_table): Introduce new relocs. - (sh_elf64_info_to_howto): Accept new PIC relocs. - (sh_elf64_relocate_section): Augment the scope of - seen_stt_datalabel. Support new PIC relocs. - (sh_elf64_check_relocs): Support new PIC relocs. - (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le, - elf_sh64_plt_entry_be, elf_sh64_plt_entry_le, - elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le, - elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry, - sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create, - movi_shori_putval, movi_3shori_putval, - sh64_elf64_create_dynamic_sections, - sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies, - sh64_elf64_size_dynamic_sections, - sh64_elf64_finish_dynamic_symbol, - sh64_elf64_finish_dynamic_sections): New. - (elf_backend_create_dynamic-sections, - bfd_elf64_bfd_link_hash_table_create, - elf_backend_adjust_dynamic_symbol, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): - Define. - 2001-05-16 Alexandre Oliva - * elf32-sh.c: Renumbered and renamed some SH5 relocations to - match official numbers and names; moved unmaching ones to the - range 0xf2-0xff. - * elf32-sh64.c, elf64-sh64.c: Likewise. - 2001-03-12 DJ Delorie - * elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia +2004-01-12 Anil Paranjpe + + Adds linker relaxation support for bit manipulation insns like + band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset, + bst, btst, bxor. + * elf32-h8300.c : Opcode for bit manipulation insn is checked in + elf32_h8_relax_section function while relxation for aa:16 and aa:32. + * coff-h8300.c : Opcode for bit manipulation insn is checked in + h8300_reloc16_extra_cases function while relxation for aa:16 and aa:32. + +2004-01-12 Alan Modra + + * dwarf2.c: Convert to C90, remove unneeded casts and prototypes. + +2004-01-11 Kazu Hirata + + * elf32-h8300.c: Fix formatting. + +2004-01-11 Kazu Hirata + + * elf32-cris.c (cris_elf_gc_sweep_hook): Return early if no + dynamic object is present. Declare r_symndx and h in an inner + scope. + * elf32-vax.c (elf_vax_gc_sweep_hook): Likewise. + +2004-01-09 Daniel Jacobowitz + + * elf32-arm.h (struct elf32_arm_relocs_copied): Remove pc_count. + (elf32_arm_copy_indirect_symbol): Don't copy pc_count. + (elf32_arm_final_link_relocate): Handle PLT32 and PC24 relocs + identically. Do not emit PC24 relocations for shared libraries. + (elf32_arm_gc_sweep_hook): Handle PLT32 and PC24 relocs + identically. Don't adjust pc_count. + (elf32_arm_check_relocs): Handle PLT32 and PC24 relocs identically. + Set ELF_LINK_HASH_NEEDS_PLT for both. Don't adjust pc_count; don't + adjust count for branch relocations. + (allocate_dynrelocs): Correct typo in call to + WILL_CALL_FINISH_DYNAMIC_SYMBOL. Never allocate space for + PC24 or PLT32 relocs when linking. + +2004-01-09 Dmitry Semyonov + + * coff-arm.c (aoutarm_std_reloc_howto): [ARM_WINCE] Synchronize ARM_26D + relocation howto with ARM_26 one for consistency. + (coff_arm_relocate_section): Set partial_inplace for ARM_26 relocations + that will be converted to ARM_26D ones, since we always want 'done' + relocations to be reflected in section's data. + (coff_arm_relocate_section): [ARM_WINCE] Quick fix for BL instruction + offset. + (_bfd_final_link_relocate): Do not modify "inplace" data, if not + requested. + +2004-01-08 Dmitry Semyonov + + * coff-arm.c (coff_arm_relocate_section): Do not alter relocs that + are not partial_inplace during a relocatable link. + +2004-01-08 Kazu Hirata + + * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return early + if no dynamic object is present. Declare r_symndx and h in an + inner scope. + +2004-01-07 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Don't install + trampoline if it is known out of range. + +2004-01-06 Alexandre Oliva + + 2003-12-17 Alexandre Oliva + * elf32-frv.c (_frv_osec_readonly_p): New. + (_frv_emit_got_relocs_plt_entries): Don't emit rofixup for + undefweak symbol. + (_frv_count_got_plt_entries): Adjust expected count accordingly. + (elf32_frv_relocate_section): Likewise. Error out if attempting + to emit rofixups or dynamic relocs in read-only segments. Use + _bfd_elf_section_offset to adjust r_offsets in rofixups and + dynamic relocations. + 2003-12-12 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Compute dynamic + relocations or fixups involving merged sections correctly. Avoid + crash when undefined symbol is referenced by R_FRV_32 or + R_FRV_FUNCDESC_VALUE. + 2003-12-02 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Add output_offset of + input section holding local symbol to addend of R_FRV_32 or + R_FRV_FUNCDESC_VALUE dynamic relocation. + 2003-11-27 Alexandre Oliva + * elf32-frv.c (elf32_frv_modify_segment_map): Add link info arg. + (elf32_frv_always_size_sections): Don't store pointer to + __stacksize symbol in sec_info. + (elf32_frv_modify_segment_map): Look it up here. + 2003-11-26 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Emit the address + of the lazy PLT entry, not only its offset, as the low word of a + function descriptor. + 2003-11-10 Alexandre Oliva + * elf32-frv.c (elf32_frv_always_size_sections): Define __stacksize + if a hash table entry already exists but is not a definition. + 2003-11-05 Alexandre Oliva + * elf32-frv.c (frv_elf_link_hash_table_create): Use bfd_zalloc. + (_frv_add_rofixup): Don't inline. + (_frv_emit_got_relocs_plt_entries): Use NULL as funcdesc address + for undefweak symbols. + (elf32_frv_relocate_section): Avoid crash while computing + relocation when linking with shared library. Only emit rofixups + and dynamic relocations for alloc&load sections. Mark binaries + with inter-segment relocations for relocation as a unit. + (_frv_create_got_section): Rename .rofixup.got to .rofixup. + (DEFAULT_STACK_SIZE): New. + (_frv_count_got_plt_entries): Fix thinko in deciding whether to + emit rofixups or dynamic relocs when linking dynamic non-PIE + executables. + (elf32_frv_size_dynamic_sections): Generate rofixup on PIEs and + shared libs too. Reserve the last entry for the GOT pointer. + (elf32_frv_finish_dynamic_sections): Emit it. + (elf32_frv_always_size_sections): New. + (elf32_frv_modify_segment_map): New. + (elf32_frv_check_relocs): Reserve relocs32 space only in ALLOC sections. - 2001-03-12 DJ Delorie - * elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must - be aligned. - * elf64-sh64.c (sh_elf64_relocate_section): Ditto. - 2001-01-14 Hans-Peter Nilsson - * elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define. - (sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a - .cranges section with SEC_SORT_ENTRIES set. - (sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an - incoming sorted .cranges section. - (sh64_bfd_elf_copy_private_section_data): New. - (sh64_elf_final_write_processing): Only sort .cranges and modify - start address if called by linker. - 2001-01-08 Ben Elliston - * elf32-sh64.c (sh64_elf_final_write_processing): Activate - Hans-Peter Nilsson's set bit 0 patch from 2001-01-06. - * elf64-sh64.c (sh64_elf64_final_write_processing): Ditto. - 2001-01-06 Hans-Peter Nilsson - * elf64-sh64.c (sh_elf64_howto_table): No open brace at start of - line. Add comments before all entries. - : Correct and clarify describing - comment. - (sh_elf64_reloc): Correct head comment. - (sh_elf64_relocate_section): Correct spacing. - : Do not honour STO_SH5_ISA32; - instead call reloc_dangerous callback. - : New case. - (sh_elf64_gc_mark_hook): Correct spacing. - (sh_elf64_check_relocs): Ditto. - * elf32-sh64.c (shmedia_prepare_reloc) : - New case. - * elf32-sh.c: Correct #endif comments for #ifndef-wrapped - functions. - (sh_elf_howto_table) : Correct, - clarify describing comment. Add comments before all entries. - (sh_elf_relocate_section) : Do not - honour STO_SH5_ISA32; instead call reloc_dangerous callback. - 2001-01-06 Hans-Peter Nilsson - Sort .cranges section in final link. Prepare to set bit 0 on - entry address. - * elf32-sh64.c (struct sh64_find_section_vma_data): New. - (sh64_elf_link_output_symbol_hook): Fix typo in prototype. - (sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming - .cranges section. - (sh64_backend_section_from_shdr): New, to recognize - SHT_SH5_CR_SORTED on incoming .cranges section. - (elf_backend_section_from_shdr): Define. - (sh64_elf_final_write_processing): Sort outgoing .cranges - section. (New, temporarily disabled:) Set bit 0 on entry address - according to ISA type. - (sh64_find_section_for_address): New. - (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb, - crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c. - (sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use - bfd_malloc, not xmalloc. - (sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make - global. - * elf32-sh64.c (sh64_elf64_final_write_processing): New, (but - temporarily disabled) setting bit 0 on entry address. - (elf_backend_final_write_processing): Define. - 2001-01-05 Hans-Peter Nilsson - * elf32-sh.c (sh_elf_howto_table) : Adjust fields to - be a proper relocation for PTA and PTB rather than a marker. - : - Zero src_mask. - * elf64-sh64.c: Ditto. - (sh_elf64_relocate_section) : New case. - * elf32-sh64.c: Include opcodes/sh64-opc.h - (shmedia_prepare_reloc): Take a bfd_link_info pointer as first - argument. Drop const qualifiers from "bfd *" and "bfd_byte *" - parameters. No unused parameters. Caller changed. - : New case. - * Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h. - * Makefile.in: Regenerate. - 2000-12-30 Hans-Peter Nilsson - * elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for - all code sections. - (sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5. - (sh64_elf_merge_private_data): Ditto. - * elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data - to access stored section flags. - (sh64_elf_final_write_processing): Return immediately unless - called by linker. Use sh64_elf_section_data (cranges) to get size - of linker-generated cranges entries. - (sh64_elf_copy_private_data): Add missing "return true". - (sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5. - (sh_elf64_merge_private_data): Ditto. - 2000-12-19 Hans-Peter Nilsson - * elf64-sh64.c (sh64_elf64_fake_sections): New, copy of - elf64-sh64.c:sh64_elf_fake_sections. - (elf_backend_fake_sections): Define as sh64_elf64_fake_sections. - 2000-12-18 Hans-Peter Nilsson - * elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete. - (sh64_elf_final_write_processing): New. - (elf_backend_final_write_processing): Define. - (sh64_elf_fake_sections): Get header flags from tdata field. - (sh64_elf_copy_private_data): Do not call - sh64_elf_copy_private_data_internal, just copy e_flags field. - (sh64_elf_merge_private_data): Do not call - sh64_elf_copy_private_data_internal. - 2000-12-12 Hans-Peter Nilsson - Remove EF_SH64_ABI64, let ELF size make difference. - Remove SH64-specific BFD section flag. - * elf32-sh64.c (sh64_elf_fake_sections): Recognize section as - containing SHmedia through elf_section_data (asect)->tdata - non-zero, not using a BFD section flag. - (sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64. - (sh64_elf_merge_private_data): Similar. - (elf_backend_section_flags): Don't define. - (sh64_elf_backend_section_flags): Delete. - * elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64, - not EF_SH64_ABI64. - (sh_elf64_merge_private_data): Similar. - * section.c (Section flags definitions): Don't define - SEC_SH_ISA_SHMEDIA. - (bfd-in2.h): Regenerate. - 2000-12-09 Hans-Peter Nilsson - Make DataLabel references work with partial linking. - * elf32-sh64.c: Fix formatting. - (sh64_elf_link_output_symbol_hook): New. - (elf_backend_link_output_symbol_hook): Define to - sh64_elf_link_output_symbol_hook. - (sh64_elf_add_symbol_hook): Make DataLabel symbol just global - undefined if partial linking. Adjust sanity check. - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New. - (elf_backend_link_output_symbol_hook): Define to - sh64_elf64_link_output_symbol_hook. - (sh64_elf64_add_symbol_hook): Make DataLabel symbol just global - undefined if partial linking. Adjust sanity check. - 2000-12-07 Hans-Peter Nilsson - Implement semantics for inter-file DataLabel references. - * elf64-sh64.c (DATALABEL_SUFFIX): Define. - (sh64_elf64_add_symbol_hook): New. - (sh_elf64_relocate_section): If passing an indirect symbol with - st_type STT_DATALABEL on the way to a symbol with st_other - STO_SH5_ISA32, do not bitor 1 to the relocation. - (elf_backend_add_symbol_hook): Define to - sh64_elf64_add_symbol_hook. - * elf64-sh32.c: Tweak comments. - (DATALABEL_SUFFIX): Define. - (sh64_elf_add_symbol_hook): New. - (elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook. - * elf32-sh.c (sh_elf_relocate_section): If passing an indirect - symbol with st_type STT_DATALABEL on the way to a symbol with - st_other STO_SH5_ISA32, do not bitor 1 to the relocation. - 2000-12-05 Hans-Peter Nilsson - Pass through STT_DATALABEL. - * elf32-sh64.c (sh64_elf_get_symbol_type): New. - (elf_backend_get_symbol_type): Define. - * elf64-sh64.c (sh64_elf64_get_symbol_type): New. - (elf_backend_get_symbol_type): Define. - 2000-11-30 Hans-Peter Nilsson - * elf32-sh64.c: Tweak comments. - (sh64_elf_copy_private_data_internal): Add prototype. - (bfd_elf32_bfd_set_private_flags): Define. - (sh64_elf_copy_private_data_internal): Compare machine name, not - textual BFD target name, to check whether to copy section flag - SHF_SH5_ISA32. - (sh64_elf_merge_private_data): Validize bfd_get_arch_size. - Tweak section-contents-type-mismatch message. - (shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers. - Validize reloc-types. - * elf64-sh64.c: New file. - * targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare. - * Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo. - (BFD64_BACKENDS_CFILES): Add elf64-sh64.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and - bfd_elf64_sh64l_vec. - * configure.in: Handle bfd_elf64_sh64_vec and - bfd_elf64_sh64l_vec. - * configure: Regenerate. - * po/POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - 2000-11-29 Hans-Peter Nilsson - * elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize - anything else but EF_SH64 and EF_SH64_ABI64. - (sh64_elf_merge_private_data): Emit error for anything else but - EF_SH64 and EF_SH64_ABI64. - * config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec - from targ_selvecs. - * configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and - bfd_elf32_sh64l_vec as a temporary measure. - * configure: Regenerate. - 2000-11-27 Hans-Peter Nilsson - * cpu-sh.c (arch_info_struct): Include sh5 item - unconditionalized. - * config.bfd (sh64-*-elf*): Do not set targ_cflags. - Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec, - bfd_elf32_shblin_vec and bfd_elf32_shlin_vec. - * elf32-sh64.c: Tweak comments. - (sh64_elf_set_mach_from_flags): Recognize all machine flags that - are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64. - (sh64_elf_copy_private_data_internal): Wrap long line. - (sh64_elf_merge_private_data): Rewrite to allow objects from - SH64 subsets to be linked together. - (INCLUDE_SHMEDIA): Define. - * elf32-sh.c (sh_elf_relocate_section) : - Parenthesize plus-expression inside or-expression. - : Ditto. - (sh_elf_set_mach_from_flags): Remove code refusing - deleted EF_SH64_32BIT_ABI flag. - 2000-11-26 Hans-Peter Nilsson - * elf32-sh.c (sh_elf_howto_table) : Set pcrel_offset to true. - (sh_elf_relocate_section) : Or 1 in - calculation of relocation if sym->st_other & STO_SH5_ISA32. - : Ditto if h->other & STO_SH5_ISA32. - * elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to - relocation. - 2000-11-24 Hans-Peter Nilsson - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * archures.c: Add bfd_mach_sh5. - * config.bfd: Map targ_cpu sh* to bfd_sh_arch. - Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA. - * configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec. - * configure: Regenerate. - * reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5, - BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6, - BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2, - BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8, - BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16, - BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16, - BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16, - BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16, - BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations. - * cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link - in item for SH5. - * elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items - for SHmedia relocs. - [INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs. - [INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call - shmedia_prepare_reloc, goto final_link_relocate if it returns - non-zero, else fail as before. - (sh_elf_set_mach_from_flags): Provide function only if not defined - as macro. Do not recognize objects with EF_SH64_32BIT_ABI set. - (sh_elf_set_private_flags): Provide function only if not defined - as a macro. - (sh_elf_copy_private_data): Similar. - (sh_elf_merge_private_data): Similar. - * section.c (SEC_SH_ISA_SHMEDIA): New. - * targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare. - * elf32-sh64.c: New file. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * po/POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - -2002-02-07 Daniel Jacobowitz - - * bfd-in.h: Update check to only see if has - been included, not drag it in. - * bfd-in2.h: Regenerate. - -2002-02-06 H.J. Lu (hjl@gnu.org) - - * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Update - the mach and ISA fields if necessary. - -2002-02-06 Nick Clifton - - * coffcode.h (coff_set_arch_mach_hook): Select the highest known - ARM architecture when an F_ARM_5 flag is detected, since we cannot - be sure exactly which architecture this represents. - -2002-02-05 Nick Clifton - - * po/tr.po: Updated translation. - -2002-02-05 Alan Modra - - From Jimi X - * archures (bfd_mach_ppc64): Define. - (bfd_powerpc_arch): Rename to bfd_powerpc_archs. - (bfd_powerpc_arch): Define. - * bfd-in2.h: Regenerate. - * cpu-powerpc.c (arch_info_struct): Rename to bfd_powerpc_archs. - (bfd_powerpc_arch): Move to tail of bfd_powerpc_archs. - (bfd_powerpc_archs): Add default powerpc64 arch. - -2002-02-05 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocs - against section syms in readonly sections. Don't do the global - sym check if we find one. - * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise. - * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. - * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise. - * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise. - (elf_s390_grok_prstatus): Add missing prototype. + (frv_elf_merge_private_bfd_data): Clear PIC bit if FDPIC is set. + (frv_elf_print_private_bfd_data): Handle FDPIC and LIBPIC. + (elf_backend_always_size_sections): New. + (elf_backend_modify_segment_map): New. + 2003-10-31 Alexandre Oliva + * config.bfd: Added frv-*-*linux*. + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Use idx 0 for + ABS section, instead of crashing. + (elf32_frv_relocate_section): Don't crash before warning about + different segments in non-PIC relocation. + 2003-10-17 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Don't warn on LABEL24 + relocs to undefweak symbols. + (elf32_frv_relocate_section): Ditto for undefined symbols. + 2003-10-06 Alexandre Oliva + * elf32-frv.c (elf32_frv_create_dynamic_sections): Make sure + gotfixup section was created. + 2003-09-30 Alexandre Oliva + * elf32-frv.c (elf32_frv_howto_table): Change GOT12, + FUNCDESC_GOT12, GOTOFF12 and FUNCDESC_GOTOFF12 to + complain_overflow_signed. + * elf32-frv.c (_frv_add_rofixup): Do not error out if contents + have not been allocated. + (_frv_emit_got_relocs_plt_entries): Return non-void. Assert + privfd only if dynamic sections were created. + (elf32_frv_relocate_section): Compute gprel_segment, and use it + for GPREL relocs. When linking relocatable FDPIC executables, + emit warnings for relocations that would be illegal on PIE or + shared libraries. Emit rofixup for R_FRV_32 only if input object + is not FDPIC. + (_frv_create_got_section): Define _gp symbol in the rofixup + section. + (elf32_frv_finish_dynamic_sections): If rofixups needed but + dynamic sections missing, error out requesting -melf32frvfd. + 2003-09-19 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Rearrange + computation of addends from section and global or local symbol + value. Change return type to bfd_boolean, and return a failure if + a dynamic FUNCDESC or FUNCDESC_VALUE relocation that requires a + nonzero addend is required. + (elf32_frv_relocate_section): Likewise. Print error for + unsupported nonzero addends. + 2003-09-18 Alexandre Oliva + * elf32-frv.c (FRV_SYM_LOCAL): In the absence of dynamic sections, + force everything local. + (_frv_emit_got_relocs_plt_entries): Cope with NULL sec. + * elf32-frv.c (struct frv_elf_link_hash_table): Added sgotfixup. + (frv_gotfixup_section): New. + (FRV_SYM_LOCAL): Accept undefweak and local common symbols. + (struct frv_pic_relocs_info): Split relocs into relocs32, relocsfd + and relocsfdv. + (_frv_add_rofixup): New. + (_frv_emit_got_relocs_plt_entries): Generate fixups for non-PIE + fdpic executables. Use FRV_SYM_LOCAL more widely to simplify and + improve some ugly conditions. + (elf32_frv_relocate_section): Likewise. Reject inter-segment + relocations in fdpic. + (_frv_create_got_section): Create .rofixup.got section. + (struct _frv_dynamic_got_info): Added fixups. + (_frv_count_got_plt_entries): Account in-GOT relocations into + relocs32, relocsfd and relocsfdv. Account them into relocs or + fixups, as appropriate. + (elf32_frv_size_dynamic_sections): Size rofixup section. Simplify + sizing of gotrel. + (elf32_frv_finish_dynamic_sections): Verify that the right number + of relocations and fixups was generated. + (elf32_frv_check_relocs): Compute relocs32, relocsfd and + relocsfdv. + * elf32-frv.c (FRV_SYM_LOCAL): New macro, used instead of + SYMBOL_CALLS_LOCAL and SYMBOL_REFERENCES_LOCAL. + (FRV_FUNCDESC_LOCAL): New macro, used to decide whether a function + descriptor of a (formerly-)global symbol is local. + (struct frv_pic_relocs_info): Adjust comments. + (_frv_emit_got_relocs_plt_entries): Adjust. + (elf32_frv_relocate_section): Likewise. + (_frv_count_got_plt_entries): Likewise. + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Don't add global + symbol's value to addend in the common preamble. Decay dynamic + symbols to section+offset if they bind or call locally, for GOT + and FUNCDESC_VALUE, respectively. + (elf32_frv_relocate_section): Likewise. + (elf32_frv_check_relocs): Don't register as dynamic symbols of + internal or hidden visibility. + 2003-09-17 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Get addend as + argument, so as to not call _bfd_elf_rel_local_sym to compute it. + (elf32_frv_relocate_section): Pass relocation addend in. Use + original relocation addend to look up the got relocs/plt entries + table. Do not call _bfd_elf_rel_local_sym. Don't error out when + processing relocations that reference .scommon symbols. + 2003-09-15 Alexandre Oliva + Introduce support for dynamic linking. + * elf32-frv.c (R_FRV_FUNCDESC_VALUE): Mark it as 64 bits. + (elf32_frv_rel_32_howto, elf32_frv_rel_funcdesc_howto, + elf32_frv_rel_funcdesc_value_howto): New REL descriptors. + (frv_reloc_type_lookup): Return REL howtos for executables and + dynamic libraries. + (frv_info_to_howto_rel): New. + (struct frv_elf_link_hash_table): New. + (frv_hash_table, frv_got_section, frv_gotrel_section, + frv_plt_section, frv_pltrel_section, frv_relocs_info, + frv_got_initial_offset, frv_plt_initial_offset): New macros. + (frv_elf_link_hash_table_create): New. + (struct frv_pic_relocs_info): New. + (frv_pic_relocs_info_hash, frv_pic_relocs_info_eq): New. + (frv_pic_relocs_info_find): New. + (frv_pic_relocs_info_for_global, frv_pic_relocs_info_for_local): + New. + (FRV_LZPLT_BLOCK_SIZE, FRV_LZPLT_RESOLVE_LOC): New. + (_frv_add_dyn_reloc, _frv_osec_to_segment): New. + (_frv_emit_got_relocs_plt_entries): New. + (elf32_frv_relocate_section): Add support for dynamic linking. + Handle new relocations. + (_frv_create_got_section): New. + (elf32_frv_create_dynamic_sections): New. + (ELF_DYNAMIC_INTERPRETER): New. + (struct _frv_dynamic_got_info): New. + (_frv_count_got_plt_entries): New. + (struct _frv_dynamic_got_plt_info): New. + (_frv_compute_got_alloc_data): New. + (_frv_get_got_entry, _frv_get_fd_entry): New. + (_frv_assign_got_entries, _frv_assign_plt_entries): New. + (_frv_resolve_final_relocs_info): New. + (elf32_frv_size_dynamic_sections): New. + (elf32_frv_finish_dynamic_sections): New. + (elf32_frv_adjust_dynamic_symbol): New. + (elf32_frv_finish_dynamic_symbol): New. + (elf32_frv_check_relocs): Handle new relocs. Explain how the + whole thing works. + (elf_info_to_howto_rel): Define. + (bfd_elf32_bfd_link_hash_table_create): Define. + (elf_backend_create_dynamic_sections): Define. + (elf_backend_adjust_dynamic_symbol): Define. + (elf_backend_size_dynamic_sections): Define. + (elf_backend_finish_dynamic_symbol): Define. + (elf_backend_finish_dynamic_sections): Define. + (elf_backend_want_got_sym): Define. + (elf_backend_got_header_size): Define. + (elf_backend_want_got_plt): Define. + (elf_backend_plt_readonly): Define. + (elf_backend_want_plt_sym): Define. + (elf_backend_plt_header_size): Define. + (elf_backend_may_use_rel_p): Define. + (elf_backend_may_use_rela_p): Define. + (elf_backend_default_use_rela_p): Define. + 2003-08-08 Alexandre Oliva + * elf32-frv.c (R_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_GOTOFF12, + R_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFLO, R_FRV_GOTOFF12, + R_FRV_GOTOFFHI, R_FRV_GOTOFFLO): New. + (frv_reloc_map): Map the corresponding BFD relocs to them. + (frv_reloc_type_lookup): ... and back to BFD relocs. + * reloc.c: New relocs. + * bfd-in2.h, libbfd.h: Rebuilt. + 2003-08-04 Alexandre Oliva + * elf32-frv.c (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO, + R_FRV_FUNCDESC, R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI, + R_FRV_FUNCDESC_GOTLO): New. + (frv_reloc_map): Map the corresponding BFD relocs to them. + (frv_reloc_type_lookup): ... and back to BFD relocs. + * reloc.c: New relocs. + * bfd-in2.h, libbfd.h: Rebuilt. -2002-02-04 Hans-Peter Nilsson +2004-01-05 Maciej W. Rozycki - * elf64-mmix.c (mmix_dump_bpo_gregs): New function. - (mmix_elf_check_common_relocs) : - Call bfd_get_section_by_name only once. Initialize - bpodata->n_bpo_relocs_this_section. - (_bfd_mmix_prepare_linker_allocated_gregs): Remove comment - referring to DSOs. - (bpo_reloc_request_sort_fn): Don't use difference of values as - return-value. + * elf32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf32_bed): Redefine to get a separate backend data structure for + traditional targets. + * elf64-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf64_bed): Redefine to get a separate backend data structure for + traditional targets. + * elfn32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf32_bed): Redefine to get a separate backend data structure for + traditional targets. -2002-02-02 David O'Brien +2004-01-04 Mark Kettenis - * configure.in: Tweak the FreeBSD 4.x recognition more. Only treat - version 4.5 and later the same as 5-CURRENT. - * configure: Re-generate. + * elf32-sparc.c (elf32_sparc_grok_psinfo): New function. -2002-02-02 Jason Thorpe +2004-01-02 Mark Kettenis - * config.bfd (hppa*-*-netbsd*): New target. + * elf32-i386.c (elf_i386_grok_prstatus): Add support for FreeBSD. + (elf_i386_grok_psinfo): Likewise. -2002-01-31 Philipp Thomas +2004-01-02 Bernardo Innocenti - * coff-arm.c (coff_arm_merge_private_bfd_data): Move ERROR - to front of message. Unify messages with elf32-arm.h. Use - commas where neccessary. - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Use all upcase - ERROR in messages. Unify messages with coff-arm.c. Correct - VFP/FPA error message. - (elf32_arm_print_private_bfd_data): Don't mark APCS-26 and - APCS-32 for translation. + * config.bfd: Add m68k-uClinux target. -2002-02-01 Hans-Peter Nilsson +2004-01-01 Grant Edwards - Perform on-demand global register allocation from - R_MMIX_BASE_PLUS_OFFSET relocs. - * elf64-mmix.c (struct bpo_reloc_section_info, struct - bpo_reloc_request, struct bpo_greg_section_info): New. - (mmix_elf_check_common_relocs, mmix_elf_gc_sweep_hook, - bpo_reloc_request_sort_fn, mmix_elf_relax_section, - _bfd_mmix_check_all_relocs, - _bfd_mmix_prepare_linker_allocated_gregs, - _bfd_mmix_finalize_linker_allocated_gregs): New functions. - (elf_mmix_howto_table): Correct src_mask for most relocs. - (mmix_elf_perform_relocation) : New - case. - (mmix_final_link_relocate) : New - case. Fix typo in comment. New label do_mmix_reloc. - (mmix_elf_check_relocs): Abuse bfd_link_info member base_file to - store first object file with a base-plus-offset reloc. Call - mmix_elf_check_common_relocs for the part common with mmo. - (mmix_elf_final_link): Write out linker-allocated register - contents section. + * elflink.h (elf_gc_sections): Warn when gc-sections option is ignored. + * elf32-h8300.c (elf32_h8_gc_mark_hook): New function. + (elf32_h8_gc_sweep_hook): New function. + (elf_backend_gc_mark_hook): Define. (elf_backend_gc_sweep_hook): Define. - (bfd_elf64_bfd_relax_section): Define. - - * mmo.c: Don't include - (mmo_init): Correct init-once logic. - -2002-02-01 Tom Rix - - * config.bfd: Conditionally support for pre AIX 4.3. - -2002-02-01 Alan Modra - - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2002-01-31 David O'Brien - - * configure.in: Recognize the differences in core files from FreeBSD - 4.{0,1} and later versions of 4.x. This treats 4.2+ the same as - 5-CURRENT. - * configure: Regenerate. - -2002-01-31 Ivan Guzvinec - - * coff-or32.c: New file. - * cpu-or32.c: New file. - * elf32-or32.c: New file. - * archures.c: Add support for or32. - * targets.c: Add support for or32. - * bfd-in2.h: Regenerate. - * coffcode.h (coff_set_arch_mach_hook, coff_set_flags, - coff_write_object_contents): Add support for or32. - * config.bfd: Add target. - * configure.in: Add support for or32. - * configure: Regenerate. - * Makefile.am: Add support for or32. - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Add or32 files. - * po/bfd.pot: Regenerate. - -2002-01-31 Nick Clifton - Don Lindsay - - * elf32-mips.c (mips_elf_calculate_relocation): Replace 'return - false' with a return of a bfd_reloc_ error code. - -2002-01-31 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't - unexport unreferenced symbols when --export-dynamic. Call - _bfd_elf_strtab_delref when unexporting. - -2002-01-30 Daniel Jacobowitz - - * bfd-in.h: Include if it is available. - * bfd-in2.h: Regenerated. - -2002-01-31 Alan Modra - - * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions should - not go via the plt. - -2002-01-30 Nick Clifton - - * archures.c: Tidy up formatting of embedded comments. - * bfd.c: Tidy up formatting of embedded comments. - * bfd-in.h: Fix formatting of comments. - * reloc.c: Tidy up formatting of ordinary & embedded comments. - * section.c: Tidy up formatting of embedded comments. - * syms.c: Tidy up formatting of embedded comments. - * targets.c: Tidy up formatting of embedded comments. - - * bfd-in2.h: Regenerate. - -2002-01-30 Nick Clifton - - * vms-tir.c (cmd_name): New function. - (tir_cmd_name): New function. - (etir_sta, etir_sto, etir_opr, etir_stc): Use cmd_name(). - (tir_opr, tir_ctl, tir_cmd): use tir_cmd_name(). - Fix formatting. - - * peXXigen.c (pe_print_idata): Rearrange message to aid in - translation. - (pe_print_pdata): Rearrange message to aid in translation. - - * libbfd.c (warn_deprecated): Rearrange error message to aid in - translation. - - * ihex.c (ihex_write_object_contents): Fix spelling typo. - - * ieee.c (ieee_slurp_external_symbols): Remove spurious space. - - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Rearrange error - message to aid in translation. - - * elf64-mmix.c (mmix_final_link_relocate): Rearrange error message - to aid in translation. - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix typo. - -2002-01-30 Philipp Thomas - - * coff-arm.c, elf32-elf.h: Unify messages. - -2002-01-30 Nick Clifton - - * po/sv.po: Updated translation. - -2002-01-30 Philipp Thomas - - * dwarf2.c (read_abbrev): Use full section name in error message. - (decode_line_info): Likewise. - - * elf.c (_bfd_elf_symbol_from_bfd_symbol): Don't translate debugging - message. - -2002-01-30 Alan Modra - - * elf64-ppc.c (func_desc_adjust): Only provide missing function - descriptor symbols for undefined function code syms. Clear - ELF_LINK_NON_ELF so that they can stay weak. - -2002-01-29 Chris Demetriou - Mitch Lichtenberg - - * bfd-in.h (bfd_mips_elf32_create_embedded_relocs): New prototype. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): New function - to handle 32-bit ELF embedded reloc (ld --embedded-relocs) - generation. - * bfd-in2.h: Regenerate. - -2002-01-29 Chris Demetriou - - * elf32-mips.c: Add additional comments about HI16 relocation - processing. - (_bfd_mips_elf_hi16_reloc): Don't subtract address here for - pc-relative relocations. (Reverts change made on 2001-10-31.) - (_bfd_mips_elf_lo16_reloc): Subtract address of LO16 part here - for pc-relative relocations. - (mips_elf_calculate_relocation): Add a comment about a kludge - in the R_MIPS_GNU_REL_HI16 handling. - (_bfd_mips_elf_relocate_section): Implement that kludge; - adjust pc-relative HI16 relocation for difference in HI16 and - LO16 addresses, since it can't easily be done in - mips_elf_calculate_relocation. - -2002-01-29 Martin Schwidefsky - - * elf32-i386 (elf_i386_adjust_dynamic_symbol): Do not replace PLT32 - relocations with PC32 relocations for undefined or weak symbols. - * elf32-s390 (elf_i386_adjust_dynamic_symbol): Likewise. - * elf64-s390x (elf_i386_adjust_dynamic_symbol): Likewise. - -2002-01-28 Jason Thorpe - - * elfcore.h (elf_core_file_p): Improve comment for last change. - -2002-01-27 Daniel Jacobowitz - - * configure: Regenerated. - -2002-01-27 Jason Thorpe - - * elfcore.h (elf_core_file_p): Set the machine architecture - before processing the program headers. - -2002-01-26 Hans-Peter Nilsson - - * configure.in <64-bit configuration>: If using gcc, check and - emit error for egcs-1.1.2. - * configure: Regenerate. - -2002-01-26 Egor Duda - - * elf.c (elfcore_grok_win32pstatus): Copy only as much information - as possible to avoid stack corruption. - -2002-01-26 Richard Henderson - - * elf64-alpha.c (elf64_alpha_check_relocs): Don't set reltext - for non-allocated sections. - -2002-01-25 Mark Kettenis - - * elf.c (elfcore_write_prstatus): Make sure we pass the address of - prstat.pr_reg even if it is a struct. - -2002-01-25 Steve Ellcey - - * elfxx-ia64.c: Reset AIX vector function overrides for HP-UX. - -2002-01-25 Philipp Thomas - - * coffgen.c (coff_print_symbol): Don't mark info message - for translation. - -2002-01-25 Nick Clifton - - * po/fr.po: Updated translation. - * po/es.po: Updated translation. - -2002-01-25 Philipp Thomas - - * coff-alpha.c (alpha_relocate_section): Unify warning message - for GP relative relocations without GP defined. - * coff-mips.c (mips_relocate_section): Likewise. - -2002-01-25 Alan Modra - - * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Avoid - unsigned overflow when new_offset < old_offset. - -2002-01-24 Philipp Thomas - - * bfd.c (_bfd_abort): Fix typo. - -2002-01-23 Richard Henderson - - * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't suppress - plt entries for undefweak symbols. - -2002-01-23 Steve Ellcey - - * targets.c (bfd_elf32_ia64_hpux_big_vec): Add to DEFAULT_VECTOR. - (bfd_elf64_ia64_hpux_big_vec): Ditto. - (bfd_elf32_h8300_vec): Ditto. - -2002-01-23 Alan Modra - - * elf64-ppc.c: Remove stale part of ABI comment. - (NO_OPD_RELOCS): Define. - (ppc64_elf_check_relocs): Use it. - (ppc64_elf_relocate_section): Here too. - (build_one_stub): Don't point function syms at the stub. Instead, - hijack plt.offset. - (ppc64_elf_relocate_section): Check whether REL24 relocs should - really go to the stub. Make all dynamic relocs in opd against - locals. - (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of - plt.offset. - -2002-01-22 Richard Henderson - - * elf64-alpha.c (INSN_UNOP): Encode with RB as $sp. - -2002-01-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign of - TOC_BASE_OFF adjustment. - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-01-22 John David Anglin - - * configure.host (hppa*64*-*-hpux*, hppa*64*-*-linux*): Add new - host defines. - -2002-01-21 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : - Check for and emit error if sgot is NULL at this point. - -2002-01-21 Jason Thorpe - - * config.bfd (ia64*-*-netbsd*): New target. - -2002-01-21 Thomas Klausner - - * som.c (som_write_space_strings): Comment typo fix. - -2002-01-21 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func and - is_func_descriptor fields. - (link_hash_newfunc): Init them. - (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a - dot are candidates for plt entries. When processing .opd relocs, - set function descriptor strings to point inside function code - string, and set new ppc_link_hash_entry fields. - (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs. - (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with - function descriptors. It's now done in.. - (func_desc_adjust): New. - (ppc64_elf_func_desc_adjust): New. - (define elf_backend_always_size_sections): Define. - (ppc64_elf_hide_symbol): New. - (define elf_backend_hide_symbol): Define. - (allocate_dynrelocs): Remove code looking up function descriptors - as that has been done earlier. - (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash - table. - (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking - up function descriptor. - (build_one_stub): Look up the function code sym. Check for - invalid plt offsets. - (ppc64_elf_relocate_section): Tweak calls to undefined weak syms. - Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs. - - * elf-bfd.h (elf_backend_data ): Add - boolean param. - (_bfd_elf_link_hash_hide_symbol): Likewise. - * elflink.h (elf_link_add_object_symbols): Adjust call to - elf_backend_hide_symbol. - (elf_fix_symbol_flags): Likewise. - (elf_link_assign_sym_version): Likewise. Use bfd_malloc rather - than bfd_alloc. - * elf.c (_bfd_elf_link_hash_hide_symbol): Add "force_local" param. - Set ELF_LINK_FORCED_LOCAL and call _bfd_elf_strtab_delref. - * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. - (clobber_millicode_symbols): Adjust to suit new hide_symbol. - * elf32-cris.c (elf_cris_hide_symbol): Add "force_local" param - and adjust to suit. - * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise, and call - _bfd_elf_link_hash_hide_symbol rather than duplicating code. - * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. - -2002-01-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a - dynamic function descriptor symbol, not the associated function - symbol. - -2002-01-17 Eric Christopher - - * elf32-mips.c (mips_elf_calculate_relocation): Fix typo. - -2002-01-17 Nick Clifton - - * po/bfd.pot: Regenerate. - * po/fr.po: Regenerate. - -2002-01-17 Alan Modra - - * elf-bfd.h (elf_backend_data ): - Remove "Elf_Internal_Shdr *" param. - (_bfd_mips_elf_section_from_bfd_section): Ditto. - * elf32-mips.c (_bfd_mips_elf_section_from_bfd_section): Ditto. - * elf32-m32r.c (_bfd_m32r_elf_section_from_bfd_section): Ditto. - * elf32-v850.c (v850_elf_section_from_bfd_section): Ditto. - * elf64-mmix.c (mmix_elf_section_from_bfd_section): Ditto. - * elfxx-ia64.c (elfNN_hpux_backend_section_from_bfd_section): Ditto. - * elf.c (_bfd_elf_section_from_bfd_section): Allow backend - function to override special sections. Remove hdr arg from - backend call, and don't loop. - -2002-01-16 Eric Christopher - - * elf32-mips.c (mips_elf_calculate_relocation): Set require_jalxp - on R_MIPS_26 and target is 16bit. Add R_MIPS16_GPREL to list of - relocations requiring gp0 and gp. - -2002-01-16 Richard Earnshaw - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Handle - EF_ARM_VFP_FLOAT. - (elf32_arm_print_private_bfd_data): Likewise. - -2002-01-16 Nick Clifton - - * po/tr.po: Import new version. - -2002-01-16 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs. - (ppc64_elf_reloc_type_lookup): Use proper CTOR reloc. - (ORI_R0_R0_0): Correct. - -2002-01-16 Alan Modra - - * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODE - when plt_not_loaded. - * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to - clear .plt SEC_CODE here. Create .stub and correct .glink flags. - (PLT_INITIAL_ENTRY_SIZE): Set to 24. - (ppc64_elf_glink_code): Delete. - (PPC64_ELF_GLINK_SIZE): Delete. - (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11, - BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0, - ORI_R0_R0_0): Define. - (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define. - (struct ppc_link_hash_table): Add sstub and plt_overflow. - (ppc64_elf_link_hash_table_create): Init them. - (ppc64_elf_check_relocs ): Refcount .plt entry. - Don't copy to shared lib. - (ppc64_elf_check_relocs): Call bfd_set_error on errors. - (ppc64_elf_gc_sweep_hook ): Sweep plt refcount. - (allocate_dynrelocs ): Don't change function sym here. Make - room for .stub and .glink code. - (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for - DT_PPC64_GLINK. - (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call - bfd_elf64_bfd_final_link. - (bfd_elf64_bfd_final_link): Don't define. - (ppc64_elf_size_stubs): New. - (build_plt_stub): New. - (build_one_stub): New. - (ppc64_elf_build_stubs): New. - (ppc64_elf_relocate_section ): Remove assert. - (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs. - (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set - DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in - case output sections not separate. Adjust DT_RELASZ to not - include plt relocs. Set reserved got entry. Set got and plt - entry size. - (elf_backend_got_header_size): Set to 8. - * elf64-ppc.h: New file. - -2002-01-16 Alan Modra - - * elf32-arm.h (elf32_arm_size_dynamic_sections): When removing - sections, use bfd_section_list_remove. - * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. - * elflink.h (elf_link_add_object_symbols): When removing all - sections, use bfd_section_list_clear. - -2002-01-15 Nick Clifton - - * po/sv.po: New file: Swedish translation. - * configure.in (ALL_LINGUAS): Add sv. - * configure: Regenerate. - -2002-01-15 Jakub Jelinek - - * elflink.h (elf_link_input_bfd): Back out 2002-01-07 change. - * elf.c (merge_sections_remove_hook): New function. - (_bfd_elf_merge_sections): Pass it as 3rd argument to - _bfd_merge_sections. - * libbfd-in.h (_bfd_merge_sections): Add 3rd argument. - * libbfd.h: Rebuilt. - * merge.c (_bfd_merge_sections): Add remove_hook argument. - Call remove_hook if a SEC_EXCLUDE section is encountered. - -2002-01-15 Nick Clifton - - * elf32-xstormy16.c (xstormy16_reloc_map): Add new field 'table'. - (xstormy16_reloc_map): Initialise new field with correct howto - table. - (xstormy16_reloc_type_lookup): Use 'table' field to locate correct - howto entry. - -2002-01-10 Michael Snyder - - * elf.c (elfcore_write_prstatus): Use long instead of pid_t; - (elfcore_write_pstatus): Use long instead of pid_t; - * elf-bfd.h: Change prototypes to use long instead of pid_t; - -2002-01-09 Jason Thorpe - - * elf.c: Update copyright years. - (elfcore_grok_netbsd_note): Use NT_NETBSDCORE_PROCINFO - and NT_NETBSDCORE_FIRSTMACH. Improve a comment. - -2002-01-08 Michael Snyder - - Add capability to write corefile note sections, for gdb. - * elf.c (elfcore_write_note): New function. - (elfcore_write_prpsinfo): New function. - (elfcore_write_prstatus): New function. - (elfcore_write_pstatus): New function. - (elfcore_write_prfpreg): New function. - (elfcore_write_prxfpreg): New function. - * elf-bfd.h: Add prototypes for above functions. - -2002-01-08 Alexandre Oliva - - * elf.c (elf_fake_sections): Propagate errors from - elf_backend_fake_section. - -2002-01-07 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh-nbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh-nbsd.c. - (elf32-sh-nbsd.lo): New rule. - * Makefile.in: Regenerate. - * config.bfd (sh*le-*-netbsdelf*): New target. - (sh*-*-netbsdelf*): New target. - * configure.in: Include netbsd-core.lo for native sh*-*-netbsd*. - (bfd_elf32_shnbsd_vec): New vector. - (bfd_elf32_shlnbsd_vec): New vector. - * configure: Regenerate. - * elf32-sh-nbsd.c: New file. - * targets.c: Update copyright years. - (_bfd_target_vector): Add bfd_elf32_shlnbsd_vec and - bfd_elf32_shnbsd_vec. - -2002-01-07 Aldy Hernandez - - * coff-rs6000.c (READ20): Use bfd_scan_vma. - -2002-01-07 Geoffrey Keating - - * elflink.h (elf_link_input_bfd): Don't ask for the merged offset - of a symbol in a section that will be deleted. - -2002-01-07 Nick Clifton - - * po/es.po: New file: Spanish translation. - * configure.in (ALL_LINGUAS): Add es. - * configure: Regenerate. - -2002-01-06 Steve Ellcey - - * elfxx-ia64.c (is_unwind_section_name): Add target vector as - argument so we can handle HP-UX specially. - (elfNN_ia64_hpux_vec): New for use in is_unwind_section_name. - (elfNN_hpux_backend_section_from_bfd_section): New for support - of SHN_IA_64_ANSI_COMMON. - (elfNN_ia64_relax_section): Add support for SHN_IA_64_ANSI_COMMON. - (is_unwind_section_name): Add special HP-UX support. - (elfNN_ia64_section_from_shdr): Add support for more sections. - (elfNN_ia64_fake_sections): Modify is_unwind_section_name call and - add support for more sections. - (elfNN_ia64_additional_program_headers): Modify - is_unwind_section_name call. - (elfNN_ia64_modify_segment_map): Remove assumption that there is - only one unwind section in segment. - -2002-01-06 Alan Modra - - * syms.c (_bfd_generic_make_empty_symbol): New function. - * libbfd-in.h (_bfd_nosymbols_make_empty_symbol): Define as - _bfd_generic_make_empty_symbol. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * hppabsd-core.c (hppabsd_core_make_empty_symbol): Delete function. - (hppabsd_core_get_symtab_upper_bound): Don't define. - (hppabsd_core_get_symtab): Likewise. - (hppabsd_core_print_symbol): Likewise. - (hppabsd_core_get_symbol_info): Likewise. - (hppabsd_core_bfd_is_local_label_name): Likewise. - (hppabsd_core_get_lineno): Likewise. - (hppabsd_core_find_nearest_line): Likewise. - (hppabsd_core_bfd_make_debug_symbol): Likewise. - (hppabsd_core_read_minisymbols): Likewise. - (hppabsd_core_minisymbol_to_symbol): Likewise. - (hppabsd_core_vec): Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). - Formatting fixes. - * hpux-core.c: Similarly. - * irix-core.c: Similarly. - * osf-core.c: Similarly. - * sco5-core.c: Similarly. - * binary.c (binary_make_empty_symbol): Remove function, define as - _bfd_generic_make_empty_symbol. - * ihex.c (ihex_make_empty_symbol): Likewise. - * mmo.c (mmo_make_empty_symbol): Likewise. - * ppcboot.c (ppcboot_make_empty_symbol): Likewise. - * srec.c (srec_make_empty_symbol): Likewise. - * versados.c (versados_make_empty_symbol): Likewise. - * vms.c (_bfd_vms_make_empty_symbol): Remove. - (vms_make_empty_symbol): Define as _bfd_generic_make_empty_symbol. - * vms-gsd.c (_bfd_vms_slurp_gsd): Call bfd_make_empty_symbol - rather than _bfd_vms_make_empty_symbol. - * vms-misc.c (new_symbol): Likewise. - -2002-01-05 Alan Modra - - * section.c (bfd_section_init): Remove unnecessary initialisations. - (bfd_section_list_clear): New function. - (bfd_section_list_remove, bfd_section_list_insert): New macros. - (_bfd_strip_section_from_output): Use them. - * coffcode.h (coff_set_alignment_hook): Likewise. - * elf32-mips.c (_bfd_mips_elf_final_link): Likewise. - * elf64-mips.c (mips_elf64_final_link): Likewise. - * elf64-mmix.c (mmix_elf_final_link): Likewise. - * sunos.c (sunos_add_dynamic_symbols): Likewise. - * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise. - * bfd-in2.h: Regenerate. - - * netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway - rather than doing our own section handling. Clean up after errors - with bfd_release and bfd_section_list_clear. Handle unexpected - flags. - * aoutf1.h (sunos4_core_file_p): Likewise. - * aix386-core.c (aix386_core_file_p): Likewise. - * cisco-core.c (cisco_core_file_validate): Likewise. - * ptrace-core.c (ptrace_unix_core_file_p): Likewise. - * trad-core.c (trad_unix_core_file_p): Likewise. - - * hppabsd-core.c (hppabsd_core_core_file_p): Clean up after errors - with bfd_release and bfd_section_list_clear. - * hpux-core.c (hpux_core_core_file_p): Likewise. - * irix-core.c (irix_core_core_file_p): Likewise. - * lynx-core.c (lynx_core_file_p): Likewise. - * osf-core.c (osf_core_core_file_p): Likewise. - * rs6000-core.c (rs6000coff_core_p): Likewise. - * sco5-core.c (sco5_core_file_p): Likewise. - - * elf32-mips.c (_bfd_mips_elf_lo16_reloc): Simplify, and perform - sign extension adjustments without conditionals. - -2002-01-04 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash if - CIE at .eh_frame start is removed due to no FDEs referencing it. - -2002-01-04 Jason Thorpe - - * config.bfd (x86_64-*-netbsd*): New target. - * configure.in (x86_64-*-netbsd*): Set COREFILE - to netbsd-core.lo. - * configure: Regenerated. - -2002-01-03 Tom Rix - - * xcofflink.c (_bfd_xcoff_bfd_final_link): Update .pad section ordering - for recent bfd_make_section_anyway change. - -2002-01-03 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Handle - R_ARM_THM_PC11 reloc. - -2002-01-02 Nick Clifton - - * configure.in (LINGUAS): Add ja. - * configure: Regenerate. - * po/ja.po: Import from translation project's web site. - -2002-01-02 Nick Clifton - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Reformat error - messages to ease translation into other languages. + (elf_backend_can_gc_sections): Define. -For older changes see ChangeLog-0001 +For older changes see ChangeLog-0203 Local Variables: mode: change-log diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index cfce4cefb05..4cc59e0bfbe 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2356,6 +2356,20 @@ to compensate for the borrow when the low bits are added. */ BFD_RELOC_FRV_GPREL32, BFD_RELOC_FRV_GPRELHI, BFD_RELOC_FRV_GPRELLO, + BFD_RELOC_FRV_GOT12, + BFD_RELOC_FRV_GOTHI, + BFD_RELOC_FRV_GOTLO, + BFD_RELOC_FRV_FUNCDESC, + BFD_RELOC_FRV_FUNCDESC_GOT12, + BFD_RELOC_FRV_FUNCDESC_GOTHI, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + BFD_RELOC_FRV_FUNCDESC_VALUE, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + BFD_RELOC_FRV_GOTOFF12, + BFD_RELOC_FRV_GOTOFFHI, + BFD_RELOC_FRV_GOTOFFLO, /* This is a 24bit GOT-relative reloc for the mn10300. */ diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c index 9b2612327f8..e51d07d583c 100644 --- a/bfd/coff-arm.c +++ b/bfd/coff-arm.c @@ -268,7 +268,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] = 2, 2, 24, - FALSE, + TRUE, 0, complain_overflow_dont, aoutarm_fix_pcrel_26_done, @@ -276,7 +276,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] = FALSE, 0x00ffffff, 0x0, - FALSE), + PCRELOFFSET), HOWTO (ARM_32, 0, 2, @@ -1250,7 +1250,8 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, when doing a relocatable link. However, we want to convert ARM_26 to ARM_26D relocs if possible. We return a fake howto in this case without pcrel_offset set, and adjust the addend to - compensate. */ + compensate. 'partial_inplace' is also set, since we want 'done' + relocations to be reflected in section's data. */ if (rel->r_type == ARM_26 && h != NULL && info->relocatable @@ -1269,12 +1270,17 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, complain_overflow_signed, aoutarm_fix_pcrel_26 , "ARM_26", - FALSE, + TRUE, 0x00ffffff, 0x00ffffff, FALSE); addend -= rel->r_vaddr - input_section->vma; +#ifdef ARM_WINCE + /* FIXME: I don't know why, but the hack is necessary for correct + generation of bl's instruction offset. */ + addend -= 8; +#endif howto = &fake_arm26_reloc; } @@ -1734,10 +1740,13 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, #endif else #endif /* THUMBEXTENSION */ - rstat = _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, - rel->r_vaddr - input_section->vma, - val, addend); + if (info->relocatable && ! howto->partial_inplace) + rstat = bfd_reloc_ok; + else + rstat = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, + rel->r_vaddr - input_section->vma, + val, addend); #if 1 /* THUMBEXTENSION */ /* FIXME: Is this the best way to fix up thumb addresses? krk@cygnus.com diff --git a/bfd/coff-h8300.c b/bfd/coff-h8300.c index e9d19643e43..dc35ea98d73 100644 --- a/bfd/coff-h8300.c +++ b/bfd/coff-h8300.c @@ -1,6 +1,6 @@ /* BFD back-end for Renesas H8/300 COFF binaries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Steve Chamberlain, . @@ -666,6 +666,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info, bfd_vma value; bfd_vma dot; int gap, tmp; + unsigned char temp_code; switch (reloc->howto->type) { @@ -947,8 +948,12 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info, if (data[dst_address - 2] != 0x6a) abort (); + temp_code = data[src_address - 1]; + if ((temp_code & 0x10) != 0x10) + temp_code &= 0xf0; + /* Fix up the opcode. */ - switch (data[src_address - 1] & 0xf0) + switch (temp_code) { case 0x00: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20; @@ -956,6 +961,12 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info, case 0x80: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30; break; + case 0x18: + data[dst_address - 2] = 0x7f; + break; + case 0x10: + data[dst_address - 2] = 0x7e; + break; default: abort (); } @@ -972,8 +983,12 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info, if (data[dst_address - 2] != 0x6a) abort (); + temp_code = data[src_address - 1]; + if ((temp_code & 0x30) != 0x30) + temp_code &= 0xf0; + /* Fix up the opcode. */ - switch (data[src_address - 1] & 0xf0) + switch (temp_code) { case 0x20: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20; @@ -981,6 +996,12 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info, case 0xa0: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30; break; + case 0x38: + data[dst_address - 2] = 0x7f; + break; + case 0x30: + data[dst_address - 2] = 0x7e; + break; default: abort (); } diff --git a/bfd/config.bfd b/bfd/config.bfd index 4987bce2a95..da8d94684b7 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -329,7 +329,7 @@ case "${targ}" in targ_defvec=bfd_elf32_fr30_vec ;; - frv-*-elf) + frv-*-elf | frv-*-*linux*) targ_defvec=bfd_elf32_frv_vec ;; @@ -651,7 +651,7 @@ case "${targ}" in targ_defvec=m68kcoff_vec targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec" ;; - m68*-*-elf* | m68*-*-sysv4*) + m68*-*-elf* | m68*-*-sysv4* | m68*-*-uclinux*) targ_defvec=bfd_elf32_m68k_vec targ_selvecs="m68kcoff_vec ieee_vec" ;; diff --git a/bfd/doc/ChangeLog b/bfd/doc/ChangeLog index 3636ed8bfaa..33163834229 100644 --- a/bfd/doc/ChangeLog +++ b/bfd/doc/ChangeLog @@ -1,594 +1,9 @@ -2003-10-15 Andrew Cagney - - * bfdint.texi (BFD target vector symbols): Rename _get_symtab to - _canonicalize_symtab. - -2003-10-08 David Taylor - - * bfd.texinfo: Remove spurious backslash. - -2003-07-04 Josh Baratz - - * Makefile.am (MKDOC rule): Add $(CFLAGS) in case it contains - CC_FOR_BUILD specific switches. - * Makefile.in: Regenerate. - -2003-06-29 Alan Modra - - * chew.c (paramstuff): Don't emit PARAMS. - -2003-02-12 Bob Wilson - - * bfd.texinfo: Fix quotes for texinfo. Make section title - capitalization more consistent. Use @example instead of @lisp. - Replace FDL appendix with include of fdl.texi. - * fdl.texi: New file. - -2002-11-18 Klee Dienes - - * Makefile.am (DOCFILES): Add bfdwin.texi, bfdio.texi. - (PROTOS): Add bfdio.p, bfdwin.p. - (SRCDOC): Add bfdio.c, bfdwin.c. - (SRCPROT): Add bfdio.c, bfdwin.c. - (SRCIPROT): Add bfdio.c, bfdwin.c. - (LIBBFD_H_DEP): Add bfdio.c, bfdwin.c. - (BFD_H_DEP): Add bfdio.c, bfdwin.c. - Add rules for bfdio.texi, bfdwin.text. - * bfd.texinfo: Include bfdio.texi. - -2002-10-14 Alan Modra - - * Makefile.in: Regenerate. - -2002-10-11 Daniel Jacobowitz - - * Makefile.in: Regenerated. - -2002-08-29 John David Anglin - - * chew.c (paramstuff, outputdots, perform, bang and usage): Remove - void from function definitions. - -2002-08-13 Alan Modra - - * header.sed: Strip tabs. - -2002-06-08 Alan Modra - - * Makefile.am: Fix quote style in last change. - * Makefile.in: Regenerate. - -2002-06-07 Alan Modra - - * Makefile.am (libbfd.h): Don't use "echo -n". - (libcoff.h, bfd.h): Likewise. - * Makefile.in: Regenerate. - -2002-06-06 Lars Brinkhoff - - * bfdint.texi: Change registry@sco.com to registry@caldera.com. - -2002-06-05 Alan Modra - - * Makefile.am (libbfd.h): Add "Extracted from.." comment. - (libcoff.h, bfd.h): Likewise. - * Makefile.in: Regenerate. - -2002-05-25 Alan Modra - - * chew.c: Use #include "" instead of <> for local header files. - -2002-04-20 Alan Modra - - * Makefile.in: Regenerate. - -2002-02-11 Alan Modra - - * Makefile.in: Regenerate. - -2002-02-01 Alan Modra - - * chew.c (WORD): Eliminate. - -2002-01-31 Ivan Guzvinec - - * Makefile.in: Regenerate. - -2002-01-31 Alan Modra - - * chew.c (courierize): Don't modify @command params. - -2002-01-30 Nick Clifton - - * proto.str (ENUMDOC): Place two spaces between the end of - the text and the closing comment marker. - -2001-10-30 Hans-Peter Nilsson - - * bfdint.texi (BFD target vector miscellaneous): Add - bfd_target_mmo_flavour. - * bfd.texinfo (BFD back ends): Add entry for mmo. - * Makefile.am (DOCFILES): Add mmo.texi. - (SRCDOC): Add mmo.c. - (s-mmo, mmo.texi): New rules. - -2001-10-29 Kazu Hirata - - * bfdsumm.texi: Fix a typo. - -2001-10-26 Nick Clifton - - * bfd.texinfo: Change footer to refer to FSF. Change subtitle - to refer to original creation date. - -2002-01-26 Hans-Peter Nilsson - - * Makefile.am (install): Depend on install-info. - * Makefile.in: Regenerate. - -2001-10-03 Alan Modra - - * Makefile.am (BFD_H_DEP): Add ../version.h. - * Makefile.in: Regenerate. - -2001-10-02 Alan Modra - - * Makefile.in: Regenerate. - -2001-10-01 Alan Modra - - * header.sed: New file, adds header to generated files. - * Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and - bfd.h, using above. Add missing elf.c dependecy for libbfd.h. - * Makefile.in: Regenerate. - -2001-09-21 Alan Modra - - * Makefile.in: Regenerate. - -2001-09-18 Alan Modra - - * bfdint.texi: Replace reference to bfd_read with bfd_bread. - Likewise for bfd_write. - -2001-07-24 Alan Modra - - * Makefile.in: Regenerate. - -2001-06-21 Hans-Peter Nilsson - - * bfdint.texi (BFD relocation functions) : - Mention that the GNU linker is aware of input-output format - restrictions when generating relocatable output. Make new - paragraph for final-link case. - (BFD target vector swap): Fix typo. - -2001-01-25 Kazu Hirata - - * chew.c: Do not output trailing whitespaces in type and - functionname. Update copyright. - -2001-01-24 Kazu Hirata - - * chew.c: Do not output a trailing whitespace. - -2000-11-06 Nick Clifton - - * bfd.texinfo: Add GNU Free Documentation License. - -2000-07-09 Alan Modra - - * Makefile.in: Regenerate. - -2000-07-08 Alan Modra - - * chew.c (outputdots): Don't add a space before `/*'. - (courierize): Likewise. - -Wed May 24 12:03:25 2000 Hans-Peter Nilsson - - * bfdint.texi (BFD ELF processor required): Add paragraph about - target necessities for readelf. - -2000-04-30 Ben Elliston - - * bfdint.texi (BFD generated files): Fix another typo. - -2000-04-17 Ben Elliston - - * bfdint.texi (BFD_JUMP_TABLE macros): Fix typo. - -2000-04-07 Andrew Cagney - - * Makefile.in: Rebuild with current autoconf/automake. - -1999-02-04 Ian Lance Taylor - - * Makefile.in: Rebuild with current autoconf/automake. - -1998-07-23 Nick Clifton - - * bfdint.texi (BFD ELF processor required): Add paragraph - describing the necessity to create "include/elf/CPU.h". - -1998-05-07 Ian Lance Taylor - - * Makefile.am (chew.o): Add -I options for intl srcdir and - objdir. - * Makefile.in: Rebuild. - -1998-04-27 Ian Lance Taylor - - * bfdint.texi: New file. - * Makefile.am (noinst_TEXINFOS): New variable. - * Makefile.in: Rebuild. - -1998-04-13 Ian Lance Taylor - - * Makefile.in: Rebuild. - -1998-04-06 Ian Lance Taylor - - * Makefile.am (STAGESTUFF): Remove variable. - (CLEANFILES): Don't remove $(STAGESTUFF). - (DISTCLEANFILES, MAINTAINERCLEANFILES): New variables. - * Makefile.in: Rebuild. - -1998-03-27 Ian Lance Taylor - - * chew.c (skip_white_and_starts): Remove unused declaration. - (skip_white_and_stars): Add casts to avoid warnings. - (skip_trailing_newlines, paramstuff, courierize): Likewise. - (bulletize, do_fancy_stuff, iscommand): Likewise. - (kill_bogus_lines, nextword, main): Likewise. - (manglecomments): Comment out. - (outputdots, kill_bogus_lines): Remove unused local variables. - (perform, compile): Likewise. - (courierize): Fully parenthesize expression. - (copy_past_newline): Declare return value. - (print): Change printf format string. - (main): Call usage for an unrecognized option. - -1998-02-13 Ian Lance Taylor - - * Makefile.am (AUTOMAKE_OPTIONS): Define. - * Makefile.in: Rebuild. - -1998-01-26 Andreas Schwab - - * doc.str (bodytext): Don't output @* at the end. - * chew.c (kill_bogus_lines): Make sure that a period at the - beginning is recognized. - (indent): Don't put indentation at the end. - (copy_past_newline): Expand tabs. - * Makefile.am (s-reloc, s-syms): Depend on doc.str. - * Makefile.in: Rebuild. - -1997-10-01 Ian Lance Taylor - - * Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or - elfcode.h as input files; they don't contribute anything. - * Makefile.in: Rebuild. - -1997-08-15 Doug Evans - - * Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC). - * Makefile.in: Rebuild. - -1997-08-01 Ian Lance Taylor - - * Makefile.am (CC_FOR_BUILD): Don't set explicitly. - * Makefile.in: Rebuild. - -1997-07-31 Ian Lance Taylor - - * Makefile.am: New file, based on old Makefile.in. - * Makefile.in: Now built with automake. - -1997-07-22 Robert Hoehne - - * Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi - rather than bfd.texi. - (DOCFILES): Change bfd.texi to bfdt.texi. - * bfd.texinfo: Include bfdt.texi, not bfd.texi. - -1997-06-16 Ian Lance Taylor - - * Makefile.in (CC, CFLAGS): Substitute from configure script. - From Jeff Makey . - -1997-04-15 Ian Lance Taylor - - * Makefile.in (install-info): Use mkinstalldirs to build - $(infodir). - -1997-04-08 Ian Lance Taylor - - * Makefile.in (install-info): Permit info files to be in srcdir. - (stamp-*): Add a stamp-X target for each X.texi target. - (*.texi): Just depend upon stamp-X. - (clean): Remove stamp-*. - (distclean): Depend upon mostlyclean. Remove stamp-*. Don't - remove $(DOCFILES). - -1997-04-07 Ian Lance Taylor - - * Makefile.in (distclean): Don't remove *.info files. - -1997-02-13 Klaus Kaempf (kkaempf@progis.de) - - * makefile.vms: New file. - -1996-06-18 Ian Lance Taylor - - * chew.c (kill_bogus_lines): Reset sl when not at the start of a - line. From Uwe Ohse . - -1996-01-30 Ian Lance Taylor - - From Ronald F. Guilmette : - * Makefile.in (libbfd.h): Depend upon proto.str. - (libcoff.h, bfd.h): Likewise. - -1995-11-03 Fred Fish - - * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c, - renamed from core.c. - -1995-11-01 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * chew.c: Include . - -1995-10-06 Ken Raeburn - - Mon Sep 25 22:49:32 1995 Andreas Schwab - - * Makefile.in (Makefile): Only remake this Makefile. - -1995-10-04 Ken Raeburn - - * chew.c: Include . - -1995-09-12 Ian Lance Taylor - - * Makefile.in (maintainer-clean): New target. - -1995-08-31 Ian Lance Taylor - - * Makefile.in (bfd.h): Add additional #endif at end of bfd.h if - __cplusplus is defined. - -1994-11-29 Doug Evans - - * chew.c (write_buffer): New argument `f', all callers changed. - (stdout, stderr, print, drop, idrop): New forth words. - * proto.str (COMMENT): New command. - * doc.str (COMMENT): Likewise. - -1994-09-12 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * Makefile.in (DOCFILES): Remove ctor.texi. - (IPROTOS): Remove ctor.ip. - (SRCIPROT): Remove $(srcdir)/../ctor.c. - (ctor.texi): Remove target. - (libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove - $(MKDOC) run on $(srcdir)/../ctor.c. - * bfd.texinfo (Constructors): Remove section. - -1994-09-02 Ken Raeburn (raeburn@cujo.cygnus.com) - - * chew.c: Include assert.h. Added prototypes for most functions. - Changed most uses of int to long. Do bounds checking on the - stacks. Added comment at the beginning documenting most of the - intrinsics. Lots of whitespace changes. Re-ordered some - functions. - (die, check_range, icheck_range): New functions. - (strip_trailing_newlines, print_stack_level): New functions. - (translatecomments): Don't insert tab before "/*". - (iscommand): Minimum command length is now 4. - (nextword): Handle some \-sequences. - (push_addr): Deleted. - (main): Add new intrinsics strip_trailing_newlines and - print_stack_level. Complain at end if stack contains more than - one element, or less. - (remchar): Make sure the string is not empty before chopping off a - character. - - * doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX, - ENUMEQ, ENUMEQX, ENUMDOC. - -1994-01-12 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.texinfo: Added Linker Functions node. - * Makefile.in (DOCFILES): Added linker.texi. - (SRCDOC): Added linker.c. - (linker.texi): New target. - -1994-01-04 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * chew.c: Don't rely on a correct declaration of exit. - (chew_exit): New function which just calls exit. - (main): Use it. - -1994-01-03 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.texinfo: Added Hash Tables node. - * Makefile.in (DOCFILES): Added hash.texi. - (SRCDOC): Added hash.c. - (hash.texi): New target. - -1993-12-30 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in: Delete all references to seclet.c, since it's just - been deleted. Don't mention hash.c, linker.c, or genlink.h yet, - since they don't contain documentation yet (hint, hint!). - -1993-11-05 David J. Mackenzie (djm@thepub.cygnus.com) - - * bfd.texinfo: Small cleanups. - -1993-11-19 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (archures.texi): Depends on $(MKDOC). - -1993-08-10 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bfd.texinfo (BFD back end): Don't include elfcode.texi, since - it's empty now and that triggers a makeinfo bug. - -1993-08-09 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bfd.texinfo (BFD back end): New section on ELF, includes - elf.texi and elfcode.texi. - * Makefile.in (DOCFILES): Include elf.texi, elfcode.texi. - (SRCDOC): Include elfcode.h, elf.c. - (elf.texi, elfcode.texi): New intermediate targets. - -1993-06-24 David J. Mackenzie (djm@thepub.cygnus.com) - - * Makefile.in (.c.o, chew.o): Put CFLAGS last. - * bfdsumm.texi: New file, broken out of bfd.texinfo, to share - with ld.texinfo. - -1993-06-14 david d `zoo' zuhn (zoo at rtl.cygnus.com) - - * Makefile.in (install-info): remove parentdir cruft, - -1993-06-09 Jim Kingdon (kingdon@cygnus.com) - - * Makefile.in (mostlyclean): Remove chew.o. - -1993-05-25 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (libbfd.h): Use elfcode.h, not elf32.c. - -1993-05-24 Ken Raeburn (raeburn@cygnus.com) - - * chew.c (compile): Add a couple of missing casts. - -1993-05-12 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC). - (chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since - it must run on the build machine. - -1993-04-07 John Gilmore (gnu@cygnus.com) - - * Makefile.in (chew): Don't compile from .c to executable in a - single step; it puts a temporary .o filename into the executable, - which makes multi-stage comparisons fail. Compile chew.c to - chew.o, and link that, which makes identical executables every time. - -1993-03-24 david d `zoo' zuhn (zoo at poseidon.cygnus.com) - - * Makefile.in: fix typo (bfd.texinfo not bfd.texino) - -1993-03-19 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * bfd.texinfo: Since BFD version number has been bumped, do same - to "version number" on title page, and elsewhere. Should be - fixed to extract real version number. - -1993-03-16 Per Bothner (bothner@rtl.cygnus.com) - - * Makefile.in: Add *clean rules. - -1993-01-11 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c. - Added seclet.c. - (bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c - to build. - -1992-12-17 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: added dvi target, define and use $(TEXI2DVI) - -1992-12-03 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (TEXIDIR): New variable. - (bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index. - - * bfd.texinfo: Minor doc fixes. - -1992-11-05 John Gilmore (gnu@cygnus.com) - - Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS. - - * chew.c (exfunstuff): Eliminate. - (paramstuff): Replace exfunstuff with function to generate PARAMS. - * proto.str: Use paramstuff rather than exfunstuff. - -1992-08-17 Steve Chamberlain (sac@thepub.cygnus.com) - - * chew.c: various patches provided by Howard Chu. - -1992-06-19 John Gilmore (gnu at cygnus.com) - - * Makefile.in (libbfd.h): Add elf.c as a source of prototypes. - -1992-05-11 John Gilmore (gnu at cygnus.com) - - * chew.c: exit() should be declared by config files, not by - portable source code. Its type could be int or void function. - -1992-05-04 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: another CFLAGS correction. - -1992-04-28 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: Do the CFLAGS thing. - -1992-04-11 Fred Fish (fnf@cygnus.com) - - * Makefile.in (MINUS_G): Add macro and default to -g. - -1992-03-06 Steve Chamberlain (sac@thepub.cygnus.com) - - * chew.c: now has -w switch turn on warnings - -1992-02-26 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: build chew into the current directory. Complete - the MKDOC macro transition. - -1991-12-10 Steve Chamberlain (sac at rtl.cygnus.com) - - * chew.c: don't core dump when can't open file - * Makefile.in: get proto.str from the right place when built in - odd directories - -1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: infodir belongs in datadir. - -1991-12-07 Steve Chamberlain (sac at rtl.cygnus.com) - - * chew.c: Much modified - * proto.str, doc.str: New files for extracting to product - prototypes and documents respectively. - - -1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: added standards.text support, host/site/target - inclusion hooks, install using INSTALL_DATA rather than cp, - don't echo on install. - -1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: idestdir and ddestdir go away. Added copyrights - and shift gpl to v2. Added ChangeLog if it didn't exist. docdir - and mandir now keyed off datadir by default. +For older changes see ChangeLog-9103 Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 version-control: never End: diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 68b3660e248..c109fa7e3fb 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -1,6 +1,6 @@ /* DWARF 2 support. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + 2004 Free Software Foundation, Inc. Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions (gavin@cygnus.com). @@ -200,51 +200,6 @@ struct attr_abbrev #define ATTR_ALLOC_CHUNK 4 #endif -static unsigned int read_1_byte PARAMS ((bfd *, char *)); -static int read_1_signed_byte PARAMS ((bfd *, char *)); -static unsigned int read_2_bytes PARAMS ((bfd *, char *)); -static unsigned int read_4_bytes PARAMS ((bfd *, char *)); -static bfd_vma read_8_bytes PARAMS ((bfd *, char *)); -static char *read_n_bytes PARAMS ((bfd *, char *, unsigned int)); -static char *read_string PARAMS ((bfd *, char *, unsigned int *)); -static char *read_indirect_string PARAMS ((struct comp_unit *, char *, unsigned int *)); -static unsigned int read_unsigned_leb128 - PARAMS ((bfd *, char *, unsigned int *)); -static int read_signed_leb128 - PARAMS ((bfd *, char *, unsigned int *)); -static bfd_vma read_address PARAMS ((struct comp_unit *, char *)); -static struct abbrev_info *lookup_abbrev - PARAMS ((unsigned int, struct abbrev_info **)); -static struct abbrev_info **read_abbrevs - PARAMS ((bfd *, bfd_vma, struct dwarf2_debug *)); -static char *read_attribute - PARAMS ((struct attribute *, struct attr_abbrev *, - struct comp_unit *, char *)); -static char *read_attribute_value - PARAMS ((struct attribute *, unsigned, - struct comp_unit *, char *)); -static void add_line_info - PARAMS ((struct line_info_table *, bfd_vma, char *, - unsigned int, unsigned int, int)); -static char *concat_filename PARAMS ((struct line_info_table *, unsigned int)); -static void arange_add PARAMS ((struct comp_unit *, bfd_vma, bfd_vma)); -static struct line_info_table *decode_line_info - PARAMS ((struct comp_unit *, struct dwarf2_debug *)); -static bfd_boolean lookup_address_in_line_info_table - PARAMS ((struct line_info_table *, bfd_vma, struct funcinfo *, - const char **, unsigned int *)); -static bfd_boolean lookup_address_in_function_table - PARAMS ((struct funcinfo *, bfd_vma, struct funcinfo **, const char **)); -static bfd_boolean scan_unit_for_functions PARAMS ((struct comp_unit *)); -static struct comp_unit *parse_comp_unit - PARAMS ((bfd *, struct dwarf2_debug *, bfd_vma, unsigned int)); -static bfd_boolean comp_unit_contains_address - PARAMS ((struct comp_unit *, bfd_vma)); -static bfd_boolean comp_unit_find_nearest_line - PARAMS ((struct comp_unit *, bfd_vma, const char **, const char **, - unsigned int *, struct dwarf2_debug *)); -static asection *find_debug_info PARAMS ((bfd *, asection *)); - /* VERBATIM The following function up to the END VERBATIM mark are copied directly from dwarf2read.c. */ @@ -252,74 +207,39 @@ static asection *find_debug_info PARAMS ((bfd *, asection *)); /* Read dwarf information from a buffer. */ static unsigned int -read_1_byte (abfd, buf) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; +read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf) { - return bfd_get_8 (abfd, (bfd_byte *) buf); + return bfd_get_8 (abfd, buf); } static int -read_1_signed_byte (abfd, buf) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; +read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf) { - return bfd_get_signed_8 (abfd, (bfd_byte *) buf); + return bfd_get_signed_8 (abfd, buf); } static unsigned int -read_2_bytes (abfd, buf) - bfd *abfd; - char *buf; -{ - return bfd_get_16 (abfd, (bfd_byte *) buf); -} - -#if 0 /* This is not used. */ - -static int -read_2_signed_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_2_bytes (bfd *abfd, char *buf) { - return bfd_get_signed_16 (abfd, (bfd_byte *) buf); + return bfd_get_16 (abfd, buf); } -#endif - static unsigned int -read_4_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_4_bytes (bfd *abfd, char *buf) { - return bfd_get_32 (abfd, (bfd_byte *) buf); + return bfd_get_32 (abfd, buf); } -#if 0 /* This is not used. */ - -static int -read_4_signed_bytes (abfd, buf) - bfd *abfd; - char *buf; -{ - return bfd_get_signed_32 (abfd, (bfd_byte *) buf); -} - -#endif - static bfd_vma -read_8_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_8_bytes (bfd *abfd, char *buf) { - return bfd_get_64 (abfd, (bfd_byte *) buf); + return bfd_get_64 (abfd, buf); } static char * -read_n_bytes (abfd, buf, size) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int size ATTRIBUTE_UNUSED; +read_n_bytes (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int size ATTRIBUTE_UNUSED) { /* If the size of a host char is 8 bits, we can return a pointer to the buffer, otherwise we have to copy the data to a buffer @@ -328,10 +248,9 @@ read_n_bytes (abfd, buf, size) } static char * -read_string (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int *bytes_read_ptr; +read_string (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int *bytes_read_ptr) { /* Return a pointer to the embedded string. */ if (*buf == '\0') @@ -345,10 +264,9 @@ read_string (abfd, buf, bytes_read_ptr) } static char * -read_indirect_string (unit, buf, bytes_read_ptr) - struct comp_unit* unit; - char *buf; - unsigned int *bytes_read_ptr; +read_indirect_string (struct comp_unit* unit, + char *buf, + unsigned int *bytes_read_ptr) { bfd_vma offset; struct dwarf2_debug *stash = unit->stash; @@ -374,12 +292,12 @@ read_indirect_string (unit, buf, bytes_read_ptr) } stash->dwarf_str_size = msec->_raw_size; - stash->dwarf_str_buffer = (char*) bfd_alloc (abfd, msec->_raw_size); + stash->dwarf_str_buffer = bfd_alloc (abfd, msec->_raw_size); if (! stash->dwarf_abbrev_buffer) return NULL; if (! bfd_get_section_contents (abfd, msec, stash->dwarf_str_buffer, - (bfd_vma) 0, msec->_raw_size)) + 0, msec->_raw_size)) return NULL; } @@ -398,10 +316,9 @@ read_indirect_string (unit, buf, bytes_read_ptr) } static unsigned int -read_unsigned_leb128 (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int *bytes_read_ptr; +read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int *bytes_read_ptr) { unsigned int result; unsigned int num_read; @@ -414,7 +331,7 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr) do { - byte = bfd_get_8 (abfd, (bfd_byte *) buf); + byte = bfd_get_8 (abfd, buf); buf ++; num_read ++; result |= ((byte & 0x7f) << shift); @@ -428,10 +345,9 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr) } static int -read_signed_leb128 (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int * bytes_read_ptr; +read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int * bytes_read_ptr) { int result; int shift; @@ -444,7 +360,7 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr) do { - byte = bfd_get_8 (abfd, (bfd_byte *) buf); + byte = bfd_get_8 (abfd, buf); buf ++; num_read ++; result |= ((byte & 0x7f) << shift); @@ -463,18 +379,16 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr) /* END VERBATIM */ static bfd_vma -read_address (unit, buf) - struct comp_unit* unit; - char *buf; +read_address (struct comp_unit *unit, char *buf) { switch (unit->addr_size) { case 8: - return bfd_get_64 (unit->abfd, (bfd_byte *) buf); + return bfd_get_64 (unit->abfd, buf); case 4: - return bfd_get_32 (unit->abfd, (bfd_byte *) buf); + return bfd_get_32 (unit->abfd, buf); case 2: - return bfd_get_16 (unit->abfd, (bfd_byte *) buf); + return bfd_get_16 (unit->abfd, buf); default: abort (); } @@ -483,9 +397,7 @@ read_address (unit, buf) /* Lookup an abbrev_info structure in the abbrev hash table. */ static struct abbrev_info * -lookup_abbrev (number,abbrevs) - unsigned int number; - struct abbrev_info **abbrevs; +lookup_abbrev (unsigned int number, struct abbrev_info **abbrevs) { unsigned int hash_number; struct abbrev_info *abbrev; @@ -510,10 +422,7 @@ lookup_abbrev (number,abbrevs) in a hash table. */ static struct abbrev_info** -read_abbrevs (abfd, offset, stash) - bfd * abfd; - bfd_vma offset; - struct dwarf2_debug *stash; +read_abbrevs (bfd *abfd, bfd_vma offset, struct dwarf2_debug *stash) { struct abbrev_info **abbrevs; char *abbrev_ptr; @@ -551,7 +460,7 @@ read_abbrevs (abfd, offset, stash) } amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE; - abbrevs = (struct abbrev_info**) bfd_zalloc (abfd, amt); + abbrevs = bfd_zalloc (abfd, amt); abbrev_ptr = stash->dwarf_abbrev_buffer + offset; abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); @@ -561,7 +470,7 @@ read_abbrevs (abfd, offset, stash) while (abbrev_number) { amt = sizeof (struct abbrev_info); - cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt); + cur_abbrev = bfd_zalloc (abfd, amt); /* Read in abbrev header. */ cur_abbrev->number = abbrev_number; @@ -583,8 +492,7 @@ read_abbrevs (abfd, offset, stash) { amt = cur_abbrev->num_attrs + ATTR_ALLOC_CHUNK; amt *= sizeof (struct attr_abbrev); - cur_abbrev->attrs = ((struct attr_abbrev *) - bfd_realloc (cur_abbrev->attrs, amt)); + cur_abbrev->attrs = bfd_realloc (cur_abbrev->attrs, amt); if (! cur_abbrev->attrs) return 0; } @@ -625,11 +533,10 @@ read_abbrevs (abfd, offset, stash) /* Read an attribute value described by an attribute form. */ static char * -read_attribute_value (attr, form, unit, info_ptr) - struct attribute *attr; - unsigned form; - struct comp_unit *unit; - char *info_ptr; +read_attribute_value (struct attribute *attr, + unsigned form, + struct comp_unit *unit, + char *info_ptr) { bfd *abfd = unit->abfd; unsigned int bytes_read; @@ -648,7 +555,7 @@ read_attribute_value (attr, form, unit, info_ptr) break; case DW_FORM_block2: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_2_bytes (abfd, info_ptr); info_ptr += 2; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -657,7 +564,7 @@ read_attribute_value (attr, form, unit, info_ptr) break; case DW_FORM_block4: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_4_bytes (abfd, info_ptr); info_ptr += 4; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -686,7 +593,7 @@ read_attribute_value (attr, form, unit, info_ptr) break; case DW_FORM_block: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -695,7 +602,7 @@ read_attribute_value (attr, form, unit, info_ptr) break; case DW_FORM_block1: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_1_byte (abfd, info_ptr); info_ptr += 1; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -754,11 +661,10 @@ read_attribute_value (attr, form, unit, info_ptr) /* Read an attribute described by an abbreviated attribute. */ static char * -read_attribute (attr, abbrev, unit, info_ptr) - struct attribute *attr; - struct attr_abbrev *abbrev; - struct comp_unit *unit; - char *info_ptr; +read_attribute (struct attribute *attr, + struct attr_abbrev *abbrev, + struct comp_unit *unit, + char *info_ptr) { attr->name = abbrev->name; info_ptr = read_attribute_value (attr, abbrev->form, unit, info_ptr); @@ -814,16 +720,15 @@ struct funcinfo line_info->prev_line always accesses an equal or smaller VMA. */ static void -add_line_info (table, address, filename, line, column, end_sequence) - struct line_info_table* table; - bfd_vma address; - char* filename; - unsigned int line; - unsigned int column; - int end_sequence; +add_line_info (struct line_info_table *table, + bfd_vma address, + char *filename, + unsigned int line, + unsigned int column, + int end_sequence) { bfd_size_type amt = sizeof (struct line_info); - struct line_info* info = (struct line_info*) bfd_alloc (table->abfd, amt); + struct line_info* info = bfd_alloc (table->abfd, amt); /* Find the correct location for 'info'. Normally we will receive new line_info data 1) in order and 2) with increasing VMAs. @@ -912,9 +817,7 @@ add_line_info (table, address, filename, line, column, end_sequence) responsibility to free it. */ static char * -concat_filename (table, file) - struct line_info_table* table; - unsigned int file; +concat_filename (struct line_info_table *table, unsigned int file) { char* filename; @@ -951,10 +854,7 @@ concat_filename (table, file) } static void -arange_add (unit, low_pc, high_pc) - struct comp_unit *unit; - bfd_vma low_pc; - bfd_vma high_pc; +arange_add (struct comp_unit *unit, bfd_vma low_pc, bfd_vma high_pc) { struct arange *arange; @@ -987,8 +887,7 @@ arange_add (unit, low_pc, high_pc) } /* Need to allocate a new arange and insert it into the arange list. */ - arange = (struct arange *) - bfd_zalloc (unit->abfd, (bfd_size_type) sizeof (*arange)); + arange = bfd_zalloc (unit->abfd, sizeof (*arange)); arange->low = low_pc; arange->high = high_pc; @@ -999,9 +898,7 @@ arange_add (unit, low_pc, high_pc) /* Decode the line number information for UNIT. */ static struct line_info_table* -decode_line_info (unit, stash) - struct comp_unit *unit; - struct dwarf2_debug *stash; +decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) { bfd *abfd = unit->abfd; struct line_info_table* table; @@ -1044,7 +941,7 @@ decode_line_info (unit, stash) } amt = sizeof (struct line_info_table); - table = (struct line_info_table*) bfd_alloc (abfd, amt); + table = bfd_alloc (abfd, amt); table->abfd = abfd; table->comp_dir = unit->comp_dir; @@ -1096,7 +993,7 @@ decode_line_info (unit, stash) lh.opcode_base = read_1_byte (abfd, line_ptr); line_ptr += 1; amt = lh.opcode_base * sizeof (unsigned char); - lh.standard_opcode_lengths = (unsigned char *) bfd_alloc (abfd, amt); + lh.standard_opcode_lengths = bfd_alloc (abfd, amt); lh.standard_opcode_lengths[0] = 1; @@ -1115,7 +1012,7 @@ decode_line_info (unit, stash) { amt = table->num_dirs + DIR_ALLOC_CHUNK; amt *= sizeof (char *); - table->dirs = (char **) bfd_realloc (table->dirs, amt); + table->dirs = bfd_realloc (table->dirs, amt); if (! table->dirs) return 0; } @@ -1134,7 +1031,7 @@ decode_line_info (unit, stash) { amt = table->num_files + FILE_ALLOC_CHUNK; amt *= sizeof (struct fileinfo); - table->files = (struct fileinfo *) bfd_realloc (table->files, amt); + table->files = bfd_realloc (table->files, amt); if (! table->files) return 0; } @@ -1225,8 +1122,7 @@ decode_line_info (unit, stash) { amt = table->num_files + FILE_ALLOC_CHUNK; amt *= sizeof (struct fileinfo); - table->files = - (struct fileinfo *) bfd_realloc (table->files, amt); + table->files = bfd_realloc (table->files, amt); if (! table->files) return 0; } @@ -1322,13 +1218,11 @@ decode_line_info (unit, stash) LINENUMBER_PTR, are pointers to the objects to be filled in. */ static bfd_boolean -lookup_address_in_line_info_table (table, addr, function, filename_ptr, - linenumber_ptr) - struct line_info_table* table; - bfd_vma addr; - struct funcinfo *function; - const char **filename_ptr; - unsigned int *linenumber_ptr; +lookup_address_in_line_info_table (struct line_info_table *table, + bfd_vma addr, + struct funcinfo *function, + const char **filename_ptr, + unsigned int *linenumber_ptr) { /* Note: table->last_line should be a descendingly sorted list. */ struct line_info* next_line = table->last_line; @@ -1401,12 +1295,10 @@ lookup_address_in_line_info_table (table, addr, function, filename_ptr, /* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return TRUE. */ static bfd_boolean -lookup_address_in_function_table (table, addr, function_ptr, - functionname_ptr) - struct funcinfo* table; - bfd_vma addr; - struct funcinfo** function_ptr; - const char **functionname_ptr; +lookup_address_in_function_table (struct funcinfo *table, + bfd_vma addr, + struct funcinfo **function_ptr, + const char **functionname_ptr) { struct funcinfo* each_func; @@ -1431,8 +1323,7 @@ lookup_address_in_function_table (table, addr, function_ptr, to the function table. */ static bfd_boolean -scan_unit_for_functions (unit) - struct comp_unit *unit; +scan_unit_for_functions (struct comp_unit *unit) { bfd *abfd = unit->abfd; char *info_ptr = unit->first_child_die_ptr; @@ -1467,7 +1358,7 @@ scan_unit_for_functions (unit) if (abbrev->tag == DW_TAG_subprogram) { bfd_size_type amt = sizeof (struct funcinfo); - func = (struct funcinfo *) bfd_zalloc (abfd, amt); + func = bfd_zalloc (abfd, amt); func->prev_func = unit->function_table; unit->function_table = func; } @@ -1538,11 +1429,10 @@ scan_unit_for_functions (unit) to get to the line number information for the compilation unit. */ static struct comp_unit * -parse_comp_unit (abfd, stash, unit_length, offset_size) - bfd* abfd; - struct dwarf2_debug *stash; - bfd_vma unit_length; - unsigned int offset_size; +parse_comp_unit (bfd *abfd, + struct dwarf2_debug *stash, + bfd_vma unit_length, + unsigned int offset_size) { struct comp_unit* unit; unsigned int version; @@ -1615,7 +1505,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size) } amt = sizeof (struct comp_unit); - unit = (struct comp_unit*) bfd_zalloc (abfd, amt); + unit = bfd_zalloc (abfd, amt); unit->abfd = abfd; unit->addr_size = addr_size; unit->offset_size = offset_size; @@ -1655,7 +1545,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size) { /* Irix 6.2 native cc prepends .: to the compilation directory, get rid of it. */ - char *cp = (char*) strchr (comp_dir, ':'); + char *cp = strchr (comp_dir, ':'); if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/') comp_dir = cp + 1; @@ -1676,9 +1566,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size) /* Return TRUE if UNIT contains the address given by ADDR. */ static bfd_boolean -comp_unit_contains_address (unit, addr) - struct comp_unit* unit; - bfd_vma addr; +comp_unit_contains_address (struct comp_unit *unit, bfd_vma addr) { struct arange *arange; @@ -1706,14 +1594,12 @@ comp_unit_contains_address (unit, addr) FALSE otherwise. */ static bfd_boolean -comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr, - linenumber_ptr, stash) - struct comp_unit* unit; - bfd_vma addr; - const char **filename_ptr; - const char **functionname_ptr; - unsigned int *linenumber_ptr; - struct dwarf2_debug *stash; +comp_unit_find_nearest_line (struct comp_unit *unit, + bfd_vma addr, + const char **filename_ptr, + const char **functionname_ptr, + unsigned int *linenumber_ptr, + struct dwarf2_debug *stash) { bfd_boolean line_p; bfd_boolean func_p; @@ -1768,9 +1654,7 @@ comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr, #define GNU_LINKONCE_INFO ".gnu.linkonce.wi." static asection * -find_debug_info (abfd, after_sec) - bfd * abfd; - asection * after_sec; +find_debug_info (bfd *abfd, asection *after_sec) { asection * msec; @@ -1800,18 +1684,15 @@ find_debug_info (abfd, after_sec) used. */ bfd_boolean -_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, - filename_ptr, functionname_ptr, - linenumber_ptr, addr_size, pinfo) - bfd *abfd; - asection *section; - asymbol **symbols; - bfd_vma offset; - const char **filename_ptr; - const char **functionname_ptr; - unsigned int *linenumber_ptr; - unsigned int addr_size; - PTR *pinfo; +_bfd_dwarf2_find_nearest_line (bfd *abfd, + asection *section, + asymbol **symbols, + bfd_vma offset, + const char **filename_ptr, + const char **functionname_ptr, + unsigned int *linenumber_ptr, + unsigned int addr_size, + void **pinfo) { /* Read each compilation unit from the section .debug_info, and check to see if it contains the address we are searching for. If yes, @@ -1821,7 +1702,7 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, We keep a list of all the previously read compilation units, and a pointer to the next un-read compilation unit. Check the previously read units before reading more. */ - struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo; + struct dwarf2_debug *stash = *pinfo; /* What address are we looking for? */ bfd_vma addr = offset + section->vma; @@ -1845,11 +1726,11 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, asection *msec; bfd_size_type amt = sizeof (struct dwarf2_debug); - stash = (struct dwarf2_debug*) bfd_zalloc (abfd, amt); + stash = bfd_zalloc (abfd, amt); if (! stash) return FALSE; - *pinfo = (PTR) stash; + *pinfo = stash; msec = find_debug_info (abfd, NULL); if (! msec) @@ -1866,7 +1747,7 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, for (total_size = 0; msec; msec = find_debug_info (abfd, msec)) total_size += msec->_raw_size; - stash->info_ptr = (char *) bfd_alloc (abfd, total_size); + stash->info_ptr = bfd_alloc (abfd, total_size); if (stash->info_ptr == NULL) return FALSE; diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h index d42eb27f5a5..a684546eb26 100644 --- a/bfd/elf32-arm.h +++ b/bfd/elf32-arm.h @@ -205,8 +205,6 @@ struct elf32_arm_relocs_copied asection * section; /* Number of relocs copied in this section. */ bfd_size_type count; - /* Number of relocs copied in this section. */ - bfd_size_type pc_count; }; /* Arm ELF linker hash entry. */ @@ -383,7 +381,6 @@ elf32_arm_copy_indirect_symbol (const struct elf_backend_data *bed, for (q = edir->relocs_copied; q != NULL; q = q->next) if (q->section == p->section) { - q->pc_count += p->pc_count; q->count += p->count; *pp = p->next; break; @@ -1307,21 +1304,41 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, #ifndef OLD_ARM_ABI case R_ARM_XPC25: #endif + case R_ARM_PLT32: /* r_symndx will be zero only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ if (r_symndx == 0) return bfd_reloc_ok; + /* Handle relocations which should use the PLT entry. ABS32/REL32 + will use the symbol's value, which may point to a PLT entry, but we + don't need to handle that here. If we created a PLT entry, all + branches in this object should go to it. */ + if ((r_type != R_ARM_ABS32 && r_type != R_ARM_REL32) + && h != NULL + && h->plt.offset != (bfd_vma) -1) + { + BFD_ASSERT (splt != NULL); + BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h)); + + value = (splt->output_section->vma + + splt->output_offset + + h->plt.offset); + return _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, value, + (bfd_vma) 0); + } + /* When generating a shared object, these relocations are copied into the output file to be resolved at run time. */ - if ((info->shared - && (input_section->flags & SEC_ALLOC) - && (h == NULL - || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT - || h->root.type != bfd_link_hash_undefweak) - && (r_type != R_ARM_PC24 - || !SYMBOL_CALLS_LOCAL (info, h)))) + if (info->shared + && (input_section->flags & SEC_ALLOC) + && (h == NULL + || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak) + && r_type != R_ARM_PC24 + && r_type != R_ARM_PLT32) { Elf_Internal_Rela outrel; bfd_byte *loc; @@ -1364,8 +1381,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, memset (&outrel, 0, sizeof outrel); else if (h != NULL && h->dynindx != -1 - && (r_type == R_ARM_PC24 - || !info->shared + && (!info->shared || !info->symbolic || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)) @@ -1397,6 +1413,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, case R_ARM_XPC25: /* Arm BLX instruction. */ #endif case R_ARM_PC24: /* Arm B/BL instruction */ + case R_ARM_PLT32: #ifndef OLD_ARM_ABI if (r_type == R_ARM_XPC25) { @@ -1869,37 +1886,6 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, contents, rel->r_offset, value, (bfd_vma) 0); - case R_ARM_PLT32: - /* Relocation is to the entry for this symbol in the - procedure linkage table. */ - - /* Resolve a PLT32 reloc against a local symbol directly, - without using the procedure linkage table. */ - if (h == NULL) - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - - if (h->plt.offset == (bfd_vma) -1 - || globals->splt == NULL) - /* We didn't make a PLT entry for this symbol. This - happens when statically linking PIC code, or when - using -Bsymbolic. */ - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - - BFD_ASSERT(splt != NULL); - if (splt == NULL) - return bfd_reloc_notsupported; - - value = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - case R_ARM_SBREL32: return bfd_reloc_notsupported; @@ -2808,6 +2794,7 @@ elf32_arm_gc_sweep_hook (abfd, info, sec, relocs) case R_ARM_ABS32: case R_ARM_REL32: case R_ARM_PC24: + case R_ARM_PLT32: r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx >= symtab_hdr->sh_info) { @@ -2817,31 +2804,24 @@ elf32_arm_gc_sweep_hook (abfd, info, sec, relocs) h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - if (!info->shared && h->plt.refcount > 0) + if (h->plt.refcount > 0) h->plt.refcount -= 1; - eh = (struct elf32_arm_link_hash_entry *) h; - - for (pp = &eh->relocs_copied; (p = *pp) != NULL; pp = &p->next) - if (p->section == sec) - { - if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24) - p->pc_count -= 1; - p->count -= 1; - if (p->count == 0) - *pp = p->next; - break; - } - } - break; + if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32 + || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32) + { + eh = (struct elf32_arm_link_hash_entry *) h; - case R_ARM_PLT32: - r_symndx = ELF32_R_SYM (rel->r_info); - if (r_symndx >= symtab_hdr->sh_info) - { - h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - if (h->plt.refcount > 0) - h->plt.refcount -= 1; + for (pp = &eh->relocs_copied; (p = *pp) != NULL; + pp = &p->next) + if (p->section == sec) + { + p->count -= 1; + if (p->count == 0) + *pp = p->next; + break; + } + } } break; @@ -2902,23 +2882,6 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) switch (ELF32_R_TYPE (rel->r_info)) { - case R_ARM_PLT32: - /* This symbol requires a procedure linkage table entry. We - actually build the entry in adjust_dynamic_symbol, - because this might be a case of linking PIC code which is - never referenced by a dynamic object, in which case we - don't need to generate a procedure linkage table entry - after all. */ - - /* If this is a local symbol, we resolve it directly without - creating a procedure linkage table entry. */ - if (h == NULL) - continue; - - h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; - h->plt.refcount++; - break; - case R_ARM_GOT32: /* This symbol requires a global offset table entry. */ if (h != NULL) @@ -2961,7 +2924,8 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) case R_ARM_ABS32: case R_ARM_REL32: case R_ARM_PC24: - if (h != NULL && !info->shared) + case R_ARM_PLT32: + if (h != NULL) { /* If this reloc is in a read-only section, we might need a copy reloc. We can't check reliably at this @@ -2969,10 +2933,15 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) sections have not yet been mapped to output sections. Tentatively set the flag for now, and correct in adjust_dynamic_symbol. */ - h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; - + if (!info->shared) + h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; + /* We may need a .plt entry if the function this reloc - refers to is in a shared lib. */ + refers to is in a different object. */ + if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24 + || ELF32_R_TYPE (rel->r_info) == R_ARM_PLT32) + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + h->plt.refcount += 1; } @@ -2990,7 +2959,8 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) relocs_copied field of the hash table entry. */ if (info->shared && (sec->flags & SEC_ALLOC) != 0 - && (ELF32_R_TYPE (rel->r_info) != R_ARM_PC24 + && ((ELF32_R_TYPE (rel->r_info) != R_ARM_PC24 + && ELF32_R_TYPE (rel->r_info) != R_ARM_PLT32) || (h != NULL && (! info->symbolic || (h->elf_link_hash_flags @@ -3068,12 +3038,11 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) *head = p; p->section = sec; p->count = 0; - p->pc_count = 0; } - p->count += 1; - if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24) - p->pc_count += 1; + if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32 + || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32) + p->count += 1; } break; @@ -3348,7 +3317,7 @@ allocate_dynrelocs (h, inf) } if (info->shared - || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h)) + || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h)) { asection *s = htab->splt; @@ -3432,29 +3401,8 @@ allocate_dynrelocs (h, inf) if (info->shared) { - /* The only reloc that uses pc_count is R_ARM_PC24, which will - appear on a call or on something like ".long foo - .". We - want calls to protected symbols to resolve directly to the - function rather than going via the plt. If people want - function pointer comparisons to work as expected then they - should avoid writing assembly like ".long foo - .". */ - if (SYMBOL_CALLS_LOCAL (info, h)) - { - struct elf32_arm_relocs_copied **pp; - - for (pp = &eh->relocs_copied; (p = *pp) != NULL; ) - { - p->count -= p->pc_count; - p->pc_count = 0; - if (p->count == 0) - *pp = p->next; - else - pp = &p->next; - } - } - - /* Also discard relocs on undefined weak syms with non-default - visibility. */ + /* Discard relocs on undefined weak syms with non-default + visibility. */ if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT && h->root.type == bfd_link_hash_undefweak) eh->relocs_copied = NULL; diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c index 2c634740668..e2a51f64181 100644 --- a/bfd/elf32-cris.c +++ b/bfd/elf32-cris.c @@ -1770,26 +1770,27 @@ cris_elf_gc_sweep_hook (abfd, info, sec, relocs) struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; asection *sgot; asection *srelgot; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - local_got_refcounts = elf_local_got_refcounts (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + sgot = bfd_get_section_by_name (dynobj, ".got"); srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_CRIS_16_GOT: diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c index 5157f407f40..016f233545d 100644 --- a/bfd/elf32-frv.c +++ b/bfd/elf32-frv.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "libbfd.h" #include "elf-bfd.h" #include "elf/frv.h" +#include "hashtab.h" /* Forward declarations. */ static bfd_reloc_status_type elf32_frv_relocate_lo16 @@ -236,6 +237,229 @@ static reloc_howto_type elf32_frv_howto_table [] = 0xffff, /* src_mask */ 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + the symbol. */ + HOWTO (R_FRV_GOT12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOT12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 32-bit address of the canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOT12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOT12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 32-bit address of the canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_VALUE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_VALUE", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFF12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFF12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFFHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFFHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFFLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFFLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + the symbol. */ + HOWTO (R_FRV_GOTOFF12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFF12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTOFFHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFFHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTOFFLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFFLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + }; /* GNU extension to record C++ vtable hierarchy. */ @@ -269,6 +493,54 @@ static reloc_howto_type elf32_frv_vtentry_howto = 0, /* src_mask */ 0, /* dst_mask */ FALSE); /* pcrel_offset */ + +/* The following 3 relocations are REL. The only difference to the + entries in the table above are that partial_inplace is TRUE. */ +static reloc_howto_type elf32_frv_rel_32_howto = + HOWTO (R_FRV_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_32", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + +static reloc_howto_type elf32_frv_rel_funcdesc_howto = + HOWTO (R_FRV_FUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + +static reloc_howto_type elf32_frv_rel_funcdesc_value_howto = + HOWTO (R_FRV_FUNCDESC_VALUE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_VALUE", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + /* Map BFD reloc types to FRV ELF reloc types. */ #if 0 @@ -291,75 +563,807 @@ static const struct frv_reloc_map frv_reloc_map [] = { BFD_RELOC_FRV_GPREL32, R_FRV_GPREL32 }, { BFD_RELOC_FRV_GPRELHI, R_FRV_GPRELHI }, { BFD_RELOC_FRV_GPRELLO, R_FRV_GPRELLO }, + { BFD_RELOC_FRV_GOT12, R_FRV_GOT12 }, + { BFD_RELOC_FRV_GOTHI, R_FRV_GOTHI }, + { BFD_RELOC_FRV_GOTLO, R_FRV_GOTLO }, + { BFD_RELOC_FRV_FUNCDESC, R_FRV_FUNCDESC }, + { BFD_RELOC_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOT12 }, + { BFD_RELOC_FRV_FUNCDESC_GOTHI, R_FRV_FUNCDESC_GOTHI }, + { BFD_RELOC_FRV_FUNCDESC_GOTLO, R_FRV_FUNCDESC_GOTLO }, + { BFD_RELOC_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_VALUE }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFF12, R_FRV_FUNCDESC_GOTOFF12 }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFHI }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, R_FRV_FUNCDESC_GOTOFFLO }, + { BFD_RELOC_FRV_GOTOFF12, R_FRV_GOTOFF12 }, + { BFD_RELOC_FRV_GOTOFFHI, R_FRV_GOTOFFHI }, + { BFD_RELOC_FRV_GOTOFFLO, R_FRV_GOTOFFLO }, { BFD_RELOC_VTABLE_INHERIT, R_FRV_GNU_VTINHERIT }, { BFD_RELOC_VTABLE_ENTRY, R_FRV_GNU_VTENTRY }, }; #endif -/* Handle an FRV small data reloc. */ -static bfd_reloc_status_type -elf32_frv_relocate_gprel12 (info, input_bfd, input_section, relocation, - contents, value) - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - Elf_Internal_Rela *relocation; - bfd_byte *contents; - bfd_vma value; +/* An extension of the elf hash table data structure, containing some + additional FRV-specific data. */ +struct frv_elf_link_hash_table { - bfd_vma insn; - bfd_vma gp; - struct bfd_link_hash_entry *h; - - h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + struct elf_link_hash_table elf; + + /* A pointer to the .got section. */ + asection *sgot; + /* A pointer to the .rel.got section. */ + asection *sgotrel; + /* A pointer to the .rofixup section. */ + asection *sgotfixup; + /* A pointer to the .plt section. */ + asection *splt; + /* A pointer to the .rel.plt section. */ + asection *spltrel; + /* GOT base offset. */ + bfd_vma got0; + /* Location of the first non-lazy PLT entry, i.e., the number of + bytes taken by lazy PLT entries. */ + bfd_vma plt0; + /* A hash table holding information about which symbols were + referenced with which PIC-related relocations. */ + struct htab *relocs_info; +}; - gp = (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset); +/* Get the FRV ELF linker hash table from a link_info structure. */ + +#define frv_hash_table(info) \ + ((struct frv_elf_link_hash_table *) ((info)->hash)) + +#define frv_got_section(info) \ + (frv_hash_table (info)->sgot) +#define frv_gotrel_section(info) \ + (frv_hash_table (info)->sgotrel) +#define frv_gotfixup_section(info) \ + (frv_hash_table (info)->sgotfixup) +#define frv_plt_section(info) \ + (frv_hash_table (info)->splt) +#define frv_pltrel_section(info) \ + (frv_hash_table (info)->spltrel) +#define frv_relocs_info(info) \ + (frv_hash_table (info)->relocs_info) +#define frv_got_initial_offset(info) \ + (frv_hash_table (info)->got0) +#define frv_plt_initial_offset(info) \ + (frv_hash_table (info)->plt0) + +/* Create an FRV ELF linker hash table. */ + +static struct bfd_link_hash_table * +frv_elf_link_hash_table_create (bfd *abfd) +{ + struct frv_elf_link_hash_table *ret; + bfd_size_type amt = sizeof (struct frv_elf_link_hash_table); - value -= input_section->output_section->vma; - value -= (gp - input_section->output_section->vma); + ret = bfd_zalloc (abfd, amt); + if (ret == NULL) + return NULL; - insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); + if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, + _bfd_elf_link_hash_newfunc)) + { + free (ret); + return NULL; + } - value += relocation->r_addend; + return &ret->elf.root; +} - if ((long) value > 0x7ff || (long) value < -0x800) - return bfd_reloc_overflow; +/* Decide whether a reference to a symbol can be resolved locally or + not. If the symbol is protected, we want the local address, but + its function descriptor must be assigned by the dynamic linker. */ +#define FRV_SYM_LOCAL(INFO, H) \ + (_bfd_elf_symbol_refs_local_p ((H), (INFO), 1) \ + || ! elf_hash_table (INFO)->dynamic_sections_created \ + || (H)->root.type == bfd_link_hash_undefweak \ + || (/* The condition below is an ugly hack to get .scommon data to + be regarded as local. For some reason the + ELF_LINK_HASH_DEF_REGULAR bit is not set on such common + symbols, and the SEC_IS_COMMON bit is not set any longer + when we need to perform this test. Hopefully this + approximation is good enough. */ \ + ((H)->root.type == bfd_link_hash_defined \ + || (H)->root.type == bfd_link_hash_defweak) \ + && (H)->root.u.def.section->output_section \ + && ((H)->root.u.def.section->flags & SEC_LINKER_CREATED))) +#define FRV_FUNCDESC_LOCAL(INFO, H) \ + ((H)->dynindx == -1 || ! elf_hash_table (INFO)->dynamic_sections_created) + +/* This structure collects information on what kind of GOT, PLT or + function descriptors are required by relocations that reference a + certain symbol. */ +struct frv_pic_relocs_info +{ + /* The index of the symbol, as stored in the relocation r_info, if + we have a local symbol; -1 otherwise. */ + long symndx; + union + { + /* The input bfd in which the symbol is defined, if it's a local + symbol. */ + bfd *abfd; + /* If symndx == -1, the hash table entry corresponding to a global + symbol (even if it turns out to bind locally, in which case it + should ideally be replaced with section's symndx + addend). */ + struct elf_link_hash_entry *h; + } d; + /* The addend of the relocation that references the symbol. */ + bfd_vma addend; + + /* The fields above are used to identify an entry. The fields below + contain information on how an entry is used and, later on, which + locations it was assigned. */ + /* The following 3 fields record whether the symbol+addend above was + ever referenced with a GOT relocation. The 12 suffix indicates a + GOT12 relocation; los is used for GOTLO relocations that are not + matched by a GOTHI relocation; hilo is used for GOTLO/GOTHI + pairs. */ + unsigned got12:1; + unsigned gotlos:1; + unsigned gothilo:1; + /* Whether a FUNCDESC relocation references symbol+addend. */ + unsigned fd:1; + /* Whether a FUNCDESC_GOT relocation references symbol+addend. */ + unsigned fdgot12:1; + unsigned fdgotlos:1; + unsigned fdgothilo:1; + /* Whether a FUNCDESC_GOTOFF relocation references symbol+addend. */ + unsigned fdgoff12:1; + unsigned fdgofflos:1; + unsigned fdgoffhilo:1; + /* Whether symbol+addend is referenced with GOTOFF12, GOTOFFLO or + GOTOFFHI relocations. The addend doesn't really matter, since we + envision that this will only be used to check whether the symbol + is mapped to the same segment as the got. */ + unsigned gotoff:1; + /* Whether symbol+addend is referenced by a LABEL24 relocation. */ + unsigned call:1; + /* Whether symbol+addend is referenced by a 32 or FUNCDESC_VALUE + relocation. */ + unsigned sym:1; + /* Whether we need a PLT entry for a symbol. Should be implied by + something like: + (call && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h)) */ + unsigned plt:1; + /* Whether a function descriptor should be created in this link unit + for symbol+addend. Should be implied by something like: + (plt || fdgotoff12 || fdgotofflos || fdgotofflohi + || ((fd || fdgot12 || fdgotlos || fdgothilo) + && (symndx != -1 || FRV_FUNCDESC_LOCAL (info, d.h)))) */ + unsigned privfd:1; + /* Whether a lazy PLT entry is needed for this symbol+addend. + Should be implied by something like: + (privfd && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h) + && ! (info->flags & DF_BIND_NOW)) */ + unsigned lazyplt:1; + /* Whether we've already emitted GOT relocations and PLT entries as + needed for this symbol. */ + unsigned done:1; + + /* The number of R_FRV_32, R_FRV_FUNCDESC and R_FRV_FUNCDESC_VALUE + relocations referencing the symbol. */ + unsigned relocs32, relocsfd, relocsfdv; + + /* The offsets of the GOT entries assigned to symbol+addend, to the + function descriptor's address, and to a function descriptor, + respectively. Should be zero if unassigned. The offsets are + counted from the value that will be assigned to the PIC register, + not from the beginning of the .got section. */ + bfd_signed_vma got_entry, fdgot_entry, fd_entry; + /* The offsets of the PLT entries assigned to symbol+addend, + non-lazy and lazy, respectively. If unassigned, should be + (bfd_vma)-1. */ + bfd_vma plt_entry, lzplt_entry; +}; - bfd_put_32 (input_bfd, - (insn & 0xfffff000) | (value & 0xfff), - contents + relocation->r_offset); +/* Compute a hash with the key fields of an frv_pic_relocs_info entry. */ +static hashval_t +frv_pic_relocs_info_hash (const void *entry_) +{ + const struct frv_pic_relocs_info *entry = entry_; - return bfd_reloc_ok; + return (entry->symndx == -1 + ? entry->d.h->root.root.hash + : entry->symndx + entry->d.abfd->id * 257) + entry->addend; } -/* Handle an FRV small data reloc. for the u12 field. */ +/* Test whether the key fields of two frv_pic_relocs_info entries are + identical. */ +static int +frv_pic_relocs_info_eq (const void *entry1, const void *entry2) +{ + const struct frv_pic_relocs_info *e1 = entry1; + const struct frv_pic_relocs_info *e2 = entry2; -static bfd_reloc_status_type -elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, relocation, - contents, value) - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - Elf_Internal_Rela *relocation; - bfd_byte *contents; - bfd_vma value; + return e1->symndx == e2->symndx && e1->addend == e2->addend + && (e1->symndx == -1 ? e1->d.h == e2->d.h : e1->d.abfd == e2->d.abfd); +} + +/* Find or create an entry in a hash table HT that matches the key + fields of the given ENTRY. If it's not found, memory for a new + entry is allocated in ABFD's obstack. */ +static struct frv_pic_relocs_info * +frv_pic_relocs_info_find (struct htab *ht, + bfd *abfd, + const struct frv_pic_relocs_info *entry) { - bfd_vma insn; - bfd_vma gp; - struct bfd_link_hash_entry *h; - bfd_vma mask; + struct frv_pic_relocs_info **loc = + (struct frv_pic_relocs_info **) htab_find_slot (ht, entry, INSERT); - h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + if (*loc) + return *loc; - gp = (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset); + *loc = bfd_zalloc (abfd, sizeof (**loc)); - value -= input_section->output_section->vma; - value -= (gp - input_section->output_section->vma); + if (! *loc) + return *loc; + + (*loc)->symndx = entry->symndx; + (*loc)->d = entry->d; + (*loc)->addend = entry->addend; + (*loc)->plt_entry = (bfd_vma)-1; + (*loc)->lzplt_entry = (bfd_vma)-1; + + return *loc; +} + +/* Obtain the address of the entry in HT associated with H's symbol + + addend, creating a new entry if none existed. ABFD is only used + for memory allocation purposes. */ +inline static struct frv_pic_relocs_info * +frv_pic_relocs_info_for_global (struct htab *ht, + bfd *abfd, + struct elf_link_hash_entry *h, + bfd_vma addend) +{ + struct frv_pic_relocs_info entry; + + entry.symndx = -1; + entry.d.h = h; + entry.addend = addend; + + return frv_pic_relocs_info_find (ht, abfd, &entry); +} + +/* Obtain the address of the entry in HT associated with the SYMNDXth + local symbol of the input bfd ABFD, plus the addend, creating a new + entry if none existed. */ +inline static struct frv_pic_relocs_info * +frv_pic_relocs_info_for_local (struct htab *ht, + bfd *abfd, + long symndx, + bfd_vma addend) +{ + struct frv_pic_relocs_info entry; + + entry.symndx = symndx; + entry.d.abfd = abfd; + entry.addend = addend; + + return frv_pic_relocs_info_find (ht, abfd, &entry); +} + +/* Every block of 65535 lazy PLT entries shares a single call to the + resolver, inserted in the 32768th lazy PLT entry (i.e., entry # + 32767, counting from 0). All other lazy PLT entries branch to it + in a single instruction. */ + +#define FRV_LZPLT_BLOCK_SIZE ((bfd_vma) 8 * 65535 + 4) +#define FRV_LZPLT_RESOLV_LOC (8 * 32767) + +/* Add a dynamic relocation to the SRELOC section. */ + +inline static bfd_vma +_frv_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset, + int reloc_type, long dynindx, bfd_vma addend) +{ + Elf_Internal_Rela outrel; + bfd_vma reloc_offset; + + outrel.r_offset = offset; + outrel.r_info = ELF32_R_INFO (dynindx, reloc_type); + outrel.r_addend = addend; + + reloc_offset = sreloc->reloc_count * sizeof (Elf32_External_Rel); + BFD_ASSERT (reloc_offset < sreloc->_raw_size); + bfd_elf32_swap_reloc_out (output_bfd, &outrel, + sreloc->contents + reloc_offset); + sreloc->reloc_count++; + + return reloc_offset; +} + +/* Add a fixup to the ROFIXUP section. */ + +static bfd_vma +_frv_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset) +{ + bfd_vma fixup_offset; + + if (rofixup->flags & SEC_EXCLUDE) + return -1; + + fixup_offset = rofixup->reloc_count * 4; + if (rofixup->contents) + { + BFD_ASSERT (fixup_offset < rofixup->_raw_size); + bfd_put_32 (output_bfd, offset, rofixup->contents + fixup_offset); + } + rofixup->reloc_count++; + + return fixup_offset; +} + +/* Find the segment number in which OSEC, and output section, is + located. */ + +static unsigned +_frv_osec_to_segment (bfd *output_bfd, asection *osec) +{ + struct elf_segment_map *m; + Elf_Internal_Phdr *p; + + /* Find the segment that contains the output_section. */ + for (m = elf_tdata (output_bfd)->segment_map, + p = elf_tdata (output_bfd)->phdr; + m != NULL; + m = m->next, p++) + { + int i; + + for (i = m->count - 1; i >= 0; i--) + if (m->sections[i] == osec) + break; + + if (i >= 0) + break; + } + + return p - elf_tdata (output_bfd)->phdr; +} + +inline static bfd_boolean +_frv_osec_readonly_p (bfd *output_bfd, asection *osec) +{ + unsigned seg = _frv_osec_to_segment (output_bfd, osec); + + return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W); +} + +/* Generate relocations for GOT entries, function descriptors, and + code for PLT and lazy PLT entries. */ + +inline static bfd_boolean +_frv_emit_got_relocs_plt_entries (struct frv_pic_relocs_info *entry, + bfd *output_bfd, + struct bfd_link_info *info, + asection *sec, + Elf_Internal_Sym *sym, + bfd_vma addend) + +{ + bfd_vma fd_lazy_rel_offset = (bfd_vma)-1; + int dynindx = -1; + + if (entry->done) + return TRUE; + entry->done = 1; + + if (entry->got_entry || entry->fdgot_entry || entry->fd_entry) + { + /* If the symbol is dynamic, consider it for dynamic + relocations, otherwise decay to section + offset. */ + if (entry->symndx == -1 && entry->d.h->dynindx != -1) + dynindx = entry->d.h->dynindx; + else + { + if (sec->output_section + && ! bfd_is_abs_section (sec->output_section) + && ! bfd_is_und_section (sec->output_section)) + dynindx = elf_section_data (sec->output_section)->dynindx; + else + dynindx = 0; + } + } + + /* Generate relocation for GOT entry pointing to the symbol. */ + if (entry->got_entry) + { + int idx = dynindx; + bfd_vma ad = addend; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1) + ad += entry->d.h->root.u.def.value; + else + ad += sym->st_value; + ad += sec->output_offset; + if (sec->output_section && elf_section_data (sec->output_section)) + idx = elf_section_data (sec->output_section)->dynindx; + else + idx = 0; + } + + /* If we're linking an executable at a fixed address, we can + omit the dynamic relocation as long as the symbol is local to + this module. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (sec) + ad += sec->output_section->vma; + if (entry->symndx != -1 || + entry->d.h->root.type != bfd_link_hash_undefweak) + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->got_entry); + } + else + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->got_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + R_FRV_32, idx, ad); + + bfd_put_32 (output_bfd, ad, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->got_entry); + } + + /* Generate relocation for GOT entry pointing to a canonical + function descriptor. */ + if (entry->fdgot_entry) + { + int reloc, idx; + bfd_vma ad; + + /* If the symbol is dynamic and there may be dynamic symbol + resolution because we are or are linked with a shared + library, emit a FUNCDESC relocation such that the dynamic + linker will allocate the function descriptor. */ + if (entry->symndx == -1 && ! FRV_FUNCDESC_LOCAL (info, entry->d.h)) + { + reloc = R_FRV_FUNCDESC; + idx = dynindx; + ad = addend; + if (ad) + return FALSE; + } + else + { + /* Otherwise, we know we have a private function descriptor, + so reference it directly. */ + if (elf_hash_table (info)->dynamic_sections_created) + BFD_ASSERT (entry->privfd); + reloc = R_FRV_32; + idx = elf_section_data (frv_got_section (info)->output_section) + ->dynindx; + ad = frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + entry->fd_entry; + } + + /* If there is room for dynamic symbol resolution, emit the + dynamic relocation. However, if we're linking an executable + at a fixed location, we won't have emitted a dynamic symbol + entry for the got section, so idx will be zero, which means + we can and should compute the address of the private + descriptor ourselves. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1 + && entry->d.h->root.type == bfd_link_hash_undefweak) + ad = 0; + else + { + ad += frv_got_section (info)->output_section->vma; + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fdgot_entry); + } + } + else + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->fdgot_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + reloc, idx, ad); + + bfd_put_32 (output_bfd, ad, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fdgot_entry); + } + + /* Generate relocation to fill in a private function descriptor in + the GOT. */ + if (entry->fd_entry) + { + int idx = dynindx; + bfd_vma ad = addend; + bfd_vma ofst; + long lowword, highword; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1) + ad += entry->d.h->root.u.def.value; + else + ad += sym->st_value; + ad += sec->output_offset; + if (sec->output_section && elf_section_data (sec->output_section)) + idx = elf_section_data (sec->output_section)->dynindx; + else + idx = 0; + } + + /* If we're linking an executable at a fixed address, we can + omit the dynamic relocation as long as the symbol is local to + this module. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (sec) + ad += sec->output_section->vma; + ofst = 0; + if (entry->symndx != -1 || + entry->d.h->root.type != bfd_link_hash_undefweak) + { + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fd_entry); + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fd_entry + 4); + } + } + else + { + ofst = + _frv_add_dyn_reloc (output_bfd, + entry->lazyplt ? frv_pltrel_section (info) + : frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->fd_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + R_FRV_FUNCDESC_VALUE, idx, ad); + } + + /* If we've omitted the dynamic relocation, just emit the fixed + addresses of the symbol and of the local GOT base offset. */ + if (info->executable && !info->pie && sec && sec->output_section) + { + lowword = ad; + highword = frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + } + else if (entry->lazyplt) + { + if (ad) + return FALSE; + + fd_lazy_rel_offset = ofst; + + /* A function descriptor used for lazy or local resolving is + initialized such that its high word contains the output + section index in which the PLT entries are located, and + the low word contains the address of the lazy PLT entry + entry point, that must be within the memory region + assigned to that section. */ + lowword = entry->lzplt_entry + 4 + + frv_plt_section (info)->output_offset + + frv_plt_section (info)->output_section->vma; + highword = _frv_osec_to_segment + (output_bfd, frv_plt_section (info)->output_section); + } + else + { + /* A function descriptor for a local function gets the index + of the section. For a non-local function, it's + disregarded. */ + lowword = ad; + if (entry->symndx == -1 && entry->d.h->dynindx != -1 + && entry->d.h->dynindx == idx) + highword = 0; + else + highword = _frv_osec_to_segment (output_bfd, sec->output_section); + } + + bfd_put_32 (output_bfd, lowword, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fd_entry); + bfd_put_32 (output_bfd, highword, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fd_entry + 4); + } + + /* Generate code for the PLT entry. */ + if (entry->plt_entry != (bfd_vma) -1) + { + bfd_byte *plt_code = frv_plt_section (info)->contents + entry->plt_entry; + + BFD_ASSERT (entry->fd_entry); + + /* Figure out what kind of PLT entry we need, depending on the + location of the function descriptor within the GOT. */ + if (entry->fd_entry >= -(1 << (12 - 1)) + && entry->fd_entry < (1 << (12 - 1))) + { + /* lddi @(gr15, fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x9cccf000 | (entry->fd_entry & ((1 << 12) - 1)), + plt_code); + plt_code += 4; + } + else + { + if (entry->fd_entry >= -(1 << (16 - 1)) + && entry->fd_entry < (1 << (16 - 1))) + { + /* setlos lo(fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x9cfc0000 + | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)), + plt_code); + plt_code += 4; + } + else + { + /* sethi.p hi(fd_entry), gr14 + setlo lo(fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x1cf80000 + | ((entry->fd_entry >> 16) + & (((bfd_vma)1 << 16) - 1)), + plt_code); + bfd_put_32 (output_bfd, + 0x9cf40000 + | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)), + plt_code); + plt_code += 8; + } + /* ldd @(gr14,gr15),gr14 */ + bfd_put_32 (output_bfd, 0x9c08e14f, plt_code); + plt_code += 4; + } + /* jmpl @(gr14,gr0) */ + bfd_put_32 (output_bfd, 0x8030e000, plt_code); + } + + /* Generate code for the lazy PLT entry. */ + if (entry->lzplt_entry != (bfd_vma) -1) + { + bfd_byte *lzplt_code = frv_plt_section (info)->contents + + entry->lzplt_entry; + bfd_vma resolverStub_addr; + + bfd_put_32 (output_bfd, fd_lazy_rel_offset, lzplt_code); + lzplt_code += 4; + + resolverStub_addr = entry->lzplt_entry / FRV_LZPLT_BLOCK_SIZE + * FRV_LZPLT_BLOCK_SIZE + FRV_LZPLT_RESOLV_LOC; + if (resolverStub_addr >= frv_plt_initial_offset (info)) + resolverStub_addr = frv_plt_initial_offset (info) - 12; + + if (entry->lzplt_entry == resolverStub_addr) + { + /* This is a lazy PLT entry that includes a resolver call. */ + /* ldd @(gr15,gr0), gr4 + jmpl @(gr4,gr0) */ + bfd_put_32 (output_bfd, 0x8808f140, lzplt_code); + bfd_put_32 (output_bfd, 0x80304000, lzplt_code + 4); + } + else + { + /* bra resolverStub */ + bfd_put_32 (output_bfd, + 0xc01a0000 + | (((resolverStub_addr - entry->lzplt_entry) + / 4) & (((bfd_vma)1 << 16) - 1)), + lzplt_code); + } + } + + return TRUE; +} + +/* Handle an FRV small data reloc. */ + +static bfd_reloc_status_type +elf32_frv_relocate_gprel12 (info, input_bfd, input_section, relocation, + contents, value) + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + Elf_Internal_Rela *relocation; + bfd_byte *contents; + bfd_vma value; +{ + bfd_vma insn; + bfd_vma gp; + struct bfd_link_hash_entry *h; + + h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + + gp = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + + value -= input_section->output_section->vma; + value -= (gp - input_section->output_section->vma); + + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); + + value += relocation->r_addend; + + if ((long) value > 0x7ff || (long) value < -0x800) + return bfd_reloc_overflow; + + bfd_put_32 (input_bfd, + (insn & 0xfffff000) | (value & 0xfff), + contents + relocation->r_offset); + + return bfd_reloc_ok; +} + +/* Handle an FRV small data reloc. for the u12 field. */ + +static bfd_reloc_status_type +elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, relocation, + contents, value) + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + Elf_Internal_Rela *relocation; + bfd_byte *contents; + bfd_vma value; +{ + bfd_vma insn; + bfd_vma gp; + struct bfd_link_hash_entry *h; + bfd_vma mask; + + h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + + gp = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + + value -= input_section->output_section->vma; + value -= (gp - input_section->output_section->vma); insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); @@ -555,6 +1559,10 @@ frv_reloc_type_lookup (abfd, code) return &elf32_frv_howto_table[ (int) R_FRV_NONE]; case BFD_RELOC_32: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_32_howto; + /* Fall through. */ case BFD_RELOC_CTOR: return &elf32_frv_howto_table[ (int) R_FRV_32]; @@ -585,6 +1593,54 @@ frv_reloc_type_lookup (abfd, code) case BFD_RELOC_FRV_GPRELLO: return &elf32_frv_howto_table[ (int) R_FRV_GPRELLO]; + case BFD_RELOC_FRV_GOT12: + return &elf32_frv_howto_table[ (int) R_FRV_GOT12]; + + case BFD_RELOC_FRV_GOTHI: + return &elf32_frv_howto_table[ (int) R_FRV_GOTHI]; + + case BFD_RELOC_FRV_GOTLO: + return &elf32_frv_howto_table[ (int) R_FRV_GOTLO]; + + case BFD_RELOC_FRV_FUNCDESC: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_funcdesc_howto; + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC]; + + case BFD_RELOC_FRV_FUNCDESC_GOT12: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOT12]; + + case BFD_RELOC_FRV_FUNCDESC_GOTHI: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTHI]; + + case BFD_RELOC_FRV_FUNCDESC_GOTLO: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTLO]; + + case BFD_RELOC_FRV_FUNCDESC_VALUE: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_funcdesc_value_howto; + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_VALUE]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFF12: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFF12]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFHI]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFLO]; + + case BFD_RELOC_FRV_GOTOFF12: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFF12]; + + case BFD_RELOC_FRV_GOTOFFHI: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFHI]; + + case BFD_RELOC_FRV_GOTOFFLO: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFLO]; + case BFD_RELOC_VTABLE_INHERIT: return &elf32_frv_vtinherit_howto; @@ -621,6 +1677,34 @@ frv_info_to_howto_rela (abfd, cache_ptr, dst) break; } } + +/* Set the howto pointer for an FRV ELF REL reloc. */ +static void +frv_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, + arelent *cache_ptr, Elf_Internal_Rela *dst) +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + switch (r_type) + { + case R_FRV_32: + cache_ptr->howto = &elf32_frv_rel_32_howto; + break; + + case R_FRV_FUNCDESC: + cache_ptr->howto = &elf32_frv_rel_funcdesc_howto; + break; + + case R_FRV_FUNCDESC_VALUE: + cache_ptr->howto = &elf32_frv_rel_funcdesc_value_howto; + break; + + default: + cache_ptr->howto = NULL; + break; + } +} /* Perform a single relocation. By default we use the standard BFD routines, but a few relocs, we have to do them ourselves. */ @@ -687,6 +1771,9 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section, struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + unsigned isec_segment, got_segment, plt_segment, gprel_segment, + check_segment[2]; + int silence_segment_error = !(info->shared || info->pie); if (info->relocatable) return TRUE; @@ -695,6 +1782,27 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section, sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; + isec_segment = _frv_osec_to_segment (output_bfd, + input_section->output_section); + if (frv_got_section (info)) + got_segment = _frv_osec_to_segment (output_bfd, + frv_got_section (info) + ->output_section); + else + got_segment = -1; + if (frv_gotfixup_section (info)) + gprel_segment = _frv_osec_to_segment (output_bfd, + frv_gotfixup_section (info) + ->output_section); + else + gprel_segment = -1; + if (elf_hash_table (info)->dynamic_sections_created) + plt_segment = _frv_osec_to_segment (output_bfd, + frv_plt_section (info) + ->output_section); + else + plt_segment = -1; + for (rel = relocs; rel < relend; rel ++) { reloc_howto_type *howto; @@ -706,232 +1814,1967 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section, bfd_reloc_status_type r; const char * name = NULL; int r_type; + asection *osec; + struct frv_pic_relocs_info *picrel; + bfd_vma orig_addend = rel->r_addend; + + r_type = ELF32_R_TYPE (rel->r_info); + + if ( r_type == R_FRV_GNU_VTINHERIT + || r_type == R_FRV_GNU_VTENTRY) + continue; + + /* This is a final link. */ + r_symndx = ELF32_R_SYM (rel->r_info); + howto = elf32_frv_howto_table + ELF32_R_TYPE (rel->r_info); + h = NULL; + sym = NULL; + sec = NULL; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + osec = sec = local_sections [r_symndx]; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + } + else + { + h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + name = h->root.root.string; + + if ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && ! FRV_SYM_LOCAL (info, h)) + { + sec = NULL; + relocation = 0; + } + else + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + relocation = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + } + else if (h->root.type == bfd_link_hash_undefweak) + { + relocation = 0; + } + else if ( ! info->executable + && ! info->symbolic + && info->unresolved_syms_in_objects == RM_IGNORE + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) + relocation = 0; + else + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, + input_section, rel->r_offset, TRUE))) + return FALSE; + relocation = 0; + } + osec = sec; + } + + switch (r_type) + { + case R_FRV_LABEL24: + case R_FRV_32: + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + case R_FRV_FUNCDESC: + case R_FRV_FUNCDESC_VALUE: + if (h != NULL) + picrel = frv_pic_relocs_info_for_global (frv_relocs_info (info), + input_bfd, h, + orig_addend); + else + /* In order to find the entry we created before, we must + use the original addend, not the one that may have been + modified by _bfd_elf_rela_local_sym(). */ + picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info), + input_bfd, r_symndx, + orig_addend); + if (! picrel) + return FALSE; + + if (!_frv_emit_got_relocs_plt_entries (picrel, output_bfd, info, + osec, sym, rel->r_addend)) + { + info->callbacks->warning + (info, _("Dynamic relocation references symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + + } + + break; + + default: + picrel = NULL; + if (h && ! FRV_SYM_LOCAL (info, h)) + { + info->callbacks->warning + (info, _("relocation references symbol not defined in the module"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + break; + } + + switch (r_type) + { + case R_FRV_LABEL24: + check_segment[0] = isec_segment; + if (picrel->plt) + { + relocation = frv_plt_section (info)->output_section->vma + + frv_plt_section (info)->output_offset + + picrel->plt_entry; + check_segment[1] = plt_segment; + } + /* We don't want to warn on calls to undefined weak symbols, + as calls to them must be protected by non-NULL tests + anyway, and unprotected calls would invoke undefined + behavior. */ + else if (picrel->symndx == -1 + && picrel->d.h->root.type == bfd_link_hash_undefweak) + check_segment[1] = check_segment[0]; + else + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + relocation = picrel->got_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + relocation = picrel->fdgot_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFLO: + relocation -= frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + check_segment[0] = got_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + relocation = picrel->fd_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_FUNCDESC: + { + int dynindx; + bfd_vma addend = rel->r_addend; + + /* If the symbol is dynamic and there may be dynamic + symbol resolution because we are or are linked with a + shared library, emit a FUNCDESC relocation such that + the dynamic linker will allocate the function + descriptor. */ + if (h && ! FRV_FUNCDESC_LOCAL (info, h)) + { + if (addend) + { + info->callbacks->warning + (info, _("R_FRV_FUNCDESC references dynamic symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + dynindx = h->dynindx; + } + else + { + /* Otherwise, we know we have a private function + descriptor, so reference it directly. */ + BFD_ASSERT (picrel->privfd); + r_type = R_FRV_32; + dynindx = elf_section_data (frv_got_section + (info)->output_section)->dynindx; + addend = frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + picrel->fd_entry; + } + + /* If there is room for dynamic symbol resolution, emit + the dynamic relocation. However, if we're linking an + executable at a fixed location, we won't have emitted a + dynamic symbol entry for the got section, so idx will + be zero, which means we can and should compute the + address of the private descriptor ourselves. */ + if (info->executable && !info->pie + && (!h || FRV_FUNCDESC_LOCAL (info, h))) + { + addend += frv_got_section (info)->output_section->vma; + if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit fixups in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + if (! h || h->root.type != bfd_link_hash_undefweak) + _frv_add_rofixup (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset); + } + } + else if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit dynamic relocations in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset, + r_type, dynindx, addend); + } + + /* We want the addend in-place because dynamic + relocations are REL. Setting relocation to it should + arrange for it to be installed. */ + relocation = addend - rel->r_addend; + } + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_32: + case R_FRV_FUNCDESC_VALUE: + { + int dynindx; + bfd_vma addend = rel->r_addend; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (h && ! FRV_SYM_LOCAL (info, h)) + { + if (addend && r_type == R_FRV_FUNCDESC_VALUE) + { + info->callbacks->warning + (info, _("R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + dynindx = h->dynindx; + } + else + { + if (h) + addend += h->root.u.def.value; + else + addend += sym->st_value; + if (osec) + addend += osec->output_offset; + if (osec && osec->output_section + && ! bfd_is_abs_section (osec->output_section) + && ! bfd_is_und_section (osec->output_section)) + dynindx = elf_section_data (osec->output_section)->dynindx; + else + dynindx = 0; + } + + /* If we're linking an executable at a fixed address, we + can omit the dynamic relocation as long as the symbol + is defined in the current link unit (which is implied + by its output section not being NULL). */ + if (info->executable && !info->pie + && (!h || FRV_SYM_LOCAL (info, h))) + { + if (osec) + addend += osec->output_section->vma; + if ((elf_elfheader (input_bfd)->e_flags & EF_FRV_FDPIC) + && (bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit fixups in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + if (!h || h->root.type != bfd_link_hash_undefweak) + { + _frv_add_rofixup (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset); + if (r_type == R_FRV_FUNCDESC_VALUE) + _frv_add_rofixup + (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset + 4); + } + } + } + else + { + if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit dynamic relocations in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset, + r_type, dynindx, addend); + } + /* We want the addend in-place because dynamic + relocations are REL. Setting relocation to it + should arrange for it to be installed. */ + relocation = addend - rel->r_addend; + } + + if (r_type == R_FRV_FUNCDESC_VALUE) + { + /* If we've omitted the dynamic relocation, just emit + the fixed addresses of the symbol and of the local + GOT base offset. */ + if (info->executable && !info->pie + && (!h || FRV_SYM_LOCAL (info, h))) + bfd_put_32 (output_bfd, + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info), + contents + rel->r_offset + 4); + else + /* A function descriptor used for lazy or local + resolving is initialized such that its high word + contains the output section index in which the + PLT entries are located, and the low word + contains the offset of the lazy PLT entry entry + point into that section. */ + bfd_put_32 (output_bfd, + h && ! FRV_SYM_LOCAL (info, h) + ? 0 + : _frv_osec_to_segment (output_bfd, + sec->output_section), + contents + rel->r_offset + 4); + } + } + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_GPREL12: + case R_FRV_GPRELU12: + case R_FRV_GPREL32: + case R_FRV_GPRELHI: + case R_FRV_GPRELLO: + check_segment[0] = gprel_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + default: + check_segment[0] = isec_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + } + + if (check_segment[0] != check_segment[1] + && (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)) + { +#if 1 + /* This helps catch problems in GCC while we can't do more + than static linking. The idea is to test whether the + input file basename is crt0.o only once. */ + if (silence_segment_error == 1) + silence_segment_error = + (strlen (input_bfd->filename) == 6 + && strcmp (input_bfd->filename, "crt0.o") == 0) + || (strlen (input_bfd->filename) > 6 + && strcmp (input_bfd->filename + + strlen (input_bfd->filename) - 7, + "/crt0.o") == 0) + ? -1 : 0; +#endif + if (!silence_segment_error + /* We don't want duplicate errors for undefined + symbols. */ + && !(picrel && picrel->symndx == -1 + && picrel->d.h->root.type == bfd_link_hash_undefined)) + info->callbacks->warning + (info, + (info->shared || info->pie) + ? _("relocations between different segments are not supported") + : _("warning: relocation references a different segment"), + name, input_bfd, input_section, rel->r_offset); + if (!silence_segment_error && (info->shared || info->pie)) + return FALSE; + elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC; + } + + switch (r_type) + { + case R_FRV_GOTOFFHI: + /* We need the addend to be applied before we shift the + value right. */ + relocation += rel->r_addend; + /* Fall through. */ + case R_FRV_GOTHI: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTOFFHI: + relocation >>= 16; + /* Fall through. */ + + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFFLO: + relocation &= 0xffff; + break; + + default: + break; + } + + switch (r_type) + { + case R_FRV_LABEL24: + if (! picrel->plt) + break; + /* Fall through. */ + + /* When referencing a GOT entry, a function descriptor or a + PLT, we don't want the addend to apply to the reference, + but rather to the referenced symbol. The actual entry + will have already been created taking the addend into + account, so cancel it out here. */ + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + /* Note that we only want GOTOFFHI, not GOTOFFLO or GOTOFF12 + here, since we do want to apply the addend to the others. + Note that we've applied the addend to GOTOFFHI before we + shifted it right. */ + case R_FRV_GOTOFFHI: + relocation -= rel->r_addend; + break; + + default: + break; + } + + if (r_type == R_FRV_HI16) + r = elf32_frv_relocate_hi16 (input_bfd, rel, contents, relocation); + + else if (r_type == R_FRV_LO16) + r = elf32_frv_relocate_lo16 (input_bfd, rel, contents, relocation); + + else if (r_type == R_FRV_LABEL24) + r = elf32_frv_relocate_label24 (input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPREL12) + r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELU12) + r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELLO) + r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELHI) + r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel, + contents, relocation); + + else + r = frv_final_link_relocate (howto, input_bfd, input_section, contents, + rel, relocation); + + if (r != bfd_reloc_ok) + { + const char * msg = (const char *) NULL; + + switch (r) + { + case bfd_reloc_overflow: + r = info->callbacks->reloc_overflow + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset); + break; + + case bfd_reloc_undefined: + r = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, rel->r_offset, TRUE); + break; + + case bfd_reloc_outofrange: + msg = _("internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("internal error: dangerous relocation"); + break; + + default: + msg = _("internal error: unknown error"); + break; + } + + if (msg) + r = info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + + if (! r) + return FALSE; + } + } + + return TRUE; +} + +/* Return the section that should be marked against GC for a given + relocation. */ + +static asection * +elf32_frv_gc_mark_hook (sec, info, rel, h, sym) + asection *sec; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + Elf_Internal_Rela *rel; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; +{ + if (h != NULL) + { + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_FRV_GNU_VTINHERIT: + case R_FRV_GNU_VTENTRY: + break; + + default: + switch (h->root.type) + { + default: + break; + + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + } + } + } + else + return bfd_section_from_elf_index (sec->owner, sym->st_shndx); + + return NULL; +} + +/* Update the got entry reference counts for the section being removed. */ + +static bfd_boolean +elf32_frv_gc_sweep_hook (abfd, info, sec, relocs) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +{ + return TRUE; +} + + +/* Hook called by the linker routine which adds symbols from an object + file. We use it to put .comm items in .scomm, and not .comm. */ + +static bfd_boolean +elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) + bfd *abfd; + struct bfd_link_info *info; + const Elf_Internal_Sym *sym; + const char **namep ATTRIBUTE_UNUSED; + flagword *flagsp ATTRIBUTE_UNUSED; + asection **secp; + bfd_vma *valp; +{ + if (sym->st_shndx == SHN_COMMON + && !info->relocatable + && (int)sym->st_size <= (int)bfd_get_gp_size (abfd)) + { + /* Common symbols less than or equal to -G nn bytes are + automatically put into .sbss. */ + + asection *scomm = bfd_get_section_by_name (abfd, ".scommon"); + + if (scomm == NULL) + { + scomm = bfd_make_section (abfd, ".scommon"); + if (scomm == NULL + || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC + | SEC_IS_COMMON + | SEC_LINKER_CREATED))) + return FALSE; + } + + *secp = scomm; + *valp = sym->st_size; + } + + return TRUE; +} +/* Create a .got section, as well as its additional info field. This + is almost entirely copied from + elflink.c:_bfd_elf_create_got_section(). */ + +static bfd_boolean +_frv_create_got_section (bfd *abfd, struct bfd_link_info *info) +{ + flagword flags; + asection *s; + struct elf_link_hash_entry *h; + struct bfd_link_hash_entry *bh; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + int ptralign; + + /* This function may be called more than once. */ + s = bfd_get_section_by_name (abfd, ".got"); + if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0) + return TRUE; + + /* Machine specific: although pointers are 32-bits wide, we want the + GOT to be aligned to a 64-bit boundary, such that function + descriptors in it can be accessed with 64-bit loads and + stores. */ + ptralign = 3; + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + s = bfd_make_section (abfd, ".got"); + if (s == NULL + || !bfd_set_section_flags (abfd, s, flags) + || !bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + + if (bed->want_got_plt) + { + s = bfd_make_section (abfd, ".got.plt"); + if (s == NULL + || !bfd_set_section_flags (abfd, s, flags) + || !bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + } + + if (bed->want_got_sym) + { + /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got + (or .got.plt) section. We don't do this in the linker script + because we don't want to define the symbol if we are not creating + a global offset table. */ + bh = NULL; + if (!(_bfd_generic_link_add_one_symbol + (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, + bed->got_symbol_offset, (const char *) NULL, FALSE, + bed->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + /* Machine-specific: we want the symbol for executables as + well. */ + if (! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + + elf_hash_table (info)->hgot = h; + } + + /* The first bit of the global offset table is the header. */ + s->_raw_size += bed->got_header_size + bed->got_symbol_offset; + + /* This is the machine-specific part. Create and initialize section + data for the got. */ + frv_got_section (info) = s; + frv_relocs_info (info) = htab_try_create (1, frv_pic_relocs_info_hash, + frv_pic_relocs_info_eq, + (htab_del) NULL); + if (! frv_relocs_info (info)) + return FALSE; + + s = bfd_make_section (abfd, ".rel.got"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY)) + || ! bfd_set_section_alignment (abfd, s, 2)) + return FALSE; + + frv_gotrel_section (info) = s; + + /* Machine-specific. */ + s = bfd_make_section (abfd, ".rofixup"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY)) + || ! bfd_set_section_alignment (abfd, s, 2)) + return FALSE; + + frv_gotfixup_section (info) = s; + + /* Define _gp in .rofixup, for FDPIC. If it turns out that + we're linking with a different linker script, the linker script + will override it. */ + bh = NULL; + if (!(_bfd_generic_link_add_one_symbol + (info, abfd, "_gp", BSF_GLOBAL, s, -2048, (const char *) NULL, FALSE, + bed->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + /* Machine-specific: we want the symbol for executables as well. */ + if (! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + + return TRUE; +} + +/* Make sure the got and plt sections exist, and that our pointers in + the link hash table point to them. */ + +static bfd_boolean +elf32_frv_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) +{ + /* This is mostly copied from + elflink.c:_bfd_elf_create_dynamic_sections(). */ + flagword flags, pltflags; + asection *s; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + + /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and + .rel[a].bss sections. */ + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + pltflags = flags; + pltflags |= SEC_CODE; + if (bed->plt_not_loaded) + pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS); + if (bed->plt_readonly) + pltflags |= SEC_READONLY; + + s = bfd_make_section (abfd, ".plt"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, pltflags) + || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + return FALSE; + /* FRV-specific: remember it. */ + frv_plt_section (info) = s; + + if (bed->want_plt_sym) + { + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + struct elf_link_hash_entry *h; + struct bfd_link_hash_entry *bh = NULL; + + if (! (_bfd_generic_link_add_one_symbol + (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL, + FALSE, get_elf_backend_data (abfd)->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + if (! info->executable + && ! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + /* FRV-specific: we want rel relocations for the plt. */ + s = bfd_make_section (abfd, ".rel.plt"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + return FALSE; + /* FRV-specific: remember it. */ + frv_pltrel_section (info) = s; + + /* FRV-specific: we want to create the GOT in the FRV way. */ + if (! _frv_create_got_section (abfd, info)) + return FALSE; + + /* FRV-specific: make sure we created everything we wanted. */ + BFD_ASSERT (frv_got_section (info) && frv_gotrel_section (info) + && frv_gotfixup_section (info) + && frv_plt_section (info) && frv_pltrel_section (info)); + + if (bed->want_dynbss) + { + /* The .dynbss section is a place to put symbols which are defined + by dynamic objects, are referenced by regular objects, and are + not functions. We must allocate space for them in the process + image and use a R_*_COPY reloc to tell the dynamic linker to + initialize them at run time. The linker script puts the .dynbss + section into the .bss section of the final image. */ + s = bfd_make_section (abfd, ".dynbss"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED)) + return FALSE; + + /* The .rel[a].bss section holds copy relocs. This section is not + normally needed. We need to create it here, though, so that the + linker will map it to an output section. We can't just create it + only if we need it, because we will not know whether we need it + until we have seen all the input files, and the first time the + main linker code calls BFD after examining all the input files + (size_dynamic_sections) the input sections have already been + mapped to the output sections. If the section turns out not to + be needed, we can discard it later. We will never need this + section when generating a shared object, since they do not use + copy relocs. */ + if (! info->shared) + { + s = bfd_make_section (abfd, + (bed->default_use_rela_p + ? ".rela.bss" : ".rel.bss")); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + return FALSE; + } + } + + return TRUE; +} + +/* The name of the dynamic interpreter. This is put in the .interp + section. */ + +#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" + +#define DEFAULT_STACK_SIZE 0x20000 + +/* This structure is used to collect the number of entries present in + each addressable range of the got. */ +struct _frv_dynamic_got_info +{ + /* Several bits of information about the current link. */ + struct bfd_link_info *info; + /* Total size needed for GOT entries within the 12-, 16- or 32-bit + ranges. */ + bfd_vma got12, gotlos, gothilo; + /* Total size needed for function descriptor entries within the 12-, + 16- or 32-bit ranges. */ + bfd_vma fd12, fdlos, fdhilo; + /* Total size needed function descriptor entries referenced in PLT + entries, that would be profitable to place in offsets close to + the PIC register. */ + bfd_vma fdplt; + /* Total size needed by lazy PLT entries. */ + bfd_vma lzplt; + /* Number of relocations carried over from input object files. */ + unsigned long relocs; + /* Number of fixups introduced by relocations in input object files. */ + unsigned long fixups; +}; + +/* Compute the total GOT size required by each symbol in each range. + Symbols may require up to 4 words in the GOT: an entry pointing to + the symbol, an entry pointing to its function descriptor, and a + private function descriptors taking two words. */ + +static int +_frv_count_got_plt_entries (void **entryp, void *dinfo_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_info *dinfo = dinfo_; + + /* Allocate space for a GOT entry pointing to the symbol. */ + if (entry->got12) + dinfo->got12 += 4; + else if (entry->gotlos) + dinfo->gotlos += 4; + else if (entry->gothilo) + dinfo->gothilo += 4; + else + entry->relocs32--; + entry->relocs32++; + + /* Allocate space for a GOT entry pointing to the function + descriptor. */ + if (entry->fdgot12) + dinfo->got12 += 4; + else if (entry->fdgotlos) + dinfo->gotlos += 4; + else if (entry->fdgothilo) + dinfo->gothilo += 4; + else + entry->relocsfd--; + entry->relocsfd++; + + /* Decide whether we need a PLT entry, a function descriptor in the + GOT, and a lazy PLT entry for this symbol. */ + entry->plt = entry->call + && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h) + && elf_hash_table (dinfo->info)->dynamic_sections_created; + entry->privfd = entry->plt + || entry->fdgoff12 || entry->fdgofflos || entry->fdgoffhilo + || ((entry->fd || entry->fdgot12 || entry->fdgotlos || entry->fdgothilo) + && (entry->symndx != -1 + || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h))); + entry->lazyplt = entry->privfd + && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h) + && ! (dinfo->info->flags & DF_BIND_NOW) + && elf_hash_table (dinfo->info)->dynamic_sections_created; + + /* Allocate space for a function descriptor. */ + if (entry->fdgoff12) + dinfo->fd12 += 8; + else if (entry->fdgofflos) + dinfo->fdlos += 8; + else if (entry->privfd && entry->plt) + dinfo->fdplt += 8; + else if (entry->privfd) + dinfo->fdhilo += 8; + else + entry->relocsfdv--; + entry->relocsfdv++; + + if (entry->lazyplt) + dinfo->lzplt += 8; + + if (!dinfo->info->executable || dinfo->info->pie) + dinfo->relocs += entry->relocs32 + entry->relocsfd + entry->relocsfdv; + else + { + if (entry->symndx != -1 || FRV_SYM_LOCAL (dinfo->info, entry->d.h)) + { + if (entry->symndx != -1 + || entry->d.h->root.type != bfd_link_hash_undefweak) + dinfo->fixups += entry->relocs32 + 2 * entry->relocsfdv; + } + else + dinfo->relocs += entry->relocs32 + entry->relocsfdv; + if (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h)) + { + if (entry->symndx != -1 + || entry->d.h->root.type != bfd_link_hash_undefweak) + dinfo->fixups += entry->relocsfd; + } + else + dinfo->relocs += entry->relocsfd; + } + + return 1; +} + +/* This structure is used to assign offsets to got entries, function + descriptors, plt entries and lazy plt entries. */ + +struct _frv_dynamic_got_plt_info +{ + /* Summary information collected with _frv_count_got_plt_entries. */ + struct _frv_dynamic_got_info g; + + /* For each addressable range, we record a MAX (positive) and MIN + (negative) value. CUR is used to assign got entries, and it's + incremented from an initial positive value to MAX, then from MIN + to FDCUR (unless FDCUR wraps around first). FDCUR is used to + assign function descriptors, and it's decreased from an initial + non-positive value to MIN, then from MAX down to CUR (unless CUR + wraps around first). All of MIN, MAX, CUR and FDCUR always point + to even words. ODD, if non-zero, indicates an odd word to be + used for the next got entry, otherwise CUR is used and + incremented by a pair of words, wrapping around when it reaches + MAX. FDCUR is decremented (and wrapped) before the next function + descriptor is chosen. FDPLT indicates the number of remaining + slots that can be used for function descriptors used only by PLT + entries. */ + struct _frv_dynamic_got_alloc_data + { + bfd_signed_vma max, cur, odd, fdcur, min; + bfd_vma fdplt; + } got12, gotlos, gothilo; +}; + +/* Determine the positive and negative ranges to be used by each + offset range in the GOT. FDCUR and CUR, that must be aligned to a + double-word boundary, are the minimum (negative) and maximum + (positive) GOT offsets already used by previous ranges, except for + an ODD entry that may have been left behind. GOT and FD indicate + the size of GOT entries and function descriptors that must be + placed within the range from -WRAP to WRAP. If there's room left, + up to FDPLT bytes should be reserved for additional function + descriptors. */ + +inline static bfd_signed_vma +_frv_compute_got_alloc_data (struct _frv_dynamic_got_alloc_data *gad, + bfd_signed_vma fdcur, + bfd_signed_vma odd, + bfd_signed_vma cur, + bfd_vma got, + bfd_vma fd, + bfd_vma fdplt, + bfd_vma wrap) +{ + bfd_signed_vma wrapmin = -wrap; + + /* Start at the given initial points. */ + gad->fdcur = fdcur; + gad->cur = cur; + + /* If we had an incoming odd word and we have any got entries that + are going to use it, consume it, otherwise leave gad->odd at + zero. We might force gad->odd to zero and return the incoming + odd such that it is used by the next range, but then GOT entries + might appear to be out of order and we wouldn't be able to + shorten the GOT by one word if it turns out to end with an + unpaired GOT entry. */ + if (odd && got) + { + gad->odd = odd; + got -= 4; + odd = 0; + } + else + gad->odd = 0; + + /* If we're left with an unpaired GOT entry, compute its location + such that we can return it. Otherwise, if got doesn't require an + odd number of words here, either odd was already zero in the + block above, or it was set to zero because got was non-zero, or + got was already zero. In the latter case, we want the value of + odd to carry over to the return statement, so we don't want to + reset odd unless the condition below is true. */ + if (got & 4) + { + odd = cur + got; + got += 4; + } + + /* Compute the tentative boundaries of this range. */ + gad->max = cur + got; + gad->min = fdcur - fd; + gad->fdplt = 0; + + /* If function descriptors took too much space, wrap some of them + around. */ + if (gad->min < wrapmin) + { + gad->max += wrapmin - gad->min; + gad->min = wrapmin; + } + /* If there is space left and we have function descriptors + referenced in PLT entries that could take advantage of shorter + offsets, place them here. */ + else if (fdplt && gad->min > wrapmin) + { + bfd_vma fds; + if ((bfd_vma) (gad->min - wrapmin) < fdplt) + fds = gad->min - wrapmin; + else + fds = fdplt; + + fdplt -= fds; + gad->min -= fds; + gad->fdplt += fds; + } + + /* If GOT entries took too much space, wrap some of them around. + This may well cause gad->min to become lower than wrapmin. This + will cause a relocation overflow later on, so we don't have to + report it here . */ + if ((bfd_vma) gad->max > wrap) + { + gad->min -= gad->max - wrap; + gad->max = wrap; + } + /* If there is more space left, try to place some more function + descriptors for PLT entries. */ + else if (fdplt && (bfd_vma) gad->max < wrap) + { + bfd_vma fds; + if ((bfd_vma) (wrap - gad->max) < fdplt) + fds = wrap - gad->max; + else + fds = fdplt; + + fdplt -= fds; + gad->max += fds; + gad->fdplt += fds; + } + + /* If odd was initially computed as an offset past the wrap point, + wrap it around. */ + if (odd > gad->max) + odd = gad->min + odd - gad->max; + + /* _frv_get_got_entry() below will always wrap gad->cur if needed + before returning, so do it here too. This guarantees that, + should cur and fdcur meet at the wrap point, they'll both be + equal to min. */ + if (gad->cur == gad->max) + gad->cur = gad->min; + + return odd; +} + +/* Compute the location of the next GOT entry, given the allocation + data for a range. */ + +inline static bfd_signed_vma +_frv_get_got_entry (struct _frv_dynamic_got_alloc_data *gad) +{ + bfd_signed_vma ret; + + if (gad->odd) + { + /* If there was an odd word left behind, use it. */ + ret = gad->odd; + gad->odd = 0; + } + else + { + /* Otherwise, use the word pointed to by cur, reserve the next + as an odd word, and skip to the next pair of words, possibly + wrapping around. */ + ret = gad->cur; + gad->odd = gad->cur + 4; + gad->cur += 8; + if (gad->cur == gad->max) + gad->cur = gad->min; + } + + return ret; +} + +/* Compute the location of the next function descriptor entry in the + GOT, given the allocation data for a range. */ + +inline static bfd_signed_vma +_frv_get_fd_entry (struct _frv_dynamic_got_alloc_data *gad) +{ + /* If we're at the bottom, wrap around, and only then allocate the + next pair of words. */ + if (gad->fdcur == gad->min) + gad->fdcur = gad->max; + return gad->fdcur -= 8; +} + +/* Assign GOT offsets for every GOT entry and function descriptor. + Doing everything in a single pass is tricky. */ + +static int +_frv_assign_got_entries (void **entryp, void *info_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_plt_info *dinfo = info_; + + if (entry->got12) + entry->got_entry = _frv_get_got_entry (&dinfo->got12); + else if (entry->gotlos) + entry->got_entry = _frv_get_got_entry (&dinfo->gotlos); + else if (entry->gothilo) + entry->got_entry = _frv_get_got_entry (&dinfo->gothilo); + + if (entry->fdgot12) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->got12); + else if (entry->fdgotlos) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->gotlos); + else if (entry->fdgothilo) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->gothilo); + + if (entry->fdgoff12) + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + else if (entry->plt && dinfo->got12.fdplt) + { + dinfo->got12.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + } + else if (entry->fdgofflos) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + else if (entry->plt && dinfo->gotlos.fdplt) + { + dinfo->gotlos.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + } + else if (entry->plt) + { + dinfo->gothilo.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + } + else if (entry->privfd) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + + return 1; +} + +/* Assign GOT offsets to private function descriptors used by PLT + entries (or referenced by 32-bit offsets), as well as PLT entries + and lazy PLT entries. */ + +static int +_frv_assign_plt_entries (void **entryp, void *info_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_plt_info *dinfo = info_; + + /* If this symbol requires a local function descriptor, allocate + one. */ + if (entry->privfd && entry->fd_entry == 0) + { + if (dinfo->got12.fdplt) + { + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + dinfo->got12.fdplt -= 8; + } + else if (dinfo->gotlos.fdplt) + { + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + dinfo->gotlos.fdplt -= 8; + } + else + { + BFD_ASSERT (dinfo->gothilo.fdplt) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + dinfo->gothilo.fdplt -= 8; + } + } + + if (entry->plt) + { + int size; + + /* We use the section's raw size to mark the location of the + next PLT entry. */ + entry->plt_entry = frv_plt_section (dinfo->g.info)->_raw_size; + + /* Figure out the length of this PLT entry based on the + addressing mode we need to reach the function descriptor. */ + BFD_ASSERT (entry->fd_entry); + if (entry->fd_entry >= -(1 << (12 - 1)) + && entry->fd_entry < (1 << (12 - 1))) + size = 8; + else if (entry->fd_entry >= -(1 << (16 - 1)) + && entry->fd_entry < (1 << (16 - 1))) + size = 12; + else + size = 16; + + frv_plt_section (dinfo->g.info)->_raw_size += size; + } + + if (entry->lazyplt) + { + entry->lzplt_entry = dinfo->g.lzplt; + dinfo->g.lzplt += 8; + /* If this entry is the one that gets the resolver stub, account + for the additional instruction. */ + if (entry->lzplt_entry % FRV_LZPLT_BLOCK_SIZE == FRV_LZPLT_RESOLV_LOC) + dinfo->g.lzplt += 4; + } + + return 1; +} + +/* Follow indirect and warning hash entries so that each got entry + points to the final symbol definition. P must point to a pointer + to the hash table we're traversing. Since this traversal may + modify the hash table, we set this pointer to NULL to indicate + we've made a potentially-destructive change to the hash table, so + the traversal must be restarted. */ +static int +_frv_resolve_final_relocs_info (void **entryp, void *p) +{ + struct frv_pic_relocs_info *entry = *entryp; + htab_t *htab = p; + + if (entry->symndx == -1) + { + struct elf_link_hash_entry *h = entry->d.h; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *)h->root.u.i.link; + + if (entry->d.h == h) + return 1; + + entry->d.h = h; + + /* If we can't find this entry with the new bfd hash, re-insert + it, and get the traversal restarted. */ + if (! htab_find (*htab, entry)) + { + htab_clear_slot (*htab, entryp); + entryp = htab_find_slot (*htab, entry, INSERT); + if (! *entryp) + *entryp = entry; + /* Abort the traversal, since the whole table may have + moved, and leave it up to the parent to restart the + process. */ + *(htab_t *)p = NULL; + return 0; + } + } + + return 1; +} + +/* Set the sizes of the dynamic sections. */ + +static bfd_boolean +elf32_frv_size_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + bfd *dynobj; + asection *s; + struct _frv_dynamic_got_plt_info gpinfo; + bfd_signed_vma odd; + bfd_vma limit; + + dynobj = elf_hash_table (info)->dynobj; + BFD_ASSERT (dynobj != NULL); + + if (elf_hash_table (info)->dynamic_sections_created) + { + /* Set the contents of the .interp section to the interpreter. */ + if (info->executable) + { + s = bfd_get_section_by_name (dynobj, ".interp"); + BFD_ASSERT (s != NULL); + s->_raw_size = sizeof ELF_DYNAMIC_INTERPRETER; + s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER; + } + } + + memset (&gpinfo, 0, sizeof (gpinfo)); + gpinfo.g.info = info; + + for (;;) + { + htab_t relocs = frv_relocs_info (info); + + htab_traverse (relocs, _frv_resolve_final_relocs_info, &relocs); + + if (relocs == frv_relocs_info (info)) + break; + } + + htab_traverse (frv_relocs_info (info), _frv_count_got_plt_entries, + &gpinfo.g); + + odd = 12; + /* Compute the total size taken by entries in the 12-bit and 16-bit + ranges, to tell how many PLT function descriptors we can bring + into the 12-bit range without causing the 16-bit range to + overflow. */ + limit = odd + gpinfo.g.got12 + gpinfo.g.gotlos + + gpinfo.g.fd12 + gpinfo.g.fdlos; + if (limit < (bfd_vma)1 << 16) + limit = ((bfd_vma)1 << 16) - limit; + else + limit = 0; + if (gpinfo.g.fdplt < limit) + limit = gpinfo.g.fdplt; + + /* Determine the ranges of GOT offsets that we can use for each + range of addressing modes. */ + odd = _frv_compute_got_alloc_data (&gpinfo.got12, + 0, + odd, + 16, + gpinfo.g.got12, + gpinfo.g.fd12, + limit, + (bfd_vma)1 << (12-1)); + odd = _frv_compute_got_alloc_data (&gpinfo.gotlos, + gpinfo.got12.min, + odd, + gpinfo.got12.max, + gpinfo.g.gotlos, + gpinfo.g.fdlos, + gpinfo.g.fdplt - gpinfo.got12.fdplt, + (bfd_vma)1 << (16-1)); + odd = _frv_compute_got_alloc_data (&gpinfo.gothilo, + gpinfo.gotlos.min, + odd, + gpinfo.gotlos.max, + gpinfo.g.gothilo, + gpinfo.g.fdhilo, + gpinfo.g.fdplt - gpinfo.got12.fdplt + - gpinfo.gotlos.fdplt, + (bfd_vma)1 << (32-1)); + + /* Now assign (most) GOT offsets. */ + htab_traverse (frv_relocs_info (info), _frv_assign_got_entries, &gpinfo); + + frv_got_section (info)->_raw_size = gpinfo.gothilo.max - gpinfo.gothilo.min + /* If an odd word is the last word of the GOT, we don't need this + word to be part of the GOT. */ + - (odd + 4 == gpinfo.gothilo.max ? 4 : 0); + if (frv_got_section (info)->_raw_size == 0) + frv_got_section (info)->flags |= SEC_EXCLUDE; + else if (frv_got_section (info)->_raw_size == 12 + && ! elf_hash_table (info)->dynamic_sections_created) + { + frv_got_section (info)->flags |= SEC_EXCLUDE; + frv_got_section (info)->_raw_size = 0; + } + else + { + frv_got_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_got_section (info)->_raw_size); + if (frv_got_section (info)->contents == NULL) + return FALSE; + } + + if (elf_hash_table (info)->dynamic_sections_created) + /* Subtract the number of lzplt entries, since those will generate + relocations in the pltrel section. */ + frv_gotrel_section (info)->_raw_size = + (gpinfo.g.relocs - gpinfo.g.lzplt / 8) + * get_elf_backend_data (output_bfd)->s->sizeof_rel; + else + BFD_ASSERT (gpinfo.g.relocs == 0); + if (frv_gotrel_section (info)->_raw_size == 0) + frv_gotrel_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_gotrel_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_gotrel_section (info)->_raw_size); + if (frv_gotrel_section (info)->contents == NULL) + return FALSE; + } + + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + frv_gotfixup_section (info)->_raw_size = (gpinfo.g.fixups + 1) * 4; + if (frv_gotfixup_section (info)->_raw_size == 0) + frv_gotfixup_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_gotfixup_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + frv_gotfixup_section (info)->_raw_size); + if (frv_gotfixup_section (info)->contents == NULL) + return FALSE; + } + + if (elf_hash_table (info)->dynamic_sections_created) + { + frv_pltrel_section (info)->_raw_size = + gpinfo.g.lzplt / 8 * get_elf_backend_data (output_bfd)->s->sizeof_rel; + if (frv_pltrel_section (info)->_raw_size == 0) + frv_pltrel_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_pltrel_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + frv_pltrel_section (info)->_raw_size); + if (frv_pltrel_section (info)->contents == NULL) + return FALSE; + } + } + + /* Add 4 bytes for every block of at most 65535 lazy PLT entries, + such that there's room for the additional instruction needed to + call the resolver. Since _frv_assign_got_entries didn't account + for them, our block size is 4 bytes smaller than the real block + size. */ + if (elf_hash_table (info)->dynamic_sections_created) + { + frv_plt_section (info)->_raw_size = gpinfo.g.lzplt + + ((gpinfo.g.lzplt + (FRV_LZPLT_BLOCK_SIZE - 4) - 8) + / (FRV_LZPLT_BLOCK_SIZE - 4) * 4); + } - r_type = ELF32_R_TYPE (rel->r_info); + /* Reset it, such that _frv_assign_plt_entries() can use it to + actually assign lazy PLT entries addresses. */ + gpinfo.g.lzplt = 0; - if ( r_type == R_FRV_GNU_VTINHERIT - || r_type == R_FRV_GNU_VTENTRY) - continue; + /* Save information that we're going to need to generate GOT and PLT + entries. */ + frv_got_initial_offset (info) = -gpinfo.gothilo.min; - /* This is a final link. */ - r_symndx = ELF32_R_SYM (rel->r_info); - howto = elf32_frv_howto_table + ELF32_R_TYPE (rel->r_info); - h = NULL; - sym = NULL; - sec = NULL; + if (get_elf_backend_data (output_bfd)->want_got_sym) + elf_hash_table (info)->hgot->root.u.def.value + += frv_got_initial_offset (info); - if (r_symndx < symtab_hdr->sh_info) - { - sym = local_syms + r_symndx; - sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + if (elf_hash_table (info)->dynamic_sections_created) + frv_plt_initial_offset (info) = frv_plt_section (info)->_raw_size; - name = bfd_elf_string_from_elf_section - (input_bfd, symtab_hdr->sh_link, sym->st_name); - name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; - } + htab_traverse (frv_relocs_info (info), _frv_assign_plt_entries, &gpinfo); + + /* Allocate the PLT section contents only after + _frv_assign_plt_entries has a chance to add the size of the + non-lazy PLT entries. */ + if (elf_hash_table (info)->dynamic_sections_created) + { + if (frv_plt_section (info)->_raw_size == 0) + frv_plt_section (info)->flags |= SEC_EXCLUDE; else { - h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + frv_plt_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_plt_section (info)->_raw_size); + if (frv_plt_section (info)->contents == NULL) + return FALSE; + } + } - while (h->root.type == bfd_link_hash_indirect - || h->root.type == bfd_link_hash_warning) - h = (struct elf_link_hash_entry *) h->root.u.i.link; + if (elf_hash_table (info)->dynamic_sections_created) + { + if (frv_got_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_PLTGOT, 0)) + return FALSE; + + if (frv_pltrel_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_PLTRELSZ, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_PLTREL, DT_REL) + || ! bfd_elf32_add_dynamic_entry (info, DT_JMPREL, 0)) + return FALSE; + + if (frv_gotrel_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_REL, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_RELSZ, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_RELENT, + sizeof (Elf32_External_Rel))) + return FALSE; + } - name = h->root.root.string; + return TRUE; +} - if (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - { - sec = h->root.u.def.section; - relocation = (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset); - } - else if (h->root.type == bfd_link_hash_undefweak) - { - relocation = 0; - } - else - { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.string, input_bfd, - input_section, rel->r_offset, TRUE))) - return FALSE; - relocation = 0; - } - } +static bfd_boolean +elf32_frv_always_size_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + if (!info->relocatable + && elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_link_hash_entry *h; + asection *sec; - if (r_type == R_FRV_HI16) - r = elf32_frv_relocate_hi16 (input_bfd, rel, contents, relocation); + /* Force a PT_GNU_STACK segment to be created. */ + if (! elf_tdata (output_bfd)->stack_flags) + elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X; - else if (r_type == R_FRV_LO16) - r = elf32_frv_relocate_lo16 (input_bfd, rel, contents, relocation); + /* Define __stacksize if it's not defined yet. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (! h || h->root.type != bfd_link_hash_defined + || h->type != STT_OBJECT + || !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)) + { + struct bfd_link_hash_entry *bh; - else if (r_type == R_FRV_LABEL24) - r = elf32_frv_relocate_label24 (input_bfd, input_section, rel, - contents, relocation); + if (!(_bfd_generic_link_add_one_symbol + (info, output_bfd, "__stacksize", + BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE, + (const char *) NULL, FALSE, + get_elf_backend_data (output_bfd)->collect, &bh))) + return FALSE; - else if (r_type == R_FRV_GPREL12) - r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel, - contents, relocation); + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + } - else if (r_type == R_FRV_GPRELU12) - r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel, - contents, relocation); + /* Create a stack section, and set its alignment. */ + sec = bfd_make_section (output_bfd, ".stack"); - else if (r_type == R_FRV_GPRELLO) - r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel, - contents, relocation); + if (sec == NULL + || ! bfd_set_section_alignment (output_bfd, sec, 3)) + return FALSE; + } - else if (r_type == R_FRV_GPRELHI) - r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel, - contents, relocation); + return TRUE; +} - else - r = frv_final_link_relocate (howto, input_bfd, input_section, contents, - rel, relocation); +static bfd_boolean +elf32_frv_modify_segment_map (bfd *output_bfd, + struct bfd_link_info *info) +{ + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_segment_map *m; - if (r != bfd_reloc_ok) + for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next) + if (m->p_type == PT_GNU_STACK) + break; + + if (m) { - const char * msg = (const char *) NULL; + asection *sec = bfd_get_section_by_name (output_bfd, ".stack"); + struct elf_link_hash_entry *h; - switch (r) + if (sec) { - case bfd_reloc_overflow: - r = info->callbacks->reloc_overflow - (info, name, howto->name, (bfd_vma) 0, - input_bfd, input_section, rel->r_offset); - break; + /* Obtain the pointer to the __stacksize symbol. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *)h->root.u.i.link; + BFD_ASSERT (h->root.type == bfd_link_hash_defined); + + /* Set the section size from the symbol value. We + intentionally ignore the symbol section. */ + if (h->root.type == bfd_link_hash_defined) + sec->_raw_size = h->root.u.def.value; + else + sec->_raw_size = DEFAULT_STACK_SIZE; + + /* Add the stack section to the PT_GNU_STACK segment, + such that its size and alignment requirements make it + to the segment. */ + m->sections[m->count] = sec; + m->count++; + } + } + } - case bfd_reloc_undefined: - r = info->callbacks->undefined_symbol - (info, name, input_bfd, input_section, rel->r_offset, TRUE); - break; + return TRUE; +} - case bfd_reloc_outofrange: - msg = _("internal error: out of range error"); - break; +/* Fill in code and data in dynamic sections. */ - case bfd_reloc_notsupported: - msg = _("internal error: unsupported relocation error"); - break; +static bfd_boolean +elf32_frv_finish_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + bfd *dynobj; + asection *sdyn; - case bfd_reloc_dangerous: - msg = _("internal error: dangerous relocation"); - break; + dynobj = elf_hash_table (info)->dynobj; - default: - msg = _("internal error: unknown error"); - break; - } + if (frv_got_section (info)) + { + BFD_ASSERT (frv_gotrel_section (info)->_raw_size + == (frv_gotrel_section (info)->reloc_count + * sizeof (Elf32_External_Rel))); - if (msg) - r = info->callbacks->warning - (info, msg, name, input_bfd, input_section, rel->r_offset); + if (frv_gotfixup_section (info)) + { + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_link_hash_entry *hgot = elf_hash_table (info)->hgot; + bfd_vma got_value = hgot->root.u.def.value + + hgot->root.u.def.section->output_section->vma + + hgot->root.u.def.section->output_offset; - if (! r) - return FALSE; + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + got_value); + } + + if (frv_gotfixup_section (info)->_raw_size + != (frv_gotfixup_section (info)->reloc_count * 4)) + { + if (!elf_hash_table (info)->dynamic_sections_created) + { + info->callbacks->warning + (info, "no dynamic sections, missing -melf32frvfd?", + ".rofixup", NULL, NULL, 0); + return FALSE; + } + BFD_ASSERT (0); + } } } + if (elf_hash_table (info)->dynamic_sections_created) + { + BFD_ASSERT (frv_pltrel_section (info)->_raw_size + == (frv_pltrel_section (info)->reloc_count + * sizeof (Elf32_External_Rel))); + } - return TRUE; -} - -/* Return the section that should be marked against GC for a given - relocation. */ + sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); -static asection * -elf32_frv_gc_mark_hook (sec, info, rel, h, sym) - asection *sec; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - Elf_Internal_Rela *rel; - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; -{ - if (h != NULL) + if (elf_hash_table (info)->dynamic_sections_created) { - switch (ELF32_R_TYPE (rel->r_info)) + Elf32_External_Dyn * dyncon; + Elf32_External_Dyn * dynconend; + + BFD_ASSERT (sdyn != NULL); + + dyncon = (Elf32_External_Dyn *) sdyn->contents; + dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size); + + for (; dyncon < dynconend; dyncon++) { - case R_FRV_GNU_VTINHERIT: - case R_FRV_GNU_VTENTRY: - break; + Elf_Internal_Dyn dyn; - default: - switch (h->root.type) + bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); + + switch (dyn.d_tag) { default: break; - case bfd_link_hash_defined: - case bfd_link_hash_defweak: - return h->root.u.def.section; + case DT_PLTGOT: + dyn.d_un.d_ptr = frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; - case bfd_link_hash_common: - return h->root.u.c.p->section; + case DT_JMPREL: + dyn.d_un.d_ptr = frv_pltrel_section (info)->output_section->vma + + frv_pltrel_section (info)->output_offset; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_PLTRELSZ: + if (frv_pltrel_section (info)->_cooked_size != 0) + dyn.d_un.d_val = frv_pltrel_section (info)->_cooked_size; + else + dyn.d_un.d_val = frv_pltrel_section (info)->_raw_size; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; } } } - else - return bfd_section_from_elf_index (sec->owner, sym->st_shndx); - return NULL; + return TRUE; } -/* Update the got entry reference counts for the section being removed. */ +/* Adjust a symbol defined by a dynamic object and referenced by a + regular object. */ static bfd_boolean -elf32_frv_gc_sweep_hook (abfd, info, sec, relocs) - bfd *abfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +elf32_frv_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) { + bfd * dynobj; + + dynobj = elf_hash_table (info)->dynobj; + + /* Make sure we know what is going on here. */ + BFD_ASSERT (dynobj != NULL + && (h->weakdef != NULL + || ((h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_REF_REGULAR) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))); + + /* If this is a weak symbol, and there is a real definition, the + processor independent code will have arranged for us to see the + real definition first, and we can just use the same value. */ + if (h->weakdef != NULL) + { + BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined + || h->weakdef->root.type == bfd_link_hash_defweak); + h->root.u.def.section = h->weakdef->root.u.def.section; + h->root.u.def.value = h->weakdef->root.u.def.value; + } + return TRUE; } - -/* Hook called by the linker routine which adds symbols from an object - file. We use it to put .comm items in .scomm, and not .comm. */ +/* Perform any actions needed for dynamic symbols. */ static bfd_boolean -elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) - bfd *abfd; - struct bfd_link_info *info; - const Elf_Internal_Sym *sym; - const char **namep ATTRIBUTE_UNUSED; - flagword *flagsp ATTRIBUTE_UNUSED; - asection **secp; - bfd_vma *valp; +elf32_frv_finish_dynamic_symbol (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED, + Elf_Internal_Sym *sym ATTRIBUTE_UNUSED) { - if (sym->st_shndx == SHN_COMMON - && !info->relocatable - && (int)sym->st_size <= (int)bfd_get_gp_size (abfd)) - { - /* Common symbols less than or equal to -G nn bytes are - automatically put into .sbss. */ - - asection *scomm = bfd_get_section_by_name (abfd, ".scommon"); - - if (scomm == NULL) - { - scomm = bfd_make_section (abfd, ".scommon"); - if (scomm == NULL - || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC - | SEC_IS_COMMON - | SEC_LINKER_CREATED))) - return FALSE; - } - - *secp = scomm; - *valp = sym->st_size; - } - return TRUE; } + /* Look through the relocs for a section during the first phase. - Since we don't do .gots or .plts, we just need to consider the - virtual table relocs for gc. */ + + Besides handling virtual table relocs for gc, we have to deal with + all sorts of PIC-related relocations. We describe below the + general plan on how to handle such relocations, even though we only + collect information at this point, storing them in hash tables for + perusal of later passes. + + 32 relocations are propagated to the linker output when creating + position-independent output. LO16 and HI16 relocations are not + supposed to be encountered in this case. + + LABEL16 should always be resolvable by the linker, since it's only + used by branches. + + LABEL24, on the other hand, is used by calls. If it turns out that + the target of a call is a dynamic symbol, a PLT entry must be + created for it, which triggers the creation of a private function + descriptor and, unless lazy binding is disabled, a lazy PLT entry. + + GPREL relocations require the referenced symbol to be in the same + segment as _gp, but this can only be checked later. + + All GOT, GOTOFF and FUNCDESC relocations require a .got section to + exist. LABEL24 might as well, since it may require a PLT entry, + that will require a got. + + Non-FUNCDESC GOT relocations require a GOT entry to be created + regardless of whether the symbol is dynamic. However, since a + global symbol that turns out to not be exported may have the same + address of a non-dynamic symbol, we don't assign GOT entries at + this point, such that we can share them in this case. A relocation + for the GOT entry always has to be created, be it to offset a + private symbol by the section load address, be it to get the symbol + resolved dynamically. + + FUNCDESC GOT relocations require a GOT entry to be created, and + handled as if a FUNCDESC relocation was applied to the GOT entry in + an object file. + + FUNCDESC relocations referencing a symbol that turns out to NOT be + dynamic cause a private function descriptor to be created. The + FUNCDESC relocation then decays to a 32 relocation that points at + the private descriptor. If the symbol is dynamic, the FUNCDESC + relocation is propagated to the linker output, such that the + dynamic linker creates the canonical descriptor, pointing to the + dynamically-resolved definition of the function. + + Non-FUNCDESC GOTOFF relocations must always refer to non-dynamic + symbols that are assigned to the same segment as the GOT, but we + can only check this later, after we know the complete set of + symbols defined and/or exported. + + FUNCDESC GOTOFF relocations require a function descriptor to be + created and, unless lazy binding is disabled or the symbol is not + dynamic, a lazy PLT entry. Since we can't tell at this point + whether a symbol is going to be dynamic, we have to decide later + whether to create a lazy PLT entry or bind the descriptor directly + to the private function. + + FUNCDESC_VALUE relocations are not supposed to be present in object + files, but they may very well be simply propagated to the linker + output, since they have no side effect. + + + A function descriptor always requires a FUNCDESC_VALUE relocation. + Whether it's in .plt.rel or not depends on whether lazy binding is + enabled and on whether the referenced symbol is dynamic. + + The existence of a lazy PLT requires the resolverStub lazy PLT + entry to be present. + + + As for assignment of GOT, PLT and lazy PLT entries, and private + descriptors, we might do them all sequentially, but we can do + better than that. For example, we can place GOT entries and + private function descriptors referenced using 12-bit operands + closer to the PIC register value, such that these relocations don't + overflow. Those that are only referenced with LO16 relocations + could come next, but we may as well place PLT-required function + descriptors in the 12-bit range to make them shorter. Symbols + referenced with LO16/HI16 may come next, but we may place + additional function descriptors in the 16-bit range if we can + reliably tell that we've already placed entries that are ever + referenced with only LO16. PLT entries are therefore generated as + small as possible, while not introducing relocation overflows in + GOT or FUNCDESC_GOTOFF relocations. Lazy PLT entries could be + generated before or after PLT entries, but not intermingled with + them, such that we can have more lazy PLT entries in range for a + branch to the resolverStub. The resolverStub should be emitted at + the most distant location from the first lazy PLT entry such that + it's still in range for a branch, or closer, if there isn't a need + for so many lazy PLT entries. Additional lazy PLT entries may be + emitted after the resolverStub, as long as branches are still in + range. If the branch goes out of range, longer lazy PLT entries + are emitted. + + We could further optimize PLT and lazy PLT entries by giving them + priority in assignment to closer-to-gr17 locations depending on the + number of occurrences of references to them (assuming a function + that's called more often is more important for performance, so its + PLT entry should be faster), or taking hints from the compiler. + Given infinite time and money... :-) */ static bfd_boolean elf32_frv_check_relocs (abfd, info, sec, relocs) @@ -944,6 +3787,8 @@ elf32_frv_check_relocs (abfd, info, sec, relocs) struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; + bfd *dynobj; + struct frv_pic_relocs_info *picrel; if (info->relocatable) return TRUE; @@ -954,6 +3799,7 @@ elf32_frv_check_relocs (abfd, info, sec, relocs) if (!elf_bad_symtab (abfd)) sym_hashes_end -= symtab_hdr->sh_info; + dynobj = elf_hash_table (info)->dynobj; rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { @@ -966,8 +3812,115 @@ elf32_frv_check_relocs (abfd, info, sec, relocs) else h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_FRV_LABEL24: + case R_FRV_32: + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + case R_FRV_FUNCDESC: + case R_FRV_FUNCDESC_VALUE: + if (! dynobj) + { + elf_hash_table (info)->dynobj = dynobj = abfd; + if (! _frv_create_got_section (abfd, info)) + return FALSE; + } + if (h != NULL) + { + if (h->dynindx == -1) + switch (ELF_ST_VISIBILITY (h->other)) + { + case STV_INTERNAL: + case STV_HIDDEN: + break; + default: + bfd_elf32_link_record_dynamic_symbol (info, h); + break; + } + picrel + = frv_pic_relocs_info_for_global (frv_relocs_info (info), + abfd, h, + rel->r_addend); + } + else + picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info), + abfd, r_symndx, + rel->r_addend); + if (! picrel) + return FALSE; + break; + + default: + picrel = NULL; + break; + } + switch (ELF32_R_TYPE (rel->r_info)) { + case R_FRV_LABEL24: + picrel->call = 1; + break; + + case R_FRV_FUNCDESC_VALUE: + picrel->relocsfdv++; + if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + picrel->relocs32--; + /* Fall through. */ + case R_FRV_32: + picrel->sym = 1; + if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + picrel->relocs32++; + break; + + case R_FRV_GOT12: + picrel->got12 = 1; + break; + + case R_FRV_GOTHI: + case R_FRV_GOTLO: + picrel->gothilo = 1; + break; + + case R_FRV_FUNCDESC_GOT12: + picrel->fdgot12 = 1; + break; + + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + picrel->fdgothilo = 1; + break; + + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + picrel->gotoff = 1; + break; + + case R_FRV_FUNCDESC_GOTOFF12: + picrel->fdgoff12 = 1; + break; + + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + picrel->fdgoffhilo = 1; + break; + + case R_FRV_FUNCDESC: + picrel->fd = 1; + picrel->relocsfd++; + break; + /* This relocation describes the C++ object vtable hierarchy. Reconstruct it for later use during GC. */ case R_FRV_GNU_VTINHERIT: @@ -1067,6 +4020,9 @@ frv_elf_merge_private_bfd_data (ibfd, obfd) new_flags = elf_elfheader (ibfd)->e_flags; old_flags = elf_elfheader (obfd)->e_flags; + if (new_flags & EF_FRV_FDPIC) + new_flags &= ~EF_FRV_PIC; + #ifdef DEBUG (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s", old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no", @@ -1369,6 +4325,12 @@ frv_elf_print_private_bfd_data (abfd, ptr) if (flags & EF_FRV_BIGPIC) fprintf (file, " -fPIC"); + if (flags & EF_FRV_LIBPIC) + fprintf (file, " -mlibrary-pic"); + + if (flags & EF_FRV_FDPIC) + fprintf (file, " -mfdpic"); + if (flags & EF_FRV_NON_PIC_RELOCS) fprintf (file, " non-pic relocations"); @@ -1387,7 +4349,7 @@ frv_elf_print_private_bfd_data (abfd, ptr) #define TARGET_BIG_SYM bfd_elf32_frv_vec #define TARGET_BIG_NAME "elf32-frv" -#define elf_info_to_howto_rel NULL +#define elf_info_to_howto_rel frv_info_to_howto_rel #define elf_info_to_howto frv_info_to_howto_rela #define elf_backend_relocate_section elf32_frv_relocate_section #define elf_backend_gc_mark_hook elf32_frv_gc_mark_hook @@ -1405,4 +4367,33 @@ frv_elf_print_private_bfd_data (abfd, ptr) #define bfd_elf32_bfd_merge_private_bfd_data frv_elf_merge_private_bfd_data #define bfd_elf32_bfd_print_private_bfd_data frv_elf_print_private_bfd_data +#define bfd_elf32_bfd_link_hash_table_create frv_elf_link_hash_table_create +#define elf_backend_always_size_sections \ + elf32_frv_always_size_sections +#define elf_backend_modify_segment_map \ + elf32_frv_modify_segment_map + +#define elf_backend_create_dynamic_sections \ + elf32_frv_create_dynamic_sections +#define elf_backend_adjust_dynamic_symbol \ + elf32_frv_adjust_dynamic_symbol +#define elf_backend_size_dynamic_sections \ + elf32_frv_size_dynamic_sections +#define elf_backend_finish_dynamic_symbol \ + elf32_frv_finish_dynamic_symbol +#define elf_backend_finish_dynamic_sections \ + elf32_frv_finish_dynamic_sections + +#define elf_backend_want_got_sym 1 +#define elf_backend_got_header_size 0 +#define elf_backend_want_got_plt 0 +#define elf_backend_plt_readonly 1 +#define elf_backend_want_plt_sym 0 +#define elf_backend_plt_header_size 0 + +#define elf_backend_may_use_rel_p 1 +#define elf_backend_may_use_rela_p 1 +/* We use REL for dynamic relocations only. */ +#define elf_backend_default_use_rela_p 1 + #include "elf32-target.h" diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c index 18d87d45002..c803af176e9 100644 --- a/bfd/elf32-h8300.c +++ b/bfd/elf32-h8300.c @@ -1,5 +1,5 @@ /* BFD back-end for Renesas H8/300 ELF binaries. - Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003 + Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -30,23 +30,23 @@ static void elf32_h8_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *); static void elf32_h8_info_to_howto_rel (bfd *, arelent *, Elf_Internal_Rela *); -static unsigned long elf32_h8_mach - (flagword); -static void elf32_h8_final_write_processing - (bfd *, bfd_boolean); -static bfd_boolean elf32_h8_object_p - (bfd *); -static bfd_boolean elf32_h8_merge_private_bfd_data - (bfd *, bfd *); +static unsigned long elf32_h8_mach (flagword); +static void elf32_h8_final_write_processing (bfd *, bfd_boolean); +static bfd_boolean elf32_h8_object_p (bfd *); +static bfd_boolean elf32_h8_merge_private_bfd_data (bfd *, bfd *); static bfd_boolean elf32_h8_relax_section (bfd *, asection *, struct bfd_link_info *, bfd_boolean *); static bfd_boolean elf32_h8_relax_delete_bytes (bfd *, asection *, bfd_vma, int); -static bfd_boolean elf32_h8_symbol_address_p - (bfd *, asection *, bfd_vma); +static bfd_boolean elf32_h8_symbol_address_p (bfd *, asection *, bfd_vma); static bfd_byte *elf32_h8_get_relocated_section_contents (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, bfd_boolean, asymbol **); +static asection *elf32_h8_gc_mark_hook + (asection *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *); +static bfd_boolean elf32_h8_gc_sweep_hook + (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *); static bfd_reloc_status_type elf32_h8_final_link_relocate (unsigned long, bfd *, bfd *, asection *, bfd_byte *, bfd_vma, bfd_vma, bfd_vma, @@ -640,8 +640,8 @@ elf32_h8_merge_private_bfd_data (bfd *ibfd, bfd *obfd) && bfd_get_mach (obfd) < bfd_get_mach (ibfd)) { if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), - bfd_get_mach (ibfd))) - return FALSE; + bfd_get_mach (ibfd))) + return FALSE; } return TRUE; @@ -1010,6 +1010,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, if (value >= 0xffffff00u) { unsigned char code; + unsigned char temp_code; /* Note that we've changed the relocs, section contents, etc. */ @@ -1024,18 +1025,29 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, if (code != 0x6a) abort (); - code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + if ((temp_code & 0x10) != 0x10) + temp_code &= 0xf0; - if ((code & 0xf0) == 0x00) - bfd_put_8 (abfd, - (code & 0xf) | 0x20, - contents + irel->r_offset - 2); - else if ((code & 0xf0) == 0x80) - bfd_put_8 (abfd, - (code & 0xf) | 0x30, - contents + irel->r_offset - 2); - else - abort (); + switch (temp_code) + { + case 0x00: + bfd_put_8 (abfd, (code & 0xf) | 0x20, + contents + irel->r_offset - 2); + break; + case 0x80: + bfd_put_8 (abfd, (code & 0xf) | 0x30, + contents + irel->r_offset - 2); + break; + case 0x18: + bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2); + break; + case 0x10: + bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2); + break; + default: + abort (); + } /* Fix the relocation's type. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), @@ -1066,6 +1078,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, if (value >= 0xffffff00u) { unsigned char code; + unsigned char temp_code; /* Note that we've changed the relocs, section contents, etc. */ @@ -1080,9 +1093,12 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, if (code != 0x6a) abort (); - code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + + if ((temp_code & 0x30) != 0x30) + temp_code &= 0xf0; - switch (code & 0xf0) + switch (temp_code) { case 0x20: bfd_put_8 (abfd, (code & 0xf) | 0x20, @@ -1092,8 +1108,14 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, bfd_put_8 (abfd, (code & 0xf) | 0x30, contents + irel->r_offset - 2); break; + case 0x38: + bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2); + break; + case 0x30: + bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2); + break; default: - abort (); + abort(); } /* Fix the relocation's type. */ @@ -1113,7 +1135,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, } } - /* FALLTHRU */ + /* Fall through. */ /* This is a 24/32bit absolute address in a "mov" insn, which may become a 16-bit absolute address if it is in the right range. */ @@ -1428,6 +1450,42 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd, return NULL; } +static asection * +elf32_h8_gc_mark_hook (asection *sec, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Rela *rel ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) +{ + if (h != NULL) + { + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + default: + break; + } + } + else + return bfd_section_from_elf_index (sec->owner, sym->st_shndx); + return NULL; +} + +static bfd_boolean +elf32_h8_gc_sweep_hook (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED) +{ + return TRUE; +} + #define TARGET_BIG_SYM bfd_elf32_h8300_vec #define TARGET_BIG_NAME "elf32-h8300" @@ -1446,6 +1504,8 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd, elf32_h8_object_p #define bfd_elf32_bfd_merge_private_bfd_data \ elf32_h8_merge_private_bfd_data +#define elf_backend_gc_mark_hook elf32_h8_gc_mark_hook +#define elf_backend_gc_sweep_hook elf32_h8_gc_sweep_hook /* ??? when elf_backend_relocate_section is not defined, elf32-target.h defaults to using _bfd_generic_link_hash_table_create, but @@ -1457,6 +1517,7 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd, /* Use an H8 specific linker, not the ELF generic linker. */ #define elf_backend_relocate_section elf32_h8_relocate_section #define elf_backend_rela_normal 1 +#define elf_backend_can_gc_sections 1 /* And relaxing stuff. */ #define bfd_elf32_bfd_relax_section elf32_h8_relax_section diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 876efc6ab0c..0a3d83fb5a8 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -1,5 +1,5 @@ /* Intel 80386/80486-specific support for 32-bit ELF - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -346,29 +346,50 @@ elf_i386_is_local_label_name (bfd *abfd, const char *name) } /* Support for core dump NOTE sections. */ + static bfd_boolean elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; size_t raw_size; - switch (note->descsz) + if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0) { - default: - return FALSE; + int pr_version = bfd_get_32 (abfd, note->descdata); + + if (pr_version != 1) + return FALSE; + + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_32 (abfd, note->descdata + 20); + + /* pr_pid */ + elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + + /* pr_reg */ + offset = 28; + raw_size = bfd_get_32 (abfd, note->descdata + 8); + } + else + { + switch (note->descsz) + { + default: + return FALSE; - case 144: /* Linux/i386 */ - /* pr_cursig */ - elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); + case 144: /* Linux/i386 */ + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); - /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + /* pr_pid */ + elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); - /* pr_reg */ - offset = 72; - raw_size = 68; + /* pr_reg */ + offset = 72; + raw_size = 68; - break; + break; + } } /* Make a ".reg/999" section. */ @@ -379,22 +400,36 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) static bfd_boolean elf_i386_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { - switch (note->descsz) + if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0) { - default: + int pr_version = bfd_get_32 (abfd, note->descdata); + + if (pr_version != 1) return FALSE; - case 124: /* Linux/i386 elf_prpsinfo */ - elf_tdata (abfd)->core_program - = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); - elf_tdata (abfd)->core_command - = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 8, 17); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 25, 81); + } + else + { + switch (note->descsz) + { + default: + return FALSE; + + case 124: /* Linux/i386 elf_prpsinfo. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + } } /* Note that for some reason, a spurious space is tacked onto the end of the args in some (at least one anyway) implementations, so strip it off if it exists. */ - { char *command = elf_tdata (abfd)->core_command; int n = strlen (command); diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index 90609c5c08b..1c7fed92baa 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -817,26 +817,27 @@ elf_m68k_gc_sweep_hook (abfd, info, sec, relocs) struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; asection *sgot; asection *srelgot; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - local_got_refcounts = elf_local_got_refcounts (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + sgot = bfd_get_section_by_name (dynobj, ".got"); srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_68K_GOT8: diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 27b1c4b0b4d..a0480f09700 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -1513,10 +1513,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -1594,20 +1590,29 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #define TARGET_BIG_SYM bfd_elf32_bigmips_vec #define TARGET_BIG_NAME "elf32-bigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. */ +#define ELF_MAXPAGESIZE 0x1000 + #include "elf32-target.h" /* Support for traditional mips targets. */ -#define INCLUDED_TARGET_FILE /* More a type of flag. */ - #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf32_tradlittlemips_vec #define TARGET_LITTLE_NAME "elf32-tradlittlemips" #define TARGET_BIG_SYM bfd_elf32_tradbigmips_vec #define TARGET_BIG_NAME "elf32-tradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf32_bed elf32_tradbed + /* Include the target file again for this target. */ #include "elf32-target.h" diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c index f77f22c7c35..c20e403588d 100644 --- a/bfd/elf32-sparc.c +++ b/bfd/elf32-sparc.c @@ -501,6 +501,35 @@ sparc_elf_lox10_reloc (abfd, return bfd_reloc_ok; } + +/* Support for core dump NOTE sections. */ + +static bfd_boolean +elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) +{ + switch (note->descsz) + { + default: + return FALSE; + + case 260: /* Solaris prpsinfo_t. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80); + break; + + case 336: /* Solaris psinfo_t. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80); + break; + } + + return TRUE; +} + /* Functions for the SPARC ELF linker. */ @@ -3451,6 +3480,7 @@ elf32_sparc_reloc_type_class (rela) elf32_sparc_final_write_processing #define elf_backend_gc_mark_hook elf32_sparc_gc_mark_hook #define elf_backend_gc_sweep_hook elf32_sparc_gc_sweep_hook +#define elf_backend_grok_psinfo elf32_sparc_grok_psinfo #define elf_backend_reloc_type_class elf32_sparc_reloc_type_class #define elf_backend_can_gc_sections 1 diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c index c37ca005f01..e085e3509fc 100644 --- a/bfd/elf32-vax.c +++ b/bfd/elf32-vax.c @@ -892,20 +892,21 @@ elf_vax_gc_sweep_hook (abfd, info, sec, relocs) Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_VAX_GOT32: diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c index ca0ed6ea43a..71c3425eaa8 100644 --- a/bfd/elf64-mips.c +++ b/bfd/elf64-mips.c @@ -2676,11 +2676,6 @@ const struct elf_size_info mips_elf64_size_info = #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. - FIXME: How does this affect NewABI? */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -2791,9 +2786,12 @@ extern bfd_boolean bfd_elf64_archive_write_armap #define TARGET_BIG_SYM bfd_elf64_bigmips_vec #define TARGET_BIG_NAME "elf64-bigmips" -#include "elf64-target.h" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. + FIXME: How does this affect NewABI? */ +#define ELF_MAXPAGESIZE 0x1000 -#define INCLUDED_TARGET_FILE /* More a type of flag. */ +#include "elf64-target.h" /* The SYSV-style 'traditional' (n)64 NewABI. */ #undef TARGET_LITTLE_SYM @@ -2801,10 +2799,17 @@ extern bfd_boolean bfd_elf64_archive_write_armap #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_vec #define TARGET_LITTLE_NAME "elf64-tradlittlemips" #define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec #define TARGET_BIG_NAME "elf64-tradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf64_bed elf64_tradbed + /* Include the target file again for this target. */ #include "elf64-target.h" diff --git a/bfd/elflink.h b/bfd/elflink.h index f558e1c51ac..c37d7398d01 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -5801,7 +5801,10 @@ elf_gc_sections (bfd *abfd, struct bfd_link_info *info) || info->emitrelocations || !is_elf_hash_table (info->hash) || elf_hash_table (info)->dynamic_sections_created) - return TRUE; + { + (*_bfd_error_handler)(_("Warning: gc-sections option ignored")); + return TRUE; + } /* Apply transitive closure to the vtable entry usage info. */ elf_link_hash_traverse (elf_hash_table (info), diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c index 2bfbf625e54..973edd52daf 100644 --- a/bfd/elfn32-mips.c +++ b/bfd/elfn32-mips.c @@ -1873,11 +1873,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. - FIXME: How does this affect NewABI? */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -1959,20 +1954,30 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #define TARGET_BIG_SYM bfd_elf32_nbigmips_vec #define TARGET_BIG_NAME "elf32-nbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. + FIXME: How does this affect NewABI? */ +#define ELF_MAXPAGESIZE 0x1000 + #include "elf32-target.h" /* Support for traditional mips targets using n32 ABI. */ -#define INCLUDED_TARGET_FILE /* More a type of flag. */ - #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf32_ntradlittlemips_vec #define TARGET_LITTLE_NAME "elf32-ntradlittlemips" #define TARGET_BIG_SYM bfd_elf32_ntradbigmips_vec #define TARGET_BIG_NAME "elf32-ntradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf32_bed elf32_tradbed + /* Include the target file again for this target. */ #include "elf32-target.h" diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index aba571a415e..c699922154d 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -876,6 +876,8 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) if (is_branch) { + bfd_signed_vma offset; + reladdr = (sec->output_section->vma + sec->output_offset + roff) & (bfd_vma) -4; @@ -911,6 +913,13 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) /* Resize the current section to make room for the new branch. */ trampoff = (sec->_cooked_size + 15) & (bfd_vma) -16; + + /* If trampoline is out of range, there is nothing we + can do. */ + offset = trampoff - (roff & (bfd_vma) -4); + if (offset < -0x1000000 || offset > 0x0FFFFF0) + continue; + amt = trampoff + size; contents = (bfd_byte *) bfd_realloc (contents, amt); if (contents == NULL) @@ -957,14 +966,18 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) } else { + /* If trampoline is out of range, there is nothing we + can do. */ + offset = f->trampoff - (roff & (bfd_vma) -4); + if (offset < -0x1000000 || offset > 0x0FFFFF0) + continue; + /* Nop out the reloc, since we're finalizing things here. */ irel->r_info = ELFNN_R_INFO (0, R_IA64_NONE); } - /* Fix up the existing branch to hit the trampoline. Hope like - hell this doesn't overflow too. */ - if (elfNN_ia64_install_value (abfd, contents + roff, - f->trampoff - (roff & (bfd_vma) -4), + /* Fix up the existing branch to hit the trampoline. */ + if (elfNN_ia64_install_value (abfd, contents + roff, offset, r_type) != bfd_reloc_ok) goto error_return; diff --git a/bfd/libbfd.h b/bfd/libbfd.h index df4c0cf36c5..d6ee8f33b43 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -864,6 +864,20 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_FRV_GPREL32", "BFD_RELOC_FRV_GPRELHI", "BFD_RELOC_FRV_GPRELLO", + "BFD_RELOC_FRV_GOT12", + "BFD_RELOC_FRV_GOTHI", + "BFD_RELOC_FRV_GOTLO", + "BFD_RELOC_FRV_FUNCDESC", + "BFD_RELOC_FRV_FUNCDESC_GOT12", + "BFD_RELOC_FRV_FUNCDESC_GOTHI", + "BFD_RELOC_FRV_FUNCDESC_GOTLO", + "BFD_RELOC_FRV_FUNCDESC_VALUE", + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12", + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI", + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO", + "BFD_RELOC_FRV_GOTOFF12", + "BFD_RELOC_FRV_GOTOFFHI", + "BFD_RELOC_FRV_GOTOFFLO", "BFD_RELOC_MN10300_GOTOFF24", "BFD_RELOC_MN10300_GOT32", diff --git a/bfd/reloc.c b/bfd/reloc.c index abbcfca24b2..d3a6534b7c9 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -2139,6 +2139,34 @@ ENUMX BFD_RELOC_FRV_GPRELHI ENUMX BFD_RELOC_FRV_GPRELLO +ENUMX + BFD_RELOC_FRV_GOT12 +ENUMX + BFD_RELOC_FRV_GOTHI +ENUMX + BFD_RELOC_FRV_GOTLO +ENUMX + BFD_RELOC_FRV_FUNCDESC +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOT12 +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTHI +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTLO +ENUMX + BFD_RELOC_FRV_FUNCDESC_VALUE +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFF12 +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO +ENUMX + BFD_RELOC_FRV_GOTOFF12 +ENUMX + BFD_RELOC_FRV_GOTOFFHI +ENUMX + BFD_RELOC_FRV_GOTOFFLO ENUMDOC Fujitsu Frv Relocations. COMMENT diff --git a/bfd/version.h b/bfd/version.h index 85f8fe6b4cd..0e987151d7d 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,3 +1,3 @@ -#define BFD_VERSION_DATE 20031224 +#define BFD_VERSION_DATE 20040113 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_string@ diff --git a/config-ml.in b/config-ml.in index 06752b7a67d..b2e4ea9cf97 100644 --- a/config-ml.in +++ b/config-ml.in @@ -553,6 +553,7 @@ multi-do: LIBCFLAGS="$(LIBCFLAGS) $${flags}" \ LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \ LDFLAGS="$(LDFLAGS) $${flags}" \ + MULTIFLAGS="$${flags}" \ DESTDIR="$(DESTDIR)" \ INSTALL="$(INSTALL)" \ INSTALL_DATA="$(INSTALL_DATA)" \ @@ -765,7 +766,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then cd ${ml_dir}/${ml_libdir} if [ -f ${ml_newsrcdir}/configure ]; then - ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache" + ml_recprog="${ml_newsrcdir}/configure" fi # find compiler flag corresponding to ${ml_dir} diff --git a/configure b/configure index 0c88cf501a3..88d3753ed65 100755 --- a/configure +++ b/configure @@ -1265,7 +1265,7 @@ case "${target}" in ;; ia64*-**-hpux*) # No gdb or ld support yet. - noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld" + noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld" ;; i[3456789]86-*-coff | i[3456789]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" @@ -2588,7 +2588,9 @@ case "${cache_file}" in cache_file_option="--cache-file=../${cache_file}" ;; esac -host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" +# Host dirs don't like to share a cache file either, horribly enough. +# This seems to be due to autoconf 2.5x stupidity. +host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" target_configargs=${baseargs} @@ -2612,8 +2614,17 @@ if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib target_configargs="--with-newlib ${target_configargs}" fi +# Different target subdirs use different values of certain variables +# (notably CXX). Worse, multilibs use *lots* of different values. +# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that +# it doesn't automatically accept command-line overrides of them. +# This means it's not safe for target subdirs to share a cache file, +# which is disgusting, but there you have it. Hopefully this can be +# fixed in future. It's still worthwhile to use a cache file for each +# directory. I think. + # Pass the appropriate --host, --build, and --cache-file arguments. -target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" +target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" # provide a proper gxx_include_dir. # Note, if you change the default, make sure to fix both here and in @@ -2826,7 +2837,7 @@ test -n "$target_alias" && ncn_target_tool_prefix=$target_alias- # Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args. set dummy ${ncn_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2830: checking for $ac_word" >&5 +echo "configure:2841: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2859,7 +2870,7 @@ if test -z "$ac_cv_prog_AR" ; then # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2863: checking for $ac_word" >&5 +echo "configure:2874: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2898,7 +2909,7 @@ fi # Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args. set dummy ${ncn_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2902: checking for $ac_word" >&5 +echo "configure:2913: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2931,7 +2942,7 @@ if test -z "$ac_cv_prog_AS" ; then # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2935: checking for $ac_word" >&5 +echo "configure:2946: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2970,7 +2981,7 @@ fi # Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ncn_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2974: checking for $ac_word" >&5 +echo "configure:2985: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3003,7 +3014,7 @@ if test -z "$ac_cv_prog_DLLTOOL" ; then # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3007: checking for $ac_word" >&5 +echo "configure:3018: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3042,7 +3053,7 @@ fi # Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args. set dummy ${ncn_tool_prefix}ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3046: checking for $ac_word" >&5 +echo "configure:3057: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3075,7 +3086,7 @@ if test -z "$ac_cv_prog_LD" ; then # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3079: checking for $ac_word" >&5 +echo "configure:3090: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3114,7 +3125,7 @@ fi # Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args. set dummy ${ncn_tool_prefix}nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3118: checking for $ac_word" >&5 +echo "configure:3129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3147,7 +3158,7 @@ if test -z "$ac_cv_prog_NM" ; then # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3151: checking for $ac_word" >&5 +echo "configure:3162: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3186,7 +3197,7 @@ fi # Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ncn_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3190: checking for $ac_word" >&5 +echo "configure:3201: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3219,7 +3230,7 @@ if test -z "$ac_cv_prog_RANLIB" ; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3223: checking for $ac_word" >&5 +echo "configure:3234: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3258,7 +3269,7 @@ fi # Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args. set dummy ${ncn_tool_prefix}windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3262: checking for $ac_word" >&5 +echo "configure:3273: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3291,7 +3302,7 @@ if test -z "$ac_cv_prog_WINDRES" ; then # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3295: checking for $ac_word" >&5 +echo "configure:3306: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3330,7 +3341,7 @@ fi # Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args. set dummy ${ncn_tool_prefix}objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3334: checking for $ac_word" >&5 +echo "configure:3345: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3363,7 +3374,7 @@ if test -z "$ac_cv_prog_OBJCOPY" ; then # Extract the first word of "objcopy", so it can be a program name with args. set dummy objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3367: checking for $ac_word" >&5 +echo "configure:3378: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3402,7 +3413,7 @@ fi # Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args. set dummy ${ncn_tool_prefix}objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3406: checking for $ac_word" >&5 +echo "configure:3417: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3435,7 +3446,7 @@ if test -z "$ac_cv_prog_OBJDUMP" ; then # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3439: checking for $ac_word" >&5 +echo "configure:3450: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3484,7 +3495,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3488: checking for $ac_word" >&5 +echo "configure:3499: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3517,7 +3528,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET" ; then # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3521: checking for $ac_word" >&5 +echo "configure:3532: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3556,7 +3567,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3560: checking for $ac_word" >&5 +echo "configure:3571: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3589,7 +3600,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET" ; then # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3593: checking for $ac_word" >&5 +echo "configure:3604: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3628,7 +3639,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3632: checking for $ac_word" >&5 +echo "configure:3643: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3661,7 +3672,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARGET" ; then # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3665: checking for $ac_word" >&5 +echo "configure:3676: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3700,7 +3711,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3704: checking for $ac_word" >&5 +echo "configure:3715: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3733,7 +3744,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET" ; then # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3737: checking for $ac_word" >&5 +echo "configure:3748: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3772,7 +3783,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3776: checking for $ac_word" >&5 +echo "configure:3787: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3805,7 +3816,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET" ; then # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3809: checking for $ac_word" >&5 +echo "configure:3820: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3844,7 +3855,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3848: checking for $ac_word" >&5 +echo "configure:3859: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3877,7 +3888,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGET" ; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3881: checking for $ac_word" >&5 +echo "configure:3892: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3916,7 +3927,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3920: checking for $ac_word" >&5 +echo "configure:3931: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3949,7 +3960,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARGET" ; then # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3953: checking for $ac_word" >&5 +echo "configure:3964: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4016,7 +4027,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target} NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4020: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:4031: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" diff --git a/configure.in b/configure.in index 256748764fb..b286f1aa7ef 100644 --- a/configure.in +++ b/configure.in @@ -504,7 +504,7 @@ case "${target}" in ;; ia64*-**-hpux*) # No gdb or ld support yet. - noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld" + noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld" ;; i[[3456789]]86-*-coff | i[[3456789]]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" @@ -1826,7 +1826,9 @@ case "${cache_file}" in cache_file_option="--cache-file=../${cache_file}" ;; esac -host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" +# Host dirs don't like to share a cache file either, horribly enough. +# This seems to be due to autoconf 2.5x stupidity. +host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" target_configargs=${baseargs} @@ -1850,8 +1852,17 @@ if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib target_configargs="--with-newlib ${target_configargs}" fi +# Different target subdirs use different values of certain variables +# (notably CXX). Worse, multilibs use *lots* of different values. +# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that +# it doesn't automatically accept command-line overrides of them. +# This means it's not safe for target subdirs to share a cache file, +# which is disgusting, but there you have it. Hopefully this can be +# fixed in future. It's still worthwhile to use a cache file for each +# directory. I think. + # Pass the appropriate --host, --build, and --cache-file arguments. -target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" +target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" # provide a proper gxx_include_dir. # Note, if you change the default, make sure to fix both here and in diff --git a/cpu/ChangeLog b/cpu/ChangeLog index faeb5a6e658..bae9cccc4ee 100644 --- a/cpu/ChangeLog +++ b/cpu/ChangeLog @@ -1,3 +1,21 @@ +2004-01-06 Alexandre Oliva + + 2003-12-19 Alexandre Oliva + * frv.opc (parse_ulo16, parse_uhi16, parse_d12): Fix some + cut&paste errors in shifting/truncating numerical operands. + 2003-08-08 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotofflo and gotofffuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gotoffhi and gotofffuncdeschi. + (parse_d12): Parse gotoff12 and gotofffuncdesc12. + (parse_s12): Likewise. + 2003-08-04 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotlo and gotfuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gothi and gotfuncdeschi. + (parse_d12): Parse got12 and gotfuncdesc12. + (parse_s12): Likewise. + 2003-10-10 Dave Brolley * frv.cpu (dnpmop): New p-macro. diff --git a/cpu/frv.opc b/cpu/frv.opc index e149508edf4..92b55867ee1 100644 --- a/cpu/frv.opc +++ b/cpu/frv.opc @@ -897,7 +897,66 @@ parse_ulo16 (cd, strp, opindex, valuep) ++*strp; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - value >>= 16; + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; *valuep = value; return errmsg; } @@ -946,6 +1005,65 @@ parse_uslo16 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } } return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); } @@ -991,6 +1109,65 @@ parse_uhi16 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "gothi(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdeschi(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotoffhi(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdeschi(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } } return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); } @@ -1073,6 +1250,53 @@ parse_d12 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "got12(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotoff12(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } } return cgen_parse_signed_integer (cd, strp, opindex, valuep); } @@ -1101,6 +1325,56 @@ parse_s12 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "got12(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotoff12(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } else { if (**strp == '#') diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a4e5aaf62ea..c5993ee852f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,15343 +1,663 @@ -2003-12-22 Mark Kettenis +2004-01-12 Andrew Cagney - * dwarf2-frame.c (dwarf2_frame_cache): Don't skip the return - address column. + * exec.h (exec_ops): Make "extern". -2003-12-21 Jim Blandy + * mips-tdep.c (mips_pseudo_register_read): Don't return a value, + the function is void. + (mips_pseudo_register_write): Ditto. - * breakpoint.c (bpstat_do_actions): To ensure that - clear_proceed_status doesn't free the command tree we're - evaluating out from under us, zero the bpstat's pointer to it, and - take care of freeing it ourselves. - * cli/cli-script.c (make_cleanup_free_command_lines): Make this - function externally visible. - * cli/cli-script.h (make_cleanup_free_command_lines): New - declaration. - -2003-12-20 Mark Kettenis - - * x86-64-tdep.c (x86_64_dwarf_regmap): Map the Return Address to - RIP. - -2003-12-18 Michael Chastain - - * hppa-tdep.c (hppa_gdbarch_init): Set long double floating - point type to floatformat_ia64_quad_big. - -2003-12-18 Kevin Buettner - - * frv-tdep.c (skip_prologue_using_sal): New function. Taken verbatim - from mips-tdep.c. - (frv_analyze_prologue): Rework to account for intermixed prologue / - body instructions. - -2003-12-18 Michael Chastain +2004-01-12 Andrew Cagney - * hppa-tdep.c (hppa_gdbarch_init): Set sizeof(long_double) to 128. - Document type sizes for hppa*-*-hpux* compilers available to me. + * stack.c (frame_info): Delete DEPRECATED_PRINT_EXTRA_FRAME_INFO + call. Never defined. + * sparc-tdep.h (struct frame_info): Add opaque declaration. + * sparc64-tdep.h (struct gdbarch): Add opaque declaration. + (struct sparc_gregset, struct regcache): Ditto. + * sparc-nat.c: Update copyright. Specify "GNU/Linux". -2003-12-18 Michael Chastain +2004-01-12 Andrew Cagney - * hppam3-nat.c: Delete obsolete file. - * hppab-nat.c: Delete obsolete file. - * Makefile.in: Remove references. - -2003-12-17 Jeff Johnston - - * symtab.c (decode_line_spec): Change call to decode_line_1. - -2003-12-17 Jeff Johnston + * mi/ChangeLog: Delete file. Renamed to ... + * mi/ChangeLog-1999-2003: New file. + * tui/ChangeLog: Delete file. Renamed to ... + * tui/ChangeLog-1998-2003: New file. + +2004-01-11 Mark Kettenis - * linespec.h (decode_line_1): Add new not_found_ptr parameter. - * linespec.c (decode_line_1): Add new parameter. Pass on - new parameter to decode_variable and symtab_from_filename + * sparc64nbsd-tdep.c: Include "regset.h". + (sparc64nbsd_sizeof_struct_reg, sparc64nbsd_sizeof_struct_fpreg): + Remove variables. + (fetch_core_registers): Remove function. + (sparc64nbsd_core_fns): Remove variable. + (sparc64nbsd_supply_gregset, sparc64nbsd_supply_fpregset): New functions. - (decode_variable): Add new not_found_ptr parameter. Throw exception - rather than failing if the not_found_ptr is non-null and the - function is not found. - (symtab_from_filename): Add new not_found_ptr parametr. Throw - exception rather than failing if the not_found_ptr is non-null and - the source file is not found. - * breakpoint.c: Change all callers of decode_line_1 to add default - extra parameter for decode_line_1 calls. - * tracepoint.c: Ditto. - * cli/cli-cmds.c: Ditto. - -2003-12-16 J. Brobecker - - * irix5-nat.c: Include mips-tdep.h. - -2003-12-16 Mark Kettenis - - * solib.h (SOLIB_CREATE_CATCH_LOAD_HOOK) - (SOLIB_CREATE_CATCH_UNLOAD_HOOK, SOLIB_LOADED_LIBRARY_PATHNAME) - (SOLIB_UNLOADED_LIBRARY_PATHNAME, SOLIB_HAVE_LOAD_EVENT) - (SOLIB_HAVE_UNLOAD_EVENT): Remove defines. - - * blockframe.c (inside_main_func): Don't treat a zero PC specially. - Needed to fix PR backtrace/1476. - -2003-12-16 David Carlton - - * cp-support.c (class_name_from_physname): Add DMGL_PARAMS. - (method_name_from_physname): Ditto. - -2003-12-15 Mark Kettenis - - * i386-sol2-tdep.c (i386_sol2_gregset_reg_offset): New variable. - (i386_sol2_init_abi): Initialize TDEP->gregset_reg_offset, - TDEP->gregset_num_regs, TDEP->sizeof_gregset and - TDEP->sizeof_fpregset. - * config/i386/i386sol2.mh (XM_FILE): Set to xm-i386.h. - (XM_CLIBS): Remove. - (NATDEPFILES): Remove core-regset.o and corelow.o. - * config/i386/i386sol2.mt (TDEPFILES): Add corelow.o. - -2003-12-14 Mark Kettenis - - * proc-api.c (procfs_note): Add format string to fprintf call. - - * i386-tdep.c (i386_analyze_frame_setup): Add missing encodings - for `subl' and `xorl' instructions. - -2003-12-13 Jim Blandy + (sparc64nbsd_init_abi): Initialize TDEP->gregset, + TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset. + (_initialize_sparc64nbsd_tdep): Remove call to add_core_fns. + + * sparc-tdep.c (sparc32_extract_struct_value_address): Rename from + sparc_extract_struct_value_address. + (sparc32_gdbarch_init): Set extract_struct_value_address. + * sparc64-tdep.c (sparc64_extract_struct_value_address): New + function. + (sparc64_init_abi): Set extract_struct_value_address. Don't set + return_value_on_stack. - * dwarf2read.c (dwarf2_add_member_fn, read_structure_scope): - Replace uses of DEPRECATED_STREQ and DEPRECATED_STREQN with calls - to strcmp and strncmp. + * NEWS: Mention that %cs and %ss have been added to the AMD64 + configurations - * osabi.c (gdbarch_init_osabi): Reformat error message with better - line breaks. + * frame.c: Update copyright year. + (get_prev_frame): Improve comment. -2003-12-13 Mark Kettenis + * sparc64fbsd-tdep.c: Include "regset.h". + (sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg): + Remove variables. + (fetch_core_registers): Remove function. + (sparc64fbsd_core_fns): Remove variable. + (sparc64fbsd_supply_gregset, sparc64fbsd_supply_fpregset): New + functions. + (sparc64fbsd_init_abi): Initialize TDEP->gregset, + TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset. + (_initialize_sparc64fbsd_tdep): Remove call to add_core_fns. - * blockframe.c (inside_main_func): Reformat. Introduce new local + * sparcnbsd-tdep.c: Include "regset.h". + (fetch_core_registers): Remove function. + (sparcnbsd_core_fns, sparcnbsd_elfcore_fns): Remove varaibles. + (sparc32nbsd_supply_gregset, sparc32nbsd_supply_fpregset): New + functions. + (sparc32nbsd_init_abi): Initialize TDEP->gregset and + TDEP->fpregset. + (_initialize_sparcnbsd_tdep): Remove calls to add_core_fns. + + * sparc-tdep.h (struct regset): Provide opaque declaration. + (struct gdbarch_tdep): Add gregset, sizeof_gregset, + fpregset and sizeof_fpregset members. + * sparc-tdep.c (struct regset): Provide opaque declaration. + (sparc_regset_from_core_section): New function. + (sparc32_gdbarch_init): Initialize TDEP->gregset, + TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_fpregset. + Set regset_from_core_section when appropriate. + +2004-01-10 Mark Kettenis + + * x86-64-tdep.c (amd64_non_pod_p): New function. + (amd64_classify_aggregate): Return class memory for non-POD + C++ structure types. + + * x86-64-tdep.c (amd64_push_arguments): Add struct_return + argument. Use it to reserve a register if necessary. + (amd64_push_dummy_call): Pass STRUCT_RETURN in call to + amd64_push_arguments. + + * x86-64-tdep.c (amd64_classify_aggregate): Ignore static fields. + + * x86-64-tdep.c (amd64_register_info): Add %cs and %ss. Adjust + register numbers in comments. + * x86-64-tdep.h: Update copyright year. + (X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM): + Adjust for addition of %cs and %ss. + * amd64fbsd-nat.c: Update copyright year. + (reg_offset): Add register offsets for %cs and %ss. + * amd64fbsd-tdep.c: Update copyright year. + (amd64fbsd_r_reg_offset): Add register offsets for %cs and %ss. + (amd64fbsd_sc_reg_offset): Likewise. + * x86-64-linux-nat.c: Update copyright year. + (x86_64_linux_gregset64_reg_offset): Add register offsets for %cs + and %ss. + * amd64nbsd-nat.c: Update copyright year. + (amd64nbsd32_r_reg_offset): Add register offsets for %cs and %ss. + * amd64nbsd-tdep.c: Update copyright year. + (amd64nbsd_r_reg_offset): Add register offsets for %cs and %ss. + * x86-64-linux-tdep.c: Update copyright year. + (user_to_gdb_regmap): Add mapping for %cs and %ss. + (x86_64_linux_sc_reg_offset): Adjust for addition of %cs and %ss. + * regformats/reg-x86-64.dat: Add %cs and %ss. + + * blockframe.c (inside_entry_func): Reformat. Introduce new local variables to prevent long lines. Update comments to reflect reality. -2003-12-12 Kevin Buettner - - From David Mosberger : - * libunwind-frame.c (unw_find_dyn_list_p): Replace most arguments - with a single unw_dyn_info_t pointer. - (libunwind_find_dyn_list): Likewise. - * libunwind-frame.h: Likewise. - * ia64-tdep.c (ia64_find_unwind_table): Switch to using - UNW_INFO_FORMAT_REMOTE_TABLE so we can avoid having to read in the - entire unwind-table at once. Support for this table format has - been added to libunwind v0.95. - (ia64_find_proc_info_x): Adjust for remote-unwind-table changes. - (ia64_get_dyn_info_list): Adjust for interface change for - libunwind_find_dyn_list(). - -2003-12-12 Jeff Johnston - - * breakpoint.c (breakpoint_enabled): New function to test whether - breakpoint is active and enabled. - (insert_bp_location, insert_breakpoints): Call new function to test - for enabled breakpoint. - (remove_breakpoint, breakpoint_here_p, breakpoint_thread_match) - (bpstat_should_step, bpstat_have_active_hw_watchpoints) - (disable_breakpoints_in_shlibs, hw_watchpoint_used_count) - (disable_watchpoints_before_interactive_call_start) - (breakpoint_re_set_one): Ditto. - (bpstat_stop_status): Use new function and simplify test. - -2003-12-11 Mark Kettenis - - * observer.c (observer_test_first_observer) - (observer_test_second_observer, observer_test_third_observer): - Don't define as `static'. - (observer_test_first_notification_function) - (observer_test_second_notification_function) - (observer_test_third_notification_function): Likewise. - -2003-12-10 Mark Kettenis - - * solib.h (SOLIB_UNLOADED_LIBRARY_PATHNAME): Define as "" instead - of (0). - -2003-12-11 Dhananjay Deshpande - - * MAINTAINERS (write after approval): Add myself. - -2003-12-11 Dhananjay Deshpande - - * config/h8300/tm-h8300.h (h8300hmode): Remove. - (h8300hmode): Likewise. - (h8300smode): Likewise. - (h8300sxmode): Likewise. - (h8300_normal_mode): Likewise. - (GDB_TARGET_IS_H8300): Likewise. - (NUM_REALREGS): Use TARGET_ARCHITECTURE->mach instead of global. - * h8300-tdep.c (is_h8300hmode): New function. - (is_h8300smode): New function. - (is_h8300sxmode): New function. - (is_h8300_normal_mode): New function. - (BINWORD): Use new functions. - (h8300_examine_prologue): Likewise. - (h8300_print_register): Likewise. - (h8300_print_registers_info): Likewise. - (h8300_register_type): Likewise. - (h8300_gdbarch_init): Remove use of globals like h8300hmode. - * remote-e7000.c (e7000_open): Remove use of GDB_TARGET_IS_H8300. - (e7000_fetch_registers): Use TARGET_ARCHITECTURE->mach instead. - (e7000_wait): Use TARGET_ARCHITECTURE->mach instead of global. - -2003-12-10 J. Brobecker - - * frame.c (select_frame): Get the current frame PC using - get_frame_address_in_block() instead of get_frame_pc(). - * stack.c (get_frame_language): Likewise. - -2003-12-08 Kevin Buettner - - * remote.c (remote_open_1, remote_cisco_open): Avoid closing - remote_desc more than once. - -2003-12-07 Andrew Cagney - - * defs.h (DEPRECATED_STREQN, DEPRECATED_STREQ): Simplify by - directly calling strcmp equivalents. Add disclaimer. - -2003-12-06 Andrew Cagney - - * remote.c (remote_fetch_registers): For short packets, explicitly - supply a zero value. Use regcache_raw_supply. Fix suggested by - Jonathan Larmour. - -2003-12-05 Jeff Johnston - - * ia64-tdep.c (ia64_gdbarch_init): Set up the gdbarch long double - format to be the i387 extended float format which is used for - long doubles stored in memory. - -2003-12-05 Mark Kettenis - - From Ulrich Weigand : - * dwarf2-frame.c (dwarf2_frame_cache): Use the untranslated RA - column instead of translating it. - -2003-12-04 Michael Chastain - - Partial fix for PR c++/1465. - Fix for PR c++/1377. - * cp-support.h (cp_lookup_rtti_type): New function. - * cp-support.c (cp_lookup_rtti_type): New function. - * gnu-v2-abi.c: Update copyright years. - (gnuv2_rtti_type): Call cp_lookup_rtti_type. - * gnu-v3-abi.c: Update copyright years. - (gnuv3_rtti_type): Call cp_lookup_rtti_type. - -2003-12-04 J. Brobecker - - * stabsread.c (read_type): Save a reference to types that are defined - as cross references to other types. - -2003-12-02 Roland McGrath - - * thread-db.c (enable_thread_event): Change return type to - td_err_e. Return TD_OK or error code. - (enable_thread_event_reporting): Update callers. - -2003-12-03 Ian Lance Taylor +2004-01-09 David Carlton - * NEWS: Mention new C++ demangler code. + Checked in by Elena Zannoni . + * dwarf2read.c (read_namespace): Pull out name-generating code + into namespace_name. Rename previous_namespace to previous_prefix + and processing_current_namespace to processing_current_prefix.. + (namespace_name): New function. + (add_partial_symbol): Substitute uses of pdi->name with + actual_name. + * cp-support.h: Rename processing_current_namespace to + processing_current_prefix. + Update copyright year. + * cp-namespace.c: Rename processing_current_namespace to + processing_current_prefix. + Update copyright year. + +2004-01-09 Andrew Cagney -2003-12-03 Andrew Cagney + * jv-valprint.c, ser-unix.c: Add missing copyright years. - * ppc-linux-nat.c (store_register, fetch_register): Convert - between ptrace and regcache's wordsize. - (ppc_register_u_addr): Use the ptrace wordsize. +2004-01-09 Mark Kettenis -2003-12-02 Kevin Buettner + * dbxread.c (read_dbx_symtab): Ignore N_PATCH stabs instead of + complaining. + (process_one_symbol): Deal with N_PATCH stabs. - * frv-tdep.c (frv_gdbarch_init): Add case for fr550. +2004-01-09 Elena Zannoni -2003-12-02 Daniel Jacobowitz + * dwarf2read.c (read_array_type): Discard FORTRAN_HACK macro and + ifdeffed code. + Update copyright year. - * dwarf2read.c (dwarf_info_offset, dwarf_abbrev_offset) - (dwarf_line_offset, dwarf_pubnames_offset, dwarf_aranges_offset) - (dwarf_loc_offset, dwarf_macinfo_offset, dwarf_str_offset) - (dwarf_ranges_offset, dwarf_frame_offset, dwarf_eh_frame_offset): - Delete. - (dwarf2_read_section): Remove offset and size arguments. Use - bfd_get_section_size_before_reloc and sectp->filepos. - (dwarf2_has_info): Clear section variables instead of offsets. - (dwarf2_locate_sections): Don't initialize the deleted variables. - (dwarf2_build_psymtabs): Update calls to dwarf2_read_section. - (dwarf2_build_psymtabs_easy): Likewise. - * dwarf2-frame.c (dwarf_frame_offset, dwarf_frame_size) - (dwarf_eh_frame_offset, dwarf_eh_frame_size): Remove extern - declarations. - (dwarf2_read_section): Update prototype. - (dwarf2_build_frame_info): Update calls to dwarf2_read_section. - Use bfd_get_section_size_before_reloc instead of global size - variables. - -2003-12-01 Michael Chastain - - * dwarfread.c: Update documentation on the state of dwarf-1. - -2003-12-01 Andrew Cagney +2004-01-08 Michael Chastain - Obsolete old MIPS SVr3 and SVr4 systems. - * NEWS: Mention obsoleted systems. - * configure.tgt: Mark mips*-*-sysv4* as obsolete. - * configure.host: Mark mips-dec-*, mips-little-*, mips-sony-*, - mips-*-sysv4*, mips-*-sysv*, mips-*-riscos* and mips-*-mach3* as - obsolete. - * config/mips/decstation.mh: Mark as obsolete. - * config/mips/littlemips.mh: Mark as obsolete. - * config/mips/nm-mips.h: Mark as obsolete. - * config/mips/xm-mips.h: Mark as obsolete. - * config/mips/news-mips.mh: Mark as obsolete. - * config/mips/nm-news-mips.h: Mark as obsolete. - * config/mips/riscos.mh: Mark as obsolete. - * config/mips/nm-riscos.h: Mark as obsolete. - * config/mips/xm-riscos.h: Mark as obsolete. - * config/mips/mipsv4.mt: Mark as obsolete. - * config/mips/tm-mipsv4.h: Mark as obsolete. - * config/mips/xm-mipsv4.h: Mark as obsolete. + * config/pa/tm-hppa.h: Update extern declarations for + hppa32_hpux_frame_saved_pc_in_sigtramp, + hppa32_hpux_frame_base_before_sigtramp, and + hppa32_hpux_frame_find_saved_regs_in_sigtramp. - Obsolete old m68k systems. - * configure.host: Mark m68*-sun-*, m68*-sun-sunos4*, - m68*-sun-sunos3*, m68*-motorola-*, m68*-*-sysv4*, m68*-*-lynxos*, - m68*-bull*-sysv*, m68*-att-*, m680[01]0-sun-sunos4*, and - m680[01]0-sun-sunos3* as obsolete. - * configure.tgt: Mark m68*-*-lynxos*, m68*-*-sunos3*, - m68*-*-sunos4*, m68*-*-sysv4*, m68000-*-sunos3*, m68000-*-sunos4*, - m68*-bull-sysv*, m68*-att-*, and m68*-motorola-*, as obsolete. - * config/m68k/sun3os4.mh: Mark file obsolete. - * config/m68k/xm-sun3os4.h: Mark file obsolete. - * config/m68k/sun3os3.mh: Mark file obsolete. - * config/m68k/nm-sun3.h: Mark file obsolete. - * config/m68k/xm-sun3.h: Mark file obsolete. - * config/m68k/sun2os4.mh: Mark file obsolete. - * config/m68k/sun2os3.mh: Mark file obsolete. - * config/m68k/nm-sun2.h: Mark file obsolete. - * config/m68k/xm-sun2.h: Mark file obsolete. - * config/m68k/m68kv4.mh: Mark file obsolete. - * config/m68k/nm-sysv4.h: Mark file obsolete. - * config/m68k/xm-m68kv4.h: Mark file obsolete. - * config/m68k/m68klynx.mh: Mark file obsolete. - * config/m68k/nm-m68klynx.h: Mark file obsolete. - * config/m68k/dpx2.mh: Mark file obsolete. - * config/m68k/xm-dpx2.h: Mark file obsolete. - * config/m68k/nm-dpx2.h: Mark file obsolete. - * config/m68k/delta68.mh: Mark file obsolete. - * config/m68k/xm-delta68.h: Mark file obsolete. - * config/m68k/nm-delta68.h: Mark file obsolete. - * config/m68k/3b1.mh: Mark file obsolete. - * config/m68k/xm-3b1.h: Mark file obsolete. - * config/m68k/sun3os4.mt: Mark file obsolete. - * config/m68k/tm-sun3os4.h: Mark file obsolete. - * config/m68k/sun3os3.mt: Mark file obsolete. - * config/m68k/tm-sun3.h: Mark file obsolete. - * config/m68k/sun2os4.mt: Mark file obsolete. - * config/m68k/tm-sun2os4.h: Mark file obsolete. - * config/m68k/sun2os3.mt: Mark file obsolete. - * config/m68k/tm-sun2.h: Mark file obsolete. - * config/m68k/m68kv4.mt: Mark file obsolete. - * config/m68k/tm-m68kv4.h: Mark file obsolete. - * config/m68k/m68klynx.mt: Mark file obsolete. - * config/m68k/tm-m68klynx.h: Mark file obsolete. - * config/m68k/dpx2.mt: Mark file obsolete. - * config/m68k/tm-dpx2.h: Mark file obsolete. - * config/m68k/delta68.mt: Mark file obsolete. - * config/m68k/tm-delta68.h: Mark file obsolete. - * config/m68k/3b1.mt: Mark file obsolete. - * config/m68k/tm-3b1.h: Mark file obsolete. +2004-01-08 Michael Chastain -2003-11-29 Mark Kettenis + * config/pa/tm-hppah.h: Update copyright years. - * x86-64-tdep.c (MAX_CLASSES): Remove macro. - (x86_64_reg_class): Remove enum. - (merge_classes, classify_argument, examine_argument): Remove - functions. - (INT_REGS, SSE_REGS): Remove macros. - (x86_64_push_arguments): Remove function. - (amd64_push_arguments): New function. - (x86_64_push_dummy_call): Call amd64_push_arguments instead of - x86_64_push_arguments. +2004-01-08 Andrew Cagney -2003-11-28 Mark Kettenis + * mips-tdep.c (mips_n32n64_reg_struct_has_addr): Delete function. + (mips_o32_reg_struct_has_addr): Delete function. + (mips_gdbarch_init): Update. + (mips_extract_struct_value_address): Delete function. - * x86-64-tdep.c (x86_64_frame_cache): Don't bail out if %rbp is - zero. Reorganize code a bit. +2004-01-08 David Mosberger -2003-11-27 Mark Kettenis + * ia64-linux-tdep.c: Update GATE_AREA_END value to reflect + reality. - * dwarf2-frame.c: Fix another comment. +2004-01-07 Andrew Cagney - * x86-64-tdep.c (RET_INT_REGS, RET_SSE_REGS): Remove defines. - (x86_64_use_struct_convention, x86_64_extract_return_value, - x86_64_store_return_value): Remove. - (amd64_reg_class): New enum. - (amd64_merge_classes, amd64_classify_aggregate, amd64_classify, - amd64_return_value): New functions. - (x86_64_init_abi): Don't set extract_return_value, - store_return_value and use_struct_convention. Set return_value to - amd64_return_value. - * i387-tdep.h (i387_return_value): New prototype. - * i387-tdep.c (i387_return_value): New function. + * mips-tdep.c (mips_gdbarch_init): Set elf_flags to the previous + architecture's elf flags (when available). - * dwarf2-frame.c: Fix some comments and whitespace problems. + * mips-tdep.c (mips_gdbarch_init): Move code determining the MIPS + FPU to the start, check the MIPS FPU when looking for an old + architecture. + (set_mipsfpu_single_command): Update the architecture. + (set_mipsfpu_double_command, set_mipsfpu_none_command): Ditto. - * i386nbsd-tdep.c: Don't include "gdbtypes.h". Include - "gdb_assert.h" and "gdb_string.h". - (i386nbsd_r_reg_offset): Rename from regmap. - (SIZEOF_STRUCT_REG): Remove. - (i386nbsd_supply_reg, fetch_core_registers, - fetch_elfcore_registers, i386nbsd_core_fns, i386nbsd_elfcore_fns): - Remove. - (i386nbsd_aout_supply_regset, - i386nbsd_aout_regset_from_core_section): New functions. - (i386nbsd_sc_reg_offset): Don't explicitly specify size of array. - (i386nbsd_init_abi): Initialize TDEP->gregset_reg_offset, - TDEP->gregset_num_regs amd sizeof_gregset. Use ARRAY_SIZE to - initialize TDEP->sc_num_regs. - (i386nbsdaout_init_abi): New function. - (i386nbsdelf_init_abi): Remove initialization of - TDEP->num_xmm_regs. Don't set num_regs here. - (_initialize_i386nbsd_tdep): Don't call add_core_fns. Use - i386nbsd_aout_init to register NetBSD a.out OS/ABI. + * mips-tdep.c (MIPS_DEFAULT_MASK_ADDRESS_P): Delete macro. + (mips_mask_address_p): Add "tdep" parameter. + (show_mask_address, mips_addr_bits_remove): Update. + (mips_dump_tdep): Update. + (MIPS_DEFAULT_STACK_ARGSIZE): Delete macro. + (MIPS_STACK_ARGSIZE): Delete macro. + (mips_stack_argsize, mips_eabi_push_dummy_call): Update. + (mips_n32n64_push_dummy_call, mips_o32_push_dummy_call): Update. + (mips_o64_push_dummy_call, mips_o32_return_value): Update. + (mips_dump_tdep): Update. + (MIPS_SAVED_REGSIZE): Delete macro. + (MIPS_DEFAULT_SAVED_REGSIZE): Delete macro. + (mips_saved_regsize, mips_eabi_use_struct_convention): Update. + (mips_eabi_reg_struct_has_addr, mips_find_saved_regs): Update. + (mips_frame_saved_pc, mips16_heuristic_proc_desc): Update. + (mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call): Update. + (mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update. + (mips_pop_frame, return_value_location): Update. + (mips_n32n64_return_value, mips_dump_tdep): Update. - * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Use - .note.netbsdcore.procinfo section to recognize NetBSD core files. + * mips-tdep.c (mips_gdbarch_init): Clean up code selecting the + MIPS ABI. -2003-11-26 Michael Chastain + * mips-tdep.c: Update copyright. + (mips_gdbarch_init): Merge two code blocks handling the register + name and number layout. - * cp-abi.c: Update copyright years. +2004-01-02 Pawel Ostrowski -2003-11-25 Andrew Cagney + * tracepoint.c (validate_actionline): Fix segv at EOF - * thread-db.c (enable_thread_event): New function. Ensure that BP - is a code address. - (enable_thread_event_reporting): Use enable_thread_event. +2004-01-07 Michael Chastain -2003-11-25 Michael Snyder + * hpread.c (hpread_read_struct_type): Call SET_FIELD_PHYSNAME + properly for static fields. - * mips-tdep.c (mips_o64_extract_return_value): Correct for - NUM_REGS (see changes 2003-06-21). - (mips_eabi_extract_return_value): Ditto. +2004-01-06 Jeff Johnston + Jason Molenda -2003-11-25 Andrew Cagney + * disasm.c: Update copyright to include 2004. + (do_mixed_source_and_assembly): For uiout asm list + and tuple cleanups, initialize to null_cleanup instead of + NULL and do so prior to loop. Only reset when we close off + the tuple/list. Move check for whether to close off the + asm tuple/list to after dump_insns call where it will be run + on each loop iteration. - * infrun.c: Don't include "exec.h". - (handle_inferior_event): Pass current_target, instead of exec_ops, - to SOLIB_ADD. Add comments. - * Makefile.in (infrun.o): Update dependencies. +2004-01-05 Andrew Cagney -2003-11-24 Daniel Jacobowitz + * ser-unix.c (ser_unix_async): Fix tipo, "NOTHING_SECHEDULED" + should be a switch case and not a label. + * mips-tdep.c (mips32_next_pc): Delete unused labels + "greater_equal_branch" and "less_zero_branch". + * jv-valprint.c (java_print_value_fields): Delete unused label + "flush_it". - * NEWS: Mention improved location expression support. + * target.c (unpush_target): Only close a target that is in the + target stack. -2003-11-23 Andrew Cagney +2004-01-05 Mark Kettenis - * Makefile.in (infrun.o): Update dependencies. - * infrun.c: Include "exec.h". - (handle_inferior_event): Pass exec_ops to SOLIB_ADD. + * sparc-tdep.c (sparc_extract_struct_value_address): Get the + address from [sp + 64] instead of %o2. -2003-11-23 Andrew Cagney + * frame.c (get_prev_frame): Don't try to unwind the PC. This + fixes PR backtrace/1476. - * frame.c (frame_unwind_signed_register): Delete function. - * frame.h (frame_unwind_register_signed): Delete declaration. - * mips-tdep.c (mips_frame_saved_pc): Use frame_unwind_register_signed. +2004-01-05 Andrew Cagney - * arch-utils.h (generic_cannot_extract_struct_value_address): - Delete declaration. + * libunwind-frame.h (struct frame_id): Add opaque declaration, + move to start of file. + * i386-tdep.h (struct regcache): Add opaque declaration. + * config/ia64/nm-linux.h (struct target_ops): Add opaque + declaration. + * ia64-tdep.c (ia64_find_proc_info_x): Do not use __FUNCTION__. + (ia64_gdbarch_init): Use "GNU/Linux" in comment. + * win32-nat.c (fake_create_process): Use ISO C style definition. + * stabsread.c (define_symbol): Delete #ifndef + DEPRECATED_USE_REGISTER_NOT_ARG wrapper around + stabs_argument_has_addr call, macro never defined. - * defs.h (DEPRECATED_STREQN): Rename STREQN. - (DEPRECATED_STREQ): Rename STREQ. - * ada-exp.y, ada-lang.c, ada-lex.l, coffread.c: Update. - * config/mips/tm-irix5.h, config/mips/tm-irix6.h: Update. - * config/mips/tm-mipsv4.h, config/sparc/tm-sun4sol2.h: Update. - * dbxread.c, dwarf2read.c, dwarfread.c, environ.c: Update. - * eval.c, exec.c, f-lang.c, hppa-tdep.c, hpread.c: Update. - * jv-exp.y, language.c, m2-exp.y, mcore-rom.c: Update. - * mdebugread.c, mipsread.c, objc-exp.y, objfiles.c: Update. - * p-exp.y, p-typeprint.c, p-valprint.c, rs6000-nat.c: Update. - * source.c, sparc-tdep.c, stack.c, target.c: Update. +2004-01-04 Michael Chastain - * symfile.c (symbol_file_command): Replace STREQ with strcmp. - * elfread.c (elf_symtab_read): Delete STREQ from comment. + * op50-rom.c: Delete. + * w89k-rom.c: Delete. + * Makefile.in: Remove references. -2003-11-22 Andrew Cagney +2004-01-04 Mark Kettenis + + * x86-64-tdep.c: Update copyright year. + (struct amd64_register_info): Rename from x86_64_register_info. + (amd64_register_info): Rename from x86_64_register_info. + (AMD64_NUM_REGS): Rename from X86_64_NUM_REGS. + (amd64_register_name): Rename from x86_64_register_name. + (amd64_register_type): Rename from x86_64_register_type. + (amd64_dwarf_regmap): Rename from x86_64_dwarf_regmap. + (amd64_dwarf_regmap_len): Rename from x86_64_dwarf_regmap_len. + (amd64_dwarf_reg_to_regnum): Rename from + x86_64_dwarf_reg_to_regnum. + (amd64_convert_register_p): Rename from x86_64_convert_register_p. + (amd64_push_dummy_call): Rename from x86_64_push_dummy_call. + (AMD64_NUM_SAVED_REGS): Rename from X86_64_NUM_SAVED_REGS. + (struct amd64_frame_cache): Renamed from x86_64_frame_cache. + (amd64_alloc_frame_cache): Renamed from x86_64_alloc_frame_cache. + (amd64_analyze_prologue): Rename from x86_64_analyze_prologue. + (amd64_skip_prologue): Rename from x86_64_skip_prologue. + (amd64_frame_cache): Rename from x86_64_frame_cache. + (amd64_frame_this_id): Rename from x86_64_frame_this_id. + (amd64_frame_prev_register): Rename from + x86_64_frame_prev_register. + (amd64_frame_unwind): Rename from x86_64_frame_unwind. + (amd64_frame_sniffer): Rename from x86_64_frame_sniffer. + (amd64_sigtramp_frame_cache): Rename from + x86_64_sigtramp_frame_cache. + (amd64_sigtramp_frame_prev_register): Rename from + x86_64_sigtramp_frame_prev_register. + (amd64_sigtramp_frame_unwind): Rename from + x86_64_sigtramp_frame_unwind. + (amd64_sigtramp_frame_sniffer): Rename from + x86_64_sigtramp_frame_sniffer. + (amd64_frame_base_address): Rename from x86_64_frame_base_address. + (amd64_frame_base): Rename from x86_64_frame_base. + (amd64_unwind_dummy_id): Rename from x86_64_unwind_dummy_id. + (amd64_frame_align): Rename from x86_64_frame_align. + (amd64_supply_fpregset): Rename from x86_64_supply_fpregset. + (amd64_regset_from_core_section): Rename from + x86_64_regset_from_core_section. + (x86_64_init_abi): Update comments. + +2004-01-04 Nick Roberts - * frame.c (deprecated_frame_xmalloc): Delete function. - (deprecated_set_frame_extra_info_hack): Delete function. - (deprecated_set_frame_saved_regs_hack): Delete function. - * frame.h (deprecated_frame_xmalloc): Delete declaration. - (deprecated_set_frame_extra_info_hack): Delete declaration. - (deprecated_set_frame_saved_regs_hack): Delete declaration. - * mcore-tdep.c (analyze_dummy_frame): Instead of - deprecated_frame_xmalloc, deprecated_set_frame_saved_regs_hack, - and deprecated_set_frame_extra_info_hack use - deprecated_frame_xmalloc_with_cleanup. - * mn10300-tdep.c (analyze_dummy_frame): Ditto. - * mips-tdep.c (mips_init_extra_frame_info): Delete call to - deprecated_set_frame_saved_regs_hack. + * MAINTAINERS (write after approval): Add myself. - * mips-tdep.c (mips_frame_chain): Delete call to - deprecated_inside_entry_file. +2004-01-04 Mark Kettenis - * frame.h (deprecated_set_frame_next_hack): Delete declaration. - (deprecated_set_frame_prev_hack): Delete declaration. - * frame.c (deprecated_set_frame_next_hack): Delete function. - (deprecated_set_frame_prev_hack): Delete function. - * mcore-tdep.c (analyze_dummy_frame): Delete calls to - "deprecated_set_frame_next_hack" and - "deprecated_set_frame_prev_hack". - * mn10300-tdep.c (analyze_dummy_frame): Ditto. + * sparc64-tdep.c (sparc64_store_arguments): Fix handling of + `float' arguments. - * mips-tdep.c (mips_register_convertible): Delete function. - (mips_register_convert_to_virtual): Delete function. - (mips_register_convert_to_raw): Delete function. - (mips_gdbarch_init): Do not set "deprecated_register_convertible", - "deprecated_register_convert_to_virtual", or - "deprecated_register_convert_to_raw". - (mips_pseudo_register_write, mips_pseudo_register_read): Handle - 32/64 cooked to raw register conversions. +2004-01-04 Mark Kettenis - * frame.c (deprecated_get_frame_context): Delete function. - (deprecated_set_frame_context): Delete function. - (struct frame_info): Delete member "context". - * frame.h (deprecated_get_frame_context): Delete declaration. - (deprecated_set_frame_context): Delete declaration. + * sparc64-tdep.c (sparc64_store_floating_fields): Update comment + such that it mentions a specific version of GCC that exhibits this + bug. - * procfs.c (procfs_wait): Delete FAULTED_USE_SIGINFO comment. - * config/sparc/tm-sun4sol2.h (FAULTED_USE_SIGINFO): Delete macro. - * config/i386/tm-i386sol2.h (FAULTED_USE_SIGINFO): Delete macro. - * config/alpha/nm-osf2.h (FAULTED_USE_SIGINFO): Delete macro. +2004-01-03 Mark Kettenis - * mips-tdep.c (SIGFRAME_REG_SIZE): Delete macro. - (mips_find_saved_regs): Replace SIGFRAME_REG_SIZE with - mips_regsize. - (mips_dump_tdep): Do not print SIGFRAME_REG_SIZE. - * config/mips/tm-irix6.h (SIGFRAME_REG_SIZE): Delete macro. - * config/mips/tm-irix5.h: Update copyright. - (SIGFRAME_REG_SIZE): Delete macro. + * sparc64-tdep.c (sparc64_store_floating_fields): If TYPE is a + structure that has a single `float' member, store it in %f1 in + addition to %f0. - * hppa-tdep.c (hppa_value_returned_from_stack): Delete function. - * config/pa/tm-hppa.h (hppa_value_returned_from_stack): Delete - declaration. - (DEPRECATED_VALUE_RETURNED_FROM_STACK): Delete macro. - * infcall.c (call_function_by_hand): Delete #ifdef - DEPRECATED_VALUE_RETURNED_FROM_STACK code. - * infcmd.c (print_return_value): Ditto. + * sparc-sol2-nat.c: Add missing '\'. - * mips-tdep.c (skip_prologue_using_sal): New function. - (mips32_skip_prologue, mips16_skip_prologue): Use - skip_prologue_using_sal to get an upper bound on the search. + * sparc-tdep.c (sparc32_return_value): New function. + (sparc32_use_struct_convention, sparc32_return_value_on_stack): + Remove functions. + (sparc32_gdbarch_init): Set return_value, don't set + extract_return_value, store_return_value, use_struct_convention + and return_value_on_stack. - * config/powerpc/tm-linux.h (PROLOGUE_FIRSTLINE_OVERLAP): Delete - #if 0'ed macro. - * infrun.c (step_into_function): Delete #ifdef - PROLOGUE_FIRSTLINE_OVERLAP code. - * symtab.c (find_function_start_sal): Ditto. + * sparc-sol2-nat.c: Add missing ')'. - * remote-rdp.c: Update copyright. - (rdp_init): #if 0 references to "target_byte_order". +2004-01-03 J. Brobecker - * mips-tdep.c (mips_o32_store_return_value): Delete function. - (mips_o32_return_value): Replace mips_o32_xfer_return_value. - (mips_o32_extract_return_value): Delete function. - (mips_n32n64_return_value): Replace mips_n32n64_xfer_return_value. - (mips_n32n64_extract_return_value): Delete function. - (mips_n32n64_store_return_value): Delete function. - (mips_gdbarch_init): For o32 and n32n64, set "return_value" - instead of "store_return_value", "extract_return_value", and - "use_struct_convention". - (mips_n32n64_use_struct_convention): Delete function. + * infrun.c (handle_step_into_function): New function. + (handle_inferior_event): Extract out some code into the new + function above. -2003-11-21 Kevin Buettner +2004-01-03 J. Brobecker - * frv-tdep.c (frv_frame_this_id): Eliminate call to - inside_entry_func(). + * infrun.c (handle_inferior_event): Move the declaration of + real_stop_pc inside the if blocks where it is used. -2003-11-20 Mark Kettenis +2004-01-03 Mark Kettenis - * i386-tdep.c (i386_extract_return_value, - i386_store_return_value): Add gdbarch argument. Use it instead of - determining it from REGCACHE. Remove recursive call for - structures with a single member. - (i386_use_struct_convention): Remove. - (i386_reg_struct_return_p): New function. - (i386_return_value): New function. - (i386_gdbarch_init): Set return_value, don't set + * sparc64-tdep.c (sparc64_16_byte_align_p) + (sparc64_store_floating_fields, sparc64_store_floating_fields): + Use check_typedef to get subtypes of structures and unions. + (sparc64_store_return_value): Fix calculation of the appropriate + offset into VALBUF when storing a structure or union. + (sparc64_return_value): New function. + (sparc64_use_struct_convention): Remove function. + (sparc64_init_abi): Set return_value, don't set extract_return_value, store_return_value and use_struct_convention. - * x86-64-tdep.c (x86_64_init_abi): Set return_value to NULL. - -2003-11-20 Jim Blandy - - * osabi.c (_initialize_gdb_osabi): Don't return before registering - the 'set osabi' and 'show osabi' commands. - -2003-11-19 Mark Kettenis - - * frame.c (get_prev_frame): Use result from - get_frame_address_in_block instead of get_frame_pc as argument to - inside_main_func. Fixes PR backtrace/1435. - -2003-11-19 Andrew Cagney - - * stack.c (return_command): Handle "void", "legacy" and "unknown - location" return values separatly. - * values.c (using_struct_return): Return 0 for a "void" return - type. Mention "register_value_being_returned". - (register_value_being_returned): Mention "using_struct_return". - -2003-11-19 Daniel Jacobowitz - - * dwarf2read.c (offreg, basereg, isderef, frame_base_reg) - (frame_base_offset): Delete. - (read_func_scope): Delete call to decode_locdesc. - (decode_locdesc): Update comments. Don't set the removed variables. - Complain for DW_OP_reg* not at the end. Remove DW_OP_breg* and - DW_OP_fbreg support. - -2003-11-18 Daniel Jacobowitz - - * dwarf2read.c (optimized_out, islocal): Remove. - (decode_locdesc): Update comments. Don't set optimized_out - or islocal. - -2003-11-17 Jeff Johnston - David Mosberger - - * ia64-tdep.c: Include elf.h. - [HAVE_LIBUNWIND_IA64_H]: Include libunwind-frame.h and - libunwind-ia64.h. - (ia64_rse_slot_num, ia64_rse_skip_regs): New for libunwind support. - (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum): Ditto. - (ia64_is_fpreg, ia64_access_reg): Ditto. - (ia64_access_fpreg, ia64_access_mem): Ditto. - (get_kernel_table): Ditto. - (ia64_find_unwind_table): Ditto. - (ia64_find_proc_info_x, ia64_put_unwind_info): Ditto. - (ia64_get_dyn_info_list, ia64_libunwind_frame_this_id): Ditto. - (ia64_libunwind_frame_prev_register): Ditto. - (ia64_libunwind_frame_sniffer): Ditto. - (ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Add libunwind frame - sniffer. Register libunwind functions needed by generic - libunwind frame code using libunwind_frame_set_descr(). - -2003-11-16 Daniel Jacobowitz - - * breakpoint.c (re_enable_breakpoints_in_shlibs): Only re-enable a - bp_shlib_disabled breakpoint if there is a shared library mapped - at its expected address. - -2003-11-16 Andrew Cagney - - * configure.tgt: Delete mips*tx39*-elf*. - * config/mips/tm-tx39.h: Delete file. - * config/mips/tx39.mt: Delete file. - * config/mips/tx39.mt: Delete file. - - * mips-tdep.h (deprecated_mips_set_processor_regs_hack): Declare. - * remote-mips.c (common_open): Instead of - "mips_read_register_type" and "mips_set_processor_type_command" - call "deprecated_mips_set_processor_regs_hack". - * config/mips/tm-mips.h (mips_read_processor_type): Delete - declaration. - (mips_set_processor_type_command): Delete declaration. - * mips-tdep.c (mips_gdbarch_init): Update comment. - (mips_dump_tdep): Do not print MIPS_REGISTER_NAMES. - (mips_set_processor_type): Delete function. - (NUM_MIPS_PROCESSOR_REGS): Define. - (mips_show_processor_type_command): Delete function. - (mips_set_processor_type_command): Delete function. - (tmp_mips_processor_type): Delete. - (mips_processor_type): Delete. - (mips_processor_type_table): Delete. - (mips_r3051_reg_names): Delete. - (mips_r3081_reg_names): Delete. - (mips_lsi33k_reg_names): Delete. - (mips_processor_reg_names): Delete. - (mips_read_processor_type): Delete function. - (deprecated_mips_set_processor_regs_hack): New function. - (struct gdbarch_tdep): Add member "mips_processor_reg_names". - (mips_register_name): Get the processor names from the tdep. - (mips_tx39_reg_names): New array. - (mips_generic_reg_names): Wire to a standard set of names. - (mips_gdbarch_init): Set "mips_processor_reg_names". - * config/mips/tm-irix5.h (MIPS_REGISTER_NAMES): Delete macro. - * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Delete macro. - * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Delete macro. - -2003-11-16 Andrew Cagney - - * mips-tdep.c (struct gdbarch_tdep): Add field "regnum". - (mips_fpa0_regnum, mips_regnum): New function. - (mips_gdbarch_init): Fill in the "regnum" fields. - * mips-tdep.h (struct mips_regnum): Define. - (mips_regnum): Declare. - * config/mips/tm-mips.h (BADVADDR_REGNUM): Delete macro. - (LO_REGNUM, HI_REGNUM, BADVADDR_REGNUM): Ditto. - (CAUSE_REGNUM, PC_REGNUM, FP0_REGNUM): Ditto. - (FCRCS_REGNUM, FCRIR_REGNUM, FPA0_REGNUM): Ditto. - * config/mips/tm-irix6.h (FP0_REGNUM): Delete macro. - (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto. - (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto. - * config/mips/tm-irix5.h (FP0_REGNUM): Delete macro. - (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto. - (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto. - * remote-mips.c: Include "mips-tdep.h". Update. - * mipsnbsd-tdep.c: Update. - * mipsv4-nat.c: Update. - * mips-tdep.c: Update. - * mips-nat.c: Update. - * mips-linux-tdep.c: Update. - * mips-linux-nat.c: Update. - * irix5-nat.c: Update. - * dve3900-rom.c: Include "mips-tdep.h". Update. - (ignore_packet): Supress GCC warning. - * config/mips/nm-riscos.h: Update. - -2003-11-16 Andrew Cagney - - * mips-tdep.c: Replace DEPRECATED_REGISTER_RAW_SIZE with - register_size. - (mips_register_raw_size): Delete function. - (mips_register_type): Handle "mips64_transfers_32bit_regs_p". - (mips_gdbarch_init): Do not set "deprecated_register_raw_size". - Check and set "mips64_transfers_32bit_regs_p". - (struct gdbarch_tdep): Add "mips64_transfers_32bit_regs_p". - (mips_register_convertible): Check the architecture's - "mips64_transfers_32bit_regs_p". - (set_mips64_transfers_32bit_regs): New function. - (_initialize_mips_tdep): Use "add_setshow_cmd" when adding the - "set remote-mips64-transfers-32bit-regs" command. Specify - set_mips64_transfers_32bit_regs as the set function. - * Makefile.in (dve3900-rom.o, remote-mips.o): Update dependencies. - -2003-11-16 Mark Kettenis - - * i386-tdep.h (i386_supply_gregset): Provide prototype. - * i386-tdep.c (i386_supply_gregset): Make public. - -2003-11-16 Andrew Cagney - - * mips-tdep.c (mips_register_byte): Delete function. - (mips_gdbarch_init): Do not set "deprecated_register_byte". - * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Delete macro. - * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Delete macro. - * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Delete macro. - -2003-11-16 Mark Kettenis - - * i386-tdep.c (i386_extract_return_value): Don't use bfd_byte. - -2003-11-16 Andrew Cagney - - * config/mips/linux64.mt: Delete file. - * config/mips/tm-linux64.h: Delete file. - * config/mips/tm-mips64.h: Delete file. - * config/mips/embed64.mt: Delete file. - * config/djgpp/fnchange.lst: Update. - * configure.tgt: Delete explicit patterns for mipsisa64*-*-linux*, - mips64*-*-linux*, mips64*-*-*, and mipsisa64*-*-*. - * config/mips/tm-irix6.h: Update copyright. Include - "mips/tm-mips.h" instead of "mips/tm-mips64.h". - * mips-tdep.c (mips_dump_tdep): Do not print "OP_LDFPR" or - "OP_LDGPR". - -2003-11-15 Andrew Cagney - - * mips-tdep.c (mips_register_type): Simplify. Eliminate reference - to MIPS_REGISTER_TYPE. Make integer registers signed. Make IRIX - n32 registers 64 bit. - (mips_register_raw_size, mips_register_byte): For pseudo - registers, use the register's pseudo size and not the - corresponding raw register's size. - * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Delete macro. - * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Delete macro. - * config/mips/tm-irix6.h: Don't #undef MIPS_REGISTER_TYPE. - * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Delete macro. - -2003-11-15 Andrew Cagney - - * mips-tdep.c (struct gdbarch_tdep): Delete member - gdb_target_is_mips64. - (GDB_TARGET_IS_MIPS64): Delete macro. - (mips_gdbarch_init): Do not set tdep's gdb_target_is_mips64. - (mips_dump_tdep): Do not print GDB_TARGET_IS_MIPS64. - (mips_addr_bits_remove): Simplify. - - * mips-tdep.c: Replace DEPRECATED_REGISTER_VIRTUAL_SIZE with - register_size. - - Replace MIPS_REGSIZE with mips_regsize. - * mips-tdep.c (mips_regsize): New function. - * mips-tdep.h (mips_regsize): Declare. - * mipsnbsd-tdep.h (SIZEOF_STRUCT_FPREG): Update. - (SIZEOF_STRUCT_REG): Update. - * mipsnbsd-tdep.c (mipsnbsd_supply_reg): Update. - (mipsnbsd_fill_reg): Update. - (mipsnbsd_supply_fpreg): Update. - (mipsnbsd_fill_fpreg): Update. - (NBSD_MIPS_JB_ELEMENT_SIZE): Update. - * mips-tdep.c (mips_register_raw_size): Update. - (mips_register_type): Update. - (SIGFRAME_BASE): Update. - (SIGFRAME_PC_OFF): Update. - (SIGFRAME_REGSAVE_OFF): Update. - (SIGFRAME_FPREGSAVE_OFF): Update. - (SIGFRAME_REG_SIZE): Update. - (mips32_heuristic_proc_desc): Update. - (print_gp_register_row): Update. - (mips_dump_tdep): Do not print MIPS_REGSIZE. - * irix5-nat.c (supply_gregset): Update. - (fetch_core_registers): Update. - * config/mips/tm-mips64.h (MIPS_REGSIZE): Delete macro. - * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Update. - * config/mips/tm-mips.h (MIPS_REGSIZE): Delete macro. - (MIPS_REGISTER_BYTE): Update. - * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Update. - -2003-11-15 Andrew Cagney - - * config/sparc/tm-sparc.h (DEPRECATE_USE_REGISTER_NOT_ARG): Rename - USE_REGISTER_NOT_ARG. - * stabsread.c (define_symbol): Update. - -2003-11-15 Andrew Cagney - - * bcache.h (deprecated_bcache): Declare. - (bcache): Make returned buffer constant. - * bcache.c (deprecated_bcache): New function. - (bcache_data): New function. - (bcache): Call bcache data. - * symfile.c (add_psymbol_to_list): Use deprecated_bcache. - (add_psymbol_with_dem_name_to_list): Ditto. - -2003-11-15 Mark Kettenis - - * glibc-tdep.h (struct gdbarch): Declare opaque. - (glibc_skip_solib_resolver): Adjust prototype. - * glibc-tdep.c (glibc_skip_solib_resolver): Adjust. - * arm-linux-tdep.c (arm_linux_skip_solib_resolver): Remove. - (arm_linux_init_abi): Set skip_solib_resolver. - * i386-linux-tdep.c (i386_linux_skip_solib_resolver): Remove. - (i386_linux_init_abi): Set skip_solib_resolver. - * config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove. - (arm_linux_skip_solib_resolver): Remove prototype. - * config/i386/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove. - (i386_linux_skip_solib_resolver): Remove prototype. - -2003-11-14 Mark Kettenis - - * gdbarch.sh (skip_solib_resolver): Change into a multi-arch - function. - * gdbarch.c, gdbarch.h: Regenerate. - * infrun.c (handle_inferior_event): Call - gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER. - * arch-utils.c (generic_in_solib_call_trampoline): Adjust function - definition. - * arch-utils.h (generic_in_solib_call_trampoline): Adjust function - prototype. - -2003-11-14 Jeff Johnston - - * libunwind-frame.c: New file. - * libunwind-frame.h: New file. - * acconfig.h (HAVE_LIBUNWIND): #undef reference added. - * configure.in: Add --with-libunwind option support. Define - HAVE_LIBUNWIND if libunwind support selected / defaulted. - Also check for libunwind.h and libunwind-ia64.h headers. - * configure: Regenerated. - * Makefile.in: Add support for libunwind-frame.o. - * config.in: Regenerated. - -2003-11-14 Jeff Johnston - - * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to - set up the ia64 linux native target method for getting the kernel - unwind table. - * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function. - * inftarg.c (child_xfer_partial): Enable section of code to - handle TARGET_OBJECT_UNWIND_TABLE. - * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro. - -2003-11-14 Ian Lance Taylor - - * config/arm/nbsd.mt (TM_FILE): Define. - * config/arm/tm-nbsd.h: New file. -2003-11-14 Andrew Cagney - - * Makefile.in (ppc-sysv-tdep.o): Update dependencies. - * ppc-sysv-tdep.c: Include "objfiles.h". - (ppc64_sysv_abi_push_dummy_call): Provide the - the FN's objfile when looking for the descriptor. - - * ppc-linux-tdep.c (ppc_linux_init_abi): Set PPC64's - "name_of_malloc" to ".malloc". - -2003-11-13 Mark Kettenis - - * config/i386/x86-64linux.mt (TDEPFILES): Add glibc-tdep.o. - -2003-11-13 David Carlton - - * cp-namespace.c (lookup_namespace_scope): Fix typo in comment. - -2003-11-13 Andrew Cagney - - * arch-utils.h (selected_architecture_name): Declare. - (selected_byte_order): Declare. - * arch-utils.c (selected_byte_order): New function. - (selected_architecture_name): New function. - (target_architecture_auto): Make static. - (set_architecture_string): Make static. - (target_byte_order): Make static. - (target_byte_order_auto): Make static. - * gdbarch.sh (TARGET_BYTE_ORDER, TARGET_ARCHITECTURE): Delete - non-multi-arch definition. - (TARGET_ARCHITECTURE_AUTO, TARGET_BYTE_ORDER_AUTO): Delete. - (target_byte_order, target_architecture): Delete declaration. - (target_byte_order_auto, target_architecture_auto): Ditto. - * gdbarch.h: Re-generate. - * remote-sim.c (gdbsim_open): Use "selected_architecture_name" and - "selected_byte_order". - -2003-11-13 Andrew Cagney - - * ppc-linux-tdep.c (ppc_linux_return_value): Fix parameter order. - -2003-11-13 Jim Blandy - - * cp-namespace.c: Doc fix. - -2003-11-12 Michael Snyder - - * sh64_tdep.c: Regularize some names. - (sh_sh64_register_name): Rename to sh64_register_name. - (sh_sh64_breakpoint_from_pc): Rename to sh64_breakpoint_from_pc. - (sh_sh64_register_byte): Rename to sh64_register_byte. - (sh_sh64_build_float_register_type): - Rename to sh64_build_float_register_type. - (sh_sh64_register_convert_to_virtual): - Rename to sh64_register_convert_to_virtual. - (sh_sh64_register_convert_to_raw): - Rename to sh64_register_convert_to_raw. - - * sh64-tdep.c (translate_insn_rn, is_media_pseudo, - sh64_media_reg_base_num, sh64_compact_reg_base_num, - sh64_nofp_frame_init_saved_regs, sh64_push_arguments, - sh64_extract_return_value, sh64_show_media_regs, - sh64_show_compact_regs, sh_sh64_register_byte, sh64_register_type, - sh_sh64_register_convert_to_virtual, sh_sh64_register_convert_to_raw, - sh64_pseudo_register_read, sh64_pseudo_register_write, - sh64_do_pseudo_register, sh_compact_print_registers_info): - Delete unused variable 'tdep'. - - * sh64-tdep.c: Coding standard and spelling comment fixes. - (sh64_extract_return_value): Replace deprecated_store_floating - with store_typed_floating. - (sh_sh64_register_convert_to_raw): Replace - deprecated_store_floating with store_typed_floating. - (sh_sh64_register_virtual_type): Convert to sh64_register_type. - (sh64_frame_chain, sh64_get_saved_pr, sh64_get_saved_register, - sh64_nofp_frame_init_saved_regs, sh64_push_arguments, - sh64_extract_struct_value_address, sh64_pop_frame, - sh64_extract_return_value, sh64_store_return_value, - sh_sh64_register_convert_to_virtual, sh64_pseudo_register_read, - sh_sh64_register_convert_to_raw, sh_pseudo_register_write): - Replace DEPRECATED_REGISTER_RAW_SIZE with register_size. - Replace DEPRECATED_REGISTER_VIRTUAL_TYPE with register_type. - (sh64_gdbarch_init): Don't set deprecated_register_bytes, - deprecated_register_virtual_type, deprecated_register_raw_size, - deprecated_max_register_raw_size, or - deprecated_max_register_virtual_size. Instead, just set - gdbarch_register_type. - (sh_sh64_register_raw_size): Delete. - (sh_sh64_register_virtual_size): Delete. - -2003-11-12 Daniel Jacobowitz - - * dwarf2read.c (struct dwarf2_cu): New type. - - (dwarf2_build_psymtabs_hard, psymtab_to_symtab_1): Create a - dwarf2_cu structure to pass down. - - (scan_partial_symbols, add_partial_symbol, add_partial_namespace) - (add_partial_enumeration, locate_pdi_sibling, process_die) - (read_file_scope, read_func_scope) - (read_lexical_block_scope, dwarf2_get_pc_bounds) - (dwarf2_add_field, dwarf2_attach_fields_to_type) - (dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type) - (read_structure_scope, read_enumeration, read_array_type) - (read_common_block, read_namespace, read_tag_pointer_type) - (read_tag_ptr_to_member_type, read_tag_reference_type) - (read_tag_const_type, read_tag_volatile_type, read_tag_string_type) - (read_subroutine_type, read_typedef, read_base_type, read_comp_unit) - (read_die_and_children, read_die_and_siblings, dwarf2_read_section) - (dwarf2_read_abbrevs, dwarf2_lookup_abbrev, read_partial_die) - (read_full_die. read_attribute_value, read_attribute) - (read_address, dwarf_decode_line_header, dwarf_decode_lines) - (var_decode_location, new_symbol, dwarf2_const_value, die_type) - (die_containing_type, type_at_offset, tag_type_to_type) - (read_type_die, dwarf_base_type, decode_locdesc, dwarf_decode_macros) - (dwarf2_symbol_mark_computed): Accept and use a dwarf2_cu object. - -2003-11-12 Daniel Jacobowitz - - PR breakpoints/1450 - * breakpoint.c (insert_bp_location): Fix a logic error by returning - 0 after a catchpoint fails. - -2003-11-11 Michael Chastain - - * mips-tdep.c (msymbol_size): Delete. - -2003-11-07 Michael Chastain - - * symtab.h (struct minimal_symbol): Add size. - * dbxread.c: Use it. - * elfread.c: (record_minimal_symbol_and_info): Do not use info. - Rename to record_minimal_symbol. - (elf_symtab_read): Set MSYMBOL_SIZE explicitly. - * minsyms.c (prim_record_minimal_symbol_and_info): Initialize MSYMBOL_SIZE. - (install_minimal_symbols): Ditto. - * objfiles.c (terminate_minimal_symbol_table): Ditto. - * arm-tdep.c: Delete unused MSYMBOL_SIZE. - * m68hc11-tdep.c: Ditto. - * mips-tdep.c: Ditto. - * sh64-tdep.c: Ditto. - -2003-11-10 Michael Chastain - - * MAINTAINERS: Change my e-mail address. - -2003-11-10 Andrew Cagney - - * gdbarch.sh (return_value): Replace "inval" and "outval" with - "readbuf" and "writebuf". - * ppcnbsd-tdep.c (ppcnbsd_return_value): Ditto. - * d10v-tdep.c (d10v_return_value): Ditto. - * ppc-tdep.h (ppc_sysv_abi_return_value): Ditto. - (ppc_sysv_abi_broken_return_value): Ditto. - (ppc64_sysv_abi_return_value): Ditto. - * ppc-sysv-tdep.c (do_ppc_sysv_return_value): Ditto. - (ppc_sysv_abi_return_value): Ditto. - (ppc_sysv_abi_broken_return_value): Ditto. - (ppc64_sysv_abi_return_value): Ditto. - * values.c (register_value_being_returned): Update call. - * stack.c (return_command): Update call. - * gdbarch.h, gdbarch.c: Re-generate. - - * target.h (struct target_ops): Order xfer buffer parameters "read - write" not "write read". - * bfd-target.c (target_bfd_xfer_partial): Update. - * remote.c (remote_xfer_partial): Update. - * inftarg.c (child_xfer_partial): Update. - * target.c (default_xfer_partial): Update. - (target_read_partial, target_write_partial): Update. - (debug_to_xfer_partial): Update. - - * arch-utils.h, arch-utils.c: Fix typo in comment. - - * arch-utils.c (deprecated_select_gdbarch_hack): Delete function. - (gdbarch_from_bfd): Call gdbarch_find_by_info. - (set_gdbarch_from_file): Call - "deprecated_current_gdbarch_select_hack". - -2003-11-09 Andrew Cagney - - * arch-utils.c (gdbarch_update_p): New function. - * gdbarch.sh (gdbarch_update_p): Delete function. - (find_arch_by_info, gdbarch_find_by_info): New functions. - (deprecated_current_gdbarch_select_hack): New function. - * gdbarch.c: Re-generate. - - * gdbarch.sh (clear_gdbarch_swap): Delete function. - (swapout_gdbarch_swap): Delete function. - (swapin_gdbarch_swap): Delete function. - (init_gdbarch_swap): Delete function. - (initialize_non_multiarch): Delete function. - (current_gdbarch_swap_in_hack): New function. - (current_gdbarch_swap_out_hack): New function. - (current_gdbarch_swap_init_hack): New function. - * gdbarch.c: Re-generate. - - * gdbarch.sh (verify_gdbarch, gdbarch_dump): Rename "gdbarch" - parameter to "current_gdbarch". Add comment explaining why. - (TARGET_FLOAT_FORMAT: Pass "current_gdbarch" to default_double_format. - (TARGET_DOUBLE_FORMAT,TARGET_LONG_DOUBLE_FORMAT): Ditto. - * gdbarch.c: Re-generate. - - * config/s390/s390.mh (XM_FILE, XM_CLIBS): Delete macros. - * config/s390/nm-linux.h (KERNEL_U_ADDR): Define. - * config/s390/xm-linux.h: Delete file. - * config/m88k/xm-delta88v4.h: Delete stray. - - * Makefile.in (arch-utils.o): Update dependencies. - * arch-utils.c: Include "osabi.h". - (gdbarch_info_fill): New function. - * arch-utils.h (gdbarch_info_fill): Declare. - * gdbarch.sh (gdbarch_update_p): Call "gdbarch_info_fill". - * gdbarch.c: Re-generate. - -2003-11-09 Mark Kettenis - David S. Miller - - * glibc-tdep.c, glibc-tdep.h: New files. - * config/arm/linux.mt (TDEPFILES): Add glibc-tdep.o - * config/i386/linux.mt (TDEPFILES): Likewise. - * i386-linux-tdep.c (glibc-tdep.h): Include. - (find_minsym_and_objfile, skip_hurd_resolver): Delete. - (i386_linux_skip_solib_resolver): Call glibc_skip_solib_resolver. - * arm-linux-tdep.c (glibc-tdep.h): Include. - (find_minsym_and_objfile, skip_hurd_resolver): Delete. - (arm_linux_skip_solib_resolver): Call glibc_skip_solib_resolver. - * Makefile.in (ALLDEPFILES): Add glibc-tdep.c - (glibc_tdep_h): Define. - (glibc-tdep.o): Add dependencies. - (arm-linux-tdep.o): Update dependencies. - (i386-linux-tdep.o): Likewise. - -2003-11-09 Andrew Cagney - - * config/mips/irix6.mh (NAT_FILE): Set to "nm-irix5.h". - * config/mips/nm-irix6.h: Delete file. - * config/mips/nm-linux.h: Update copyright. - (MIPS_GNULINUX_TARGET): Delete macro. - * config/mips/irix6.mh (XM_FILE): Set to "xm-irix5.h". - * config/mips/xm-irix6.h: Delete file. - * config/mips/linux.mh (XM_FILE): Delete definition. - * config/mips/xm-linux.h: Delete file. - -2003-11-09 Andrew Cagney - - * d10v-tdep.c (d10v_return_value): New function. - (d10v_use_struct_convention): Delete function. - (d10v_store_return_value): Delete function. - (d10v_extract_struct_value_address): Delete function. - (d10v_gdbarch_init): Set "return_value" instead of - "extract_return_value", "store_return_value", - "extract_struct_value_address", and "use_struct_convention". - (RET1_REGNUM): Delete const. - -2003-11-09 Mark Kettenis - - From David S. Miller : - * gdbarch.sh (SKIP_SOLIB_RESOLVER): New method. - * gdbarch.c, gdbarch.h: Regenerated. - * arch-utils.c (generic_skip_solib_resolver): New function. - * arch-utils.h (generic_skip_solib_resolver): New prototype. - * infrun.c (SKIP_SOLIB_RESOLVER): Don't define. - -2003-11-07 Andrew Cagney - - * top.c (print_gdb_version): Replace STREQ with strcmp. - * valops.c (value_struct_elt_for_reference): Ditto. - (value_struct_elt_for_reference): Ditto. - * symtab.c (gdb_mangle_name): Ditto. - (find_line_symtab): Ditto. - * symmisc.c (maintenance_print_symbols): Ditto. - * symfile.c (symbol_file_command): Ditto. - * stabsread.c (define_symbol, read_type): Ditto. - (cleanup_undefined_types, scan_file_globals): Ditto. - * solib.c (solib_map_sections): Ditto. - * solib-svr4.c (bfd_lookup_symbol): Ditto. - * rs6000-tdep.c (skip_prologue): Ditto. - * p-valprint.c (pascal_value_print): Ditto. - (pascal_object_is_vtbl_ptr_type): Ditto. - * objfiles.c (in_plt_section): Ditto. - * minsyms.c (lookup_minimal_symbol): Ditto. - (compact_minimal_symbols): Ditto. - (find_solib_trampoline_target): Ditto. - * mdebugread.c (parse_type): Ditto. - * language.c (set_language_command): Ditto. - (set_type_command, set_range_command): Ditto. - * f-lang.c (add_common_block): Ditto. - (add_common_block): Ditto. - (find_first_common_named): Ditto. - (patch_all_commons_by_name): Ditto. - * elfread.c (elf_locate_sections): Ditto. - (elf_locate_sections): Ditto. - (elfstab_offset_sections): Ditto. - * dwarf2read.c (dwarf2_locate_sections): Ditto. - * dbxread.c (add_old_header_file): Ditto. - (find_corresponding_bincl_psymtab): Ditto. - (read_dbx_symtab, process_one_symbol): Ditto. - * coffread.c (patch_opaque_types): Ditto. - * cli/cli-decode.c (delete_cmd): Ditto. - * cli/cli-cmds.c (pwd_command, list_command): Ditto. - * c-typeprint.c (c_type_print_base): Ditto. - * breakpoint.c (bpstat_stop_status): Ditto. - (clear_command, breakpoint_re_set_one): Ditto. - -2003-11-07 Andrew Cagney - - * bcache.h: Update copyright. Add comments on bcache VS hashtab. - * bcache.c (struct bstring): Make "length" an unsigned short, add - "half_hash". - (struct bcache): Add "half_hash_error_count". - (bcache): Compute and save the "half_hash". Compare the - "half_hash" before comparing the length. Update - half_hash_error_count. - -2003-11-07 Andrew Cagney - - * inftarg.c (child_xfer_partial): New function - (init_child_ops): Set "to_xfer_partial". - -2003-11-07 Andrew Cagney - - * ppc-linux-tdep.c (ppc_linux_init_abi): When 32-bit GNU/Linux, - set "return_value" instead of "use_struct_convention". - (ppc_linux_use_struct_convention): Delete function. - (ppc_linux_return_value): New function. - * ppc-sysv-tdep.c (ppc_sysv_abi_return_value): New function. - (ppc_sysv_abi_broken_return_value): New function. - (do_ppc_sysv_return_value): Add "gdbarch" parameter. - (ppc64_sysv_abi_push_dummy_call): Add "gdbarch" parameter, drop - static. - (ppc_sysv_abi_extract_return_value): Delete function. - (ppc_sysv_abi_broken_extract_return_value): Delete function. - (ppc_sysv_abi_store_return_value): Delete function. - (ppc_sysv_abi_broken_store_return_value): Delete function. - (ppc_sysv_abi_use_struct_convention): Delete function. - (ppc64_sysv_abi_use_struct_convention): Delete function. - (ppc64_sysv_abi_extract_return_value): Delete function. - (ppc64_sysv_abi_store_return_value): Delete function. - * ppcnbsd-tdep.c (ppcnbsd_return_value): New function. - (ppcnbsd_init_abi): Set "return_value", instead of - "use_struct_convention", "extract_return_value", and - "store_return_value". - (ppcnbsd_use_struct_convention): Delete function. - * ppc-tdep.h (ppc64_sysv_abi_return_value): Declare. - (ppc_sysv_abi_return_value): Declare. - (ppc_sysv_abi_broken_return_value): Declare. - (ppc_sysv_abi_use_struct_convention): Delete. - (ppc_sysv_abi_store_return_value): Delete. - (ppc_sysv_abi_extract_return_value): Delete. - (ppc_sysv_abi_broken_store_return_value): Delete. - (ppc_sysv_abi_broken_extract_return_value): Delete. - (ppc64_sysv_abi_use_struct_convention): Delete. - (ppc64_sysv_abi_extract_return_value): Delete. - (ppc64_sysv_abi_store_return_value): Delete. - * rs6000-tdep.c (rs6000_gdbarch_init): For 32-bit and 64-bit SYSV, - set "return_value" instead of "extract_return_value", - "store_return_value", and "use_struct_convention". - -2003-11-07 Mark Kettenis - - * dwarf2-frame.c (dwarf2_build_frame_info): Wrap comment. - - * fbsd-proc.c (read_mapping): Use sscanf and fgets instead of - fscanf. - -2003-11-07 Mark Kettenis - - * fbsd-proc.c: Fix formatting. - -2003-11-06 Kevin Buettner - - * frv-tdep.c (first_pseudo_regnum, iacc0_regnum, frv_num_pseudo_regs): - Define. - (new_variant): Set name for iacc0_regnum. - (frv_register_name): Accommodate pseudo-registers. - (frv_register_type): Add case for iacc0_regnum. - (frv_pseudo_register_read, frv_pseudo_register_write): New functions. - (frv_gdbarch_init): Set number of pseudo registers. Establish - pseudo-register read/write methods. - -2003-11-06 Andrew Cagney - - * valops.c (destructor_name_p): Replace STREQN with strncmp. - * top.c (command_line_input): Ditto. - * objc-exp.y (yylex): Ditto. - * minsyms.c (prim_record_minimal_symbol_and_info): Ditto. - * jv-exp.y (yylex): Ditto. - * f-exp.y (yylex): Ditto. - * event-top.c (command_line_handler): Ditto. - * environ.c (get_in_environ): Ditto. - (set_in_environ): Ditto. - * dwarfread.c (handle_producer): Ditto. - * dbxread.c (process_one_symbol): Ditto. - * c-typeprint.c (c_type_print_base): Ditto. - * c-exp.y (yylex): Ditto. - -2003-11-06 Andrew Cagney - Jeff Johnston - - * target.c (add_target): Only set "to_xfer_partial" when NULL. - (init_dummy_target): Set "to_xfer_partial". - -2003-11-06 Andrew Cagney - - * stack.c (return_command): Warn when STRUCT_CONVENTION, and not - REGISTER_CONVENTION. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.c (insert_bp_location, allocate_bp_location): Make - static. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.c (remove_breakpoint): Take an bp_location - instead of a breakpoint argument. Check the bp_location's type. - Fix a reversed condition for hardware breakpoints. - - (insert_bp_location): Update call to remove_breakpoint. - (remove_breakpoints): Likewise. Use ALL_BP_LOCATIONS. - (remove_hw_watchpoints): Likewise. - (reattach_breakpoints): Likewise. - (detach_breakpoints): Likewise. - (delete_breakpoint): Likewise. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.c (mark_breakpoints_out): Use ALL_BP_LOCATIONS. - (beakpoint_init_inferior): Likewise. - (breakpoint_here_p): Likewise. Only check addresses for software - or hardware breakpoints. - (breakpoint_inserted_here_p): Likewise. - (breakpoint_thread_match): Likewise. Correct comment. - (bpstat_have_active_hw_watchpoints): Likewise. - (check_duplicates): Likewise. - -2003-11-06 Daniel Jacobowitz - - * breakpoints.c (insert_bp_location): New function, broken out - from insert_breakpoints. Work on an bp_location instead of a - breakpoint. - (insert_breakpoints): Use it. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.h (struct bp_location): Add section. - (struct breakpoint): Remove section. - * breakpoint.c (insert_breakpoints, remove_breakpoint) - (breakpoint_here_p, breakpoint_inserted_here_p) - (breakpoint_thread_match, bpstat_stop_status, print_one_breakpoint) - (describe_other_breakpoints, check_duplicates, set_raw_breakpoint) - (clear_command, delete_breakpoint, breakpoint_re_set_one): Access - section through loc. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.c (read_memory_nobpt): Use ALL_BP_LOCATIONS - instead of ALL_BREAKPOINTS. Check for software breakpoints only. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.c (allocate_bp_location): Take bpt and bp_type - arguments. Initialize owner and type for the new breakpoint - location item. - (set_raw_breakpoint): Update call to allocate_bp_location. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.h (struct bp_location): Add a chain pointer. - * breakpoint.c (ALL_BP_LOCATIONS, ALL_BP_LOCATIONS_SAFE): New +2004-01-03 Eli Zaretskii + + * config/djgpp/fnchange.lst: Add lines for COPYING.LIBGLOSS, + bfd/doc/ChangeLog-9103, bfd/elf32-m68hc1x.c, + gdb/config/alpha/xm-alphaosf.h, + gdb/config/powerpc/tm-ppcle-eabi.h, + gdb/config/rs6000/tm-rs6000-aix4.h, gdb/gdbtk/ChangeLog-2001, + gdb/gdbtk/ChangeLog-2002, gdb/gdbtk/ChangeLog-2003, + gdb/gdbtk/plugins/intel-pentium/intel-pentium.tcl.in, + gdb/gdbtk/plugins/rhabout/rhabout.tcl.in, gdb/i386-linux-nat.c, + gdb/ia64-aix-nat.c, gdb/ia64-aix-tdep.c, gdb/ia64-linux-nat.c, + gdb/ia64-linux-nat.c, gdb/ppc-linux-tdep.c, gdb/ppc-linux-nat.c, + gdb/sparc64nbsd-nat.c, gdb/sparc64nbsd-tdep.c, + gdb/sparc64-linux-nat.c, gdb/sparc64-linux-tdep.c, + gdb/sparc64-nat.c, gdb/sparc64-tdep.c, gdb/sparc64-sol2-tdep.c, + gdb/sparc-sol2-nat.c, gdb/sparc-sol2-tdep.c, + gdb/testsuite/gdb.gdbtk/, gdb/testsuite/gdb.mi/mi-var-child.exp, + nclude/ChangeLog-9103, include/coff/ChangeLog-9103, + include/elf/ChangeLog-9103, include/opcode/ChangeLog-9103, + opcodes/ChangeLog-0001, opcodes/ChangeLog-0203, + opcodes/openrisc-dis.c, opcodes/openrisc-desc.h, + sim/frv/profile-fr550.c, sim/frv/profile-fr550.h, + sim/sh64/sem-compact-switch.c, sim/sh64/sem-media-switch.c, + sim/testsuite/sim/sh64/compact/ldsl-mach.cgs, + sim/testsuite/sim/sh64/compact/ldsl-macl.cgs, + sim/testsuite/sim/sh64/compact/stsl-mach.cgs, and + sim/testsuite/sim/sh64/compact/stsl-macl.cgs. + Remove lines for .cvsignore files. + +2004-01-03 J. Brobecker + + * infrun.c: Back out the previous change. + +2004-01-03 Mark Kettenis + + * NEWS: Mention revised SPARC target. Add sparc-*-lynxos* and + sparc-*-sunos4* to the list of REMOVED configurations. + + * configure.tgt: Add back sparc-*-vxworks*. + * remote-vxsparc.c: Remove all includes except for "defs.h", + "regcache.h", "vx-share/ptrace.h" and "vx-share/regPacket.h". + Include "sparc-tdep.h". + (SPARC_R_G1): New define. + (vxsparc_gregset): New variable. + (ext_format_sparc): Remove extern declaration. + (vx_read_register): Rewrite to use sparc32_supply_gregset and + sparc32_supply_fpregset. + (vx_write_register): Rewrite to use sparc32_collect_gregset, + sparc_collect_rwindow and sparc32_collect_fpregset. + * config/sparc/tm-vxworks.h: New file, based on recently removed + tm-vxsparc.h. + * config/sparc/vxworks.mt: New file, based on recently removed + vxworks.mt. + +2004-01-03 J. Brobecker + + * infrun.c (handle_step_into_function): New function. + (handle_inferior_event): Extract out some code into the new + function above. + +2004-01-02 Mark Kettenis + + * Makefile.in (ALLDEPFILES): Remove sparc-linux-nat.c and + sparcl-tdep.c. Add sparc-linux-tdep.c, sparc-sol2-nat.c, + sparc-sol2-tdep.c, sparc-sol2-nat.c, sparc-sol2-tdep.c, + sparc64-linux-nat.c, sparc64-linux-tdep.c, sparc64-nat.c, + sparc64-sol2-tdep.c, sparc64-tdep.c, sparc64fbsd-nat.c, + sparc64fbsd-tdep.c, sparcnbsd-nat.c, sparcnbsd-tdep.c. + (sparc_nat_h): New variable. + (sparcbsd_nat_h, sparcnbsd_tdep_h): Remove variables. + (tm-sun4os4.h): Remove dependency. + (sparcbsd-nat.o, sparc-linux-nat.o): Remove dependencies. + (sparc64fbsd-nat.o, sparc64fbsd-tdep.o, sparc64nbsd-nat.o, + sparc64-tdep.o, sparc-nat.o, sparcnbsd-nat.o, sparcnbsd-tdep.o, + sparc-tdep.o): Update dependencies. + (sparc-linux-tdep.o, sparc-sol2-nat.o, sparc-sol2-tdep.o, + sparc64-linux-nat.o, sparc64-linux-tdep.o, sparc64-nat.o, + sparc64-sol2-tdep.o, sparc64-tdep.o, sparc64nbsd-tdep.o): New + dependencies. + * configure.host: Remove existing sparc-*-lynxos*, + sparc-*-solaris*, sparc-*-sunos4*, sparc-*-sunos5*, sparc-*-*, + ultrasparc-*-freebsd, sparcv9-*-freebsd, sparc64-*-linux*, + sparcv9-*-* and sparc64-*-* triplets. Add new sparc64-*-linux*, + sparc-*-solaris2*, sparcv9-*-solaris2* and sparc64-*-solaris2* + triplets. + * configure.tgt: Remove exitsing sparc-*-aout*, sparc-*-coff*, + sparc-*-elf*, sparc*-lynxos*, sparc-*-solars2*, sparc-*-sunos4*, + sparc-*-sunos5*, sparc-*-vxworks*, sparc64-*linux*, sparc64-*-*, + sparcv9-*-* and commented out sparc64-*-solars2* triplets. Add + new sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*, + sparc64-*-linux, sparc-*-solaris2*, sparcv9-*-solaris*, + sparc64-*-solaris2* and sparc64-*-* triplets. + * sparc64-tdep.c: Update copyright year. Include "inferior.h", + "symtab.h" and "objfiles.h". + (BIAS): Remove define. + (X_OP, X_RD, X_A, X_COND, X_OP2, X_IMM22, X_OP3, X_I, X_DISP22) + (X_DISP19): Remove macros. + (sparc_fetch_instruction): Remove function. + (struct gdbarch_tdep): Remove definition. + (SPARC64_NUM_REGS, SPARC64_NUM_PSEUDO_REGS): Use ARRAY_SIZE. + (sparc_breakpoint_from_pc): Remove function. + (struct sparc64_frame_cache): Remove definition. + (sparc64_alloc_frame_cache, sparc64_analyze_prologue, + sparc64_unwind_pc): Remove functions. + (sparc64_skip_prologue): Use `struct sparc_frame_cache' instead of + `struct sparc64_frame_cache. Call sparc_analyze_prologue instead + of sparc64_analyze_prologue. Mark constant as ULL instead of UL. + (sparc64_frame_cache): Change return type to `struct + sparc_frame_cache *'. Simply call sparc_frame_cache. + (sparc64_frame_this_id, sparc64_frame_prev_register, + sparc64_frame_base_address): Use `struct sparc_frame_cache' + instead of `struct sparc64_frame_cache. + (sparc_unwind_dummy_id, sparc_extract_struct_value_address, + sparc_analyze_control_transfer, sparc_software_single_step, + sparc64_gdbarch_init, sparc_supply_rwindow, sparc_fill_rwindow, + _initialize_sparc64_tdep): Remove functions. + (TSTATE_CWP, TSTATE_ICC, TSTATE_XCC): New macros. + (PSR_S, PSR_ICC, PSR_VERS, PSR_IMPL, PSR_V8PLUS, PSR_XCC): New macros. - (bp_location_chain): New variable. - (allocate_bp_location): New function. - (set_raw_breakpoint): Use it. - (delete_breakpoint): Remove ->loc from the bp_location_chain. - -2003-11-06 Daniel Jacobowitz - - * breakpoint.h (enum bp_loc_type, struct bp_location): New. - (struct breakpoint): Remove address, shadow_contents, inserted, - requested_address, and duplicate. Add a struct bp_location. - * breakpoint.c (condition_command, read_memory_nobpt) - (insert_breakpoints, remove_breakpoints, remove_hw_watchpoints) - (reattach_breakpoints, update_breakpoints_after_exec) - (detach_breakpoints, remove_breakpoint, mark_breakpoints_out) - (breakpoint_init_inferior, breakpoint_here_p) - (breakpoint_inserted_here_p, deprecated_frame_in_dummy) - (breakpoint_thread_match, bpstat_stop_status) - (bpstat_have_active_hw_watchpoints, print_one_breakpoint) - (describe_other_breakpoints, check_duplicates) - (make_breakpoint_permanent, create_thread_event_breakpoint) - (disable_breakpoints_in_shlibs, re_enable_berakpoints_in_shlibs) - (set_longjmp_resume_breakpoint, mention, create_breakpoints) - (watch_command_1, print_one_exception_catchpoint) - (clear_command, breakpoint_re_set_one): Adjust member accesses to - use the breakpoint's ->loc. - (set_raw_breakpoint): Likewise. Initialize ->loc. - (delete_breakpoint): Likewise. Free ->loc. - -2003-11-05 Andrew Cagney - - * config/sparc/tm-sparc.h (FRAME_STRUCT_ARGS_ADDRESS): Delete - macro. - * config/m68k/tm-sun3.h (SIG_PC_FP_OFFSET): Delete macro. - * config/i386/tm-cygwin.h - (LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES): Delete macro. - * config/powerpc/tm-linux.h - (AT_SUBROUTINE_CALL_INSTRUCTION_TARGET): Delete macro. - (at_subroutine_call_instruction_target): Delete declaration. - * config/sparc/tm-sp64linux.h (GDB_PTRACE_REGS64): Delete macro. - * config/m68k/tm-sun3.h (SIG_SP_FP_OFFSET): Delete macro. - * config/ns32k/tm-ns32k.h (NUM_GENERAL_REGS): Delete macro. - - * xcoffread.c (find_linenos): Replace "sec_ptr" and "bfd" with - "struct bfd_section" and "struct bfd". - * target.h (struct section_table): Ditto. - * rs6000-nat.c (xcoff_relocate_core): Ditto. - * solib-svr4.c (elf_locate_base): Ditto. - * pa64solib.c (dld_cache_t): Ditto. - * objfiles.h (struct obj_section): Ditto. - * objfiles.c (add_to_objfile_sections): Ditto. - * exec.c (bfdsec_to_vmap): Ditto. - (add_to_section_table): Ditto. - (build_section_table): Ditto. - * corelow.c (get_core_register_section): Ditto. - * coffread.c (find_linenos): Ditto. - * elfread.c (elf_interpreter): Delete #if0'd function. - - * mips-tdep.c (mips_dump_tdep): Delete code prinint VX_NUM_REGS. - * config/sparc/tm-vxsparc.h (VX_NUM_REGS): Delete macro. - * config/mips/tm-vxmips.h (VX_NUM_REGS): Delete macro. - * config/m68k/tm-vx68.h (VX_NUM_REGS): Delete macro. - - * arch-utils.h (generic_cannot_extract_struct_value_address): - Delete declaration. - * wince.c (_initialize_wince): Fix multi-line string. - * ia64-tdep.c (floatformat_valid): Convert to ISO C. - -2003-11-05 Elena Zannoni - - * top.c (execute_command): Fix broken logic for command execution - while inferior is running in async mode. - -2003-11-06 Mark Kettenis - - * dwarf2-frame.c (execute_cfa_program): Mark register as - REG_SAVED_REG for DW_CFA_register opcode. - -2003-11-05 Mark Kettenis - - * amd64fbsd-tdep.c (amd64fbsd_sc_reg_offset): Adjust offset of - %rsp, %rip and %eflags to match ABI-change. - -2003-11-05 Jeff Johnston - - * ia64-tdep.c (struct gdbarch_tdep): Remove os_ident field. - (ia64_gdbarch_init): Don't bother calculating the os. - Instead use the gdbarch_info struct and look at the osabi field. - Also use gdbarch_list_lookup_by_info() to look for a - candidate gdbarch. - -2003-11-05 Kevin Buettner - - * frv-tdep.c (frv_register_byte): Delete. - (frv_extract_return_value, frv_store_return_value) - (frv_extract_struct_value_address): Don't call frv_register_byte(). - Convert to non-deprecated form. - (frv_gdbarch_init): Don't call set_gdbarch_deprecated_register_byte(). - Convert calls to set_gdbarch_deprecated_extract_return_value(), - set_gdbarch_deprecated_store_return_value(), and - set_gdbarch_deprecated_extract_struct_value_address() into - non-deprecated forms. - -2003-11-05 Andrew Cagney - - * mips-tdep.c (mips_dump_tdep): Do not print - PRINT_EXTRA_FRAME_INFO. - * config/sparc/tm-sparc.h (DEPRECATED_PRINT_EXTRA_FRAME_INFO): - Rename PRINT_EXTRA_FRAME_INFO. - * mips-tdep.c (mips_print_extra_frame_info): Delete function. - * config/mips/tm-mips.h (PRINT_EXTRA_FRAME_INFO): Delete macro. - (mips_print_extra_frame_info): Delete declaration. - * stack.c (frame_info): Use DEPRECATED_PRINT_EXTRA_FRAME_INFO. - -2003-11-05 Elena Zannoni - - * coffread.c (coff_symtab_read): Remove passing of info parameter - to prim_record_minimal_symbol_and_info. - -2003-11-05 Elena Zannoni - - * coffread.c (process_coff_symbol): Delete CXUX_TARGET macro use. - (decode_base_type): Delete ifdeffed out code. - -2003-11-04 Andrew Cagney - - * symtab.c (find_active_alias): Delete function. - (lookup_block_symbol): Delete alias code. - * stabsread.c (resolve_live_range): Delete function. - (add_live_range): Delete function. - (resolve_symbol_reference): Delete function. - (define_symbol): Delete live range and alias code. - (scan_file_globals): Delete alias code. - * symtab.h (SYMBOL_RANGES): Delete macro. - (struct range_list): Delete structure. - (struct symbol): Delete field "ranges". - (SYMBOL_ALIASES): Delete macro. - (struct alias_list): Delete structure. - (struct symbol): Delete field "aliases". - -2003-11-04 Michael Snyder - - * MAINTAINERS: Remove myself as owner of breakpoints and - of sparc/solaris. - -2003-11-03 Corinna Vinschen - - * sh-tdep.c (sh_sh4_nofpu_register_name): New function. - (sh_sh4al_dsp_register_name): Ditto. - (sh4_nofpu_show_regs): Ditto. - (sh_gdbarch_init): Add cases for bfd_mach_sh4al_dsp, bfd_mach_sh4a, - bfd_mach_sh4_nofpu and bfd_mach_sh4a_nofpu. - -2003-11-03 Andrew Cagney - - * bcache.c: Include "gdb_assert.h". - (struct bcache): Add fields "expand_count" and - "expand_hash_count". - (expand_hash_table): Update the expand counts. - (print_bcache_statistics): Use XCALLOC, not alloca. Print stats - on object sizes and hashes. - * Makefile.in (bcache.o): Update dependencies. - -2003-11-03 Andrew Cagney - - * exec.c (xfer_memory): Eliminate xfer_fn. - -2003-10-31 Kevin Buettner - - * frv-tdep.c (gdb_assert.h, sim-regno.h, gdb/sim-frv.h) - (opcodes/frv-desc.h): Include. - (iacc0h_regnum, iacc0l_regnum): Define. - (last_spr_regnum, frv_num_regs): Update. - (new_variant): Don't supply default names for holes in the SPRs. - Supply names for iacc0h_regnum and iacc0l_regnum. - (frv_register_type): Use symbolic constants first_fpr_regnum and - last_fpr_regnum instead of hardcoded constants 64 and 127. Use - builtin_type_int instead of builtin_type_int32. - (frv_register_sim_regno): New function. - (frv_gdbarch_init): Call set_gdbarch_register_sim_regno(). - * Makefile.in (gdb_sim_frv_h): Define. - (frv-tdep.o): Update dependencies. - -2003-10-31 Andrew Cagney - - * avr-tdep.c (avr_frame_this_id): Do not call - deprecated_inside_entry_file. - * m68hc11-tdep.c (m68hc11_frame_this_id): Ditto. - * m32r-tdep.c (m32r_frame_this_id): Ditto. - * d10v-tdep.c (d10v_frame_this_id): Ditto. - * arm-tdep.c (arm_prologue_this_id): Ditto. - * alpha-tdep.c (alpha_heuristic_frame_this_id): Ditto. - -2003-10-31 Jim Blandy - - * elfread.c (elf_symtab_read): Allocate correct number of tail - elements to sectinfo structure. (Fix from Woody LaRue.) - -2003-10-31 Andrew Cagney - - * stack.c (return_command): Use get_frame_type, instead of - CALL_DUMMY_HAS_COMPLETED. - * inferior.h (CALL_DUMMY_HAS_COMPLETED): Delete definition. - * config/pa/tm-hppa.h (CALL_DUMMY_HAS_COMPLETED): Delete macro. - -2003-10-31 Mark Kettenis - - * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): Don't - explicitly specify size of array. - (x86_64_linux_init_abi): Use ARRAY_SIZE to initialize - TDEP->sc_num_regs. - -2003-10-31 Andrew Cagney - - * s390-tdep.c (s390_cannot_extract_struct_value_address): New - function. - (s390_gdbarch_init): Set extract_struct_value_address. - * arch-utils.c (generic_cannot_extract_struct_value_address): - Delete function. - * arch-utils.h (generic_cannot_extract_struct_value_address): - Delete definition. - -2003-10-31 Mark Kettenis - - * i386-linux-nat.c (fetch_core_registers): Remove. - (linux_elf_core_fns): Remove. - (_initialize_i386_linux_nat): Remove. - -2003-10-31 Andrew Cagney - - * solib-svr4.c: Update copyright. Include "bfd-target.h" and - "exec.h". - (exec_entry_point): New function. - (enable_break): Create a "tmp_bfd_target", use that and - entry_point_address when computing the relocation offset. - (svr4_relocate_main_executable): Ditto with exec_bfd and exec_ops. - * Makefile.in (solib-svr4.o): Update dependencies. - -2003-10-31 Andrew Cagney - - * defs.h (XZALLOC): Define. - * target.h (struct target_ops): Add "to_data"; - * bfd-target.h, bfd-target.c: New files. - * Makefile.in (SFILES): Add "bfd-target.c". - (COMMON_OBS): Add "bfd-target.o". - (bfd-target.o): Specify dependencies. - (bfd_target_h): Define. - * defs.h (XZALLOC): Define. - -2003-10-31 Andrew Cagney - - * rs6000-tdep.c (rs6000_gdbarch_init): For 64-bit ABI, set - adjust_breakpoint_address. - * Makefile.in (ppc-sysv-tdep.o): Add $(target_h). - * ppc-tdep.h (ppc64_sysv_abi_adjust_breakpoint_address): Declare. - * ppc-sysv-tdep.c: Include "target.h". Update copyright. - (ppc64_sysv_abi_adjust_breakpoint_address): New function. - -2003-10-31 Andrew Cagney - - * target.h (struct target_ops): Replace "to_read_partial" and - "to_write_partial" with "to_xfer_partial". Update comments. - * target.c (debug_to_write_partial): Delete function. - (debug_to_xfer_partial): Replace debug_to_read_partial. - (add_target, update_current_target, setup_target_debug): Set - "to_xfer_partial" instead of "to_read_partial" and - "to_write_partial". - (default_xfer_partial): Replace "default_write_partial". - (default_read_partial): Delete. - (target_read_partial, target_write_partial): Call - "to_xfer_partial". - * remote.c (init_remote_ops): Set "to_xfer_partial". - (init_remote_async_ops): Ditto. - (remote_xfer_partial): Replace "remote_read_partial". - -2003-10-31 Mark Kettenis - - * i386-tdep.c (i386_supply_fpregset): Support floating-point - registers in `fxsave' format. - (i386_regset_from_core_section): Deal with ".reg-xfp" sections. - -2003-10-30 Mark Kettenis - - * i386-linux-tdep.c (i386_linux_gregset_reg_offset): New variable. - (i386_linux_init_abi): Initialize TDEP->gregset_reg_offset, - TDEP->gregset_num_regs and tdep->sizeof_gregset. - - * i386-linux-tdep.c (i386_linux_sc_reg_offset): Don't explicitly - specify size of array. - (i386_linux_init_abi): Remove initialization of - TDEP->num_xmm_regs. Use I386_LINUX_NUM_REGS for number of - registers. Use ARRAY_SIZE to initialize TDEP->sc_num_regs. - - * config/i386/fbsd64.mt (TDEPFILES): Add corelow.o. - * config/i386/fbsd64.mh (NATDEPFILES): Remove corelow.o and - core-regset.o. - - * fbsd-proc.c (fbsd_make_corefile_notes): Put a "FreeBSD" label in - the ELF header. - -2003-10-29 Mark Kettenis - - * config/i386/fbsd.mt (TDEPFILES): Add corelow.o. - * config/i386/fbsd.mh (NATDEPFILES): Remove corelow.o and - core-regset.o. - - * fbsd-proc.c (fbsd_make_corefile_notes): Remove unecessary casts. - - * corelow.c: Include "arch-utils.h", "regset.h" and - "gdb_assert.h". - (core_gdbarch): New variable. - (sniff_core_bfd): Don't sniff if we have support for register sets - in CORE_GDBARCH. - (core_close): Reset CORE_GDBARCH. - (core_open): Initialize CORE_GDBARCH. - (get_core_register_section): Use register sets if they are - supported by CORE_GDBARCH. - (get_core_registers): Don't print error message if we have support - for register sets in CORE_GDBARCH. - -2003-10-29 Andrew Cagney - - * ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Instead of the - default PPC machine, register 32-bit and 64-bit PPC, and rs6k. - -2003-10-29 Mark Kettenis - - * objfiles.h (clear_objfile_data): New prototype. - * objfiles.c (clear_objfile_data): New function. - * symfile.c (reread_symbols): Clear per-objfile data. - -2003-10-28 Jeff Johnston - - * symfile.c (symbol_file_add_with_addrs_or_offsets): Switch to use - printf_unfiltered instead of printf_filtered for output messages. - (add_symbol_file_command): Ditto. - (reread_symbols): Ditto. - (overlay_auto_command): Ditto. - (overlay_manual_command): Ditto. - (overlay_off_command): Ditto. - -2003-10-27 Mark Kettenis - - * arch-utils.c (deprecated_select_gdbarch_hack): New function. - (gdbarch_from_bfd): New function. - (set_gdbarch_from_file): Re-implement using gdbarch_from_bfd and - deprecated_select_gdbarch_hack. - * arch-utils.h (gdbarch_from_bfd): New prototype. - -2003-10-27 Andrew Cagney - - * osabi.c (gdbarch_init_osabi): Use info.bfd_arch_info instead of - arch_info. Use warning instead of fprintf_filtered. Do not use - deprecated bfd_printable_arch_mach. - -2003-10-26 Kevin Buettner - - * frv-tdep.c (frv_register_raw_size, frv_register_virtual_size): - Delete. - (frv_register_type): Rename from frv_register_virtual_type. Add - ``struct gdbarch *'' parameter. - (frv_gdbarch_init): Delete calls to the following functions: - set_gdbarch_deprecated_size(), - set_gdbarch_deprecated_register_bytes(), - set_gdbarch_deprecated_register_raw_size(), - set_gdbarch_deprecated_max_register_raw_size(), - set_gdbarch_deprecated_register_virtual_size(), - set_gdbarch_deprecated_max_register_virtual_size(), - set_gdbarch_deprecated_register_virtual_size(), - set_gdbarch_deprecated_register_virtual_type(). - Add call to function set_gdbarch_register_type(). - -2003-10-26 Mark Kettenis - - * i386-tdep.h (FCS_REGNUM, FCOFF_REGNUM, FDS_REGNUM, - FDOFF_REGNUM): Remove defines. - * win32-nat.c (do_child_fetch_inferior_registers): Include - "i387-tdep.h". - (do_child_fetch_inferior_registers): Use I387_FISEG_REGNUM and - I387_FOP_REGNUM instead of FCS_REGNUM and FOP_REGNUM. Define and - undefine I387_ST0_REGNUM. - - * i386-tdep.h (FPU_REG_RAW_SIZE): Remove define. - * x86-64-tdep.c (x86_64_store_return_value): Use - I386_MAX_REGISTER_SIZE instead of FPU_REG_RAW_SIZE. - - Change register numbers to enumartion values. - * i386-tdep.h (enum i386_regnum): New. - (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, - I386_EBP_REGNUM, I386_IP_REGNUM, I386_EFLAGS_REGNUM, - I386_ST0_REGNUM): Remove defines. - * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM, - I386_EDI_REGNUM): Remove defines. - -2003-10-24 Andrew Cagney - - * target.c: Include "gdbcore.h". - (get_target_memory, get_target_memory_unsigned): New functions. - * target.h (get_target_memory, get_target_memory_unsigned): Declare. - * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): - Use get_target_memory_unsigned. - * Makefile.in (target.o): Update dependencies. - -2003-10-24 Andrew Cagney - - * osabi.c (gdbarch_init_osabi): Fix typos, and "fortunatly"[sic]. - * PROBLEMS, arch-utils.c, cli-out.c, command.h: Ditto. - * complaints.c, cris-tdep.c, disasm.c, dwarf2-frame.c: Ditto. - * frame.c, frame.h, infcall.c, infcmd.c, infrun.c: Ditto. - * kod.c, mips-tdep.c, regcache.c, regcache.h, remote.c: Ditto. - - * osabi.c (gdbarch_init_osabi): Add comment on 32-bit vs 64-bit. - (can_run_code_for): Use the OO term "singleton". - -2003-10-23 Andrew Cagney - - * Makefile.in (stack.o): Add $(regcache_h). - * stack.c: Include "regcache.h" - (return_command): Rewrite. Use get_frame_id and - get_selected_frame. Eliminate "deprecated_selected_frame". Warn - about unhandled return-values. - * value.h (set_return_value): Delete declaration. - * values.c (set_return_value): Delete function. - -2003-10-23 Jeff Johnston - - * ia64-tdep.c: (ia64_frame_cache): Add new prev_cfm field. - (pseudo_regs): Add comment regarding register stack registers. - (ia64_alloc_frame_cache): Initialize new prev_cfm field to 0. - (floatformat_valid): New static routine. - (floatformat_ia64_ext): Add name field and set up is_valid routine - to floatformat_valid(). - (examine_prologue): For the previous cfm, use - frame_unwind_register() - if the cfm is not stored in a register-stack register. Save the - previous cfm value in the prev_cfm field. Add debug output. - (ia64_frame_this_id): Use frame_id_build_special() to also register - the bsp. Add debug output. - (ia64_sigtramp_frame_this_id): Ditto. - (ia64_frame_prev_register): Look at cache saved_regs for a few more - registers and also add some checks for framelessness before accepting - current register values for fields such as return address. For cfm, - use the cached prev_cfm field if available. Add comment to explain - PSR logic. Add debug output. - (ia64_sigtramp_frame_init_saved_regs): Save the bsp and sp addresses - as part of initialization. - (ia64_sigtramp_frame_cache): Hard-code stack size as it can't be - calculated. Cache the bsp and cfm values. - (ia64_sigtramp_frame_prev_register): Add logic to this routine out - instead of using ia64_frame_prev_register() which doesn't expect most - registers to be saved. The saved values for bsp and sp - can be taken from the cache. Add debug output. - (ia64_push_dummy_call): Use frame_id_build_special() to also register - the bsp. - -2003-10-23 Jim Blandy - - * osabi.c (gdbarch_init_osabi): A handler is okay if it's for an - architecture the current arch can run code for --- but not if it's - a superset. - (can_run_code_for): New function. - -2003-10-22 James E Wilson - - * MAINTAINERS: Move myself from paper trail section back to write - after approval section. - -2003-10-22 Andrew Cagney - - * exec.h: New file. - * win32-nat.c: Include "exec.h". - * solib.c: Include "exec.h". - * target.h (build_section_table): Delete declaration. - * somsolib.c: Include "exec.h". - (exec_ops): Delete extern declaration. - * rs6000-nat.c: Update copyright. Include "exec.h". - (exec_ops): Delete extern declaration. - * pa64solib.c: Update copyright. Include "exec.h". - (exec_ops): Delete extern declaration. - * exec.c: Update copyright. Include "exec.h". - * corelow.c: Update dependencies. Include "exec.h". - * Makefile.in (exec_h): Define. - (exec.o, somsolib.o): Update dependencies. - (pa64solib.o, corelow.o): Update dependencies. - -2003-10-22 Andrew Cagney - - * target.c: Include "gdb_assert.h" (target_read): Call - "target_read_partial", not "target_write_partial". - (default_read_partial, default_write_partial): New function. - (target_read_partial, target_write_partial): Simplify, assume that - there is always a read/write method. - (update_current_target, add_target): Always set "to_read_partial" - and "to_write_partial". - (target_write, target_read): Fail on a zero byte transfer. - * Makefile.in (target.o): Update dependencies. - * target.h: Update copyright date. - (target_object): Fix typo. - -2003-10-22 Andrew Cagney - - * gdbarch.sh (convert_from_func_ptr_addr): Convert to a pure - multi-arch method, add "targ" parameter. - (struct target_ops): Declare. - * gdbarch.h, gdbarch.c: Re-generate. - * Makefile.in (c-valprint.o): Update dependencies. - * arch-utils.h: Update copyright. - (convert_from_func_ptr_addr_identity): Declare. - * arch-utils.c (convert_from_func_ptr_addr_identity): New function. - * ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update. - * rs6000-tdep.c (rs6000_convert_from_func_ptr_addr): Upate. - * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Update. - * infcall.c (find_function_addr, call_function_by_hand): Update. - * c-valprint.c: Include "target.h". - (print_function_pointer_address): Update. - -2003-10-22 Andrew Cagney - - * target.c (target_close): New function. - (debug_to_close): Use "target_close". - (push_target): Use "target_close". - (unpush_target): Use "target_close". - (pop_target): Use "target_close". - * target.h (struct target_ops): Add "to_xclose". - (target_open): Delete macro. Move comment to "to_open". - (target_close): Replace macro with function that takes a target. - * top.c (quit_target): Pass "current_target" to "target_close". - -2003-10-21 Elena Zannoni - - * minsyms.c (lookup_minimal_symbol_text): Remove unused parameter. - Remove SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code. - * symtab.h (lookup_minimal_symbol_text): Update. - * breakpoint.c (create_overlay_event_breakpoint, - create_longjmp_breakpoint): Update callers. - * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Update caller. - * symtab.c (find_pc_sect_line): Ditto. - -2003-10-21 Andrew Cagney - - * target.c (errno): Delete extern declaration. - -2003-10-20 Jeff Johnston - - * ia64-tdep.c: Change all occurrences of - DEPRECATED_REGISTER_RAW_SIZE to use register_size() instead. - (ia64_frame_prev_register): Minor whitespace change. - -2003-10-20 Michael Chastain - - * config/djgpp/fnchange.lst: Add lines for: - sim/testsuite/sim/frv/interrupts/Ipipe-fr400.cgs, - sim/testsuite/sim/frv/interrupts/Ipipe-fr500.cgs, - sim/testsuite/sim/frv/interrupts/badalign-fr550.cgs, - sim/testsuite/sim/frv/interrupts/compound-fr550.cgs, - sim/testsuite/sim/frv/interrupts/data_store_error-fr550.cgs, - sim/testsuite/sim/frv/interrupts/fp_exception-fr550.cgs, - sim/testsuite/sim/frv/interrupts/insn_access_error-fr550.cgs. - -2003-10-20 Andrew Cagney - - * values.c (register_value_being_returned): Update comments. Use - "gdbarch_return_value" when available. - (using_struct_return): Ditto. - (set_return_value): Ditto. Use "gdbarch_return_value" when - available.. Print a warning, and not an error, when an unhandled - return type is encountered. - * infcmd.c: Include "gdb_assert.h". - (print_return_value): When gdbarch_return_value_p, and using - struct return, assume that the value is not available. - * defs.h (return_value_convention): Define. - * gdbarch.sh (gdbarch_return_value): New predicate method. - * gdbarch.h, gdbarch.c: Re-generate - * ppc-sysv-tdep.c (return_value_convention): Delete definition. - -2003-10-20 Andrew Cagney - - * symtab.c: Replace "struct sec" with "struct bfd_section". - * objfiles.c, linespec.c, blockframe.c, block.c: Ditto. - -2003-10-19 Michael Chastain - - * config/djgpp/fnchange.lst: Add lines for: - gdb/amd64nbsd-nat.c, gdb/amd64nbsd-tdep.c, - gdb/i386fbsd-nat.c, gdb/i386fbsd-tdep.c, - gdb/sparc64fbsd-nat.c, gdb/sparc64bsd-tdep.c. - -2003-10-19 Mark Kettenis - - * amd64fbsd-nat.c (fetch_inferior_registers, - store_inferior_registers): Remove functions. - * config/i386/fbsd64.mh (NATDEPFILES): Add amd64bsd-nat.o. - -2003-10-18 Mark Kettenis - - Add NetBSD/amd64 native configuration: - * x86-64-tdep.h (amd64nbsd_r_reg_offset): Add extern declarations. - * amd64nbsd-tdep.c: New file. - * amd64nbsd-nat.c: New file. - * amd64bsd-nat.c: New file. - * config/i386/nbsd64.mh: New file. - * config/i386/nbsd64.mt: New file. - * configure.host: Add x86_64-*-netbsd*. - * configure.tgt: Add x86_64-*-netbsd*. - * Makefile.in (amd64bsd-nat.o, amd64nbsd-nat.o, amd64nbsd-tdep.o): - New targets. - * NEWS (New native configurations): Mention NetBSD/amd64. - -2003-10-17 Michael Chastain - - * config/djgpp/fnchange.lst: Remove dead lines for: - bfd/elf32-i386qnx.c, bfd/elf32-ppcqnx.c, bfd/elf32-shqnx.c, - bfd/elf32-sh-lin.c, bfd/elf32-sh-nbsd.c, bfd/elf32-sh64-nbsd.c, - bfd/elf64-alpha-fbsd.c, bfd/elf64-sh64-nbsd.c, - gdb/alphanbsd-nat.c, gdb/config/i386/tm-i386mk.h, - gdb/config/i386/tm-i386v42mp.h, gdb/config/i386/xm-i386mach.h, - gdb/config/i386/xm-i386mk.h, gdb/config/i386/xm-i386v32.h, - gdb/config/m68k/apollo68v.mh, gdb/config/m68k/nm-apollo68v.h, - gdb/config/m68k/xm-apollo68v.h, gdb/config/m88k/tm-delta88v4.h, - gdb/config/mips/tm-bigmips64.h, gdb/config/mips/tm-embed64.h, - gdb/config/mips/tm-embedl.h, gdb/config/mips/tm-embedl64.h, - gdb/config/mips/tm-vr4300el.h, gdb/config/mips/tm-vr4xxxel.h, - gdb/config/mips/tm-vr5000el.h, gdb/config/sparc/tm-sparclet.h, - gdb/config/sparc/tm-sparclite.h, - gdb/gdbtk/generic/ChangeLog-2001, - gdb/gdbtk/library/ChangeLog-2001, gdb/remote-adapt.c, - gdb/remote-eb.c, gdb/remote-mm.c, gdb/remote-nrom.c, - gdb/remote-udi.c, gdb/remote-vx29k.c, gdb/remote-vx960.c, - gdb/sparclet-rom.c, gdb/sparclet-stub.c, - gdb/testsuite/gdb.mi/mi0-var-block.exp, - gdb/testsuite/gdb.mi/mi0-var-child.exp, - gdb/testsuite/gdb.mi/mi0-var-cmd.exp, - gdb/testsuite/gdb.mi/mi0-var-display.exp, - itcl/iwidgets3.0.0/demos/extfileselectionbox, - itcl/iwidgets3.0.0/demos/extfileselectiondialog, - itcl/iwidgets3.0.0/demos/fileselectionbox, - itcl/iwidgets3.0.0/demos/fileselectiondialog, - itcl/iwidgets3.0.0/demos/html/buttonbox.n.html, - itcl/iwidgets3.0.0/demos/html/canvasprintbox.n.html, - itcl/iwidgets3.0.0/demos/html/canvasprintdialog.n.html, - itcl/iwidgets3.0.0/demos/html/combobox.n.html, - itcl/iwidgets3.0.0/demos/html/dialog.n.html, - itcl/iwidgets3.0.0/demos/html/dialogshell.n.html, - itcl/iwidgets3.0.0/demos/html/entryfield.n.html, - itcl/iwidgets3.0.0/demos/html/feedback.n.html, - itcl/iwidgets3.0.0/demos/html/fileselectionbox.n.html, - itcl/iwidgets3.0.0/demos/html/fileselectiondialog.n.html, - itcl/iwidgets3.0.0/demos/html/hyperhelp.n.html, - itcl/iwidgets3.0.0/demos/html/iwidgets2.2.0UserCmds.html, - itcl/iwidgets3.0.0/demos/html/labeledwidget.n.html, - itcl/iwidgets3.0.0/demos/html/menubar.n.html, - itcl/iwidgets3.0.0/demos/html/messagedialog.n.html, - itcl/iwidgets3.0.0/demos/html/notebook.n.html, - itcl/iwidgets3.0.0/demos/html/optionmenu.n.html, - itcl/iwidgets3.0.0/demos/html/panedwindow.n.html, - itcl/iwidgets3.0.0/demos/html/promptdialog.n.html, - itcl/iwidgets3.0.0/demos/html/pushbutton.n.html, - itcl/iwidgets3.0.0/demos/html/radiobox.n.html, - itcl/iwidgets3.0.0/demos/html/scrolledcanvas.n.html, - itcl/iwidgets3.0.0/demos/html/scrolledframe.n.html, - itcl/iwidgets3.0.0/demos/html/scrolledhtml.n.html, - itcl/iwidgets3.0.0/demos/html/scrolledlistbox.n.html, - itcl/iwidgets3.0.0/demos/html/scrolledtext.n.html, - itcl/iwidgets3.0.0/demos/html/selectionbox.n.html, - itcl/iwidgets3.0.0/demos/html/selectiondialog.n.html, - itcl/iwidgets3.0.0/demos/html/shell.n.html, - itcl/iwidgets3.0.0/demos/html/spindate.n.html, - itcl/iwidgets3.0.0/demos/html/spinint.n.html, - itcl/iwidgets3.0.0/demos/html/spinner.n.html, - itcl/iwidgets3.0.0/demos/html/spintime.n.html, - itcl/iwidgets3.0.0/demos/html/tabnotebook.n.html, - itcl/iwidgets3.0.0/demos/html/tabset.n.html, - itcl/iwidgets3.0.0/demos/html/toolbar.n.html, - itcl/iwidgets3.0.0/demos/scrolledcanvas, - itcl/iwidgets3.0.0/demos/scrolledframe, - itcl/iwidgets3.0.0/demos/scrolledhtml, - itcl/iwidgets3.0.0/demos/scrolledlistbox, - itcl/iwidgets3.0.0/demos/scrolledtext, - itcl/iwidgets3.0.0/demos/selectionbox, - itcl/iwidgets3.0.0/demos/selectiondialog, - itcl/iwidgets3.0.0/doc/canvasprintbox.n, - itcl/iwidgets3.0.0/doc/canvasprintdialog.n, - itcl/iwidgets3.0.0/doc/extfileselectionbox.n, - itcl/iwidgets3.0.0/doc/extfileselectiondialog.n, - itcl/iwidgets3.0.0/doc/fileselectionbox.n, - itcl/iwidgets3.0.0/doc/fileselectiondialog.n, - itcl/iwidgets3.0.0/doc/scopedobject.n.backup, - itcl/iwidgets3.0.0/doc/scrolledcanvas.n, - itcl/iwidgets3.0.0/doc/scrolledframe.n, - itcl/iwidgets3.0.0/doc/scrolledhtml.n, - itcl/iwidgets3.0.0/doc/scrolledlistbox.n, - itcl/iwidgets3.0.0/doc/scrolledtext.n, - itcl/iwidgets3.0.0/doc/selectionbox.n, - itcl/iwidgets3.0.0/doc/selectiondialog.n, - itcl/iwidgets3.0.0/generic/canvasprintbox.itk, - itcl/iwidgets3.0.0/generic/canvasprintdialog.itk, - itcl/iwidgets3.0.0/generic/extfileselectionbox.itk, - itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk, - itcl/iwidgets3.0.0/generic/fileselectionbox.itk, - itcl/iwidgets3.0.0/generic/fileselectiondialog.itk, - itcl/iwidgets3.0.0/generic/scrolledcanvas.itk, - itcl/iwidgets3.0.0/generic/scrolledframe.itk, - itcl/iwidgets3.0.0/generic/scrolledhtml.itk, - itcl/iwidgets3.0.0/generic/scrolledlistbox.itk, - itcl/iwidgets3.0.0/generic/scrolledtext.itk, - itcl/iwidgets3.0.0/generic/scrolledwidget.itk, - itcl/iwidgets3.0.0/generic/selectionbox.itk, - itcl/iwidgets3.0.0/generic/selectiondialog.itk, - itcl/iwidgets3.0.0/tests/canvasprintbox.test, - itcl/iwidgets3.0.0/tests/canvasprintdialog.test, - itcl/iwidgets3.0.0/tests/extfileselectionbox.test, - itcl/iwidgets3.0.0/tests/extfileselectiondialog.test, - itcl/iwidgets3.0.0/tests/fileselectionbox.test, - itcl/iwidgets3.0.0/tests/fileselectiondialog.test, - itcl/iwidgets3.0.0/tests/scrolledcanvas.test, - itcl/iwidgets3.0.0/tests/scrolledframe.test, - itcl/iwidgets3.0.0/tests/scrolledhtml.test, - itcl/iwidgets3.0.0/tests/scrolledlistbox.test, - itcl/iwidgets3.0.0/tests/scrolledtext.test, - itcl/iwidgets3.0.0/tests/selectionbox.test, - itcl/iwidgets3.0.0/tests/selectiondialog.test, - itcl/iwidgets3.0.0/unix/iwidgets.tcl.in, - itcl/iwidgets3.0.0/unix/pkgIndex.tcl.in, - tix/docs/Release-4.1.0.html, tix/docs/Release-4.1.0.txt, - tix/docs/Release-4.1a2.html, tix/docs/Release-4.1a2.txt, - tix/docs/Release-4.1a3.html, tix/docs/Release-4.1a3.txt, - tix/docs/Release-4.1b1.html, tix/docs/Release-4.1b1.txt, - tix/docs/Release-4.1b2.html, tix/docs/Release-4.1b2.txt, - tix/tixConfig.sh.in, tix/unix/tk4.2/pkgIndex.tcl.in, - tix/unix/tk8.0/pkgIndex.tcl.in, tix/unix/tk8.0/pkgIndex.tcl.in, - tix/unix/tk8.1/pkgIndex.tcl.in, tix/win/tkConsole41.c, - tix/win/tkConsole42.c, tix/win/tkConsole80a1.c, - tix/win/tkConsole80b1.c, tix/win/tkConsole81.c, tk/doc/tk4.0.ps, - tk/mac/tkMacProjects.sit.hqx. - -2003-10-17 Andrew Cagney - - * target.c (target_section_by_addr): New function. - (do_xfer_memory): Use "target_section_by_addr". - * target.h (target_section_by_addr): Declare. - - * target.h (struct target_ops): Add "to_read_partial" and - "to_write_partial", delete "to_query". - (target_read_partial, target_write_partial): Declare. - (target_read, target_write): Declare. - (target_query): Delete macro. - * target.c (target_read_partial): New function. - (target_write_partial, target_read, target_write): New function. - (update_current_target): Delete inheritance of "to_query". Add - comments about "to_read_partial" and "to_write_partial". - (debug_to_partial_read, debug_to_partial_write): New functions. - (debug_to_query): Delete function. - (setup_target_debug): Set "to_read_partial" and "to_write_partial" - instead of "to_query". - * remote.c (remote_read_partial): Replace "remote_query". - (init_remote_ops): Set "to_read_partial" instead of "to_query". - (init_remote_async_ops): Ditto. - * kod.c (gdb_kod_query): Make "bufsize" a LONGEST. Use - "target_read_partial" instead of "target_query". - * avr-tdep.c (avr_io_reg_read_command): Make "bufsize" a LONGEST. - Use "target_read_partial" instead of "target_query". - -2003-10-17 Jeff Johnston - - * frame.h (struct frame_id): Add new field: special_addr. - (frame_id_build_special): New prototype. - * frame.c (frame_id_build_special): New function. - (frame_id_build): Change to call frame_id_build_special(). - (frame_id_eq): Change to also test special_addr field. - (frame_id_inner): Update comment. - -2003-10-17 Andrew Cagney - - * target.c (update_current_target): Perform the target cleanup. - Put the target stack beneath the squashed "current_target". - (add_target): Delete disabled call to "cleanup_target". - (cleanup_target): Delete function. - (push_target, unpush_target): Do not call "cleanup_target". - -2003-10-17 Andrew Cagney - - * target.c (target_stack): Change to a static target_ops. - (update_current_target): Walk the "struct target_ops" stack. - (pop_target, do_xfer_memory, target_info): Ditto. - (find_target_beneath): Ditto. - (push_target): Rewrite to use the "struct target_ops" stack. - (unpush_target): Ditto. - * target.h (struct target_stack_item): Delete definition. - (target_stack): Delete declaration. - (struct target_ops): Add field "beneath". - -2003-10-17 Shrinivas Atre - - * gdb/config/h8300/tm-h8300.h (h8300_normal_mode): Add external - declaration. - * gdb/h8300-tdep.c (BINWORD): Update BINWORD for h8300_normal_mode - (h8300_examine_prologue): Use h8300_normal_mode flag - (h8300_gdbarch_init): Set architecture info for normal mode - -2003-10-16 Daniel Jacobowitz - - * remote.c (remote_protocol_vcont): New variable. - (set_remote_protocol_vcont_packet_cmd): New function. - (show_remote_protocol_vcont_packet_cmd): New function. - (init_all_packet_configs): Handle remote_protocol_vcont. - (remote_vcont_probe): New function. - (remote_vcont_resume): New function. - (remote_resume): Use it. - (remote_async_resume): Call remote_resume. - (_initialize_remote): Add verbose-resume packet commands. - -2003-10-16 Andrew Cagney - - * infrun.c (handle_inferior_event): Add comment about - "frame_id_inner" being too weak. - -2003-10-16 Elena Zannoni - - * minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove - second parameter, which is always null. Remove - SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code. - * symtab.h (lookup_minimal_symbol_solib_trampoline): Update - accordingly. - * somsolib.c (som_solib_create_inferior_hook, - som_solib_desire_dynamic_linker_symbols): Update callers. - * hppa-tdep.c (hppa_fix_call_dummy): Ditto. - -2003-10-16 Kei Sakamoto - - * remote-m32r-sdi.c : New file, interface to m32r on-chip - debug interface, SDI (Scalable Debug Interface). - * NEWS: Mention m32r SDI protocol was supported. - * Makefile.in (remote-m32r-sdi.o): Add build rule. - * config/m32r/m32r.mt (TDEPFILES) : Add remote-m32r-sdi.o. - -2003-10-15 Jeff Johnston - - * ia64-linux-tdep.c: Include gdbcore.h. - (IA64_LINUX_SIGCONTEXT_OFFSET): Magic constant removed. - (ia64_linux_sigcontext_register_addr): Find the address of the - sigcontext area stored in the sigframe instead of using - a magic offset constant. - -2003-10-15 Andrew Cagney - - * remote.c (remote_search): Delete function. - * target.h (target_search): Delete disabled macro. - (struct target_ops): Delete disabled field "to_search". - -2003-10-14 Kevin Buettner - - * frv-tdep.c (frv_frame_this_id): Call inside_entry_func() - instead of deprecated_inside_entry_file(). - -2003-10-14 Corinna Vinschen - - * sh-tdep.c: Fix copy/paste hangover in comment. - (sh_push_dummy_call_fpu): Accomodate double passing in little endian - mode. - (sh3e_sh4_extract_return_value): Ditto. - -2003-10-13 Richard Henderson - - * f-typeprint.c (f_type_print_base): Handle TYPE_CODE_REF. - * f-valprint.c (f_val_print): Likewise. Tweak TYPE_CODE_PTR to - match c_val_print a bit closer. - -2003-10-13 Kevin Buettner - - * frv-tdep.c (max_instrs_per_bundle, frv_instr_size): New constants. - (frv_gdbarch_adjust_breakpoint_address): New function. - (frv_gdbarch_init): Initialize ``gdbarch_adjust_breakpoint_address'' - method. - -2003-10-13 Kevin Buettner - - * breakpoint.h (struct breakpoint): Add new member - ``requested_address''. - * breakpoint.c (breakpoint_adjustment_warning) - (adjust_breakpoint_address): New static functions. - (print_it_typical): Issue warning if breakpoint's address is different - from its requested address. - (set_raw_breakpoint, set_longjmp_resume_breakpoint, watch_command_1) - (breakpoint_re_set_one): Set breakpoint's - ``requested_address'' field. Set ``address'' field to the - result of calling adjust_breakpoint_address() on the requested - address. - -2003-10-13 Kevin Buettner - - * gdbarch.sh (ADJUST_BREAKPOINT_ADDRESS): New method. - * gdbarch.h, gdbarch.c: Regenerate. - -2003-10-11 Mark Kettenis - - * i386bsd-tdep.c (i386bsd_init_abi): Use ARRAY_SIZE to initialize - TDEP->sc_num_regs. - - * i386fbsd-tdep.c: New file. - (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, - i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi, - i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Move here from - i386bsd-tdep.c. - (_initialize_i386fbsd_tdep): New function. - (i386fbsd_r_reg_offset, i386fbsd4_r_reg_offset): New varibles. - (i386fbsdaout_init_abi): Initialize TDEP->gregset_reg_offset, - TDEP->gregset_num_regs, TDEP->sizeof_gregset and - TDEP->sizeof_fpregset. Use ARRAY_SIZE to initialize - TDEP->sc_num_regs. - (i386fbsd4_init_abi): Initialize TDEP->gregset_reg_offset, - TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE - to initialize TDEP->sc_num_regs. - * i386bsd-tdep.c (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, - i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi, - i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Remove. - (_initialize_i386bsd_tdep): Don't register FreeBSD a.out and - FreeBSD ELF OS/ABI's here. - * Makefile.in (ALLDEPFILES): Add i386fbsd-tdep.c. - (i386fbsd-tdep.o): New target. - * config/i386/fbsd.mt (TDEPFILES): Add i386fbsd-tdep.o. - * config/i386/fbsd64.mt (TDEPFILES): Add i386fbsd-tdep.o. - - * amd64fbsd-tdep.c (amd64fbsd_r_reg_offset): New variable. - (amd64fbsd_init_abi): Set TDEP->gregset_reg_offset, - TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE - in initialization of TDEP->sc_num_regs. - - * x86-64-tdep.c (x86_64_regset_from_core_section): New function. - (x86_64_init_abi): Initialize regset_from_core_section if - appropriate. - - * i386-tdep.c (i386_regset_from_core_section): New function. - (i386_gdbarch_init): Initialize regset_from_core_section if - appropriate. - * i386-tdep.h (i386_regset_from_core_section): New declaration. - - * i386-tdep.h (struct regset): Declare opaque. - - * gdbarch.sh (regset_from_core_section): New method. - (struct regset): Declare opaque. - * gdbarch.c, gdbarch.h: Regenerated. - -2003-10-11 Alan Modra - - * hppa-tdep.c (hppa_in_solib_call_trampoline): Don't refer directly to - _cooked_size and vma; Use bfd_section_size and bfd_get_section_vma. - Correct test for pc within section. - -2003-10-11 Mark Kettenis - - * gdbarch.sh: Remove trailing whitepsace from comments. - -2003-10-08 Roland McGrath - - * gcore.c (make_mem_sec): Function removed, folded into ... - (gcore_create_callback): ... here. To omit a section, clear its - SEC_LOAD bit rather than zeroing its size. - Omit read-only sections only if they correspond to a known disk file. - (gcore_copy_callback): Ignore sections without SEC_LOAD flag set. - -2003-10-10 Michael Snyder - - * d10v-tdep.c: Fix typo in comment. - -2003-10-10 Andrew Cagney - - * rs6000-tdep.c (e500_store_return_value): Delete function. - (e500_extract_return_value): Delete function. - (rs6000_gdbarch_init): When SYSV, set "extract_return_value" and - "restore_return_value" to "ppc_sysv_abi_extract_return_value" and - "ppc_sysv_abi_restore_return_value" where applicable. - * ppc-tdep.h: (ppc_sysv_abi_store_return_value): Declare. - (ppc_sysv_abi_extract_return_value): Declare. - (ppc_sysv_abi_broken_store_return_value): Declare. - (ppc_sysv_abi_broken_extract_return_value): Declare. - (ppc_sysv_abi_broken_use_struct_convention:) Delete declaration. - * ppc-sysv-tdep.c (return_value_convention): Move definition to - start of file. - (do_ppc_sysv_return_value): New function. - (ppc_sysv_abi_extract_return_value): New function. - (ppc_sysv_abi_store_return_value): New function. - (ppc_sysv_abi_broken_extract_return_value): New function. - (ppc_sysv_abi_broken_store_return_value): New function. - (ppc_sysv_abi_use_struct_convention): Call - do_ppc_sysv_return_value. - -2003-10-10 J. Brobecker - - * blockframe.c (inside_main_func): No longer use symbol_lookup() - to lookup the main function symbol. - -2003-10-10 Corinna Vinschen - - * sh-tdep.c (sh_treat_as_flt_p): New function to recognize float - types correctly. - (sh_push_dummy_call_fpu): Fix argument passing rules. - (sh3e_sh4_extract_return_value): Call sh_treat_as_flt_p to recognize - float types. - (sh3e_sh4_store_return_value): Ditto. - -2003-10-10 Elena Zannoni - - * sh-tdep.c (sh_use_struct_convention): Clarify one case in - comment. - -2003-10-10 Corinna Vinschen - - * sh-tdep.c (sh_use_struct_convention): Clean up to have a - more readable code. Accomodate passing of bitfields. - -2003-10-10 Andrew Cagney - - * Makefile.in (ppc-sysv-tdep.o): Add $(gdb_assert_h). - * rs6000-tdep.c (rs6000_gdbarch_init): When 64 bit SysV ABI, set - push_dummy_call to ppc64_sysv_abi_push_dummy_call. - * ppc-sysv-tdep.c: Include "gdb_assert.h". - (ppc64_sysv_abi_push_dummy_call): New function. - (ppc64_sysv_abi_broken_push_dummy_call): New function. - * ppc-tdep.h (ppc64_sysv_abi_push_dummy_call): Declare. - (ppc64_sysv_abi_broken_push_dummy_call): Declare. - -2003-10-10 Kei Sakamoto - - * NEWS: Replace "Hitachi" and "Mitsubishi" with "Renesas". - * README: Ditto. - * d10v-tdep.c: Ditto. - * h8300-tdep.c: Ditto. - * remote-e7000.c: Ditto. - * remote-hms.c: Ditto. - * ser-e7kpc.c: Ditto. - * sh-stub.c: Ditto. - * sh-tdep.c: Ditto. - * sh-tdep.h: Ditto. - * sh3-rom.c: Ditto. - * sh64-tdep.c: Ditto. - * top.c: Ditto. - * wince.c: Ditto. - * config/d10v/d10v.mt: Ditto. - * config/sh/embed.mt: Ditto. - * config/sh/linux.mt: Ditto. - * config/sh/tm-linux.h: Ditto. - * config/sh/tm-sh.h: Ditto. - * config/sh/wince.mt: Ditto. - -2003-10-09 Andrew Cagney - - * ppc-tdep.h (struct type): Declare opaque. - * x86-64-tdep.h (struct regcache): Declare opaque. - * sh-tdep.c (sh_do_fp_register): Delete "register" attribute, fix - coding style. - -2003-10-09 Andrew Cagney - - Changes from 2003-09-09 Jimi Xenidis : - * config/rs6000/tm-rs6000.h (SOFTWARE_SINGLE_STEP): Delete macro. - (SOFTWARE_SINGLE_STEP_P): Ditto. - * config/powerpc/tm-ppc-eabi.h (SOFTWARE_SINGLE_STEP_P): Ditto. - * config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP): Ditto. - (SOFTWARE_SINGLE_STEP_P): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): When AIX, set - software_single_step to rs6000_software_single_step. - -2003-10-09 Andrew Cagney - - * MAINTAINERS: Mark m32r-elf as buildable with -Werror. - -2003-10-09 Michael Snyder - - * frame.h: Fix typo in comment. - * dummy-frame.c: Fix typo in comment. - * d10v-tdep.c: Random whitespace/comment tweaks. - -2003-10-09 Elena Zannoni - - * sh-tdep.c (sh_gdbarch_init): Delete setting of push_dummy_code. - (sh_push_dummy_code): Delete function, it's only used for dummy calls - on stack. - - Based on input by Stephen Clarke (stephen.clarke@superh.com): - * sh-tdep.c (sh_use_struct_convention): Add comment explaining ABI - in detail. - -2003-10-09 Daniel Jacobowitz - - * remote-mips.c (mips_initialize): Remove unneeded call to - get_selected_frame. Suggested by Atsushi Nemoto . - -2003-10-09 Daniel Jacobowitz - - * dwarf2expr.c (execute_stack_op): Don't treat the frame base as - a memory pointer. - -2003-10-08 Jeff Johnston - - * lin-lwp.c (stop_and_resume_callback): Set the resumed flag - for any lwp we resume. - (running_callback): Add lwps that have pending status events - against them to be considered running. - -2003-10-08 Kei Sakamoto - - * m32r-tdep.c : Include "dis-asm.h". - * Makefile.in (m32r-tdep.o): Update dependencies. - -2003-10-06 J. Brobecker - - * completer.h (get_gdb_completer_word_break_characters): Delete. - * completer.c: include language.h. - (gdb_completer_word_break_characters): Delete. - (get_gdb_completer_word_break_characters): Delete. - (location_completer): Use the word break characters of the current - language. - (complete_line): Likewise. - (line_completion_function): Likewise. - (skip_quoted_chars): Likewise. - * Makefile.in (completer.o): Add dependency on language.h. - * top.c (init_main): Set the readline word break characters - to GDB's default word break characters. - -2003-10-06 J. Brobecker - - * language.h (language_defn): new field, la_word_break_characters. - * language.c (unknown_language_defn): Set new field to - default_word_break_characters. - (auto_language_defn): Likewise. - (local_language_defn): Likewise. - * ada-lang.c (ada_language_defn): Likewise. - * c-lang.c (c_language_defn): Likewise. - (cplus_language_defn): Likewise. - (asm_language_defn): Likewise. - (minimal_language_defn): Likewise. - * f-lang.c (f_language_defn): Likewise. - * jv-lang.c (java_language_defn): Likewise. - * m2-lang.c (m2_language_defn): Likewise. - * objc-lang.c (objc_language_defn): Likewise. - * p-lang.c (pascal_language_defn): Likewise. - * scm-lang.c (scm_language_defn): Likewise. - -2003-10-06 Andrew Cagney - - * ppc-sysv-tdep.c: Re-indent. - -2003-10-06 J. Brobecker - - * language.h (default_word_break_characters): Add prototype. - * language.c (default_word_break_characters): New function. - -2003-10-06 Andreas Schwab - - * i386-tdep.c (i386_analyze_frame_setup): Also handle xorl/subl - with %eax. - -2003-10-06 Andrew Cagney - - * Makefile.in (ALLDEPFILES): Remove "z8k-tdep.c" and - "h8500-tdep.c". - (z8k-tdep.o): Delete custom build rule. - -2003-10-06 Andrew Cagney - - * Makefile.in: Update all dependencies. - - * MAINTAINERS: Mention that h8500, mn10200, and z8k were deleted. - No longer list PA as as obsolete candidate. List m32r as - broken instead of obsolete. - - * config/nm-m3.h, config/h8500/h8500.mt: Delete obsolete files. - * config/h8500/tm-h8500.h, config/i386/nm-ptx4.h: Ditto. - * config/i386/nm-symmetry.h, config/i386/ptx.mh: Ditto. - * config/i386/ptx.mt, config/i386/ptx4.mh: Ditto. - * config/i386/ptx4.mt, config/i386/symmetry.mh: Ditto. - * config/i386/symmetry.mt, config/i386/tm-ptx.h: Ditto. - * config/i386/tm-ptx4.h, config/i386/tm-symmetry.h: Ditto. - * config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto. - * config/i386/xm-symmetry.h, config/mips/mipsm3.mh: Ditto. - * config/mips/mipsm3.mt, config/mips/tm-mipsm3.h: Ditto. - * config/mips/xm-mipsm3.h, config/mn10200/mn10200.mt: Ditto. - * config/mn10200/tm-mn10200.h, config/pa/hppabsd.mh: Ditto. - * config/pa/hppabsd.mt, config/pa/hppaosf.mh: Ditto. - * config/pa/hppaosf.mt, config/pa/hppapro.mt: Ditto. - * config/pa/nm-hppab.h, config/pa/nm-hppao.h: Ditto. - * config/pa/tm-hppab.h, config/pa/tm-hppao.h: Ditto. - * config/pa/tm-pro.h, config/pa/xm-hppab.h: Ditto. - * config/pa/xm-pa.h, config/sparc/sparclet.mt: Ditto. - * config/sparc/sparclite.mt, config/sparc/tm-sparclet.h: Ditto. - * config/sparc/tm-sparclite.h, config/z8k/tm-z8k.h: Ditto. - * config/z8k/z8k.mt: Ditto. - - * NEWS: Mention that z8k-zilog-none, z8ksim, mn10200-*-*, - h8500hms, hppa*-*-bsd*, hppa*-*-osf*, hppa*-*-pro*, - mips*-*-mach3*, i[3456]86-sequent-sysv4*, i[3456]86-sequent-sysv*, - i[3456]86-sequent-bsd*, sparclet-*-*, sparclite-fujitsu-none, and - sparclite were removed. - * configure.host, configure.tgt: Remove corresponding tuples. - - * breakpoint.c, breakpoint.h: Remove obsolete code. - * buildsym.c, dbxread.c, gdbtypes.c, mdebugread.c: Ditto. - * monitor.c, sparc-tdep.c, stabsread.c: Ditto. - * stabsread.h, xcoffread.c: Ditto. - - * z8k-tdep.c, symm-tdep.c, symm-nat.c: Delete obsolete file. - * sparclet-stub.c, sparclet-rom.c: Delete obsolete file. - * sparcl-tdep.c, sparcl-stub.c, h8500-tdep.c: Delete obsolete file. - * m3-nat.c, mipsm3-nat.c, mn10200-tdep.c: Delete obsolete file. - -2003-10-06 David Lecomber - - * f-valprint.c: Reformatting - -2003-10-06 Mark Kettenis - - * x86-64-tdep.c: Remove duplicate comment. - - * x86-64-tdep.c (x86_64_store_return_value): Don't use - DEPRECATED_REGISTER_RAW_SIZE. Use symbolic names for register - names for return values. This fixes a bug since we looked at %rbx - instead of %rdx. - -2003-10-05 Mark Kettenis - - * x86-64-tdep.c: Include "regset.h". - - * i386-tdep.h (struct gdbarch_tdep): Add members gregset, - gregset_reg_offset, gregset_num_regs, sizeof_gregset, fpregset, - sizeof_fpregset. - * i386-tdep.c: Include "regset.h". - (i386_supply_gregset): New function. - (i386_supply_fpregset): New function. - (i386_gdbarch_init): Initialze register set-related members of - TDEP. - * x86-64-tdep.c (x86_64_supply_fpregset): New function. - (x86_64_init_abi): Initialize TDEP->sizeof_fpregset. - -2003-10-03 Andrew Cagney - - * rs6000-tdep.c (rs6000_gdbarch_init): When the 64 bit SysV ABI, - set extract_return_value, store_return_value and - use_struct_convention to ppc64_sysv_abi_extract_return_value, - ppc64_sysv_abi_store_return_value and - ppc64_sysv_abi_use_struct_convention. - * ppc-tdep.h (ppc64_sysv_abi_extract_return_value): Declare. - (ppc64_sysv_abi_store_return_value): Declare. - (ppc64_sysv_abi_use_struct_convention): Declare. - * ppc-sysv-tdep.c (enum return_value_convention): Define. - (ppc64_sysv_abi_extract_return_value): New function. - (ppc64_sysv_abi_store_return_value): New function. - (ppc64_sysv_abi_use_struct_convention): New function. - (ppc64_sysv_abi_return_value): New function. - -2003-10-03 Andrew Cagney - - * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Only - convert a descriptor to a function when it's in the ".opd" - section. - -2003-10-03 Corinna Vinschen - - * sh-tdep.c (sh_push_dummy_call_fpu): Initialize flt_argreg and - reg_size to keep GCC silent. - -2003-10-03 Corinna Vinschen - - * dwarf2-frame.c (struct comp_unit): Add tbase member to store - base for DW_EH_PE_textrel encodings. - (read_encoded_value): Add a DW_EH_PE_textrel case. - (dwarf2_build_frame_info): Set unit.tbase to beginning of text - section. - -2003-10-03 Mark Kettenis - - * dwarf2-frame.c (dwarf2_build_frame_info): Fix comment. - -2003-10-02 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_RAW_SIZE): Rename - REGISTER_RAW_SIZE. - * gdbarch.h, gdbarch.c: Re-generate. - * aix-thread.c, alpha-tdep.h, arm-tdep.c, core-sol2.c: Update. - * cris-tdep.c, dve3900-rom.c, findvar.c, frame.c: Update. - * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update. - * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update. - * ia64-linux-nat.c, ia64-tdep.c, infcmd.c, infptrace.c: Update. - * infrun.c, irix5-nat.c, lynx-nat.c, mips-linux-tdep.c: Update. - * mips-nat.c, mips-tdep.c, mipsv4-nat.c, mn10300-tdep.c: Update. - * monitor.c, ns32k-tdep.c, ppc-linux-nat.c, regcache.c: Update. - * remote-e7000.c, remote-mips.c, remote-sim.c: Update. - * remote-vxmips.c, remote-vxsparc.c, remote.c: Update. - * rom68k-rom.c, rs6000-nat.c, rs6000-tdep.c, s390-tdep.c: Update. - * sh64-tdep.c, sparc-nat.c, sparc-tdep.c, stack.c: Update. - * target.c, tracepoint.c, v850-tdep.c, v850ice.c, valops.c: Update. - * vax-tdep.c, vax-tdep.h, x86-64-tdep.c, xstormy16-tdep.c: Update. - * config/m68k/tm-delta68.h, config/m68k/tm-vx68.h: Update. - * config/sparc/tm-sparc.h, config/sparc/tm-sparclynx.h: Update. - -2003-10-02 Jim Blandy - - * dwarf2read.c (struct die_info): Doc fix. - -2003-10-02 Corinna Vinschen - - * sh-tdep.c: Running thru gdb_indent.sh. - -2003-10-02 Corinna Vinschen - - * sh-tdep.c (sh_justify_value_in_reg): New function. - (sh_stack_allocsize): Ditto. - (flt_argreg_array): New array used for floating point argument - passing. - (sh_init_flt_argreg): New function. - (sh_next_flt_argreg): Ditto. - (sh_push_dummy_call_fpu): Simplify. Rename "odd_sized_struct" to - "pass_on_stack". Use new helper functions. Accomodate Renesas ABI. - Fix argument passing strategy. - (sh_push_dummy_call_nofpu): Ditto. - -2003-10-01 Andrew Cagney - - * value.h (register_value_being_returned): Declare. Replace - "value_being_returned". - * infcall.c (call_function_by_hand): Use - register_value_being_returned. - * infcmd.c (print_return_value): Call - "register_value_being_returned", handle struct return locally. - * values.c (register_value_being_returned): New function. Replace - "value_being_returned". - -2003-09-30 Elena Zannoni - - * linux-proc.c (linux_do_registers): New function. - (linux_make_note_section): Use linux_do_registers in case of - single threaded inferior programs. - -2003-10-01 Andrew Cagney - - * infcall.c (call_function_by_hand): When STRUCT_RETURN, always - use STRUCT_ADDR. When not using "struct return convention", pass - "0" to "value_being_returned". Add FIXMEs. - * infcmd.c (print_return_value): Pass an explicit 0/1 to - value_being_returned. Add comments. - * values.c (value_being_returned): Add fixme. - * hppa-tdep.c (hppa_extract_struct_value_address): Add FIXME. - (hppa_value_returned_from_stack): Add FIXME. - -2003-09-30 David Carlton - - * dwarf2read.c (struct die_info): Add 'parent' field; replace - 'has_children' and 'next' by 'child' and 'sibling'. - (read_comp_unit): Rework algorithm, breaking body into - read_die_and_children and read_die_and_siblings. - (read_die_and_children, read_die_and_siblings): New. - (read_full_die): Add 'has_children' argument; set it instead of - the die's 'has_children' field. Minor formatting cleanup. - (free_die_list): Use die->child and die->sibling instead of - die->next. - (dump_die_list): Ditto. - (sibling_die): Use die->sibling. - (psymtab_to_symtab_1): Use die's 'child' field in place of its - 'has_children' and 'next' fields. - (process_die, read_file_scope, read_func_scope) - (read_lexical_block_scope, read_structure_scope) - (read_enumeration, read_array_type, read_common_block) - (read_namespace, read_subroutine_type, dump_die): Ditto. - -2003-09-30 Andrew Cagney - - * rs6000-tdep.c (rs6000_gdbarch_init): Set the PowerOpen red zone - to 224, not 220. - -2003-09-30 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_SIZE): Rename - REGISTER_VIRTUAL_SIZE. - * gdbarch.h, gdbarch.c: Regenerate. - * vax-tdep.h, sparc-tdep.c, regcache.h: Update. - * regcache.c, mn10300-tdep.c, mips-tdep.c: Update. - * infcmd.c, frame.c, findvar.c, cris-tdep.c: Update. - -2003-09-29 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_TYPE): Rename - REGISTER_VIRTUAL_TYPE. - * gdbarch.h, gdbarch.c: Regenerate. - * arch-utils.c, hppa-tdep.c, regcache.c, regcache.h: Update. - * sh64-tdep.c, sparc-tdep.c: Update. - - * remote-vxsparc.c (vx_read_register): Replace bzero with memset. - * remote-vxmips.c (vx_read_register): Ditto. - * remote-vx68.c (vx_read_register): Ditto. - * gnu-nat.c (inf_validate_procs): Ditto. - -2003-09-29 J. Brobecker - - * infcall.c (call_function_by_hand): Fix build failure - introduced in the previous change to this file. - -2003-09-29 Andrew Cagney - - * NEWS: Mention Objective-C. - -2003-09-29 Jerome Guitton - - * arm-tdep.c (arm_make_prologue_cache): Use trad_frame_addr_p to - test if the register has been saved on the stack. - (arm_scan_prologue_cache): When analysing the instruction - "str lr, [sp, #-4]", save the address where lr has been stored. - -2003-09-28 Andrew Cagney - - * frame.c (frame_read_unsigned_register): Delete function. - * frame.h (frame_read_unsigned_register): Delete declaration. - * sparc-tdep.c (sparc_init_extra_frame_info): Use - get_frame_register_unsigned. - (sparc_frame_saved_pc, sparc_pop_frame): Ditto. - * m68hc11-tdep.c (m68hc11_print_register): Ditto. - * d10v-tdep.c (d10v_print_registers_info): Ditto. - - * frame.h (frame_read_register): Delete declaration. - * frame.c (frame_read_register): Delete function. - * arch-utils.c (legacy_register_to_value): Use get_frame_register. - * sparc-tdep.c (sparc_fetch_pointer_argument): Ditto. - * rs6000-tdep.c (rs6000_fetch_pointer_argument): Ditto. - * mips-tdep.c (mips_register_to_value): Ditto. - * hppa-tdep.c (hppa_fetch_pointer_argument): Ditto. - * d10v-tdep.c (d10v_print_registers_info): Ditto. - - * frame.c (frame_read_signed_register): Delete function. - (frame_read_unsigned_register): Update comments. - * frame.h (frame_read_signed_register): Delete declaration. - * h8300-tdep.c (h8300_print_register): Use - get_frame_register_signed. - * m68hc11-tdep.c (m68hc11_print_register): Ditto. - - * config/pa/tm-hppa.h (DEPRECATED_VALUE_RETURNED_FROM_STACK): - Rename VALUE_RETURNED_FROM_STACK. - * infcmd.c (print_return_value): Update. - * infcall.c (call_function_by_hand): Update. - -2003-09-28 Mark Kettenis - - * i387-tdep.c (i387_supply_fsave, i387_supply_fxsave): Add - regcache argument and reverse the order of the other two - arguments. Remove local regcache variable. Determine - architecture from REGCACHE. Update comments. - * x86-64-tdep.c (x86_64_supply_fxsave): Add regcache argument and - reverse the order of the other two arguments. Remove local - regcache variable. Determine architecture from REGCACHE. Update - comments. - * i387-tdep.h (i387_supply_fsave, i387_supply_fxsave): Adjust - prototypes. Update comments. - * x86-64-tdep.c (x86_64_supply_fxsave): Adjust prototype. Adjust - comment. - * amd64fbsd-nat.c (supply_fpregset, fetch_inferior_registers): - Update. - * go32-nat.c (fetch_register, go32_fetch_registers): Update. - * i386-interix-nat.c (supply_fpregset): Update. - * i386-linux-nat.c (supply_fpregset, supply_fpxregset): Update. - * i386-nto-tdep.c (i386nto_supply_fpregset): Update. - * i386gnu-nat.c (fetch_fpregs, supply_fpregset): Update. - * i386bsd-nat.c (supply_fpregset, fetch_inferior_registers): Update. - * i386nbsd-tdep.c (fetch_core_registers, fetch_elfcore_registers): - Update. - * i386obsd-tdep.c (fetch_core_registers): Update. - * i386v4-nat.c (supply_fpregset): Update. - * x86-64-linux-nat.c (supply_fpregset): Update. - * x86-64-linux-tdep.c (fetch_core_registers): Update. - -2003-09-27 Mark Kettenis - - * i386-tdep.h: Put opaque declarations in alphabetical - order. Remove spurious whitespace. - (struct gdbarch_tdep): add st0_regnum and mm0_regnum members. - (i386_sse_regnum_p, i386_mxcsr_regnum_p): Remove prototypes. - * i386-tdep.c (MM0_REGNUM): Remove define. - (i386_mmx_regnum_p): Add gdbarch argument. - (i386_sse_regnum_p, i386_mxcsr_regnum_p): Add gdbarch argument. - Rewrite using new macro definitions for FPU/SSE registers. - (i386_fp_regnum_p, i386_fpc_regnum_p): Rewrite using new macro - definitions from i387-tdep.h. - (i386_register_name): Update. - (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum): Update to use - new macro definitions for FPU/SSE registers. - (i386_extract_return_value): Determine whether floating-point - registers are present by examining REGCACHE's architecture. - (i386_store_return_value): Likewise. Use I386_MAX_REGISTER_SIZE - instead of FPU_REG_RAW_SIZE. Use new macro definitions for - FPU/SSE registers. - (i386_register_type): Update. - (i386_mmx_regnum_to_fp_regnum): Rewrite using new macro - definitions for FPU registers. Use REGCACHE's architecture to - determine the appropriate register numbers. - (i386_pseudo_register_read, i386_pseudo_register_write, - i386_register_reggroup_p): Update. - (i386_gdbarch_init): Initialize TDEP->st0_regnum and - TDEP->mm0_regnum. - * i387-tdep.h (I387_FCTRL_REGNUM, I387_FSTAT_REGNUM, - I387_FTAG_REGNUM, I387_FISEG_REGNUM, I387_FIOFF_REGNUM, - I387_FOSEG_REGNUM, I387_FOOFF_REGNUM, I387_FOP_REGNUM, - I387_XMM0_REGNUM, I387_MXCSR_REGNUM): New defines. - (i387_supply_fsave, i387_fill_fsave, i387_supply_fxsave, - i387_fill_fxsave): Change type of fsave/fxsave argument from `char - *' to `void *'. - * i387-tdep.c (i387_print_float_info, fsave_offset, FSAVE_ADDR, - i387_supply_fsave, i387_fill_fsave, fxsave_offset, FXSAVE_ADDR, - i387_supply_fxsave, i387_fill_fxsave): Update to use new macro - definitions for FPU/SSE registers. - (FXSAVE_MXCSR_ADDR): New define. - * x86-64-tdep.c (x86_64_init_abi): Override TDEP->st0_regnum and - TDEP->mm0_regnum. - (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): Remove defines. - (I387_ST0_REGNUM): Define. - - * regcache.h (get_regcache_arch): New prototype. - * regcache.c (get_regcache_arch): New function. - - * x86-64-tdep.c (x86_64_store_return_value): Remove spurious - whitespace. - - * i386-tdep.c (i386_num_register_names, i386_num_mmx_regs): - Initialize using ARRAY_SIZE. - -2003-09-27 Andrew Cagney - - * arch-utils.c (deprecated_init_frame_pc_default): Rename - "init_frame_pc_default". - * arch-utils.h (deprecated_init_frame_pc_default): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sh64-tdep.c (sh64_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * config/pa/tm-hppa.h (DEPRECATED_INIT_FRAME_PC): Update. - -2003-09-26 Mark Kettenis - - * regset.h: New file. - * Makefile.in (regset_h): Add. - -2003-09-25 Andrew Cagney - - * frame.h (deprecated_frame_saved_regs): Rename - get_frame_saved_regs. - * cris-tdep.c, frame.c, h8300-tdep.c, hppa-tdep.c: Update. - * mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Update. - * ns32k-tdep.c, ppc-linux-tdep.c, rs6000-tdep.c: Update. - * s390-tdep.c, sh64-tdep.c, stack.c: Update. - * v850-tdep.c, vax-tdep.c, xstormy16-tdep.c: Update. - -2003-09-25 Andrew Cagney - - * NEWS: Mention the new backtrace mechanism, DWARF 2 CFI, hosted - file I/O, multi-arch, TLS and NPTL, DWARF 2 Location Expressions, - and Java. - * PROBLEMS: Mention that mips*-*-*, powerpc*-*-*, sparc*-*-* and - arm*-*-* do not use the new frame code. - -2003-09-25 David Carlton - - * c-exp.y: Remove 'register' declarations. - * f-exp.y, jv-exp.y, m2-exp.y, objc-exp.y, p-exp.y: Ditto. - -2003-09-25 David Carlton - - * c-exp.y: Include cp-support.h. Add qualified_type. - (yylex): Delete nested type hack; add comments. - * cp-namespace.c (cp_lookup_nested_type): New function. - * cp-support.h: Declare cp_lookup_nested_type. - * eval.c (evaluate_subexp_standard): Call value_aggregate_elt - instead of value_struct_elt_for_reference. - * valops.c: Include cp-support.h. - (value_aggregate_elt): New function. - (value_namespace_elt): Ditto. - (value_struct_elt_for_reference): Make static. - * value.h: Delete declaration of value_struct_elt_for_reference; - add declaration for value_aggregate_elt. - * Makefile.in (c-exp.tab.o): Depend on $(cp_support_h). - (valops.o): Ditto. - -2003-09-25 Daniel Jacobowitz - - * stack.c: Include "reggroups.h". - (frame_info): Only display registers in all_reggroup. - * Makefile.in (stack.o): Update dependencies. - -2003-09-25 Jerome Guitton - - * arm-tdep.c (arm_skip_prologue): Handle "sub ip, sp #n" and - "add ip, sp #n" in the prologue. - (arm_scan_prologue): Ditto. - -2003-09-25 Jerome Guitton - - * MAINTAINERS (write after approval): Add myself. - -2003-09-25 Andreas Schwab - - * m68k-tdep.c: Include "dwarf2-frame.h". - (m68k_gdbarch_init): Add the DWARF CFI frame unwinder. - * Makefile.in (m68k-tdep.o): Update dependencies. - -2003-09-25 Corinna Vinschen - - * sh-tdep.c (struct frame_extra_info): Remove. - (struct sh_frame_cache): New structure. - (GET_SOURCE_REG): New macro extracting source register of an opcode. - (GET_TARGET_REG): Ditto but target register. - (GET_PUSHED_REG): Remove. - (IS_MOV_ARG_TO_REG): New macro. - (IS_MOV_ARG_TO_IND_R14): New macro. - (IS_MOV_ARG_TO_IND_R14_WITH_DISP): New macro. - (IS_MOVW_PCREL_TO_REG): New macro. - (IS_MOVL_PCREL_TO_REG): New macro. - (IS_SUB_REG_FROM_SP): New macro. - (IS_ARG_MOV): Remove. - (IS_MOV_TO_R14): Remove. - (IS_RESTORE_FP): New macro. - (IS_RTS): New macro. - (IS_LDS): New macro. - (IS_MOV_FP_SP): New macro. - (IS_ADD_REG_TO_FP): New macro. - (IS_ADD_IMM_FP): New macro. - (sh_skip_prologue_hard_way): Remove. - (sh_saved_pc_after_call): Remove. - (sh_frame_chain): Remove. - (sh_find_callers_reg): Remove. - (sh_nofp_frame_init_saved_regs): Remove. - (sh_fp_frame_init_saved_regs): Remove. - (sh_init_extra_frame_info): Remove. - (sh_analyze_prologue): New function. - (sh_skip_prologue): Remove deprecated code. Rely on new function - sh_analyze_prologue when after_prologue fails. - (sh_frame_saved_pc): Remove. - (sh_alloc_frame_cache): New function. - (sh_frame_cache): Ditto. - (sh_frame_prev_register): Ditto. - (sh_frame_this_id): Ditto. - (sh_frame_unwind): New structure defining the heuristic frame - sniffer interface. - (sh_frame_sniffer): New function. - (sh_unwind_sp): Ditto. - (sh_unwind_pc): Ditto. - (sh_unwind_dummy_id): Ditto. - (sh_frame_base_address): Ditto. - (sh_frame_base): New structure defining new frame base code. - (sh_in_function_epilogue_p): New function. - (sh_gdbarch_init): Restructure and simplify to eliminate deprecated - code and to call all new code instead. Initialize dwarf2 and - heuristic frame sniffer. - -2003-09-24 Paul N. Hilfinger - - * parser-defs.h (struct exp_descriptor): New definition, containing - language-specific info for printing, prefixifying, dumping, and - evaluating expressions. - (exp_descriptor_standard): Declare new variable. - (print_subexp): Make global and declare here (from expprint.c). - (dump_subexp): Ditto. - (dump_subexp_body_standard): Declare. - (operator_length_standard): Declare. - (op_name_standard): Declare. - (print_subexp): Declare. - (print_subexp_standard): Declare. - - * language.h (struct language_defn): Add la_exp_desc field to hold - pointer to table for language-specific operators. - Remove evaluate_exp field, which is now in struct exp_descriptor. - - * parse.c (operator_length): Move most code to new - operator_length_standard function. Use language-specific information. - (operator_length_standard): New function taking most code from - operator_length. - (exp_descriptor_standard): New constant. - - * expression.h (enum exp_opcode): Add definitions of OP_EXTENDED0 - and OP_EXTENDED_LAST. - - * expprint.c (print_subexp): Use language-specific print_subexp. - Make global; remove static declaration. - Move most code to print_subexp_standard. - (print_subexp_standard): New function, containing code formerly in - print_subexp. - (op_name): Add expression to argument signature. - Use langauge-specific op_name. - Move most code to op_name_standard. - (op_name_standard): New function, containing code formerly in op_name. - (dump_subexp): Use new version of op_name function. - Use language-specific dump_subexp_body, and move most existing code to - dump_subexp_body_standard. - (dump_raw_expression): Use new op_name interface. - (dump_subexp_body): Move most code to dump_subexp_body_standard. - (dump_subexp_body_standard): New function, containing code formerly - in dump_subexp_body. - - * language.c (unknown_language): Add default la_exp_desc field and - remove evaluate_exp field. - (auto_language): Ditto. - (local_language): Ditto. - * f-lang.c (f_language_defn): Ditto. - * c-lang.c (c_language_defn): Ditto. - (cplus_language_defn): Ditto. - (asm_language_defn): Ditto. - (minimal_language_defn): Ditto. - * p-lang.c (pascal_language_defn): Ditto. - * m2-lang.c (m2_language_defn): Ditto. - * objc-lang.c (objc_language_defn): Ditto. - - * jv-lang.c (exp_descriptor_java): New variable, containing - Java-specific expression evaluator. - (java_language_defn): Add la_exp_desc field and remove evaluate_exp - field. - * scm-lang.c (exp_descriptor_scm): New variable, containing - Scheme-specific expression evaluator. - (scm_language_defn): Add la_exp_desc field and remove evaluate_exp - field. - * objc-lang.c (print_object_command): Take evaluate_exp from the - la_exp_desc field. - - * Makefile.in (eval.o): Add dependency on parser-defs.h. - - * eval.c: Include parser-defs.h for the full declaration of - la_exp_desc's type. - (evaluate_subexp): Get evaluate_exp out of la_exp_desc field. - -2003-09-23 Paul N. Hilfinger - - * parser-defs.h (operator_length): Declare. - - * parse.c (length_of_subexp): Use operator_length to get operator - lengths and arities for operators. - Move most code to new operator_length function. - (operator_length): New function absorbing most code from - length_of_subexp. - (prefixify_subexp): Remove large case and use operator_length instead. - (parse_exp_1): Use renamings: - dump_prefix_expression => dump_raw_expression and - dump_postfix_expression => dump_prefix_expression. - - * expression.h (dump_prefix_expression): Rename to ... - (dump_raw_expression): New name. - (dump_postfix_expression): Rename to ... - (dump_prefix_expression): New name. - - * expprint.c (dump_subexp): Make global. Add comment. - Move most existing code to dump_subexp_body. - (dump_subexp_body): New function. - (dump_prefix_expression): Rename to dump_raw_expression. - Remove attempt to print the expression via print_expression: it can't - work before the expression is prefixified. - (dump_raw_expression): Renamed from dump_prefix_expression. - (dump_postfix_expression): Rename to dump_prefix_expression, since - that's what it does. - Remove 'note' parameter, since this routine must be used on - prefixified expression. - (dump_prefix_expression): Renamed from dump_postfix_expression. - -2003-09-22 Jim Blandy - - * dwarf2read.c (read_array_type): When building the type for an - array of unspecified length, make sure to choose the upper bound - so that the array's total length comes out to be zero --- that's - how we represent such arrays. - -2003-09-22 Michael Chastain - - * MAINTAINERS: Rename gdb.c++ to gdb.cp. - -2003-09-22 Jeff Johnston - - * top.c (quit_force): Fix indirect call to quit_target so - a struct qt_args pointer is passed. - -2003-09-22 Andrew Cagney - - * arch-utils.h (init_frame_pc_noop): Delete declaration. - * arch-utils.c (init_frame_pc_noop): Delete function. - * mn10300-tdep.c (mn10300_gdbarch_init): Do not set - "init_frame_pc". - * mips-tdep.c (mips_gdbarch_init): Ditto. - * i386-interix-tdep.c (i386_interix_init_abi): Ditto. - * config/sparc/tm-sparc.h (init_frame_pc_noop): Delete - declaration. - (DEPRECATED_INIT_FRAME_PC): Delete macro. - * config/rs6000/tm-rs6000.h (init_frame_pc_noop): Delete - declaration. - (DEPRECATED_INIT_FRAME_PC): Delete macro. - -2003-09-22 Anthony Green - - * monitor.c (monitor_expect): Delete unused conflicting targ_ops - declaration. - -2003-09-20 Andrew Cagney - - * breakpoint.c: Eliminate ARGSUSED. - * buildsym.c, cli/cli-cmds.c, cli/cli-script.c: Ditto. - * coffread.c, corelow.c, dwarf2read.c, event-top.c: Ditto. - * exec.c, gcore.c, hpux-thread.c, infcmd.c, inflow.c: Ditto. - * infrun.c, inftarg.c, maint.c, ocd.c, printcmd.c: Ditto. - * procfs.c, regcache.c, remote-rdi.c, remote-sds.c: Ditto. - * remote.c, sol-thread.c, source.c, stabsread.c: Ditto. - * stack.c, symfile.c, target.c, top.c, typeprint.c: Ditto. - * utils.c, v850ice.c, valprint.c, values.c, win32-nat.c: Ditto. - * wince.c, remote-vx.c: Ditto. - - * cli/cli-script.c: Remove "register" attributes. - * config/pa/tm-hppa.h: Ditto. - * cli/cli-decode.c: Ditto. - * cli/cli-cmds.c: Ditto. - -2003-09-19 Andrew Cagney - - * sparcnbsd-nat.c (getregs_supplies): Rename NPC_REGNUM to - DEPRECATED_NPC_REGNUM. - * sparc64nbsd-nat.c (getregs_supplies): Ditto. - -2003-09-19 Christopher Faylor - - * win32-nat.c (mappings): Remove HAVE_SSE conditional. - -2003-09-19 Jim Blandy - - * macrotab.c (macro_include): Use the correct comparison to find - the appropriate place for this inclusion in the list. - -2003-09-19 Andrew Cagney - - * config/pa/nm-hppah.h (NEED_TEXT_START_END): Delete. - (DEPRECATED_HPUX_TEXT_END): Define. - (deprecated_hpux_text_end): Declare. - (struct target_ops): Declare opaque. - * hppah-nat.c (text_end): Make static. - (deprecated_hpux_text_end): New function. - * exec.c (text_end): Delete global variable. - (NEED_TEXT_START_END): Do not define. - (exec_file_attach): Replace code computing "text_end" code with - call to DEPRECATED_HPUX_TEXT_END. - -2003-09-19 Andrew Cagney - - * utils.c (align_up, align_down): New functions. - * defs.h (align_up, align_down): Declare. - * ppc-sysv-tdep.c (align_up, align_down): Delete functions. - * s390-tdep.c: Replace "round_up" and "round_down" with "align_up" - and "align_down". - (round_up, round_down): Delete functions. - * mips-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and - "align_down". - (ROUND_DOWN, ROUND_UP): Delete macros. - (mips_dump_tdep): Do not print "ROUND_UP" or "ROUND_DOWN". - * h8300-tdep.c: Replace "round_up" and "round_down" with - "align_up" and "align_down". - (round_up, round_down): Delete macros. - * frv-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and - "align_down". - (ROUND_UP, ROUND_DOWN): Delete macros. - -2003-09-18 J. Brobecker - - * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Remove a - hard-coded constant. Use the proper machine name instead. - -2003-09-17 Andrew Cagney - - * sparc-tdep.c (legacy_register_name): Delete function. - * mips-tdep.c (mips_dump_tdep): Do not print REGISTER_NAME. - (mips_gdbarch_init): Refer to MIPS_REGISTER_NAME in comments. - * infcmd.c (gdb_register_name): Delete variable. - * gdbarch.sh (SDB_REG_TO_REGNUM): Delete reference to - REGISTER_NAME and "tm.h". - * gdbarch.h, gdbarch.c: Regenerate. - * dpx2-nat.c (regmap): Refer to REGISTER_NAME and not - REGISTER_NAMES in comments. - * remote-st.c (get_reg_name), i386b-nat.c (tregmap): Ditto. - * m68klinux-nat.c (regmap): Ditto. - -2003-09-17 Jim Blandy - - * Makefile.in (dis_asm_h): Note that this #includes "bfd.h". - -2003-09-17 Andrew Cagney - - * ppcnbsd-tdep.c (ppcnbsd_use_struct_convention): New function. - (ppcnbsd_init_abi): Set "use_struct_convention" to - "ppcnbsd_use_struct_convention". - -2003-09-17 Mark Kettenis - - * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment. - * gdbarch.h, gdbarch.c: Regenerate. - (stabs_argument_has_addr): New architecture method. - * arch-utils.h (default_stabs_argument_has_addr): New prototype. - * arch-utils.c: Include "buildsym.h". - (default_stabs_argument_has_addr): New function. - * stabsread.c (define_symbol): Use stabs_argument_has_addr - instead of DEPRECATED_REG_STRUCT_HAS_ADDR. - -2003-09-17 Andrew Cagney - - * gdbarch.sh (DEPRECATED_NPC_REGNUM): Deprecate NPC_REGNUM. - * gdbarch.h, gdbarch.c: Regenerate. - * core-sol2.c, hppa-tdep.c, lynx-nat.c, procfs.c: Update. - * regcache.c, remote-vxsparc.c, sparc-linux-nat.c: Update. - * sparc-nat.c, sparc-tdep.c, sparc64-tdep.c: Update. - * sparcnbsd-tdep.c: Update. - -2003-09-17 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_BYTE): Rename REGISTER_BYTE. - * gdbarch.h, gdbarch.c: Regenerate. - * arm-linux-tdep.c, core-sol2.c, cris-tdep.c: Update. - * d10v-tdep.c, frame.c: Update. - * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update. - * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update. - * ia64-linux-nat.c, irix5-nat.c, lynx-nat.c, m68knbsd-nat.c: Update. - * mcore-tdep.c, mips-linux-tdep.c, mips-tdep.c: Update. - * mipsv4-nat.c, mn10300-tdep.c, ns32k-tdep.c: Update. - * ns32knbsd-nat.c, ppc-bdm.c, regcache.c, remote-sds.c: Update. - * remote-vx68.c, remote-vxmips.c, remote-vxsparc.c: Update. - * remote.c, rs6000-tdep.c, s390-tdep.c, sh64-tdep.c: Update. - * sparc-nat.c, sparc-tdep.c, sun3-nat.c, v850-tdep.c: Update. - * v850ice.c, vax-tdep.c, xstormy16-tdep.c: Update. - * config/m68k/tm-cisco.h, config/m68k/tm-delta68.h: Update. - * config/pa/nm-hppah.h: Update. - -2003-09-16 Andrew Cagney - - * ppc-linux-tdep.c (ppc_linux_init_abi): Set the 32 bit - "use_struct_convention" to "ppc_linux_use_struct_convention". - (ppc_linux_use_struct_convention): New function. - * rs6000-tdep.c (rs6000_use_struct_convention): New function. - (rs6000_gdbarch_init): For AIX, set "use_struct_convention" to - "rs6000_use_struct_convention". - * ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Delete - declaration. - * ppc-sysv-tdep.c (ppc_sysv_abi_broken_use_struct_convention): - Delete function. - -2003-09-16 Andrew Cagney - - * buildsym.c: Remove more occurances of "register". - * coffread.c, dbxread.c, dcache.c, dwarf2read.c: Ditto. - * environ.c, eval.c, f-valprint.c, findvar.c: Ditto. - * gdbtypes.c, gnu-v2-abi.c, h8300-tdep.c, hppa-tdep.c: Ditto. - * infcmd.c, mdebugread.c, minsyms.c, mips-tdep.c: Ditto. - * printcmd.c, remote-vx.c, sh-stub.c, sh-tdep.c: Ditto. - * sh64-tdep.c, source.c, stabsread.c, stack.c: Ditto. - * standalone.c, symfile.c, symmisc.c, symtab.c: Ditto. - * utils.c, valops.c, values.c, xcoffread.c: Ditto. - -2003-09-16 Corinna Vinschen - - * sh-tdep.h (struct gdbarch_tdep): Remove. Change all register - numbers to enumeration values. - * sh-tdep.c: Accomodate above change. - (SH_NUM_REGS): Rename from SH_DEFAULT_NUM_REGS. - (NUM_PSEUDO_REGS_SH_MEDIA): Remove (sh5 only). - (NUM_PSEUDO_REGS_SH_COMPACT): Remove (sh5 only). - (IS_ADD_IMM_SP): Rename from IS_ADD_SP. - (IS_FPUSH): Rename from IS_FMOV. - (sh_extract_struct_value_address): Remove useless comment. - (sh_dsp_register_sim_regno): Use register values from sh-tdep.h - instead of own local values. - (sh_dump_tdep): Remove. - (_initialize_sh_tdep): Accomodate removing sh_dump_tdep. - * sh3-rom.c (sh3_supply_register): Accomodate sh-tdep.h changes. - -2003-09-15 Andrew Cagney - - * doublest.c (convert_floatformat_to_doublest): No longer need to - cast "exp_bias" to an int. Reverts 2002-12-04 change. - -2003-09-15 Daniel Jacobowitz - - * values.c (unpack_double): Call floatformat_is_valid. - -2003-09-15 Mark Kettenis - - * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Change type of - ps_strings into a long. - - * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Rename from - _initialize_am64fbsd_nat. - -2003-09-15 Kevin Buettner - - * dwarf2read.c (dwarf2_get_pc_bounds): Complain if offset - associated with DW_AT_ranges attribute is out of bounds. - -2003-09-15 David Lecomber - - * f-valprint.c: Apply array element printing limits to multi-dimensional arrays - -2003-09-14 Michael Chastain - - * config/m68k/nm-apollo68v.h: Delete. - * config/m68k/xm-apollo68v.h: Delete. - -2003-09-14 Andrew Cagney - - * rs6000-tdep.c (rs6000_push_dummy_call): Fix typos. - * dcache.c: Update copyrights and descriptions. - * scm-exp.c, ia64-aix-nat.c, hppam3-nat.c: environ.c: Ditto. - -2003-09-14 Andrew Cagney - - * config/djgpp/fnchange.lst: Rename "amd64fbsd-tdep.c" and - "amd64fbsd-nat.c" to "a64fb-tdep.c" and "a64fb-nat.c". - -2003-09-14 Andrew Cagney - - * alpha-nat.c: Remove some occurances of "register". - * alpha-tdep.c, arm-tdep.c, blockframe.c, breakpoint.c: Ditto. - * buildsym.c, c-typeprint.c, c-valprint.c, coffread.c: Ditto. - * corefile.c, cp-support.c, cp-valprint.c, cris-tdep.c: Ditto. - * dbxread.c, dcache.c, dwarf2read.c, elfread.c: Ditto. - * environ.c, eval.c, event-top.c, f-typeprint.c: Ditto. - * f-valprint.c, findvar.c, frame.c, gdbtypes.c: Ditto. - * h8300-tdep.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c: Ditto. - * hppam3-nat.c, hpread.c, ia64-aix-nat.c, ia64-linux-nat.c: Ditto. - * infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Ditto. - * infttrace.c, irix5-nat.c, jv-typeprint.c: Ditto. - * jv-valprint.c, m68k-tdep.c, m68klinux-nat.c, main.c: Ditto. - * mdebugread.c, minsyms.c, mips-linux-tdep.c: Ditto. - * mips-nat.c, mips-tdep.c, mipsread.c, mipsv4-nat.c: Ditto. - * ns32k-tdep.c, objfiles.c, p-typeprint.c: Ditto. - * p-valprint.c, ppc-linux-nat.c, printcmd.c: Ditto. - * remote-mips.c, remote-vx.c, rs6000-nat.c: Ditto. - * rs6000-tdep.c, scm-exp.c, sh-tdep.c, sh64-tdep.c: Ditto. - * solib.c, somread.c, source.c, sparc-tdep.c: Ditto. - * stabsread.c, stack.c, standalone.c, symfile.c: Ditto. - * symmisc.c, symtab.c, top.c, tracepoint.c: Ditto. - * typeprint.c, utils.c, valarith.c, valops.c: Ditto. - * values.c, vax-tdep.c, xcoffread.c: Ditto. - -2003-09-13 Andrew Cagney - - * config/pa/tm-hppa64.h (struct frame_info): Declare opaque. - * ppc-tdep.h (struct regcache): Declare opaque. - * objfiles.h (struct objfile_data): Declare opaque. - * cp-support.h (struct objfile): Declare opaque. - * linux-nat.h (target_waitstatus): Declare opaque. - -2003-09-14 Mark Kettenis - - * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment. - (stabs_argument_has_addr): New architecture method. - * arch-utils.h (default_stabs_argument_has_addr): New prototype. - * arch-utils.c: Include "buildsym.h". - (default_stabs_argument_has_addr): New function. - * stabsread.c (define_symbol): Use stabs_argument_has_addr - instead of DEPRECATED_REG_STRUCT_HAS_ADDR. - - * cris-tdep.c (cris_gdbarch_init): Set - deprecated_reg_struct_has_addr instead of reg_struct_has_addr. - * hppa-tdep.c (hppa_gdbarch_init): Likewise. - * mcore-tdep.c (mcore_gdbarch_init): Likewise. - * mips-tdep.c (mips_gdbarch_init): Likewise. - * mn10300-tdep.c (mn10300_gdbarch_init): Likewise. - * sparc-tdep.c (sparc_gdbarch_init): Likewise. - -2003-09-13 Andrew Cagney - - * values.c (using_struct_return): Delete "function" and "funcaddr" - parameters. - * value.h (using_struct_return): Update declaration. - * infcmd.c (finish_command_continuation): Update. - (finish_command): Update. - * infcall.c (call_function_by_hand): Update. - * eval.c (evaluate_subexp_standard): Update. - -2003-09-13 Christopher Faylor - - * win32-nat.c: Just rely on CONTEXT_EXTENDED_REGISTER being defined for - SSE registers since gdb will not operate correctly without this. - Restore include file ordering munged in previous change. - * config/i386/tm-cygwin.h: Remove HAVE_SSE_REGS define. - -2003-09-13 Mark Kettenis - - * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Renamed from - REG_STRUCT_HAS_ADDR. - * gdbarch.c, gdbarch.h: Updated. - * infcall.c (call_function_by_hand): Update. - * stabsread.c (define_symbol): Updated. - - * Makefile.in (xm-i386-sv32.h, tm-i386gas.h): Remove. - -2003-09-12 Christopher Faylor - - * win32-nat.c: Reorganize so that defines used by target headers are - actually defined by the system headers. - * config/i386/tm-cygwin.h: Check for CONTEXT_EXTENDED_REGISTERS rather - than HAVE_CONTEXT_EXTENDED_REGISTERS, since the latter actually exists. - -2003-09-12 Jim Blandy - - * dbxread.c (read_dbx_symtab): Don't report an internal error if - the file has no .data, .bss, or .rodata sections. Instead wait - until we see a variable alleged to live in one of those sections. - - * dbxread.c (read_dbx_symtab): If we have no .data section and no - .bss section, presume that any variables we find live in the - .rodata section. - - * dbxread.c (read_dbx_symtab): Add FIXME about finding section - offsets for global and static variables. - - * dbxread.c (read_dbx_symtab): The N_DATA and N_DATA | N_EXT - symbol types are, by definition, in the .data section, so it is - correct to use SECT_OFF_DATA (objfile) here, not data_sect_index. - If there is no .data section, there should be no N_DATA or N_DATA - | N_EXT symbols. - -2003-09-12 Mark Kettenis - - * amd64fbsd-tdep.c: Fix sigtramp recognition. - (amd64fbsd_sigcontext_addr): Rewrite. - (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end): Initialize - with correct values. - (amd64fbsd_sc_reg_offset): Initialize with correct values. - (amd64fbsd_init_abi): Fix typo. - -2003-09-12 Andrew Cagney - - * ppc-sysv-tdep.c (align_up, align_down): Replace "round2" macro. - (ppc_sysv_abi_push_dummy_call): Rewrite, use a two pass loop. - -2003-09-12 Andrew Cagney - - * objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and - "entry_file_highpc". Update comments. - * defs.h (deprecated_inside_entry_file): Rename - "inside_entry_file". - * blockframe.c (deprecated_inside_entry_file): Rename - "inside_entry_file". - * frame.c (get_prev_frame): Update. Use if 0 instead of #if 0. - * vax-tdep.c (vax_frame_chain): Update. - * sh64-tdep.c (sh64_frame_chain): Update. - * sh-tdep.c (sh_frame_chain): Update. - * rs6000-tdep.c (rs6000_frame_chain): Update. - * ns32k-tdep.c (ns32k_frame_chain): Update. - * mips-tdep.c (mips_frame_chain): Update. - * m68hc11-tdep.c (m68hc11_frame_this_id): Update. - * m32r-tdep.c (m32r_frame_this_id): Update. - * i386-interix-tdep.c (i386_interix_frame_chain_valid): Update. - * frv-tdep.c (frv_frame_this_id): Update. - * d10v-tdep.c (d10v_frame_this_id): Update. - * cris-tdep.c (cris_frame_chain): Update. - * blockframe.c (legacy_frame_chain_valid): Update. - * avr-tdep.c (avr_frame_this_id): Update. - * arm-tdep.c (arm_prologue_this_id): Update. - * alpha-tdep.c (alpha_heuristic_frame_this_id): Update. - * objfiles.c (objfile_relocate): Update. - * mipsread.c (mipscoff_symfile_read): Update. - (mipscoff_symfile_read): Update. - * mdebugread.c (parse_partial_symbols): Update. - * dwarfread.c (read_file_scope): Update. - * dwarf2read.c (read_file_scope): Update. - * dbxread.c (read_dbx_symtab): Update. - (read_dbx_symtab): Update. - * coffread.c (complete_symtab): Update. - -2003-09-12 Jeff Johnston - - * top.c (quit_target): New static helper function. - (quit_force): Moved code to quit_target(). Call quit_target() - via catch_errors() to catch errors during quit. - -2003-09-11 David Carlton - - * buildsym.c (finish_block): Use allocate_block to allocate the - block. - * mdebugread.c (new_block): Add FIXME. - -2003-09-11 David Carlton - - * gdbtypes.h: Add TYPE_CODE_NAMESPACE. - * gdbtypes.c (init_type): Handle TYPE_CODE_NAMESPACE. - (recursive_dump_type): Ditto. - * printcmd.c (print_formatted): Ditto. - * typeprint.c (print_type_scalar): Ditto. - * c-typeprint.c (c_type_print_varspec_prefix): Ditto. - (c_type_print_varspec_suffix, c_type_print_base): Ditto. - * cp-support.h: Declare cp_check_possible_namespace_symbols, - maint_cplus_cmd_list. - * cp-support.c: Make maint_cplus_cmd_list extern. - * cp-namespace.c: Include objfiles.h, gdbtypes.h, dictionary.h, - command.h. - (lookup_symbol_file): Look in possible namespace blocks when - appropriate. - (initialize_namespace_symtab): New. - (get_possible_namespace_block, free_namespace_block) - (check_possible_namespace_symbols) - (check_possible_namespace_symbols_loop) - (check_one_possible_namespace_symbol) - (lookup_possible_namespace_symbol, maintenance_cplus_namespace) - (_initialize_cp_namespace): Ditto. - * block.h: Declare allocate_block. - * block.c (allocate_block): New. - * jv-lang.c (get_java_class_symtab): Allocate blocks via - allocate_block. - * symfile.h: Update declaration of add_psymbol_to_list. - * symfile.c (add_psymbol_to_list): Return the partial symbol in - question. - * dwarf2read.c (dwarf2_build_psymtabs_hard): Add argument to - scan_partial_symbols_call. - (scan_partial_symbols): Add NAMESPACE argument; update calls to - helper functions. - (add_partial_symbol): If necessary, scan mangled names for names - of namespaces. - (add_partial_namespace): Add NAMESPACE argument; generate partial - symbols associated to namespaces. - (add_partial_enumeration): Add NAMESPACE argument. - (new_symbol): Allow namespace syms. - (read_namespace): Generate namespace syms. - * objfiles.h: Add opaque declaration of struct symtab. - (struct objfile): Add cp_namespace_symtab member. - * objfiles.c (allocate_objfile): Set - objfile->cp_namespace_symtab. - * Makefile.in (cp-namespace.o): Depend on objfiles_h, gdbtypes_h, - dictionary_h, command_h. - -2003-09-11 Andrew Cagney - - * rs6000-tdep.c (rs6000_push_dummy_call): Use - regcache_raw_write_signed to set SP_REGNUM, move the operation to - near the function's end. - (rs6000_gdbarch_init): Do not set "deprecated_dummy_write_sp". - * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use - regcache_raw_write_signed to set SP_REGNUM. - -2003-09-11 Elena Zannoni - - * symfile.c (symbol_file_add_with_addrs_or_offsets): Make sure - orig_addrs is set up properly. - -2003-09-11 Andrew Cagney - - * gdbarch.sh (DEPRECATED_STACK_ALIGN): Rename STACK_ALIGN. - * gdbarch.h, gdbarch.c: Re-generate. - * infcall.c (call_function_by_hand): Update. - * hppa-tdep.c (hppa_push_arguments): Update. - * ada-lang.c (place_on_stack): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Delete comment refering to - stack_align. - -2003-09-11 Daniel Jacobowitz - - * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a - register do need a frame. - -2003-09-11 Andrew Cagney - - Since the IRIX 4 configuration was forcing K&R mode it hasn't been - buildable since GDB 5.0. - * NEWS: Mention that IRIX 3 and IRIX 4 support were removed. - * configure.host: Delete "mips-sgi-irix3*" and "mips-sgi-irix4*". - * configure.tgt: Delete "mips*-sgi-*" a.k.a. irix3. - * irix4-nat.c: Delete file. - * config/mips/irix4.mh: Delete file. - * config/mips/irix3.mh: Delete file. - * config/mips/irix3.mt: Delete file. - * config/mips/tm-irix3.h: Delete file. - * config/mips/nm-irix3.h: Delete file. - * config/mips/xm-irix3.h: Delete file. - * config/mips/nm-irix4.h: Delete file. - * config/mips/xm-irix4.h: Delete file. - * config/mips/tm-irix5.h: Inline contents of "tm-irix3.h". - -2003-09-10 J. Brobecker - - * hppa-tdep.c: Include "dis-asm.h". Fixes a build failure. - * Makefile.in (hppa-tdep.o): Update dependencies. - -2003-09-10 James E Wilson - - * MAINTAINERS: Change my e-mail address. Move to paper trail - section. - -2003-09-10 Kevin Buettner - - * MAINTAINERS (frv): New ISA entry. - -2003-09-10 Kevin Buettner - - * frv-tdep.c (dis-asm.h): Include. - * Makefile.in (frv-tdep.o): Update dependencies. - -2003-09-09 Jeff Johnston - - * ia64-tdep.c (ia64_sigtramp_frame_init_saved_regs): - Fix typo for high range of floating registers. - -2003-09-09 David Carlton - - * dwarf2read.c (dwarf2_build_psymtabs_hard): Move lowpc and - highpc initialization here out of scan_partial_symbols. - (scan_partial_symbols): Restructure into a recursive version, - calling add_partial_namespace and add_partial_enumeration when - appropriate. - (add_partial_namespace): New. - (add_partial_enumeration, locate_pdi_sibling): Ditto. - -2003-09-09 Andrew Cagney - - * rs6000-tdep.c (ppc_push_return_address): Delete function. - (rs6000_push_dummy_call): Set LR to BP_ADDR. - (rs6000_gdbarch_init): Do not set deprecated_push_return_address. - * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto. - - * rs6000-tdep.c (rs6000_fix_call_dummy): Delete function. - (rs6000_push_dummy_call): Set the "TOC" register. - - * rs6000-tdep.c (rs6000_gdbarch_init): Do not set the deprecated - methods "max_register_raw_size", "max_register_virtual_size" or - "register_virtual_size". - -2003-09-09 Ian Lance Taylor - - * MAINTAINERS: Update my e-mail address. - -2003-09-09 Andrew Cagney - - * rs6000-tdep.c (rs6000_store_struct_return): Delete function. - (rs6000_push_dummy_call): Store the struct return address. - * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto. - -2003-09-09 Andrew Cagney - - * ppc-tdep.h (ppc_sysv_abi_push_dummy_call): Replace - "ppc_sysv_abi_push_arguments". - * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Replace - "ppc_sysv_abi_push_arguments". - * rs6000-tdep.c (rs6000_gdbarch_init): Set "push_dummy_call" - instead of "push_arguments". - (rs6000_push_dummy_call): Replace "rs6000_push_arguments". - -2003-09-09 Andrew Cagney - - * sh64-tdep.c (sh64_push_return_address): Use ENTRY_POINT_ADDRESS - instead of CALL_DUMMY_ADDRESS. - -2003-09-09 Paul N. Hilfinger - - * p-lang.c: Eliminate "register". - * c-lang.c: Ditto. - * expprint.c: Ditto. - * f-lang.c: Ditto. - * jv-lang.c: Ditto. - * language.c: Ditto. - * m2-lang.c: Ditto. - * parse.c: Ditto. - * scm-lang.c: Ditto. - * objc-lang.c: Ditto. - -2003-09-09 Nick Clifton - - * v850-tdep.c (v850_processor_type_table): Add bfd_mach_v850e1. - -2003-09-04 Andrew Cagney - - * avr-tdep.c: Include "dis-asm.h". - * cris-tdep.c: Include "dis-asm.h". - (cris_delayed_get_disassembler): Use "struct disassemble_info" - instead of corresponding typedef. - * h8300-tdep.c: Include "dis-asm.h". - * ia64-tdep.c: Include "dis-asm.h". - * i386-tdep.c: Include "dis-asm.h". - (i386_print_insn): Use "struct disassemble_info" instead of - corresponding typedef. - * m68k-tdep.c: Include "dis-asm.h". - * mcore-tdep.c: Include "dis-asm.h". - * mips-tdep.c: Include "dis-asm.h". - (gdb_print_insn_mips): Make static, use "struct disassemble_info" - instead of corresponding typedef. - * ns32k-tdep.c: Include "dis-asm.h". - * s390-tdep.c: Include "dis-asm.h". - * sparc-tdep.c: Include "dis-asm.h". - * vax-tdep.c: Include "dis-asm.h". - * v850-tdep.c: Include "dis-asm.h". - * mn10300-tdep.c: Include "dis-asm.h". - * rs6000-tdep.c: Include "dis-asm.h". - * xstormy16-tdep.c: Include "dis-asm.h". - (_initialize_xstormy16_tdep): Delete "extern" declaration of - print_insn_xstormy16. - * Makefile.in (v850-tdep.o): Update dependencies. - (vax-tdep.o, sparc-tdep.o, s390-tdep.o): Ditto. - (ns32k-tdep.o, mips-tdep.o, mcore-tdep.o): Ditto. - (m68k-tdep.o, ia64-tdep.o, i386-tdep.o): Ditto. - (h8300-tdep.o, cris-tdep.o, avr-tdep.o): Ditto. - (mn10300-tdep.o, xstormy16-tdep.o, disasm.o): Ditto. - (gdbarch_h): Remove $(dis_asm_h). - * disasm.c: Include "dis-asm.h". - (dis_asm_read_memory): Use "struct disassemble_info" instead of - corresponding typedef. - (dis_asm_memory_error, dump_insns, do_assembly_only): Ditto. - (gdb_disassemble_info, gdb_disassembly, gdb_print_insn): Ditto. - * gdbarch.sh: Do not include "dis-asm.h". - (struct disassemble_info): Declare opaque. - (TARGET_PRINT_INSN): Update declaration. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-09-08 Andrew Cagney - - * gdbarch.sh (DEPRECATED_CALL_DUMMY_ADDRESS): Rename - CALL_DUMMY_ADDRESS, change to a predicate. - * gdbarch.h, gdbarch.c: Re-generate. - * blockframe.c (deprecated_pc_in_call_dummy_at_entry_point): - Use either DEPRECATED_CALL_DUMMY_ADDRESS or entry_point_address. - * infcall.c (call_function_by_hand): Ditto. - * sparc-tdep.c (sparc_push_return_address): Ditto. - (sparc_gdbarch_init): Set deprecated_call_dummy_address. - * xstormy16-tdep.c (xstormy16_push_return_address): Replace - CALL_DUMMY_ADDRESS with entry_point_address. - * v850-tdep.c (v850_push_return_address): Ditto. - * s390-tdep.c (s390_push_return_address): Ditto. - * rs6000-tdep.c (ppc_push_return_address): Ditto. - * mn10300-tdep.c (mn10300_push_return_address): Ditto. - * mcore-tdep.c (mcore_push_return_address): Ditto. - * cris-tdep.c (cris_push_return_address): Ditto. - * arm-tdep.c (arm_push_return_address): Ditto. - -2003-09-08 Andrew Cagney - - * dwarf2-frame.c (enum dwarf2_reg_rule): New, replace anonymous - enum. Add REG_UNSPECIFIED, rename REG_UNSAVED to REG_UNDEFINED - and REG_UNMODIFIED to REG_SAME_VALUE. - (execute_cfa_program): Update. - (dwarf2_frame_cache): Update. Initialize table to - REG_UNSPECIFIED, complain if CFI fails to specify a register's - location. - (dwarf2_frame_prev_register): Update. Handle REG_UNSPECIFIED. - -2003-09-08 Andrew Cagney - - * gnu-nat.c: Remove "inline" function attribute. - * alpha-tdep.c, ppc-linux-tdep.c, macroexp.c: Ditto. - -2003-09-08 Kevin Buettner - - * config/frv/frv.mt (SIM_OBS, SIM): Enable simulator for FR-V - target. - -2003-09-08 Kevin Buettner - - * frv-tdep.c (frame-unwind.h, frame-base.h): Include. - (frame_extra_info): Rename this struct to frv_unwind_cache. - Delete fields ``fp_to_callers_sp_offset'' and ``lr_saved_on_stack''. - Add fields ``prev_sp'' and ``base''. - (frv_frame_chain, frv_frame_saved_pc, frv_frame_init_saved_regs) - (frv_saved_pc_after_call, frv_init_extra_frame_info) - (frv_push_return_address, frv_pop_frame, frv_pop_frame_regular): - Delete. - (frv_analyze_prologue): Add ``struct frv_unwind_cache *'' argument. - Revise all callers. Fill in the unwind cache argument and make - other adjustments to account for new frame mechanisms. - (frv_frame_unwind_cache, frv_frame_align, frv_unwind_pc) - (frv_frame_this_id, frv_frame_prev_register, frv_frame_sniffer) - (frv_frame_base_address, frv_unwind_dummy_id): New functions. - (frv_frame_unwind, frv_frame_base): New structs. - (frv_push_arguments): Change name to frv_push_dummy_call(). Add - additional arguments expected by this method and adjust function - body accordingly. - (frv_gdbarch_init): Remove calls to the following functions: - set_gdbarch_deprecated_init_frame_pc(), - set_gdbarch_deprecated_saved_pc_after_call(), - set_gdbarch_deprecated_frame_chain(), - set_gdbarch_deprecated_frame_saved_pc(), - set_gdbarch_deprecated_frame_init_saved_regs(), - set_gdbarch_deprecated_push_arguments(), - set_gdbarch_deprecated_push_return_address(), - set_gdbarch_deprecated_pop_frame(), - set_gdbarch_deprecated_call_dummy_words(), - set_gdbarch_deprecated_sizeof_call_dummy_words(), - set_gdbarch_deprecated_init_extra_frame_info(), - set_gdbarch_deprecated_dummy_write_sp(), and - set_gdbarch_deprecated_pc_in_call_dummy(). - Add calls to the following functions: - set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), - set_gdbarch_frame_align(), frame_unwind_append_sniffer(), and - frame_base_set_default(). - * Makefile.in (frv-tdep.o): Update dependencies. - -2003-09-09 Mark Kettenis - - * dwarf2-frame.c (read_encoded_value): Add support for - DW_EH_PE_aligned encoding. - -2003-09-08 Daniel Jacobowitz - - * infrun.c (normal_stop): Don't print a message if the inferior - has exited. - -2003-09-08 Jim Blandy - - * Makefile.in (dbxread.o): Note new dependency on $(gdb_assert_h). - * dbxread.c: #include "gdb_assert.h". - (read_dbx_symtab): If the objfile has no .data section, use the - section index for the .bss section instead. - -2003-09-08 Daniel Jacobowitz - - * frame.c (deprecated_safe_get_selected_frame): New function. - * frame.h (deprecated_safe_get_selected_frame): Add prototype. - * findvar.c (read_var_value): Call it. - -2003-09-08 Corinna Vinschen - - * Makefile.in (ALLDEPFILES): Add sh64-tdep.c. - (sh64-tdep.o): Add dependencies. - * configure.tgt: Add FIXME to sh-*-linux*. - * sh-tdep.c: Move sh64 support to sh64-tdep.c. - (sh_gdbarch_init): Always set correct sh_show_regs function - pointer. Call sh64_gdbarch_init() if machine type is sh5. - * sh-tdep.h: Move sh64 support to sh64-tdep.c. - * sh64-tdep.c: New file, containing all sh64 related code from - sh-tdep.c. - * config/sh/embed.mt (TDEPFILES): Add sh64-tdep.o. - * config/sh/linux.mt (TDEPFILES): Ditto. - * config/sh/nbsd.mt (TDEPFILES): Ditto. - * config/sh/tm-sh.h: Drop REGISTER_TYPE definition. - * config/sh/wince.mt (TDEPFILES): Ditto. - -2003-09-07 Daniel Jacobowitz - - * lin-lwp.c (detach_callback): Don't call stop_wait_callback. - (stop_wait_callback): Handle !lp->signalled also. - (lin_lwp_has_pending, flush_callback): New functions. - (lin_lwp_wait): Call flush_callback. - * linux-proc.c (linux_proc_add_line_to_sigset): New function. - (linux_proc_pending_signals): New function. - * linux-nat.h (linux_proc_pending_signals): Add prototype. - -2003-09-07 Daniel Jacobowitz - - From Nick Kelsey : - * infrun.c (handle_inferior_event): Check IN_SOLIB_RETURN_TRAMPOLINE - when the stop PC is at the beginning of a function also. - -2003-09-06 Daniel Jacobowitz - - * arm-linux-tdep.c (arm_linux_arm_be_breakpoint): New. - (arm_linux_init_abi): Use arm_linux_arm_be_breakpoint. - -2003-09-06 Mark Kettenis - - * sol-thread.c: Include "gdb_string.h". - -2003-09-03 Mark Kettenis - - * gcore.c: Reorder include files in alphabetical order. Include - "gdb_assert.h". Various coding style fixes. - (derive_stack_segment, derive_heap_segment): Replace check for - non-null BOTTOM and TOP with gdb_assert. - (derive_heap_segment): Replace check for successful creation of - ZERO with gdb_assert. - (make_mem_sec): Use bfd_section_lma to set OSEC->lma. - -2003-09-04 Andrew Cagney - - * thread-db.c (verbose_dlsym): New function. - (thread_db_load): Use verbose_dlsym - (thread_db_new_objfile): Print that libthread_db was loaded, and - that thread debugging was enabled. - -2003-09-04 Andrew Cagney - - * configure.tgt: Add "mips64*-*-*" target. Delete - mips64*el-*-ecoff*, mips64*el-*-elf*, mips*el-*-ecoff*, - mips*el-*-elf*, mips*-*-lnews*, mips*-*-sysv*, mips*-*-riscos*, - mips*-*-ecoff*, mips*-*-elf*, mips*-little-*, mips*-big-*, - mips*-dec-*, mips64*-big-*, mips64*vr*-*-elf*, mips64*-*-ecoff*, - mips*-sony-*, and mips64*-*-elf* targets. - * config/mips/embedl.mt: Delete file. - * config/mips/embedl64.mt: Delete file. - * config/mips/mips.mt: Delete file. - * config/mips/mips64.mt: Delete file. - * config/mips/tm-embed.h: Delete file. - * config/mips/embed.mt (TM_FILE): Set to "tm-mips.h". - * config/mips/embed64.mt: Delete out-of-date comment. - -2003-09-04 Andrew Cagney - - * hppa-tdep.c (hppa_gdbarch_init): Set - "have_nonsteppable_watchpoint". - * config/pa/nm-hppah.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. - * mips-tdep.c (mips_dump_tdep): Do not print - HAVE_NONSTEPPABLE_WATCHPOINT. - (mips_gdbarch_init): Set "have_nonsteppable_watchpoint". - * config/mips/tm-embed.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. - * config/mips/nm-irix5.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. - * config/mips/nm-irix4.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. - -2003-09-04 Corinna Vinschen - - * breakpoint.c (watchpoint_check): Remove accidentally checked in - unused code. Add comment. - -2003-09-04 Corinna Vinschen - - * breakpoint.c (watchpoint_check): Check for pc being in an - epilogue if watchpoint frame couldn't be found. - -2003-09-04 Andrew Cagney - - * Makefile.in: Re-generate all dependencies. - -2003-09-03 Andrew Cagney - - * arch-utils.h (legacy_print_insn): Delete declaration. - * arch-utils.c (legacy_print_insn): Delete function. - * disasm.c (deprecated_tm_print_insn_info): Delete. - (_initialize_disasm): Delete function, contained code initializing - deprecated_tm_print_insn_info. - * gdbarch.sh (deprecated_tm_print_insn): Delete. - (deprecated_tm_print_insn_info): Delete. - (TARGET_PRINT_INSN): Do not provide a default. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-09-03 Andrew Cagney - - * disasm.c (fprintf_disasm): New function. - (gdb_disassemble_info): Call "init_disassemble_info", instead of - INIT_DISASSEMBLE_INFO_NO_ARCH. Do not initialize "insn_sets", - reverts 2003-08-14 change. - (_initialize_disasm): Call "init_disassemble_info", instead of - INIT_DISASSEMBLE_INFO_NO_ARCH. - -2003-09-03 Michael Snyder - - * config/djgpp/fnchange.lst: Fix up sim/frv/profile-fr*.[ch]. - -2003-09-03 Andrew Cagney - - * config/rs6000/tm-rs6000.h (IBM6000_TARGET): Delete definition. - * config/rs6000/nm-rs6000.h (DEPRECATED_IBM6000_TARGET): Define. - * symfile.c (syms_from_objfile): Update. - (reread_symbols): `Update - * exec.c (exec_file_attach): Update. - (exec_file_attach): Update. - * config/powerpc/tm-nbsd.h: Delete #undef IBM6000_TARGET, revert - 2003-08-29 change. - * config/powerpc/tm-linux.h: Delete #undef IBM6000_TARGET. - -2003-09-03 Daniel Jacobowitz - - * arm-tdep.c: Include frame-unwind.h, frame-base.h, and - trad-frame.h. - (arm_get_cache): Delete macro. - (struct arm_prologue_cache): Update comments. Make saved_regs into - a trad_frame_saved_reg pointer. Remove unwound_pc; rename unwound_sp - to prev_sp. - (thumb_scan_prologue): Update for cache changes. Don't call - DEPRECATED_PC_IN_CALL_DUMMY. - (arm_scan_prologue): Update for cache changes. Take NEXT_FRAME - argument and use it in desperation search for our prologue. Do not - search past the specified PC. - (arm_make_prologue_cache): Simplify. - - (arm_prologue_this_id, arm_prologue_prev_register) - (arm_prologue_unwind, arm_prologue_unwind_sniffer) - (arm_normal_frame_base, arm_normal_base, arm_make_sigtramp_cache) - (arm_sigtramp_this_id, arm_sigtramp_prev_register) - (arm_sigtramp_unwind, arm_sigtramp_unwind_sniffer) - (arm_unwind_dummy_id, arm_unwind_pc, arm_unwind_sp): New. - - (arm_frame_chain_valid, arm_find_callers_reg) - (arm_frame_saved_pc, arm_read_fp, arm_frame_init_saved_regs) - (arm_pop_frame): Delete obsolete methods. - (arm_minimal_frame_chain, arm_minimal_frame_info): Delete. - - (arm_gdbarch_init): Update for new frame methods. Register prologue - and sigtramp unwinders. Set the default frame base method. - - * Makefile.in (arm-tdep.o): Update dependencies. - * varobj.c (find_frame_addr_in_frame_chain): Call - get_frame_base_address. - * std-regs.c (value_of_builtin_frame_fp_reg): Likewise. - -2003-09-03 Daniel Jacobowitz - - * arm-tdep.c (arm_minimal_frame_chain): Renamed from - arm_frame_chain. Take NEXT_FRAME and CACHE arguments. - Use the cache instead of DEPRECATED_FRAME_SAVED_PC. - (arm_minimal_frame_info): Renamed from arm_init_extra_frame_info. - Take NEXT_FRAME and CACHE arguments. Call - FRAMELESS_FUNCTION_INVOCATION instead of checking FROMLEAF argument. - Set unwound_pc in CACHE instead of modifying the frame argument. - Don't bother checking the frame type when looking for sigtramp - frames. - (arm_make_prologue_cache, arm_frame_chain) - (arm_init_extra_frame_info): New functions. - -2003-09-03 Daniel Jacobowitz - - * arm-tdep.c (arm_get_cache): Define. - (struct arm_prologue_cache): Renamed from frame_extra_info. Add - unwound_sp, unwound_pc, and saved_regs. - (thumb_scan_prologue): Take a cache instead of the frame. - (arm_scan_prologue): Likewise. - (arm_frame_chain): Create a temporary cache for arm_scan_prologue - instead of a temporary frame. - (arm_init_extra_frame_info): Allocate and use a cache. - (arm_frame_saved_pc, arm_pop_frame): Use the cache. - -2003-09-03 Andrew Cagney - - * config/arm/wince.mt (TM_CLIBS): Replace WIN32LIBS. - * config/mips/wince.mt (TM_CLIBS): Ditto. - * config/sh/wince.mt (TM_CLIBS): Ditto. - * config/pa/hppa64.mt (TM_CLIBS): Delete. - * config/sparc/sp64.mt (CC): Delete. - -2003-09-03 Andrew Cagney - - * defs.h: Do not include "arch-utils.h". - (GDB_MULTI_ARCH): If not defined, set to GDB_MULTI_ARCH_PARTIAL or - GDB_MULTI_ARCH_PURE. - * configure.in (GDB_MULTI_ARCH): Do not define. - * configure, config.in: Regenerate. - * configure.tgt: Do not set variable "gdb_multi_arch". - * config/s390/s390x.mt (GDB_MULTI_ARCH): Delete. - * config/s390/s390.mt (GDB_MULTI_ARCH): Delete. - * config/i386/x86-64linux.mt (GDB_MULTI_ARCH): Delete. - * config/v850/v850.mt (TM_FILE): Delete disabled definition. - * config/m68hc11/m68hc11.mt (TM_FILE): Delete definition. - * config/vax/tm-vax.h (GDB_MULTI_ARCH): Delete definition. - * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Delete definition. - * config/sparc/tm-sun4sol2.h (GDB_MULTI_ARCH): Delete definition. - * config/sparc/tm-nbsd.h (GDB_MULTI_ARCH): Delete definition. - * config/sparc/tm-linux.h (GDB_MULTI_ARCH): Delete definition. - * config/sparc/tm-sp64.h (GDB_MULTI_ARCH): Delete definition. - * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Delete definition. - * config/ns32k/tm-ns32k.h (GDB_MULTI_ARCH): Delete definition. - * config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Delete definition. - * config/i386/tm-i386.h (GDB_MULTI_ARCH): Delete definition. - * config/h8300/tm-h8300.h (GDB_MULTI_ARCH): Delete definition. - * config/frv/tm-frv.h (GDB_MULTI_ARCH): Delete definition. - * config/alpha/tm-alpha.h (GDB_MULTI_ARCH): Delete definition. - -2003-08-30 Michael Chastain - - * Makefile.in: Remove tm-hp300bsd.h, tm-hp300hpux.h. - * config/m68k/nm-hp300hpux.h: Delete. - * config/m68k/tm-hp300hpux.h: Delete. - * config/m68k/xm-hp300hpux.h: Delete. - * config/m68k/xm-hp300bsd.h: Delete. - * config/djgpp/fnchange.lst: Remove nm-hp300hpux.h, - tm-hp300hpux.h, xm-hp300hpux.h. - * somsolib.c: Remove comment about hp300 shared libraries. - -2003-08-31 Mark Kettenis - - * i386-linux-nat.c (ps_get_thread_area): Don't define as extern. - Only define PTRACE_GET_THREAD_AREA is not already defined. - Various style fixes in code and comments and some additional - spelling fixes in comments. Move after functions dealing with - debug registers. - * x86-64-linux-nat.c (ps_get_thread_area): Don't define as extern. - Fix coding-style. - - * alphafbsd-tdep.c (alphafbsd_sigcontext_addr): Use - frame_unwind_register_unsigned instead of - frame_unwind_unsigned_register. - -2003-08-30 Mark Kettenis - - * configure.in: Search for gethostbyname in libnsl. - * configure: Regenerated. - -2003-08-29 Mark Kettenis - - * configure.in: Remove redundant AC_MSG_RESULT in check for - uintptr_t in stdint.h. - * configure: Regenerated. - - * amd64-nat.h (struct regcache): Add opaque declaration. - - * i386-linux-tdep.h (I386_LINUX_NUM_REGS): New define. - * x86-64-linux-nat.c: Include "i386-linux-tdep.h" and "amd64.h". - Change "register array" to "register cache" in comments. - (x86_64_linux_gregset64_reg_offset): New variable. - (GETREGS_SUPPLIES): Remove macro. - (supply_gregset): Call amd64_supply_native_gregset instead of - x86_64_linux_supply_gregset. - (fill_gregset): Rename `regno' to `regnum'. Call - amd64_collect_native_gregset instead of x86_64_linux_fill_gregset. - (store_regs): Rename `regno' to `regnum'. - (store_fpregs): Rename `regno' to `regnum'. - (fetch_inferior_registers): Rename `regno' to `regnum'. Use - amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES. - Reorganize function a bit. - (store_inferior_registers): Rename `regno' to `regnum'. Use - amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES. - Reorganize function a bit. - (_initialize_x86_64_linux_nat): New function. - * config/i386/x86-64linux.mh. - -2003-08-29 Andrew Cagney - - * config/mips/tm-embed.h (STOPPED_BY_WATCHPOINT): Delete macro. - (TARGET_CAN_USE_HARDWARE_WATCHPOINT): Delete macro. - (target_remove_watchpoint): Delete macro. - (target_insert_watchpoint): Delete macro. - (remote_mips_can_use_hardware_watchpoint): Delete declaration. - (remote_mips_stopped_by_watchpoint): Delete declaration. - (remote_mips_remove_watchpoint): Delete declaration. - (remote_mips_set_watchpoint): Delete declaration. - (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete macro. - * remote-mips.c (_initialize_remote_mips): Set - "to_insert_watchpoint", "to_stopped_by_watchpoint", - "to_can_use_hardware_watchpoint", and "to_remove_watchpoint". - (mips_insert_watchpoint): Rename remote_mips_set_watchpoint. - (mips_remove_watchpoint): Rename remote_mips_remove_watchpoint. - (mips_stopped_by_watchpoint): Rename - remote_mips_stopped_by_watchpoint. - (mips_can_hardware_watchpoint): Rename - remote_mips_can_use_hardware_watchpoint, update function - signature. - -2003-08-29 Mark Kettenis - - * x86-64-linux-tdep.c (user_to_gdb_regmap): Remove USER_CS and - USER_DS. We haven't given them a register number yet. - - * amd64-nat.h: New file. - * amd64-nat.c: New file. - * amd64fbsd-nat.c: Include "amd64-nat.h". - (REG_ADDR, GETREGS_SUPPLIES): Remove macros. - (amd64fbsd32_r_reg_offset): New variable. - (supply_gregset): Simply call amd64_supply_native_gregset. - (fill_gregset): Rename `regno' to `regnum'. Simply call - amd64_collect_native_gregset. - (fill_fpregset): Rename `regno' to `regnum'. - (fetch_inferior_registers): Rename `regno' to `regnum'. Replace - usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p. - Use `struct reg' and `struct fpreg' instead of `gregset_t' and - `fpregset_t'. Call amd64_supply_native_gregset instead of - supply_gregset. Call x86_64_supply_fxsave instead of - supply_fpregset. - (store_inferior_registers): Rename `regno' to `regnum'. Replace - usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p. - Use `struct reg' and `struct fpreg' instead of `gregset_t' and - `fpregset_t'. Call amd64_collect_native_gregset instead of - fill_gregset. Call x86_64_collect_fxsave instead of - fill_fpregset. - (_initialize_am64fbsd_nat): Initialize - amd64_native_gregset32_reg_offset and - amd64_native_gregset64_reg_offset. - * config/i386/fbsd64.mh (NATDEPFILES): Add amd64-nat.o. - - * regcache.c (regcache_raw_supply): Don't assert that BUF isn't a - null pointer. Fix typo in comment. - - * regcache.c (supply_register): Reimplement to call - regcache_raw_supply. - (regcache_collect): Reimplement by calling regcache_raw_collect. - -2003-08-28 Mark Kettenis - - * regcache.c (register_buffer): Consitify first argument. - (regcache_raw_supply, regcache_raw_collect): New - functions. - -2003-08-28 Daniel Jacobowitz - - * config/powerpc/tm-nbsd.h: Undefine IBM6000_TARGET. Suggested - by Nathan J. Williams. - -2003-08-28 Daniel Jacobowitz - - * lin-lwp.c (wait_lwp): New function, copied from - stop_wait_callback. Clean up. - (stop_wait_callback): Use wait_lwp. - -2003-08-28 Andrew Cagney - - * mips-tdep.c (gdb_print_insn_mips): Set the disassembler's - flavour and disassembler options. - (_initialize_mips_tdep): Do not set deprecated_tm_print_insn. - (mips_gdbarch_init): Set "print_insn". Delete initialization of - deprecated_tm_print_insn_info. - -2003-08-27 Andrew Cagney - - * s390-tdep.c (s390_readinstruction): Delete "info" parameter. - Use target_read_memory. - (s390_get_frame_info): Update. Do not reference - deprecated_tm_print_insn_info. - (s390_check_function_end, s390_is_sigreturn): Ditto. - -2003-08-27 Andrew Cagney - - * Makefile.in (cris-tdep.o): Update dependencies. - * cris-tdep.c: Include "gdb_assert.h". - (cris_gdbarch_init): Set print_insn. - (_initialize_cris_tdep): Do not set deprecated_tm_print_insn. - (cris_delayed_get_disassembler): Simplify, directly call the - disassembler returned by cris_get_disassembler. - * hppa-tdep.c (hppa_gdbarch_init): Set print_insn. - (_initialize_hppa_tdep): Do not set deprecated_tm_print_insn. - * ns32k-tdep.c (ns32k_gdbarch_init): Set print_insn. - (_initialize_ns32k_tdep): Do not set deprecated_tm_print_insn. - * mn10300-tdep.c (mn10300_gdbarch_init): Set print_insn. - (_initialize_mn10300_tdep): Do not set deprecated_tm_print_insn. - * mcore-tdep.c (mcore_gdbarch_init): Set print_insn. - (_initialize_mcore_tdep): Do not set deprecated_tm_print_insn. - * frv-tdep.c (frv_gdbarch_init): Set print_insn. - (_initialize_frv_tdep): Do not set deprecated_tm_print_insn. - * sparc-tdep.c (sparc_gdbarch_init): Set print_insn. - (gdb_print_insn_sparc): Delete function. - (_initialize_sparc_tdep): Do not set deprecated_tm_print_insn or - deprecated_tm_print_insn_info. - * v850-tdep.c (v850_gdbarch_init): Set print_insn. - (_initialize_v850_tdep): Do not set deprecated_tm_print_insn. - (v850_gdbarch_init): Do not set deprecated_tm_print_insn_info. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Set print_insn. - (_initialize_xstormy16_tdep): Do not set deprecated_tm_print_insn. - * s390-tdep.c (gdb_print_insn_s390): Delete function. - (_initialize_s390_tdep): Do not set deprecated_tm_print_insn. - (s390_gdbarch_init): Set print_insn. - -2003-08-27 Andrew Cagney - - * ppc-linux-tdep.c (ppc64_call_dummy_address): Delete function. - (ppc_linux_init_abi): For PPC64, do not set call_dummy_address. - * infcall.c (call_function_by_hand): Convert the entry point - address into a code address. - -2003-08-27 Andrew Cagney - - * dsrec.c: Include "gdb_string.h". - * Makefile.in (dsrec.o): Update dependencies. - -2003-08-27 Michael Chastain - - * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.mi/mi2-var-*. - -2003-08-27 Andrew Cagney - - * alpha-osf1-tdep.c (alpha_call_dummy_address): Delete function. - (alpha_osf1_init_abi): Do not set call_dummy_address. - -2003-08-27 David Carlton - - From Randolph Chung : - * linux-proc.c (linux_info_proc_cmd): rework the code so that it - compiles with -Wformat-nonliteral -Werror. - -2003-08-26 Jim Blandy - - * solib-svr4.c (bfd_lookup_symbol): New SECT_FLAGS argument. - (enable_break): Pass SEC_CODE as the SECT_FLAGS argument to - bfd_lookup_symbol, since we only want symbols in code sections. - (look_for_base): Pass zero as the SECT_FLAGS argument to - bfd_lookup_symbol, since we're not concerned about which section - the symbol is in. - -2003-08-26 Jeff Johnston - - * ia64-tdep.c (examine_prologue): Only stop at predicated insns if - we are frameless or the return address register is already known. - -2003-08-26 Andrew Cagney - - * i386-linux-nat.c (ps_get_thread_area): Make "desc" four "int"s - in size. Add comments. - -2003-08-26 Jeff Johnston - - * ia64-tdep.c (ia64_convert_from_func_addr): New function. - (ia64_gdbarch_init): Call set_gdbarch_convert_from_func_addr(). - -2003-08-26 Jason Merrill - - * dwarf2read.c (dwarf_attr_name): Move DW_AT_MIPS_linkage_name - case out of #ifdef MIPS block. - -2003-08-25 Daniel Jacobowitz - - PR java/1322 - * dwarf2-frame.c (dwarf2_frame_find_fde): Check whether any FDEs are - available before calling SECT_OFF_TEXT. - * PROBLEMS: Remove description of java/1322. - -2003-08-25 Jeff Johnston - - * ia64-tdep.c (pseudo_regs): New enum that lists gr32-gr127, p0-p63, - bof, and nat0-nat127 as pseudo-registers. - (ia64_frame_cache): New struct used to cache frame info. - (ia64_register_reggroup_p): New routine used to override default - register grouping so registers without names are still saved and - restored. - (ia64_dwarf_reg_to_regnum): New routine to map gr32-gr127 to their - pseudo values. - (ia64_pseudo_register_read): New routine to read pseudo-registers. - (ia64_pseudo_register_write): New routine to write pseudo-registers. - (ia64_alloc_frame_cache): New routine to create a new - ia64_frame_cache. - (examine_prologue): Change prototype to add next_frame pointer. - Assume frameless until otherwise proven. Verify that the cfm for - current frame matches the cfm that should occur for the prologues - alloc insn and if equal, mark as not frameless. At end of routine, - if not frameless, calculate registers for the previous frame and store - in the cache, if a cache is provided. - (ia64_skip_prologue): Use new prototype when calling examine_prologue - and pass 0 for next_frame. - (ia64_store_return_value): Change to use convert_typed_floating() - instead of calling ia64_convert_to_raw(). - (ia64_extract_return_value): Change to use convert_typed_floating() - instead of calling ia64_convert_to_virtual(). - (ia64_frame_cache): New routine to support new frame model. - (ia64_frame_this_id, ia64_frame_prev_register): Ditto. - (ia64_frame_sniffer): Ditto. - (ia64_sigtramp_frame_init_saved_regs): Ditto. - (ia64_sigtramp_frame_cache, ia64_sigtramp_frame_this_id): Ditto. - (ia64_sigtramp_frame_prev_register): Ditto. - (ia64_sigtramp_frame_sniffer): Ditto. - (ia64_frame_base_address): Ditto. - (ia64_extract_struct_value_address): Change to issue error message. - (ia64_frame_align): New routine to align sp. - (ia64_push_dummy_call): New routine based on ia64_push_arguments(). - (ia64_push_arguments): Removed. Logic moved to - ia64_push_dummy_call(). - (ia64_push_return_address): Ditto. - (ia64_unwind_dummy_id): New function. - (ia64_unwind_pc): Ditto. - (ia64_convert_register_p): Ditto. - (ia64_register_to_value): Ditto. - (ia64_value_to_register): Ditto. - (ia64_pop_frame, ia64_pop_frame_regular): Removed. - (ia64_register_byte, ia64_register_raw_size): Ditto. - (ia64_register_virtual_size, ia64_register_virtual_byte): Ditto. - (ia64_saved_pc_after_call): Ditto. - (ia64_frame_chain, ia64_frame_saved_pc): Ditto. - (ia64_frame_init_saved_regs, ia64_get_saved_register): Ditto. - (ia64_register_convertible, ia64_register_convert_to_virtual): Ditto. - (ia64_register_convert_to_raw): Ditto. - (ia64_store_struct_return, ia64_call_dummy_words): Ditto. - (ia64_init_extra_frame_info): Ditto. - (ia64_frame_args_address, ia64_frame_locals_address): Ditto. - (ia64_gdbarch_init): Remove registering of deprecated functions that - are no longer used. Add registration of new gdbarch functions. - Remove registering deprecated_write_sp. Replace - set_gdbarch_register_virtual_type() with set_gdbarch_register_type(). - Delete set_gdbarch_deprecated_register_convertible(), - set_gdbarch_deprecated_register_convert_to_virtual(), and - set_gdbarch_deprecated_register_convert_to_raw() calls. Remove - set_gdbarch_deprecated_register_size(), - set_gdbarch_deprecated_register_bytes(), - set_gdbarch_pcregnum(), - set_gdbarch_deprecated_register_byte(), - set_gdbarch_deprecated_register_raw_size(), - set_gdbarch_deprecated_max_register_raw_size(), - set_gdbarch_deprecated_register_virtual_size(), - and set_gdbarch_deprecated_max_register_virtual_size() calls. - Replace set_gdbarch_deprecated_extract_return_value() with - set_gdbarch_extract_return_value(). Remove calls to: - set_gdbarch_deprecated_saved_pc_after_call(); - set_gdbarch_deprecated_frame_chain(), - set_gdbarch_deprecated_frame_saved_pc(), - set_gdbarch_deprecated_frame_init_saved_regs(), - set_gdbarch_deprecated_get_saved_register(), - set_gdbarch_deprecated_call_dummy_words(), - set_gdbarch_deprecated_sizeof_call_dummy_words(), - set_gdbarch_deprecated_init_extra_frame_info(), - set_gdbarch_deprecated_frame_args_address(), - set_gdbarch_deprecated_frame_locals_address(), - and set_gdbarch_deprecated_dummy_write_sp(). - Add set_gdbarch_convert_register_p(), - set_gdbarch_register_to_value(), - set_gdbarch_value_to_register(), - set_gdbarch_push_dummy_call(), - set_gdbarch_frame_align(), - set_gdbarch_unwind_dummy_id(), - set_gdbarch_unwind_pc(), - frame_unwind_append_sniffer(), - frame_unwind_append_sniffer(), - and frame_base_set_default(). - -2003-08-25 Chris Demetriou - - * configure.tgt: Document need for special "mipsisa64" handling. - (mipsisa64*-*-linux64): Handle as target linux64. - (mipsisa64*-*-*): Handle as target embed64. - -2003-08-18 Michael Chastain - - * PROBLEMS: Document pr gdb/1322, the Java anonymous - objfile bug. - -2003-08-24 Mark Kettenis - - * i387-tdep.h: Update copyright date. - (I387_SIZEOF_FSAVE, I387_SIZEOF_FXSAVE): New defines. - - * linux-proc.c (linux_proc_xfer_memory): Remove comment about - CFLAGS games to reflect reality. - -2003-08-24 Andrew Cagney - - * arm-tdep.c (_initialize_arm_tdep): Simplify by assuming - GDB_MULTI_ARCH is always non-zero. - * osabi.c (_initialize_gdb_osabi): Ditto. - (gdbarch_init_osabi): Ditto. - * sparc-tdep.c: Ditto for #if code. - -2003-08-23 Mark Kettenis - - * x86-64-tdep.c (x86_64_supply_fxsave): Add `regnum' argument. - Update comments. - * x86-64-tdep.h (x86_64_supply_fxsave): Adjust prototype. Update - comments. - * x86-64-linux-tdep.c (fetch_core_registers): Adjust call to - x86_64_supply_fxsave. - * x86-64-linux-nat.c (supply_fpregset): Adjust call to - x86_64_supply_fxsave. - * amd64fbsd-nat.c (supply_fpregset): Adjust call to - x86_64_supply_fxsave. - -2003-08-23 Andreas Jaeger - - * x86-64-tdep.c (x86_64_supply_fxsave): Adjust call to - i387_supply_fxsave. - -2003-08-23 Mark Kettenis - - * go32-nat.c (fetch_register): Call i387_supply_fsave instead of - i387_supply_register. - (go32_fetch_registers): Adjust call to i387_supply_fsave. - * i386nbsd-tdep.c (fetch_core_registers): Adjust call to - i387_supply_fsave. - (fetch_elfcore_registers): Adjust call to i387_supply_fsave and - i387_supply_fxsave. - * i386obsd-tdep.c (fetch_core_registers): Adjust call to - i387_supply_fsave. - * i386bsd-nat.c (supply_fpregset): Adjust call to - i387_supply_fsave. - (fetch_inferior_registers): Remove extraneous whitespace. Adjust - call to i387_supply_fxsave. Call i387_supply_fsave instead of - supply_fpregset. - (store_inferior_registers): Remove extraneous whitespace. Call - i387_fill_fsave instead of fill_fpregset. - * i386gnu-nat.c (fetch_fpregs): Adjust call to i387_supply_fsave. - (supply_fpregset): Likewise. - * i386v4-nat.c (supply_fpregset): Adjust call to - i387_supply_fsave. - * i386-interix-nat.c (supply_fpregset): Adjust call to - i387_supply_fsave. - * i386-linux-nat.c (supply_fpregset): Adjust call to - i387_supply_fsave. - (supply_fpxregset): Adjust call to i387_adjust_fxsave. - * i386-nto-tdep.c (i386nto_supply_fpregset): Adjust calls to - i387supply_fsave and i387_supply_fxsave. - * i387-tdep.c (i387_supply_fsave): Add `regnum' argument. - Incorporate code from `i387_supply_register. - (i387_supply_register): Remove. - (i387_supply_fxsave): Add `regnum' argument. - Update comments. - * i387-tdep.h (i387_supply_fsave, i387_supply_fsxave): Adjust - prototype. - (i387_supply_register): remove prototype. - Update comments. - -2003-08-22 Michael Chastain - - * config/djgpp/fnchange.lst: Remove gdb/testsuite/gdb.c++/*. - Add lines for files in gdb/testsuite/gdb.cp/* that are - still not 8.3 unique. - -2003-08-22 Daniel Jacobowitz - - * gnu-v3-abi.c (gnuv3_baseclass_offset): Check whether - TYPE_VPTR_FIELDNO is valid. - -2003-08-19 Mark Kettenis - - * utils.c (set_width_command): Remove prototypes. - (set_screen_size): New prototype. - (init_page_info): Simplify by fetching the screen size from - Readline. Call set_screen_size. - (set_screen_size): New function. - (set_width): Add missing whitespace in comment. - (set_width_command): Call set_screen_size. - (set_height_command): New function. - (initialize_utils): Fix formatting. Make "set height" command - call set_height_command. Remove redundant code that turns off - pagination if output isn't a terminal. Remove redundant call to - set_width_command. - -2003-08-22 Mark Kettenis - - * sparc64-tdep.h (sparc64_regnum): Fix comment. - (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove prototypes. - (sparc_supply_rwindow, sparc_fill_rwindow): New prototypes. - * sparc64-tdep.c (sparc64_pseudo_register_read): Add missing - `case' keyword. - (sparc64_register_info): Give the reister with number - SPARC64_STATE_REGNUM a name. - (sparc64_pseudo_register_write): Add support for %cwp, %pstate, - %asi and %ccr. - (sparc64_push_dummy_call): Take BIAS into account when checking - stcak alignment. - (sparc_software_single_step): Remove assertions that check whether - NPC and NNPC were zero. - (sparc_supply_rwindow): Make public. Merge functionality with - sparc64_supply_rwindow. - (sparc_fill_rwindow): Make public. Merge functionality with - sparc64_fill_rwindow. - (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove. - * sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Set - SPARCBSD_FPREG_SUPPLIES_P to sparc64fbsd_fpreg_supplies_p. - * sparc64fbsd-tdep.c (sparc64fbsd_supply_reg): Call - sparc_supply_rwindow instead of sparc64_supply_rwindow. - - * reggroups.c: Add whitespace after declarations of local - variables in functions. - -2003-08-21 Michael Chastain - - * gdbtypes.h: Change array bound type from an int to enum. - -2003-08-21 Andrew Cagney - - * config/sparc/tm-sp64.h: Delete #if !GDB_MULTI_ARCH and #if 0 code. - * config/sparc/tm-sparc.h: Ditto. - * config/arm/tm-arm.h (GDB_MULTI_ARCH): Define GDB_MULTI_ARCH - unconditionally. - * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Ditto. - -2003-07-13 Mark Kettenis - - * objfiles.h (struct objfile): Add memebers `data' and `num_data'. - (register_objfile_data, set_objfile_data, objfile_data): New - prototypes. - * objfiles.c (objfile_alloc_data, objfile_free_data): New - prototypes. - (allocate_objfile): Call objfile_alloc_data. - (free_objfile): Call objfile_free_data. - (struct objfile_data): New. - (struct objfile_data_registration): New. - (struct objfile_data_registry): New. - (objfile_data_registry): New variable. - (register_objfile_data): New function. - (objfile_alloc_data, objfile_free_data): New functions. - (set_objfile_data, objfile_data): New functions. - * dwarf2-frame.c (dwarf2_frame_data): New variable. - (dwarf2_frame_find_fde, add_fde): Use new per-objfile data mechanism. - (_initialize_dwarf2_frame): New function and prototype. - -2003-08-21 Andrew Cagney - - * sh3-rom.c (sh3_open, sh3e_open): Use gdbarch_update_p to select - a specific architecture. - * arch-utils.h (set_architecture_from_arch_mach): Delete - declaration. - (target_architecture_hook): Delete declaration. - * arch-utils.c: Delete non GDB_MULTI_ARCH includes. - (default_float_format): Assume GDB_MULTI_ARCH. - (default_double_format): Assume GDB_MULTI_ARCH. - (set_endian_from_file): Delete function. - (arch_ok): Delete function. - (set_arch): Delete function. - (set_architecture_from_arch_mach): Delete function. - (set_architecture_from_file): Delete function. - (set_architecture): Assume GDB_MULTI_ARCH. - (set_gdbarch_from_file): Assume GDB_MULTI_ARCH. - -2003-08-21 Mark Kettenis - - Rewrite FreeBSD/sparc64 native configuration. - * sparcbsd-nat.c, sparcbsd-nat.h: New files. - * sparc64fbsd-nat.c: New file. - * sparc64fbsd-tdep.c: New file. - * sparc64-tdep.c sparc64-tdep.h: New files. - * Makefile.in (sparcbsd-nat.o, sparc64fbsd-nat.o, sparc64-tdep.o, - sparc64fbsd-tdep.o): New dependencies. - (SFILES): Add sparcbsd-nat.c, sparc64fbsd-nat.c, sparc64-tdep.c - and sparc64fbsd-tdep.c. - (sparc64_tdep_h, sparcbsd_nat_h): New variables. - * config/sparc/fbsd.mh: Remove copyright notice. - (NATDEPFILES): Remove sparc-nat.o, add sparc64fbsd-nat.o and - sparcbsd-nat.o. - * config/sparc/fbsd.mt: Remove copyright notice. - (TDEPFILES): Remove sparc-tdep.o, solib.o solib-svr4.o, - solib-legacy.o. Add sparc64-tdep.o and sparc64fbsd-tdep.o. - * config/sparc/nm-fbsd.h: Don't include "elf/common.h". - (SVR4_SHARED_LIBS, PTRACE_GETREGS, PTRACE_SETREGS, - PTRACE_GETFPREGS, PTRACE_SETFPREGS, GDB_GREGSET_T, GDB_FPREGSET_T, - regs, r_g1, r_ps, r_pc, r_npc, r_y, FPU_FSR_TYPE, fp_status, fpu, - fpu_regs, fp_fr, fpu_fsr, Fpu_fsr): Remove defines. - * config/sparc/tm-fbsd.h: Don't include "solib.h" and - "sparc/tm-sp64.h". - (SVR4_SHARED_LIBS, START_INFERIOR_TRAPS_EXPECTED): Remove defines. - (GDB_MULTI_ARCH): Define to GDB_MULTI_ARCH_TM. - -2003-08-21 Michael Chastain - - * symtab.h: Add doco on the space critical structures and - some measurements of space usage. - -2003-08-21 Michael Snyder - - * tracepoint.c (trace_dump_command): Trace break address - is subject to DECR_PC_AFTER_BREAK. - (set_traceframe_context): Make "trace_line" an int. - Fixes suggested by Mark Newman - -2003-08-20 Michael Snyder - - * sh-tdep.h (struct gdbarch_tdep): New member FLOAT_ARGLAST_REG. - * sh-tdep.c (sh_gdbarch_init): For sh2e, sh3e, and sh4, set - FLOAT_ARG0_REGNUM and FLOAT_ARGLAST_REGNUM, to be used for - argument passing. - (sh_push_dummy_call_fpu, sh_push_dummy_call_nofpu): New - functions, replace sh_push_dummy_call. - (sh_gdbarch_init): Set push_dummy_call to one of new methods. - -2003-08-20 Michael Chastain - - * gdbtypes.h (struct main_type): Rearrange to save space. - -2003-08-20 Michael Snyder - - * trad-frame.c: Comment typo fix. - -2003-08-20 Michael Snyder - Kevin Buettner - - * frv-tdep.c (gdb_string.h, frame.h, trad-frame.h): Include. - (frv_frame_init_saved_regs): Add declaration. - (frame_extra_info): Add new field ``saved_regs''. - (frv_frame_chain, frv_frame_saved_pc, frv_analyze_prologue) - (frv_skip_prologue, frv_init_extra_frame_info, frv_pop_frame_regular): - Update frame related code. - (frv_extract_struct_value_address): Adjust formatting. - * Makefile.in (frv-tdep.o): Update dependencies. - * config/frv/tm-frv.h (target_insert_watchpoint) - (target_remove_watchpoint, target_insert_hw_breakpoint) - (target_remove_hw_breakpoint): Delete these macros. - (remote_insert_watchpoint, remote_remove_watchpoint) - (remote_insert_hw_watchpoint, remote_remove_hw_watchpoint): Remove - these declarations. - -2003-08-20 Michael Chastain - - * defs.h (ENUM_BITFIELD): New macro. - * symtab.h (ENUM_BITFIELD): Use it. - (BYTE_BITFIELD): Remove old macro, which was already disabled. - -2003-08-19 Shrinivas Atre - - * MAINTAINERS (write after approval): Add myself. - -2003-08-18 Andrew Cagney - - * gdbarch.sh (FRAME_RED_ZONE_SIZE): New architecture method. - * gdbarch.h, gdbarch.c: Re-generate. - * infcall.c (call_function_by_hand): Adjust the SP by - frame_red_zone_size before allocating any stack space. - * rs6000-tdep.c (rs6000_gdbarch_init): Set "frame_red_zone_size". - * x86-64-tdep.c (x86_64_frame_align): New function. - (x86_64_init_abi): Set "frame_red_zone_size" and "frame_align". - - * x86-64-tdep.c (x86_64_push_arguments): Revert 2003-08-07 change. - Remove code adjusting SP so that it skips over the Red Zone. - -2003-08-18 Mark Kettenis - - * NEWS (New native configurations): Mention FreeBSD/amd64. - -2003-08-18 Andrew Cagney - - * m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set - "dwarf2_build_frame_info". Append "m68k_frame_sniffer" instead of - "m68k_frame_p". - (m68hc11_frame_sniffer): Replace "m68hc11_frame_p". - -2003-08-18 Mark Kettenis - - * x86-64-tdep.c (x86_64_dwarf_regmap): Remove trailing whitespace. - -2003-08-18 Michal Ludvig - - * config/i386/nm-x86-64linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): - Define. - * i386-linux-nat.c: Include "linux-nat.h". - (child_post_startup_inferior): New function. - -2003-08-18 Mark Kettenis - - * i386-tdep.c (i386_analyze_register_saves): Handle register saves - at the start of a frameless function. This probably fixes PR - backtrace/1338. - -2003-08-17 Michael Chastain - - * symfile.c (find_sym_fns): Remove special case for apollo target. - -2003-08-17 Daniel Jacobowitz - - * linux-nat.c (PTRACE_O_TRACEVFORKDONE, PTRACE_O_TRACEEXIT): Define. - (PTRACE_EVENT_VFORKDONE, PTRACE_EVENT_EXIT): Define. - (linux_parent_pid, linux_supports_tracevforkdone_flag): New variable. - (linux_test_for_tracefork): Set linux_supports_tracevforkdone_flag. - (linux_supports_tracevforkdone): New function. - (linux_enable_event_reporting): Enable TRACEVFORK, TRACEEXEC, and - TRACEVFORKDONE. - (child_follow_fork): Handle vfork. - (linux_handle_extended_wait): Likewise. Also handle exec. - (child_insert_vfork_catchpoint, child_insert_exec_catchpoint): Enable. - * NEWS: Mention fork tracing. - -2003-08-17 Daniel Jacobowitz - - * lin-lwp.c (child_wait): Call linux_record_stopped_pid. - -2003-08-17 Daniel Jacobowitz - - * Makefile.in (i386-linux-nat.o): Update dependencies. - * config/i386/nm-linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Define. - * config/nm-linux.h (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH) - (CHILD_FOLLOW_FORK, KILL_INFERIOR): Define. - * i386-linux-nat.c: Include "linux-nat.h". - (child_post_startup_inferior): New function. - * i386-nat.c (child_post_startup_inferior): Wrap in #ifdef. - * infptrace.c (kill_inferior): Wrap in #ifdef. - * lin-lwp.c (lin_lwp_attach_lwp): Call child_post_attach after - attaching to each LWP. - (child_wait, lin_lwp_wait): Call linux_handle_extended_wait. - (init_lin_lwp_ops): Fill in some more operations. - * linux-nat.h (linux_enable_event_reporting) - (linux_handle_extended_wait, linux_child_post_startup_inferior): New - prototypes. - * linux-nat.c (linux_enable_event_reporting): New function. - (child_post_attach, linux_child_post_startup_inferior) - (child_post_startup_inferior, child_follow_fork) - (linux_handle_extended_wait, kill_inferior): New functions. - -2003-08-16 Andrew Cagney - - * gdbarch.sh: Delete all #if not GDB_MULTI_ARCH code. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-08-16 Mark Kettenis - - * config/alpha/nm-fbsd.h (SVR4_SHARED_LIBS): Remove define. - -2003-08-16 Andrew Cagney - - * NEWS: Mention that "set prompt-escape-char" was deleted. - * top.c (get_prompt_1): Delete function. - (gdb_prompt_escape): - (init_main): Do not clear "gdb_prompt_escape". Delete "set - prompt-escape-char" command. - (MAX_PROMPT_SIZE): Delete macro. - (get_prompt): Simplify, do not call get_prompt_1. - -2003-08-16 Andrew Cagney - - * Makefile.in (printcmd.o, valprint.o): Do not try to build with - -Werror. -Wformat-nonliteral problems. - -2003-08-15 J. Brobecker - - Further multiarching work mostly for hppa64-*-hpux11: - * hppa-tdep.h: New file. - * hppa-tdep.c: #include hppa-tdep.c. - (hppa32_num_regs): Renamed from hppa_num_regs. - (hppa64_num_regs): New constant. - (hppa64_call_dummy_breakpoint_offset): New constant. - (hppa32_call_dummy_length): New constant. - (hppa64_call_dummy_length): New constant. - (hppa32_stack_align): Make name 32bit explicit. - (hppa32_register_virtual_type): Likewise. - (hppa32_extract_return_value): Likewise. - (hppa32_use_struct_convention): Likewise. - (hppa32_store_return_value): Likewise. - (hppa64_register_virtual_type): New function. - (hppa64_extract_return_value): New function. - (hppa64_use_struct_convention): New function. - (hppa64_store_return_value): New function. - (hppa_frame_locals_address): Remove declaration, function does - not exist anymore. - (hppa_register_byte): Add support for PA64 ABI. - (hppa_gdbarch_init): Add support for PA64 ABI. - * hppa-hpux-tdep.c (hppa32_hpux_frame_saved_pc_in_sigtramp): - Make name 32bit explicit. - (hppa32_hpux_frame_base_before_sigtramp): Likewise. - (hppa32_hpux_frame_find_saved_regs_in_sigtramp): Likewise. - (hppa64_hpux_frame_saved_pc_in_sigtramp): New function. - (hppa64_hpux_frame_base_before_sigtramp): New function. - (hppa64_hpux_frame_find_saved_regs_in_sigtramp): New function. - * config/pa/tm-hppa64.h: Remove macros that are no longer - necessary now that the gdbarch vector is properly setup. - Transform some macros into function calls. Some minor cleanup. - * config/pa/tm-hppah.h: Update function calls in macros - following the function renaming in hppa-hpux-tdep.c. - * Makefile.in (hppa_tdep_h): New variable. - (hppa-tdep.o): Add dependency over hppa_tdep_h. - -2003-08-14 Michael Snyder - - * disasm.c (gdb_disassemble_info): Set info->insn_sets to zero. - -2003-08-13 J. Brobecker - - * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Use the correct - bfd arch_info when registering the GDB_OSABI_HPUX_ELF initialization - routine. - -2003-08-13 Michael Snyder - - * frv-tdep.c (frv_push_arguments): Use deprecated ftype. - (frv_saved_pc_after_call): Use deprecated ftype. - (stupid_useless_init_extra_frame_info): Remove orphan prototype. - (frv_remote_translate_xfer_address): Remove. - (frv_gdbarch_init): Use generic_remote_translate_xfer_address. - -2003-08-13 J. Brobecker - - * hppa-tdep.c (hppa_gdbarch_init): Perform the ABI-specific gdbarch - initialization after the common gdbarch initialization, not before. - -2003-08-13 J. Brobecker - - * config/pa/tm-hppa64.h (HPUX_1100): Remove, not used. - (ADDR_BITS_REMOVE): Remove, redundant. - -2003-08-13 J. Brobecker - - * hppa-tdep.c (hppa_gdbarch_init): Set the addr_bits_remove - gdbarch method to clear the 2 low bits of text addresses. - -2003-08-12 Andrew Cagney - - * Makefile.in (dsrec.o): Update dependencies. - * dsrec.c: Include "gdb_assert.h". - (make_srec): Use snprintf instead of sprintf, use a literal format - string. - -2003-08-12 Andrew Cagney - - * frame.c (deprecated_frame_xmalloc): Use XMALLOC, instead of - FRAME_OBSTACK_ZALLOC. - -2003-08-12 Kevin Buettner - - * i386-tdep.c (i386_gdbarch_init): Enable default support for - SSE registers. - -2003-08-10 Mark Kettenis - - * x86-64-tdep.h (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end, - amd64fbsd_sc_reg_offset): Add extern declarations. - * amd64fbsd-nat.c (_initialize_am64fbsd_nat): Remove extern - declarations. - -2003-08-11 Ben Elliston - - * MAINTAINERS (write after approval): Update my mail address. - -2003-08-10 Andrew Cagney - - * Makefile.in (monitor.o): Do not build monitor.c with -Werror. - -2003-08-10 Mark Kettenis - - * i386-tdep.h (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, - i386obsd_sigtramp_start, i386obsd_sigtramp_end, - i386fbsd4_sc_reg_offset, i386fbsd_sc_reg_offset, - i386nbsd_sc_reg_offset, i386obsd_sc_reg_offset, - i386bsd_sc_reg_offset): Add extern declarations. - * i386obsd-nat.c: Include "i386-tdep.h" - (_initialize_i386obsd_nat): Remove extern declarations. - * i386fbsd-nat.c (_initialize_i386fbsd_nat): Remove extern - declarations. - * i386bsd-nat.c (_initialize_i386bsd_nat): Remove extern - declarations. - - * i386-tdep.c (i386_register_to_value): Use get_frame_register - instead of frame_read_register. - (i386_fetch_pointer_argument): Use get_frame_register_unsigned - instead of frame_read_register. Use I386_ESP_REGNUM instead of - SP_REGNUM. - (i386_frame_prev_register): Use frame_unwind_register_unsigned - instead of frame_unwind_unsigned_register. Use - I386_EFLAGS_REGISTER instead of PS_REGNUM. - (i386_get_longjmp_target): Use regcache_read_unsigned_register - instead of read_register. Use builtin_type_void_data_ptr instead - of builtin_type_void_func_ptr when extracting the address of the - jmp_buf. - (i386_extract_return_value, i386_store_return_value, - i386_pseudo_register_read, i386_pseudo_register_write): Use - register_size instead REGISTER_RAW_SIZE. - -2003-08-10 Andrew Cagney - - * infcall.c (call_function_by_hand): Use xstrprintf instead of - sprintf. Make "name" constant. - -2003-08-10 Mark Kettenis - - * i387-tdep.c (i387_register_to_value): Use get_frame_register - instead of frame_read_register. - (i387_print_float_info): Use get_frame_register and - get_frame_register_unsigned instead of frame_register_read. - - * i386fbsd-nat.c: Include "i386-tdep.h". - (child_resume): Make `eflags' an ULONGEST. Use - regcache_cooked_read_unsigned and regcache_cooked_write_unsigned - instead of register_read and register_write. - - * i386bsd-nat.c (fetch_inferior_registers, - store_inferior_registers): Don't use && at the end of a line. - (_initialize_i386bsd_nat): Fix typo. - - * frame.c (_initialize_frame): Add missing backslash. - - From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de): - * sol-thread.c (sol_thread_store_registers): Use regcache_collect - and supply_register instead of manipulating the register buffer - directly. - - From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de): - * config/i386/nm-i386sol2.h - (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Define to one. - - Based on a patch from Michael Elizabeth Chastain (mec@shout.net): - * i386-tdep.c (i386_analyze_frame_setup): Recognize more - instructions that GCC likes to mingle into the prologue. Fixes - gdb/1253 and gdb/1255. - -2003-08-09 Andrew Cagney - - Fix GDB PR cli/926. - * cli/cli-decode.c (add_setshow_uinteger_cmd): New function. - * command.h (add_setshow_uinteger_cmd): Declare. - * frame.c (set_backtrace_cmd): New function. - (show_backtrace_cmd): New function. - * frame.c (_initialize_frame): Replace "set/show - backtrace-below-main" with "set/show backtrace past-main". Add - command "set/show backtrace limit". - (backtrace_past_main): Rename "backtrace_below_main". - (backtrace_limit): New variable. - (get_prev_frame): Update. Check the backtrace_limit. - -2003-08-09 Andrew Cagney - - * defs.h (xstrprintf): Declare. - * utils.c (xstrprintf): New function. - * breakpoint.c (insert_breakpoints): Replace sprintf and - non-literal format strings, with xstrprintf and cleanups. - (delete_breakpoint,breakpoint_re_set): Ditto. - (commands_command, insert_breakpoints): Ditto. - (bpstat_stop_status, break_at_finish_at_depth_command_1): Ditto. - (break_at_finish_command_1): Ditto. - -2003-08-09 Andrew Cagney - - * MAINTAINERS (language support): List Adam Fedor as Objective C - maintainer. - -2003-08-08 J. Brobecker - - * NEWS (Multi-arched targets): Document that all hppa-hpux targets - are now multiarched. - -2003-08-08 J. Brobecker - - * config/pa/tm-hppa64.h: Remove lots of macros that are no - longer necessary now that hppa64 is partially multiarch'ed. - -2003-08-08 Andrew Cagney - - * interps.c (interp_set): Check for a NULL "old_interp". - -2003-08-08 H.J. Lu - - * Makefile.in (FLAGS_TO_PASS): Add DESTDIR. - (install-only): Support DESTDIR. - (uninstall): Likewise. - (install-gdbtk): Likewise. - -2003-08-08 Elena Zannoni - - * symtab.c (lookup_symbol_aux): Make sure that is_a_field_of_this - contains something meaningful at all times. - -Fri Aug 8 00:28:46 UTC 2003 Brendan Conoboy - - * configure.host: Set gdb_host_cpu=arm when host_cpu=xscale. - -Fri Aug 8 00:28:38 UTC 2003 Brendan Conoboy - - * MAINTAINERS (write after approval): Added self. - -2003-08-07 Andrew Cagney - - * inferior.h (AT_SYMBOL): Define. - * blockframe.c (inside_entry_file): Check for AT_SYMBOL. - * infcall.c (call_function_by_hand): Add code to handle AT_SYMBOL. - * mips-tdep.c (mips_call_dummy_address): Delete function. - (mips_gdbarch_init): Set call_dummy_location to AT_SYMBOL, do not - set call_dummy_address. - -2003-08-07 Andrew Cagney - - * language.c (op_error): Delete function. - (binop_type_check): Delete function. - * language.h (type_op_error, range_op_error): Delete macros. - (op_error): Delete declaration. - -2003-08-07 Andrew Cagney - - * interps.h (INTERP_MI2, INTERP_MI3): Define. - -2003-08-07 Michal Ludvig - - * x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers. - (x86_64_push_arguments): Skip the red zone. - -2003-08-05 Andrew Cagney - - * reggroups.c (reggroup_next): Check for the final entry. - -2003-08-04 Andrew Cagney - - * monitor.h (monitor_dump_reg_block): Remove ATTR_FORMAT. - * cli/cli-script.c (define_command): Call query directly, instead - of passing it a buffer. - * ocd.c (ocd_error): Pass error a constant format string. - * remote-mips.c (mips_error): Use fputs_filtered. - - * solib-svr4.c (_initialize_svr4_solib): Update - register_gdbarch_data call. - * mips-linux-tdep.c (_initialize_mips_linux_tdep): Ditto. - - * gdbarch.sh (gdbarch_data_free_ftype): Delete declaration. - (register_gdbarch_data): Delete "free" parameter. Update - comments. - * gdbarch.h, gdbarch.c: Re-generate. - * reggroups.c (_initialize_reggroup): Update. - * gnu-v3-abi.c (init_gnuv3_ops): Update. - * frame-base.c (_initialize_frame_base): Update. - * frame-unwind.c (_initialize_frame_unwind): Update. - * user-regs.c (_initialize_user_regs): Update. - * remote.c (_initialize_remote): Update. - * regcache.c (_initialize_regcache): Update. - - * regcache.c (xfree_regcache_descr): Delete function. - (_initialize_regcache): Update call to register_gdbarch_data. - (init_regcache_descr, init_legacy_regcache_descr): Use - GDBARCH_OBSTACK_XALLOC and GDBARCH_OBSTACK_CALLOC. - - * remote.c (free_remote_state): Delete function. - (_initialize_remote): Update register_gdbarch_data. - (init_remote_state): Use GDBARCH_OBSTACK_XALLOC and - GDBARCH_OBSTACK_CALLOC instead of xmalloc / xcalloc. - -2003-08-04 Andrew Cagney - - * reggroups.c (struct reggroup_el): Define. - (struct reggroups): Delete field "nr_group". Replace array - "group" with a "first" to "last" linked list. - (reggroups_init): Update. Allocate using gdbarch's obstack. - (reggroups_free): Delete function. - (add_group): Update. Add "el" parameter. - (reggroup_add): Pass gdbarch obstack allocated space to add_group. - (default_groups): Update. - (reggroup_next): Replace reggroups. - (reggroups_dump): Update. - (_initialize_reggroup): Pass XMALLOC allocated space to add_group. - * regcache.c (regcache_dump): Use reggroup_next instead of reggroups. - * infcmd.c (registers_info): Use reggroup_next instead of reggroups. - -2003-08-04 Daniel Jacobowitz - - * Makefile.in (tui-interp.o): Update dependencies. - -2003-08-04 David Carlton - - * charset.c (cached_iconv_convert): Add __FILE__ and __LINE__ args - to internal_error call. - * source.c (forward_search_command): Add "%s" format argument. - (reverse_search_command): Ditto. - * top.c (quit_confirm): Ditto. - * cli/cli-setshow.c (do_setshow_command): Ditto. - * cp-valprint.c (cp_print_class_method): Replace - {f,}printf_{un,}filtered by {f,}puts_{un,}filtered. - (cp_print_class_member): Ditto. - * event-top.c (command_line_handler): Ditto. - * linux-proc.c (linux_info_proc_cmd): Ditto. - * p-typeprint.c (pascal_type_print_base): Ditto. - * p-valprint.c (pascal_object_print_class_method): Ditto. - (pascal_object_print_class_member): Ditto. - * printcmd.c (print_scalar_formatted,printf_command): Ditto. - * remote.c (remote_cisco_section_offsets): Ditto. - * top.c (command_line_input): Ditto. - * utils.c (vwarning,error_stream,quit): Ditto. - * valprint.c (print_floating,print_binary_chars) - (print_octal_chars,print_decimal_chars,print_hex_chars): Ditto. - -2003-08-04 Andrew Cagney - - * frame.c (frame_func_unwind): Use frame_unwind_address_in_block. - -2003-08-02 Andrew Cagney - - * config/djgpp/fnchange.lst: Fix up testsuite/gdb.c++/annota3.cc, - gdb/testsuite/gdb.c++/annota3.exp, amd64fbsd-tdep.c and - amd64fbsd-nat.c. - -2003-08-02 Andrew Cagney - - * Makefile.in: Update all dependencies and definitions. - -2003-08-02 Adam Fedor - - * linespec.c (is_objc_method_format): New function - (decode_line_1, locate_first_half): Use it. - Fixes PR objc/1298 - -2003-08-01 Andrew Cagney - - * NEWS: Mention that m32r is multi-arch. - From 2003-07-28 Kei Sakamoto : - * configure.tgt: Recognize m32r-*-*. - * config/m32r/tm-m32r.h: Delete file. - * config/m32r/m32r.mt: New file. - * m32r-rom.c (m32r_upload_command): Use hostent only when - gethostname succeeds, in order to avoid a compilation - warning. - * m32r-tdep.c (m32r_store_return_value): Add a cast to remove a - compiler warning. - -2003-08-01 Michael Snyder - - * sh-tdep.c (sh_frame_align): New gdbarch method. - (sh_gdbarch_init): Set up frame_align method. - -2003-07-31 Michael Snyder - - * value.h, values.c, infcall.c, infcmd.c: Revert 07-30 change, - which is already covered by the new frames infrastructure. - -2003-07-31 Andrew Cagney - - * user-regs.c (struct user_reg): Add "next" link. - (struct user_regs): Replace "user" with "first" and "last" links. - (append_user_reg): Add pre-allocated "reg" parameter. - (builtin_user_regs): Provide initial value for "last". - (user_reg_add_builtin): XMALLOC memory for append_user_reg. - (user_regs_init): Allocate memory from the gdbarch obstack. - (user_reg_add): GDBARCH_OBSTACK_ZALLOC memory for append_user_reg. - (user_reg_map_name_to_regnum): Rewrite to search the user_reg - linked list. - (usernum_to_user_reg): New function. - (user_reg_map_regnum_to_name): Use usernum_to_user_reg. - (value_of_user_reg): Use usernum_to_user_reg. - (user_regs_free): Delete function. - (_initialize_user_regs): Update register_gdbarch_data call. - -2003-07-31 Daniel Jacobowitz - - * dwarf2read.c (new_symbol): Use var_decode_location for parameters. - -2003-07-30 Michael Snyder - - * value.h (value_being_returned): Add a struct_addr argument. - * infcall.c (call_function_by_hand): Pass struct_addr to - value_being_returned. - * infcmd.c (print_return_value): Pass zero as struct_addr. - * values.c (value_being_returned): If struct_addr is passed, - use it instead of trying to recover it from the inferior. - -2003-07-30 Kevin Buettner - - * mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that - the prologue analyzer won't need to attempt to extract the pc - value from the woefully incomplete dummy frame. - (mn10300_analyze_prologue): Avoid calls to get_frame_pc() when - possible. Disable code which modifies the frame. - -2003-07-28 Andrew Cagney - - * annotate.c (annotate_breakpoints_headers): Restrict annotation - to level 2. - (annotate_breakpoints_table, annotate_record): Ditto. - (annotate_breakpoints_table_end, annotate_field_begin): Ditto. - (annotate_field_name_end, annotate_field_value): Ditto. - (annotate_field_end, annotate_frame_source_begin): Ditto. - (annotate_frame_source_file, annotate_frame_source_file_end): Ditto. - (annotate_frame_source_line, annotate_frame_source_end): Ditto. - (annotate_frame_begin, annotate_frame_function_name): Ditto. - (annotate_frame_address_end, annotate_frame_address): Ditto. - (annotate_frame_args, annotate_frame_end): Ditto. - (annotate_frame_where, annotate_arg_begin): Ditto. - (annotate_arg_name_end, annotate_arg_value): Ditto. - (annotate_arg_end, annotate_signal_handler_caller): Ditto. - (annotate_function_call, annotate_signal_name): Ditto. - (annotate_signal_string, annotate_signal_name_end): Ditto. - (annotate_signal_string_end, annotate_value_history_begin): Ditto. - (annotate_value_begin, annotate_value_history_value): Ditto. - (annotate_value_history_end, annotate_value_end): Ditto. - (annotate_display_begin, annotate_display_number_end): Ditto. - (annotate_display_format, annotate_display_expression): Ditto. - (annotate_display_expression_end, annotate_display_value): Ditto. - (annotate_display_end, annotate_array_section_begin): Ditto. - (annotate_elt_rep, annotate_elt_rep_end): Ditto. - (annotate_elt, annotate_array_section_end): Ditto. - -2003-07-28 Andrew Cagney - - * regcache.c (struct regcache_descr): Update comments on - nr_raw_registers. - (init_legacy_regcache_descr): Don't set nr_raw_registers or - sizeof_raw_register_valid_p. - (init_regcache_descr): Set nr_raw_registers and - sizeof_raw_register_valid_p before calling - init_legacy_regcache_descr. - -2003-07-28 Andrew Cagney - - * mips-tdep.c (print_gp_register_row): Print the GPR's register - MOD NUM_REGS. - -2003-07-28 Daniel Jacobowitz - - * thread.c (info_threads_command): Use get_selected_frame (). - Check that there is at least one non-sentinel frame. - -2003-07-27 Stephane Carrez - - * m68hc11-tdep.c (struct frame_extra_info): Remove. - (m68hc11_pop_frame): Remove. - (m68hc11_frame_saved_pc): Remove. - (m68hc11_frame_chain): Remove. - (m68hc11_frame_init_saved_regs): Remove. - (m68hc11_init_extra_frame_info): Remove. - (m68hc11_store_struct_return): Remove. - (m68hc11_saved_pc_after_call): Remove. - -2003-07-27 Stephane Carrez - - * m68hc11-tdep.c (struct m68hc11_unwind_cache): New struct to hold - frame unwind information. - (m68hc11_scan_prologue): New function from m68hc11_guess_from_prologue - and adapted for frame unwinding. - (m68hc11_skip_prologue): Update to scan prologue in temporary object. - (m68hc11_unwind_pc): New function. - (m68hc11_frame_unwind_cache): New function to analyze frames. - (m68hc11_frame_this_id): New function to create new frame struct. - (m68hc11_frame_prev_register): New function to unwind a register from - the frame. - (m68hc11_frame_unwind): Default 68hc11/68hc12 unwinder. - (m68hc11_frame_p): New function for the above. - (m68hc11_frame_base_address): New function to return fp of frame. - (m68hc11_frame_args_address): Update for frame. - (m68hc11_frame_base): Default 68hc11/68hc12 frame. - (m68hc11_unwind_sp): New function. - (m68hc11_unwind_dummy_id): New function. - (m68hc11_gdbarch_init): Install the above frames; remove deprecated - calls. - -2003-07-27 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_analyze_instruction): Don't advance the pc. - (m68hc11_guess_from_prologue): Advance the pc and frame size only - when we are beyond the current pc. - -2003-07-27 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_push_dummy_call): New function adapted - from m68hc11_push_arguments. - (m68hc11_push_arguments): Remove. - (m68hc11_push_return_address): Remove. - (m68hc11_gdbarch_init): Install the above; remove above deprecated - handlers; remove deprecated_extra_stack_alignment_needed. - -2003-07-27 Andrew Cagney - - * config/pa/tm-hppa.h (init_frame_pc_default): Declare. - * infcall.c (legacy_push_dummy_code) [GDB_TARGET_IS_HPPA]: Update - REAL_PC and not the pointer. - * hppa-hpux-tdep.c: Include frame.h - -2003-07-27 Andrew Cagney - - * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Set to - GDB_MULTI_ACH_PARTIAL. - -2003-07-27 Andrew Cagney - - Patch from 2003-07-22 Kei Sakamoto : - * m32r-tdep.c (m32r_memory_insert_breakpoint): Fix code style - - operator at start and not end of line. - (decode_prologue): Ditto. - (m32r_frame_unwind_cache, m32r_unwind_sp, m32r_unwind_pc): Use - frame_unwind_register_unsigned instead of - frame_unwind_unsigned_register. - (m32r_read_pc): Use regcache_cooked_read_unsigned instead of - read_register. - (m32r_push_dummy_call): Use register_size instead of - REGISTER_RAW_SIZE. - (m32r_frame_sniffer): Replace m32r_frame_p. - (m32r_gdbarch_init): Call frame_unwind_append_sniffer. - * m32r-rom.c (report_transfer_performance): Delete extern - declaration. - (m32r_load, m32r_upload_command): Use print_transfer_performance - instead of report_transfer_performance. - (_initialize_m32r_rom): Use add_setshow_cmd instead of add_set_cmd - / add_show_from_set. - -2003-07-26 Andrew Cagney - - * m68hc11-tdep.c (m68hc11_gdbarch_init): Set non-deprecated - store_return_value and extract_struct_value_address. - -2003-07-26 Daniel Jacobowitz - - PR c++/1267 - * minsyms.c (lookup_minimal_symbol_by_pc_section): If SECTION is - NULL, default to the section containing PC. - -2003-07-24 Stephane Carrez - - * NEWS: Mention "regs" deprecated for m68hc11 too. - - * m68hc11-tdep.c (_initialize_m68hc11_tdep): Deprecate "regs" command. - (m68hc11_print_register): New function to print out one register. - (m68hc11_print_registers_info): New function to print registers. - (show_regs): Deprecate and use the above. - (m68hc11_gdbarch_init): Install the print_registers_info. - -2003-07-24 Jeff Johnston - - * ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Verify - that we have a SIGTRAP before returning non-zero. - -2003-07-23 Michal Ludvig - Elena Zannoni - - * linespec.c (decode_line_2): Avoid crash if - find_function_start_sal() returns empty record. - -2003-07-23 Andreas Schwab - - * ia64-tdep.c (ia64_print_insn): New function. - (ia64_gdbarch_init): Set print_insn to it. - (_initialize_ia64_tdep): Don't set deprecated_tm_print_insn and - deprecated_tm_print_insn_info. - -2003-07-22 Michael Snyder - - * h8300-tdep.c (h8300_extract_return_value): Teach it how to - handle 8-bit returns (long long). - (h8300h_extract_return_value): Ditto. - (h8300_gdbarch_init): Long long is 8 bytes, char is unsigned. - -2003-07-22 Andrew Cagney - - * gdbarch.c Include "gdb_obstack.h". - (struct gdbarch): Add an "obstack". - (alloc_gdbarch_data): Allocate the gdbarch data using - GDBARCH_OBSTACK_CALLOC. - (free_gdbarch_data): Delete function. - (gdbarch_obstack_zalloc): New function. - (gdbarch_free): Free the obstack, do not call free_gdbarch_data. - Assert that the architecture is not initialized. - (gdbarch_alloc): Allocate an obstack, allocate the architecture - vector from the obstack. - (alloc_gdbarch_data, init_gdbarch_swap): Allocate memory using the - architecture obstack. - (GDBARCH_OBSTACK_CALLOC, GDBARCH_OBSTACK_ZALLOC): Define. - (set_gdbarch_data): Assert that the data is not initialized. - (struct gdbarch_data): Delete member "free". - (register_gdbarch_data): Do not initialize "free". - * gdbarch.h, gdbarch.c: Re-generate. - -2003-07-22 Andrew Cagney - - * configure.in (build_warnings): Add -Wformat-nonliteral. - * configure: Re-generate. - -2003-07-22 Elena Zannoni - - * dwarf2loc.c (locexpr_describe_location): Fix typos. - -2003-07-22 Elena Zannoni - - * findvar.c (read_var_value): Remove case for thread local storage - variables. It is now entirely handled by the dwarf2 location - expression code. - * printcmd.c (address_info): Ditto. - * symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC - enumeration value. - (struct symbol): Remove objfile field, which was used by - LOC_THREAD_LOCAL_STATIC only. - * dwarf2read.c (decode_locdesc): Remove is_thread_local variable. - * dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about - usage of objfile pointer. - * dwarf2loc.c (locexpr_describe_location): Add case to handle - thread local variables. - Add include of objfiles.h. - * dwarf2expr.c (execute_stack_op): Add comments about thread local - storage variables. - * Makefile.in (dwarf2loc.o): Update dependencies. - -2003-07-22 Andrew Cagney - - * config/pa/tm-hppa64.h (FRAME_SAVED_PC_IN_SIGTRAMP): Use - get_frame_base. - (FRAME_BASE_BEFORE_SIGTRAMP): Ditto. - (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Ditto. - (struct value): Add opaque declaration. - (DEPRECATED_FRAME_ARGS_ADDRESS): Delete. - -2003-07-21 Andrew Cagney - - From 2003-07-04 Kei Sakamoto : - * m32r-tdep.c, m32r-stub.c, m32r-tdep.c: Rewrite. - -2003-07-20 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_pseudo_register_read): Use - regcache_cooked_read_unsigned instead of read_register. - (m68hc11_saved_pc_after_call): Likewise. - (m68hc11_pseudo_register_write): Use regcache_cooked_write_unsigned - instead of write_register. - (m68hc11_register_type): New function. - (m68hc11_register_virtual_type): Remove. - (m68hc11_store_return_value): Convert to use the regcache. - (m68hc11_extract_struct_value_address): Likewise. - (m68hc11_gdbarch_init): Remove deprecated ops for register to use - m68hc11_register_type; undeprecate store_return_value and - extract_struct_value_address. - -2003-07-20 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_extract_return_value): Use regcache_raw_read - and translate to use regcache. - (m68hc11_gdbarch_init): Undeprecate extract_return_value. - -2003-07-18 Andrew Cagney - - * gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Delete method. - * gdbarch.h, gdbarch.c: Re-generate. - * i386-tdep.c (i386_gdbarch_init): Do not set - DWARF2_BUILD_FRAME_INFO. - * elfread.c (elf_symfile_read): Call dwarf2_build_frame_info - unconditionally. - * alpha-tdep.c (alpha_dwarf2_init_abi): Do not set - DWARF2_BUILD_FRAME_INFO. - -2003-07-18 Andrew Cagney - - From 2003-07-04 Kei Sakamoto : - * disasm.c (gdb_disassemble_info): Initilize di.arch. - -2003-07-18 Andrew Cagney - - * dwarf2-frame.c (dwarf2_frame_sniffer): Use - frame_unwind_address_in_block, instead of frame_pc_unwind. - (dwarf2_frame_cache): Ditto. - -2003-07-18 Andrew Cagney - - * user-regs.h (struct gdbarch): Declare opaque. - * ui-out.h (struct ui_file): Declare opaque. - * dwarf2-frame.h (struct frame_info): Declare opaque. - -2003-07-18 Kris Warkentin - - * nto-procfs.c: Clean ARI hits. Change #include <..> to - #include "...". - (procfs_meminfo): Change strerror to safe_strerror. - (procfs_can_run): Remove K&R badness. - -2003-07-17 Michael Snyder - - * remote-sim.c: Comment typo fix. - -2003-07-17 Andrew Cagney - - * defs.h (GDB_MULTI_ARCH): Delete conditional define. Handled by - configure. - * sparc-tdep.c (sparc_intreg_size): Make non-static. - * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Define to - GDB_MULTI_ARCH_PARTIAL. - -2003-07-17 Elena Zannoni - - * Makefile.in (x86-64-linux-nat.o): Update dependencies. - * x86-64-linux-nat.c (ps_get_thread_area): New function. Add - include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h. - -2003-07-16 Theodore A. Roth - - * avr-tdep.c (avr_skip_prologue): Return PC unchanged if no prologue - found. - (avr_frame_unwind_cache): Don't unwind FP for main. - Update a comment. - Save the computed prev_sp. - (avr_saved_regs_unwinder): Remove function. - (avr_frame_prev_register): Use PC unwind logic from - avr_saved_regs_unwinder(), otherwise use trad_frame_prev_register(). - -2003-07-16 Andrew Cagney - - * frame-base.h (frame_base_p_ftype): Delete definition. - (frame_base_append_predicate): Delete declaration. - * frame-unwind.h (frame_unwind_p_ftype): Delete definition. - (frame_unwind_append_predicate): Delete declaration. - * frame-unwind.c (struct frame_unwind_table): Delete field "p". - (append_predicate): Delete parameter "p". - (frame_unwind_append_predicate): Delete function. - (frame_unwind_append_sniffer): Update call to append_predicate. - (frame_unwind_free): Delete function. - (_initialize_frame_unwind): Pass NULL as "free" to - register_gdbarch_data. - (frame_unwind_init): Append the dummy_frame_sniffer. - (frame_unwind_find_by_frame): Simplify. - * frame-base.c (struct frame_base_table): Delete field "p". - (append_predicate): Delete parameter "p". - (frame_base_append_predicate): Delete function. - (frame_base_append_sniffer): Update call to append_predicate. - (frame_base_free): Delete function. - (frame_base_find_by_frame): Simplify. - (_initialize_frame_base): Pass NULL as "free" to - register_gdbarch_data. - * x86-64-tdep.c (x86_64_frame_sniffer): Replace "x86_64_frame_p". - (x86_64_sigtramp_frame_sniffer): Replace - "x86_64_sigtramp_frame_p". - (x86_64_init_abi): Set the frame unwind sniffers. - * m68k-tdep.c (m68k_frame_sniffer): Replace "m68k_frame_p". - (m68k_sigtramp_frame_sniffer): Replace "m68k_sigtramp_frame_p" - (m68k_gdbarch_init): Set the frame unwind sniffers. - * i386-tdep.c (i386_sigtramp_frame_sniffer): Replace - "i386_sigtramp_frame_p". - (i386_frame_sniffer): Replace "i386_frame_p". - (i386_gdbarch_init): Set the frame unwind sniffers. - * avr-tdep.c (avr_frame_sniffer): Replace "avr_frame_sniffer". - (avr_gdbarch_init): Set the frame unwind sniffers. - * alpha-tdep.c (alpha_sigtramp_frame_sniffer): Replace - "alpha_sigtramp_frame_p" - (alpha_heuristic_frame_sniffer): Replace - "alpha_heuristic_frame_p". - (alpha_gdbarch_init): Set the frame unwind sniffers. - (alpha_dwarf2_init_abi): Ditto. - * alpha-mdebug-tdep.c (alpha_mdebug_frame_sniffer): Replace - "alpha_debug_frame_p". - (alpha_mdebug_frame_base_sniffer): Replace - "alpha_mdebug_frame_base_p". - (alpha_mdebug_init_abi): Set the frame unwind sniffers. - * d10v-tdep.c (d10v_frame_sniffer): Replace "d10v_frame_p". - (d10v_gdbarch_init): Set the frame unwind sniffer. - * dwarf2-frame.c (dwarf2_frame_sniffer): Replace "dwarf2_frame_p". - (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p". - * dwarf2-frame.h (dwarf2_frame_sniffer): Replace "dwarf2_frame_p". - (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p". - * dummy-frame.c (dummy_frame_sniffer): Replace "dummy_frame_p". - * dummy-frame.h (dummy_frame_sniffer): Replace "dummy_frame_p". - -2003-07-16 Michael Snyder - - * sh-tdep.c (sh_gdbarch_init): Fetch_registers for the sh3-dsp - should go thru sh_dsp_register_sim_regno, else the dsp regs - will not get the right values. - -2003-07-16 Corinna Vinschen - - * sh-tdep.c (sh_sh4_register_convert_to_virtual): Substitute call to - deprecated_store_floating by call to store_typed_floating. - (sh_sh4_register_convert_to_raw): Substitute call to - deprecated_extract_floating by call to extract_typed_floating. - -2003-07-16 Corinna Vinschen - - * sh-tdep.c (sh_gdbarch_init): Set double to 4 byte on sh2e and sh3e. - -2003-07-16 Corinna Vinschen - - * sh-tdep.c: Substitute calls to REGISTER_RAW_SIZE by calls to - register_size and calls to REGISTER_VIRTUAL_TYPE by calls to - gdbarch_register_type in 32 bit code throughout. Avoid current_gdbarch - as possible. - (do_pseudo_register): Remove. - (sh_push_dummy_code): New function. - (sh64_store_struct_return): Rename from sh_store_struct_return. - Only called for sh64 now. - (sh_extract_struct_value_address): Regcache'ify. - (sh_push_dummy_call): Rename from sh_push_arguments. Regcache'ify - and accomodate new tasks. - (sh64_push_return_address): Rename from sh_push_return_address. - Only called for sh64 now. - (sh_default_extract_return_value): Rename from sh_extract_return_value. - Regcache'ify. - (sh3e_sh4_extract_return_value): Regcache'ify. - (sh_default_store_return_value): Ditto. - (sh3e_sh4_store_return_value): Ditto. - (sh_default_register_byte): Remove. - (sh_sh4_register_byte): Remove. - (sh_default_register_raw_size): Remove. - (sh_sh4_register_raw_size): Remove. - (sh_register_virtual_size): Remove. - (sh_sh3e_register_virtual_type): Remove. - (sh_sh3e_register_type): New function. - (sh_sh4_register_virtual_type): Remove. - (sh_sh4_register_type): New function. - (sh_default_register_virtual_type): Remove. - (sh_default_register_type): New function. - (do_fv_register_info): Add parameters to accomodate call from - sh_print_registers_info. - (do_dr_register_info): Ditto. - (sh_print_pseudo_register): Rename from sh_do_pseudo_register. - Add parameters to accomodate call from sh_print_registers_info. - (sh_do_fp_register): Ditto. - (sh64_do_pseudo_register): Call do_dr_register_info, - do_fv_register_info and sh_do_fp_register with default parameters. - (sh_do_register): Add parameters to accomodate call from - sh_print_registers_info. - (sh_print_register): Ditto. - (sh_print_registers_info): Rename from sh_do_registers_info. - Add parameters to be used as gdbarch_print_registers_info - implementation. Accomodate removed do_pseudo_register function - pointer. - (sh_compact_do_registers_info): Accomodate removed do_pseudo_register - function pointer. Call sh_print_register with default parameters. - (sh64_do_registers_info): Call sh_print_registers_info instead of - sh_do_registers_info. - (sh_gdbarch_init): Rearrange to cleanup and to allow easier - detection of deprecated vs. non-deprecated functionality. - Rename sh_call_dummy_words to sh64_call_dummy_words. Remove - function pointer assignments by direct function calls. - -2003-07-15 Andrew Cagney - - * frame.c (get_frame_id): Use frame_unwind_find_by_frame. - (frame_register_unwind, create_new_frame): Ditto. - (legacy_get_prev_frame, get_frame_type): Ditto. - (get_frame_base_address): Use frame_base_find_by_frame. - (get_frame_locals_address): Use frame_base_find_by_frame. - (get_frame_args_address): Use frame_base_find_by_frame. - * frame-base.h (frame_base_sniffer_ftype): Declare. - (frame_base_append_sniffer): Declare. - (frame_base_find_by_frame): Replace frame_base_find_by_pc. - * frame-base.c (append_predicate): Add a "sniffer" parameter. - (frame_base_append_sniffer): New function. - (frame_base_append_predicate): Add a NULL sniffer. - (frame_base_find_by_frame): Replace "frame_base_find_by_pc". - (struct frame_base_table): Add "sniffer". - (frame_base_free): Free the "sniffer" table. - * frame-unwind.h (frame_unwind_sniffer_ftype): Define. - (frame_unwind_append_sniffer): Declare. - (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc. - * frame-unwind.c (frame_unwind_free): Free the "sniffer" table. - (struct frame_unwind_table): Add "sniffer", delete "middle". - (append_predicate): Add "sniffer" parameter, append the sniffer. - (frame_unwind_init): Update append_predicate call. - (frame_unwind_append_sniffer): New function. - (frame_unwind_append_predicate): Update append_predicate call. - (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc. - -2003-07-15 Andrew Cagney - - * frame.c (get_prev_frame): Move disabled inside_entry_func to - before code inhibiting repeated unwind attempts. Add to - commentary on that test's problems. - * blockframe.c (inside_main_func): Look for "main" in the minimal - symbol table. - * d10v-tdep.c (d10v_frame_this_id): Delete check that frames are - identical. - -2003-07-15 Andrew Cagney - - * complaints.c (struct explanation): Define. - (struct complaints): Change type of "explanation" to "struct - explanation". - (symfile_explanations): Convert to a "struct explanation" table. - (vcomplaint): Update. - -2003-07-15 Michal Ludvig - - * x86-64-linux-nat.c (regmap): Removed. - (supply_gregset, fill_gregset): Call - x86_64_linux_(fill,supply)_gregset functions. - * x86-64-linux-tdep.c (USER_*): New defines. - (user_to_gdb_regmap, x86_64_core_fns): New structure. - (x86_64_linux_supply_gregset, x86_64_linux_fill_gregset): - New functions. - (fetch_core_registers): Ditto. - (_initialize_x86_64_linux_tdep): Call add_core_fns(). - * x86-64-linux-tdep.h: New file. - * config/i386/x86-64linux.mh (NATDEPFILES): Remove corelow.o - and core-regset.o. - * config/i386/x86-64linux.mt (TDEPFILES): Add corelow.o. - -2003-07-13 Mark Kettenis - - * x86-64-tdep.c (x86_64_store_return_value): Use - regcache_cooked_write_part instead of regcache_cooked_write. - - * configure.host: Add x86_64-*-freebsd*. - * configure.tgt: Add x86_64-*-freebsd*. - * Makefile.in (amd64fbsd-nat.o, amd64fbsd-tdep.o): New targets. - * amd64fbsd-nat.c: New file. - * amd64fbsd-tdep.c: New file. - * config/i386/nm-fbsd64.h: New file. - * config/i386/fbsd64.mh: New file. - * config/i386/fbsd64.mt: New file. - -2003-07-11 Mark Kettenis - - * alpha-tdep.h (struct gdbarch_tdep): Add members `sc_pc_offset', - `sc_regs_offset' and `sc_fpregs_offset'. - * alpha-tdep.c (SIGFRAME_PC_OFF, SIGFRAME_REGSAVE_OFF, - SIGFRAME_FPREGSAVE_OFF): Remove defines. - (alpha_sigtramp_register_address): Rewrite to use new members of - `struct gdbarch_tdep'. - (alpha_gdbarch_init): Initialize new members of struct - gdbarch_tdep'. - * alphafbsd-tdep.c (alphafbsd_use_struct_convention): Use - ALPHA_REGISTER_SIZE instead of DEPRECATED_REGISTER_SIZE. - (alphafbsd_sigtramp_start, alphafbsd_sigtramp_end): Nre variables. - (alphafbsd_pc_in_sigtramp): Implement. - (alphafbsd_sigtramp_offset): New function. - (alphafbsd_sigcontext_addr): New function. - (alphafbsd_init_abi): Initialize signal trampoline related members - of `struct gdbarch_tdep'. - (_initialize_alphafbsd_tdep): Add prototype. - -2003-07-11 Theodore A. Roth - - * Makefile.in (install-only): Quote sed expression when generating - transformed_name. - -2003-07-11 Richard Henderson - - * Makefile.in (dwarf2-frame.o): Add complaints_h. - * dwarf2-frame.c: Include complaints.h. - (decode_frame_entry_1): Rename from decode_frame_entry; tidy - variable initialization; return NULL on error. - (decode_frame_entry): New. - -2003-07-11 Andrew Cagney - - * frame.h (frame_address_in_block): Delete declaration. - * blockframe.c (frame_address_in_block): Delete function. - (get_frame_block): Use get_frame_address_in_block. - (block_innermost_frame): Ditto. - * stack.c (print_frame, backtrace_command_1): Ditto. - - * frame.h (get_frame_address_in_block): Declare. - (frame_unwind_address_in_block): Declare. - * frame.c (frame_unwind_address_in_block): New function. - (get_frame_address_in_block): New function. - -2003-07-10 Andrew Cagney - - * gdbarch.sh: Simplify predicate methods. Remove need to provide - pre-default. Note: re-generate has no effect. - -2003-07-10 Andrew Cagney - - * gdbarch.sh: When a variable, but not a function, compare against - 0. Fix problem in previous patch. - * gdbarch.c: Re-generate. - -2003-07-10 Andrew Cagney - - * gdbarch.sh: Use gdb_assert instead of internal_error. Compare - functions against NULL, not 0. - * gdbarch.c: Re-generate. - -2003-07-10 Fred Fish - - * coff-solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Default to a - null string instead of a null pointer. - * solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Ditto. - -2003-07-09 Michael Snyder - - * sh-tdep.c (sh_dsp_register_sim_regno): Off-by-one error. - -2003-07-09 Mark Kettenis - - * x86-64-tdep.h (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, - X86_64_RDI_REGNUM, X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, - X86_64_RIP_REGNUM, X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, - X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM): Moved here ... - * x86-64-tdep.c: ... from here. - -2003-07-09 Andreas Schwab - - * m68k-tdep.h (enum struct_return): Define. - (struct gdbarch_tdep): Add struct_return. - * m68k-tdep.c (m68k_push_dummy_call): Non-scalars bigger than 4 - bytes are padded to the right, not to the left. Pass struct value - address in register %a1, not on stack. - (m68k_use_struct_convention): New function. - (m68k_gdbarch_init): Set use_struct_convention. Initialize - struct_return in tdep to pcc_struct_return. - * m68klinux-tdep.c (m68k_linux_init_abi): Set struct_return to - reg_struct_return. - -2003-07-09 Joel Brobecker - - * somread.c (som_symfile_offsets): Fix compilation error. - -2003-07-09 Andrew Cagney - - * regcache.c (register_size): Only check REGISTER_RAW_SIZE once. - Add comments about the checks. - -2003-07-08 Andrew Cagney - - * Makefile.in: Make dependency section headers consistent. - (config_h): Move to $BUILD headers section. - (exc_request_U_h, exc_request_S_h, msg_reply_S_h): Ditto. - (msg_U_h, notify_S_h, process_reply_S_h): Ditto. - (ada-exp.tab.c): Move to YACC/LEX section. - (ada-lex.c, c-exp.tab.c, f-exp.tab.c): Ditto. - (jv-exp.tab.c, m2-exp.tab.c, objc-exp.tab.c, p-exp.tab.c): Ditto. - -2003-07-08 Kris Warkentin - - * nto-procfs.c: Cleaned up a bunch of ARI hits. - Include "gdb_dirent.h" instead of , replace all instances - of strerror with safe_strerror, use ISO C function definitions, - and replace instances of sprintf with snprintf. - -2003-07-07 Andrew Cagney - - * frame.c (get_prev_frame): Enable check for identical frames. - Update comments. Update error messages. - -2003-07-07 Joel Brobecker - - * hpread.c (hpread_psymtab_to_symtab_1): Fix compilation failure. - -2003-07-07 Joel Brobecker - - * xcoffread.c (xcoff_psymtab_to_symtab_1): Remove call to - sort_symtab_syms, no longer necessary. - -2003-07-07 Joel Brobecker - - * config/mips/tm-irix6.h (MIPS_REGISTER_TYPE): Add comment. - -2003-07-07 Joel Brobecker - - * mips-tdep.c (mips_register_raw_size): Fix compilation failure. - (mips_register_byte): Likewise. - -2003-07-07 Daniel Jacobowitz - - * Makefile.in (sparc_tdep_h): New. - (sparc-linux-nat.o, sparc-nat.o, sparc-tdep.o, sparc64nbsd-nat.o) - (sparcnbsd-nat.o, sparcnbsd-tdep.o): Depend on $(sparc_tdep_h). - * sparc-linux-nat.c: Include "sparc-tdep.h". - * sparc-nat.c: Likewise. - * sparc-tdep.c: Likewise. - * sparc64nbsd-nat.c: Likewise. - * sparcnbsd-nat.c: Likewise. - * sparcnbsd-tdep.c: Likewise. - * sparc-tdep.h: New file. - * config/sparc/tm-sparc.h: Remove prototypes for sparc_y_regnum - and sparc_npc_regnum. - -2003-07-07 Daniel Jacobowitz - - * mips-linux-nat.c (mips_linux_cannot_fetch_register) - (mips_linux_cannot_store_register): List supported instead of - unsupported registers. - -2003-07-07 Daniel Jacobowitz - - * disasm.c (dump_insns): Separate instructions from addresses. - -2003-07-07 Andreas Schwab - - * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update - dependencies. - * m68k-tdep.c (NUM_FREGS): Delete. - (SIG_PC_FP_OFFSET): Delete. - (TARGET_M68K): Delete. - (P_MOVEAL_SP_FP, P_ADDAW_SP, P_ADDAL_SP, P_SUBQW_SP, - P_SUBQL_SP, P_LEA_SP_SP, P_LEA_PC_A5, P_FMOVEMX_SP, - P_MOVEL_SP, P_MOVEML_SP): Define. - (P_MOVL_SP_FP, P_MOVL, P_JSR, P_BSR, P_LEAL, P_MOVML, P_FMOVM, - P_TRAP): Delete. - (m68k_register_raw_size): Delete. - (m68k_register_virtual_size): Delete. - (m68k_register_type): Renamed from m68k_register_virtual_type and - add gdbarch argument. - (m68k_store_struct_return): Delete. - (m68k_deprecated_extract_return_value): Delete. - (m68k_deprecated_extract_struct_value_address): Delete. - (m68k_frame_chain): Delete. - (m68k_frame_saved_pc): Delete. - (m68k_fix_call_dummy): Delete. - (m68k_push_dummy_frame): Delete. - (m68k_pop_frame): Delete. - (m68k_extract_return_value): New function. - (m68k_store_return_value): Rewrite using regcache. - (m68k_extract_struct_value_address): Rewrite using regcache. - (m68k_push_dummy_call): New function. - (struct m68k_frame_cache): Define. - (m68k_alloc_frame_cache): New function. - (m68k_analyze_frame_setup): New function. - (m68k_analyze_register_saves): New function. - (m68k_analyze_prologue): New function. - (m68k_skip_prologue): Rewrite using above functions. - (m68k_unwind_pc): New function. - (m68k_frame_cache): New function. - (m68k_frame_this_id): New function. - (m68k_frame_prev_register): New function. - (m68k_frame_unwind): New variable. - (m68k_frame_p): New function. - (m68k_sigtramp_frame_cache): New function. - (m68k_sigtramp_frame_this_id): New function. - (m68k_sigtramp_frame_prev_register): New function. - (m68k_sigtramp_frame_unwind): New variable. - (m68k_sigtramp_frame_p): New function. - (m68k_frame_base_address): New function. - (m68k_frame_base): New function. - (m68k_unwind_dummy_id): New function. - (fill_gregset): Use regcache_collect. - (fill_fpregset): Likewise. - (m68k_saved_pc_after_call): Only define if SYSCALL_TRAP is - defined. - (m68k_gdbarch_init): Don't define call_dummy_words. Don't set - deprecated_init_frame_pc, deprecated_store_struct_return, - deprecated_extract_return_value, deprecated_store_return_value, - deprecated_frame_chain, deprecated_frame_saved_pc, - deprecated_frame_init_saved_regs, deprecated_register_raw_size, - deprecated_register_virtual_size, - deprecated_max_register_raw_size, - deprecated_max_register_virtual_size, - deprecated_register_virtual_type, deprecated_register_size, - deprecated_register_byte, deprecated_register_bytes, - deprecated_fp_regnum, deprecated_use_generic_dummy_frames, - call_dummy_location, deprecated_call_dummy_breakpoint_offset, - deprecated_pc_in_call_dummy, deprecated_call_dummy_length, - deprecated_call_dummy_start_offset, deprecated_call_dummy_words, - deprecated_sizeof_call_dummy_words, deprecated_fix_call_dummy, - deprecated_push_dummy_frame, deprecated_pop_frame, - deprecated_dummy_write_sp. Set deprecated_saved_pc_after_call - only if SYSCALL_TRAP is defined. Set extract_return_value, - store_return_value, extract_struct_value_address, register_type, - push_dummy_call, unwind_dummy_id, unwind_pc. Add two frame unwind - predicates. - * m68k-tdep.h (M68K_D1_REGNUM, M68K_NUM_REGS, - M68K_MAX_REGISTER_SIZE): Define. - (struct m68k_sigtramp_info): Define. - (struct gdbarch_tdep): Add get_sigtramp_info. - * m68klinux-nat.c (fetch_register): Use register_size instead of - REGISTER_RAW_SIZE. Don't put assignment in if. - (store_register): Likewise. - (fetch_inferior_registers): Likewise. - (store_inferior_registers): Likewise. - * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Delete. - (m68k_linux_frame_saved_pc): Delete. - (m68k_linux_sigcontext_reg_offset, - m68k_linux_ucontext_reg_offset): Define. - (m68k_linux_get_sigtramp_info): New function. - (m68k_linux_extract_return_value): Rewrite using regcache. - (m68k_linux_store_return_value): Likewise. - (m68k_linux_extract_struct_value_address): Likewise. - (m68k_linux_init_abi): Set get_sigtramp_info in tdep structure. - Don't set deprecated_frame_saved_pc, - deprecated_extract_return_value, deprecated_store_return_value, - deprecated_extract_struct_value_address. Set - extract_return_value, store_return_value, - extract_struct_value_address. - -2003-07-07 Andrew Cagney - - * expprint.c: Include "user-regs.h" instead of "frame.h". - (print_subexp): Use user_reg_map_regnum_to_name, instead of - frame_map_regnum_to_name. - * frame.c: Include "user-regs.h" instead of "builtin-regs.h". - (frame_map_name_to_regnum): Simplify, call - user_reg_map_name_to_regnum. - (frame_map_regnum_to_name): Simplify, call - user_reg_map_regnum_to_name. - (frame_register_unwind): Update. - * std-regs.c: Include "user-regs.h" instead of "builtin-regs.h". - (_initialize_frame_reg): Call user_reg_add_builtin. - * findvar.c: Include "user-regs.h" instead of "builtin-regs.h". - (value_of_register): Use value_of_user_reg. - * eval.c (evaluate_subexp_standard): Update. - * parse.c (write_dollar_variable): Update. - * d10v-tdep.c (d10v_print_registers_info): Update. - * infcmd.c (registers_info): Update. - * Makefile.in (SFILES): Delete "builtin-regs.c", add "user-regs.c". - (builtin_regs_h): Delete macro. - (user_regs_h): Define. - (COMMON_OBS): Delete "builtin-regs.o", add "user-regs.o". - (builtin-regs.o): Delete target. - (user-regs.o): Specify dependencies. - (expprint.o): Update dependencies. - (findvar.o): Update dependencies. - (frame.o): Update dependencies. - (std-regs.o): Update dependencies. - -2003-07-06 Christopher Faylor - - * win32-nat.c (solib_symbols_add): Use one variable for all section - address stuff. Pass variable rather than address of variable to - safe_symbol_file_add. - -2003-07-06 Andreas Schwab - - * m68klinux-nat.c (fill_fpregset): Fix use of loop index. - -2003-07-04 Joel Brobecker - - * rs6000-nat.c (vmap_symtab): Fix compilation error. - -2003-07-04 Kris Warkentin - - * config/i386/nto.mh: Set XM_FILE to xm-i386.h - -2003-07-04 Kris Warkentin - - * nto-procfs.c: New file. Native procfs support for QNX Neutrino. - * config/i386/nto.mh: New file. - * config/i386/nm-nto.h: New file. - * configure.host: Add i[3456]86-*-nto*. - -2003-07-03 Joel Brobecker - - * remote-vx.c (vx_add_symbols): Fix compilation error. - -2003-07-03 Andrew Cagney - - * gdbarch.sh (REGISTER_NAME): Do not supply a default. - * gdbarch.h, gdbarch.c: Re-generate. - * config/sparc/tm-sparc.h (REGISTER_NAME): Define. - (legacy_register_name): Declare. - * config/sparc/tm-sp64.h (legacy_register_name): Declare. - (REGISTER_NAME): Define. - * sparc-tdep.c (legacy_register_name): New function. - * config/pa/tm-hppa64.h (REGISTER_NAMES): Delete macro. - (REGISTER_NAME): Define. - (hppa64_register_name): Declare. - * config/pa/tm-hppa.h (REGISTER_NAMES): Delete macro. - * hppa-tdep.c (hppa_gdbarch_init): Set hppa_register_name. - (hppa64_register_name): New function. - (hppa_register_name): New function. - * arch-utils.c (legacy_register_name): Delete. - * arch-utils.h (legacy_register_name): Delete. - -2003-07-03 Daniel Jacobowitz - - * cli/cli-interp.c (cli_interpreter_resume): Update the - cli_uiout's stream to gdb_stdout. - -2003-07-03 Andrew Cagney - - * gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Add - predicate. - * gdbarch.h, gdbarch.c: Re-generate. - * regcache.c (init_regcache_descr): Use legacy code when either - REGISTER_BYTE or REGISTER_RAW_SIZE is set. - -2003-07-02 Daniel Jacobowitz - - * NEWS: Move "set logging" entry into GDB 6.0 section. - -2003-07-02 Jim Blandy - - * s390-tdep.c (struct frame_extra_info): new member: - 'stack_bought_valid'. - (s390_get_frame_info): Set fextra_info->stack_bought_valid if we - initialize fextra_info->stack_bought. - (s390_frameless_function_invocation): Don't trust the value of - fextra_info_ptr->stack_bought unless - fextra_info->stack_bought_valid is set. - - New S390 prologue analyzer. - * s390-tdep.c (struct prologue_value, enum pv_boolean): New types. - (pv_set_to_unknown, pv_set_to_constant, pv_set_to_register, - pv_constant_last, pv_add, pv_add_constant, pv_subtract, - pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref, - compute_x_addr, s390_on_stack, s390_store, - s390_get_signal_frame_info): New functions. - (S390_NUM_SPILL_SLOTS): New macro. - (s390_get_frame_info): Rewritten. - (is_arg_reg): Deleted. - - Break out the decoding of S/390 instructions into separate - functions, to make it more legible, and easier to check - against the spec. - * s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse, - is_rx, is_rxe): New functions. - (op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras, - op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi, - op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st, - op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New - enums for opcode values. (Is this an improvement?) - -2003-07-02 Andrew Cagney - - * i386-tdep.c: Revert change committed as part of trad-frame code - below. - -2003-07-02 Daniel Jacobowitz - - * breakpoint.c (insert_catchpoint): Make static. - -2003-07-02 Andreas Schwab - - * ia64-tdep.c (ia64_push_dummy_call): Define as combination of - former ia64_push_arguments and ia64_push_return_address, and use - regcache functions instead of read/write_register. - (ia64_gdbarch_init): Set push_dummy_call instead of - deprecated_push_arguments and deprecated_push_return_address. - -2003-07-01 Andreas Jaeger - - * x86-64-tdep.c (x86_64_push_arguments): Align stack to 16-byte - before the call. - Set %rax only to number of SSE registers used. - -2003-07-01 Andrew Cagney - - * trad-frame.h: Update comments, a -1 .addr is reserved. - (trad_frame_value_p, trad_frame_addr_p): Declare. - (trad_frame_reg_p): Declare. - (trad_frame_set_value): Rename trad_frame_register_value. - (trad_frame_set_unknown): Declare. - * trad-frame.c (trad_frame_realreg_p): New function. - (trad_frame_addr_p, trad_frame_value_p): New function. - (trad_frame_set_unknown): New function. - (trad_frame_alloc_saved_regs): Initialize .addr to -1, not zero. - (trad_frame_prev_register): Use trad_frame_realreg_p, - trad_frame_addr_p and trad_frame_value_p. - (trad_frame_set_value): Rename trad_frame_register_value. - * d10v-tdep.c (d10v_frame_unwind_cache): Use trad_frame_addr_p - and trad_frame_set_value. - -2003-06-30 Jim Blandy - - Patch from IBM (authors unspecified, probably Ulrich Weigand and - Gerhard Tonn) for argument passing on the S/390 and S/390x: - * s390-tdep.c (S390_STACK_FRAME_OVERHEAD): This is always space - for 16 registers, and then 32 more bytes. - (S390_STACK_PARAMETER_ALIGNMENT, S390_NUM_FP_PARAMETER_REGISTERS): - New macros. - (is_double_arg): The s390x doesn't handle DOUBLE_ARGS specially. - Move up in the file, since it's now used by is_simple_arg. - (is_simple_arg): Don't assume registers are four bytes long. - Exclude all double arguments. Extended floats are not simple - args. - (is_power_of_two): New function. - (pass_by_copy_ref): Call is_power_of_two, and check that the - length fits in a register, rather than listing all the acceptable - sizes. Extended floats are not passed by reference. - (s390_push_arguments): Don't assume registers are four bytes long. - Reserve an argument register to point to the buffer for structures - returned by value. Use S390_NUM_FP_PARAMETER_REGISTERS and - S390_STACK_FRAME_OVERHEAD. - -2003-06-30 Andreas Schwab - - * utils.c (internal_vproblem): Use xvasprintf, not xasprintf, to - format error message. - -2003-06-30 Joel Brobecker - - * sparc-tdep.c (stop_after_trap): Remove declaration, not used. - -2003-06-30 David Carlton - - Band-aid for PR c++/1245. - * Makefile.in (cp-support.o): Depend on complaints_h. - * cp-support.c: Include complaints.h. Add declaration for - find_last_component. - (cp_find_first_component): Separate code into - cp_find_first_component_aux. - (cp_find_first_component_aux): Call demangled_name_complaint. - (demangled_name_complaint): New. - -2003-06-30 Andrew Cagney - - * remote.c (remote_write_bytes): Explicitly compute and then use - the payload size. Update comments to reflect. Fixes problem of - GDB not sending small packets as found by Fred Fish. - -2003-06-30 Andrew Cagney - - * remote.c (remote_async_wait): Fix -Wformat problem. - -2003-06-29 Andrew Cagney - - * remote.c (remote_wait): Call error, and not warning, when the - packet is corrupt. - (remote_async_wait): Ditto. - -2003-06-29 Daniel Jacobowitz - - * sparc-tdep.c (sparc_y_regnum): Make external again. - -2003-06-29 Daniel Jacobowitz - - * cli/cli-logging.c (pop_output_files): Add void to function - definition. - -2003-06-29 Andrew Cagney - - * frame.c (frame_register_unwind): Use unsigned char when dumping - the buffer contents. - -2003-06-28 Daniel Jacobowitz - - * cli/cli-logging.c: New file. - * cli-out.c (struct ui_out_data): Add original_stream. - (cli_redirect): New function. - (cli_ui_out_impl): Add cli_redirect. - (cli_out_new): Initialize original_stream. - * ui-out.c (default_ui_out_impl): Add NULL for redirect member. - (uo_redirect, ui_out_redirect): New. - * ui-out.h (struct ui_out_impl): Add redirect member. - (redirect_ftype): New. - (ui_out_redirect): Add prototype. - * Makefile.in: Add rules for cli-logging.c. - * NEWS: Mention "set logging". - -2003-06-27 Elena Zannoni - - * config/powerpc/ppc64-linux.mh (NATDEPFILES): Add linux-nat.o. - -2003-06-27 Andrew Cagney - - * m68hc11-tdep.c (m68hc11_call_dummy_address): Delete function. - (m68hc11_gdbarch_init): Do not set call_dummy_address. - * avr-tdep.c (avr_call_dummy_address): Delete function. - (avr_gdbarch_init): Do not set call_dummy_address. - -2003-06-27 Elena Zannoni - - * symfile.c (syms_from_objfile): Move variables to inner block. - Move the checks for the non-mainline case a bit earlier to avoid - doing some useless computations. - -2003-06-27 Elena Zannoni - - * dwarfread.c (decode_modified_type): Gag new compiler warning. - -2003-06-26 Elena Zannoni - - * dwarf2read.c (dwarf2_locate_sections): Ignore empty .eh_frame - sections. - -2003-06-26 Michael Chastain - - * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1210.cc, - gdb/testsuite/gdb.c++/pr-1210.exp. - -2003-06-26 Andrew Cagney - - * config/djgpp/fnchange.lst: Fix 8.3 problem with sim/ppc's - altivec_expression.h and altivec_registers.h. - -2003-06-26 Andrew Cagney - - * mips-tdep.c (gdb_print_insn_mips): Only explicitly set - info->mach when MIPS16. Patch suggested by Fred Fish. - -2003-06-26 Andrew Cagney - - * utils.c (internal_vproblem): Print the problem to a reason - buffer and then pass to query. Make the msg variable more local. - -2003-06-26 Andrew Cagney - - * gdbarch.sh (FRAME_ARGS_ADDRESS): Add predicate. Deprecate. - (FRAME_LOCALS_ADDRESS): Add predicate. Deprecate. - * gdbarch.h, gdbarch.c: Re-generate. - * frame-base.c (default_frame_args_address): Update. Use - default_frame_base_address when DEPRECATED_FRAME_ARGS_ADDRESS is - not available. - (default_frame_locals_address): Ditto for - DEPRECATED_FRAME_LOCALS_ADDRESS. - * vax-tdep.c (vax_sigtramp_saved_pc): Update. - (vax_frame_num_args): Update. - (vax_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * symtab.h (address_class): Update comments. - * ns32k-tdep.c (ns32k_sigtramp_saved_pc): Update. - * config/sparc/tm-sparc.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. - (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. - * config/pa/tm-hppa64.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. - (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. - (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. - * config/m68k/tm-delta68.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. - * alpha-mdebug-tdep.c: Update. - * ada-lang.c (add_symbols_from_enclosing_procs): Update. - -2003-06-26 Andreas Jaeger - - * x86-64-tdep.c (x86_64_push_arguments): Always set %rax to number - of SSE registers so that varargs functions work. Rework handling - of passing arguments on the stack. - (x86_64_store_return_value): Return double and float values in SSE - register. - -2003-06-24 Michael Chastain - - * PROBLEMS: Document pr gdb/1091 and pr gdb/1193, - the "constructor breakpoints ignored" bug. - -2003-06-25 David Carlton - - * MAINTAINERS: Update e-mail address. - -2003-06-24 Jim Blandy - - * ppc-linux-tdep.c: More "Linux" -> "GNU/Linux". - - * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): New - function. - (ppc_linux_init_abi): Register it as the - CONVERT_FROM_FUNC_PTR_ADDR method under the PPC64 Linux ABI. - - * ppc-linux-tdep.c (ppc64_call_dummy_address): New function. - (ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address - method. - - * ppc-linux-tdep.c (ppc64_desc_entry_point): New function. - (ppc64_standard_linkage_target): Use it. - -2003-06-23 Andrew Cagney - - * rs6000-tdep.c (rs6000_register_virtual_type): Add explict cases - for 0 "int0" and 4 "int32" sized registers. - * gdbtypes.c (builtin_type_int0): Define. - (build_gdbtypes): Initialize builtin_type_int0. - * gdbtypes.h (builtin_type_int0): Declare. - -2003-06-23 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_gdbarch_init): Clear gdb_arch_char_signed - as characters are unsigned. - -2003-06-22 Daniel Jacobowitz - - PR gdb/1179 - * dwarfread.c (struct_type): Skip static fields without crashing. - -2003-06-22 Andrew Cagney - - GDB 6.0 branch created. - * README: Update. - * PROBLEMS: Update. Empty. - * NEWS: Update. - -2003-06-22 Daniel Jacobowitz - - * symfile.c (add_symbol_file_command): Use parse_and_eval_address. - Suggested by Nick Hibma . - -2003-06-22 Andrew Cagney - - * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Handle - GNU_ABI_TAG_FREEBSD and GNU_ABI_TAG_NETBSD. Suggested by Momchil - Velikov. - -2003-06-22 Daniel Jacobowitz - - * cli/cli-cmds.c (shell_escape): Silence warnings from old - compilers. - -2003-06-21 Daniel Jacobowitz - - * c-valprint.c (c_value_print): Add VALUE_OFFSET to the address - argument of val_print. - * cp-valprint.c (cp_print_value): Don't add the offset parameter - to the address argument of baseclass_offset or target_read_memory. - Do add it to the argument of cp_print_value_fields. - -2003-06-21 Andrew Cagney - - * mips-tdep.c: Include "reggroups.h" and "sim-regno.h". - (mips_register_name): Return names for NUM_REGS..2*NUM_REGS - instead of 0..NUM_REGS. - (mips_register_reggroup_p): New function. - (mips_pseudo_register_write): New function. - (mips_pseudo_register_read): New function. - (mips_register_raw_size): For NUM_REGS..2*NUM_REGS return the size - based on the register's type. - (read_next_frame_reg): Simplify. Assert that REGNO is a pseudo / - cooked. - (mips_get_saved_register): Simplify. Assert that REGNO is a - pseudo / cooked. - (mips_register_byte): New function. Use MIPS_REGISTER_BYTE. - (mips_register_type): Replace mips_register_virtual_type. Map - NUM_REGS..2*NUM_REGS onto 0..NUM_REGS. Use MIPS_REGISTER_TYPE - when available. - (read_next_frame_reg): Simplify, but handle SP_REGNUM. Assert - that the register is cooked / virtual. - (mips_frame_saved_pc): Fetch the cooked PC, and not the raw PC. - Only get the extra info when needed. - (set_reg_offset): Save the offset in NUM_REGS..2*NUM_REGS as well. - (mips32_heuristic_proc_desc): Fetch the cooked register. - (heuristic_proc_desc, mips_pop_frame, get_frame_pointer): Ditto. - (mips_init_extra_frame_info, get_frame_pointer): Ditto. - (mips_print_register): Use gdbarch_register_type, instead of - REGISTER_VIRTUAL_TYPE. - (print_gp_register_row): Use gdbarch_register_type, instead of - REGISTER_VIRTUAL_TYPE. Allow for a pseudo / cooked REGNUM. - (mips_print_registers_info): Assert REGNO is pseodo / cooked. - Print the pseudo / cooked registers. - (mips_print_registers_info): Assert REGNO is pseodo / cooked. - Print the pseudo / cooked registers. - (mips_xfer_register): Use regcache_cooked_read_part. Assert that - REG_NUM is pseudo / cooked. - (mips_o32_xfer_return_value): Xfer the pseudo / cooked register. - (mips_n32n64_xfer_return_value): Ditto. - (mips_stab_reg_to_regnum): Map onto NUM_REGS..2*NUM_REGS. - (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Ditto. - (mips_register_sim_regno): New function. - (mips_gdbarch_init): Set deprecated_register_byte, - register_group_p, pseudo_register_write, pseudo_register_read, - register_sim_regno, and num_pseudo_regs. Set register_type, - instead of register_virtual_type. - * Makefile.in (mips-tdep.o): Update dependencies. - * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Rename - REGISTER_VIRTUAL_TYPE. - * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Ditto. - * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Ditto. - * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Rename REGISTER_BYTE. - * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Ditto. - * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Ditto. - -2003-06-21 Daniel Jacobowitz - - * Makefile.in (cli-cmds.o): Depend on $(gdb_vfork_h) - * cli/cli-cmds.c: Include "gdb_vfork.h". - (shell_escape): Use vfork. - -2003-06-21 Andrew Cagney - - * mips-tdep.c (mips_find_saved_regs): Rewrite mdebug code handling - 32 bit floating-point register saves. - - * frame.h (deprecated_unwind_get_saved_register): Delete. - * frame.c (deprecated_unwind_get_saved_register): Delete function. - * mips-tdep.c (mips_get_saved_register): Use frame_register_unwind - and deprecated_get_next_frame_hack instead of - deprecated_unwind_get_saved_register. - - * mips-tdep.c (mips_dump_tdep): Do not print - REGISTER_CONVERT_FROM_TYPE or REGISTER_CONVERT_TO_TYPE. - - * frame.c (get_frame_register): New function. - (frame_unwind_register_signed): New function. - (get_frame_register_signed): New function. - (frame_unwind_register_unsigned): New function. - (get_frame_register_unsigned): New function. - * frame.h: Add comments on naming schema. - (get_frame_register, frame_unwind_register_signed): Declare. - (get_frame_register_signed, get_frame_register_signed): Declare. - (frame_unwind_register_unsigned): Declare. - (get_frame_register_unsigned): Declare. - -2003-06-20 Theodore A. Roth - - * avr-tdep.c (avr_gdbarch_init): Don't call set_gdbarch_bfd_vma_bit. - -2003-06-20 Theodore A. Roth - - * avr-tdep.c (avr_read_pc): Use regcache instead of read_register. - (avr_read_sp): Ditto. - -2003-06-20 Daniel Jacobowitz - - * config/arm/linux.mt: Remove code protected by GDBSERVER define. - * config/arm/nm-linux.h: Likewise. - * config/arm/tm-linux.h: Likewise. - * config/ia64/nm-linux.h: Likewise. - * config/ia64/tm-ia64.h: Likewise. - * config/s390/tm-linux.h: Likewise. - * config/s390/tm-s390.h: Likewise. - * s390-nat.c: Likewise. - * s390-tdep.c: Likewise. - - * config/i386/linux.mt: Don't set GDBSERVER_DEPFILES. - * config/ia64/linux.mt: Likewise. - * config/m68k/linux.mh: Likewise. - * config/mips/linux.mt: Likewise. - * config/powerpc/linux.mh: Likewise. - * config/sh/linux.mt: Likewise. - -2003-06-19 Kris Warkentin - - * solib.c (solib_open): Change tests for whether to search - LD_LIBRARY_PATH and PATH to better deal with remotes. Update - comments. - -2003-06-19 Theodore A. Roth - - * avr-tdep.c (avr_frame_address): Delete function. - (avr_gdbarch_init): Don't call set_gdbarch_frame_args_address, - set_gdbarch_frame_args_address. - -2003-06-19 Andrew Cagney - - * config/mips/tm-mips.h (REGISTER_CONVERT_TO_TYPE): Delete. - (REGISTER_CONVERT_FROM_TYPE): Delete. - (mips_register_convert_to_type): Delete declaration. - (mips_register_convert_from_type): Delete declaration. - * linux-nat.h (struct target_ops): Declare opaque. s/Linux/Linux - kernel/. - -2003-06-19 Michael Snyder - - * linux-nat.h: New file. - * linux-nat.c: Include linux-nat.h. - * lin-lwp.c: Include linux-nat.h. - Move struct lwp_info def to linux-nat.h. - * linux-proc.c: Include linux-nat.h. - (linux_make_note_section): Iterate over lwps instead of threads. - (linux_do_thread_registers): Use lwp instead of merged pid. - * config/nm-linux.h: Move miscelaneous def'ns to linux-nat.h. - * Makefile.in (lin-lwp.o, linux-proc.o, linux-nat.o): - Add dependency on linux_nat_h. - -2003-06-19 Theodore A. Roth - - * avr-tdep.c (avr_extract_return_value): Delete debugging fprintf. - -2003-06-19 Daniel Jacobowitz - - * varobj.c (get_type, get_target_type): Use check_typedef. - -2003-06-19 Daniel Jacobowitz - - * breakpoint.c (insert_catchpoint): Call internal_error. - -2003-06-19 Theodore A. Roth - - * avr-tdep.c (avr_push_dummy_code): Delete function. - (avr_gdbarch_init): Don't call set_gdbarch_push_dummy_code. - -2003-06-19 Daniel Jacobowitz - - * arch-utils.c (default_prepare_to_proceed): Remove. - (generic_prepare_to_proceed): Remove. - * arch-utils.h (default_prepare_to_proceed): Remove prototype. - (generic_prepare_to_proceed): Remove prototype. - * gdbarch.sh (PREPARE_TO_PROCEED): Remove. - * gdbarch.c: Regenerate. - * gdbarch.h: Regenerate. - * hppa-tdep.c (hppa_prepare_to_proceed): Remove dangling prototype. - * hppah-nat.c (hppa_switched_threads): Remove. - * infrun.c (prepare_to_proceed): New static function, copied from - generic_prepare_to_proceed. Remove select_it argument. - (proceed): Call prepare_to_proceed. - * infttrace.c (old_gdb_pid, reported_pid, reported_bpt): Remove - variables. - (ptrace_wait): Don't set the removed variables. - (hppa_switched_threads): Remove. - * lin-lwp.c (lin_lwp_prepare_to_proceed): Remove. - * config/nm-linux.h (PREPARE_TO_PROCEED): Don't define. - (lin_lwp_prepare_to_proceed): Remove prototype. - * config/i386/nm-x86-64linux.h (PREPARE_TO_PROCEED): Don't undefine. - * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Don't define. - -2003-06-18 Theodore A. Roth - - * avr-tdep.c: Include frame.h, frame-unwind.h, frame-base.h, and - trad-frame.h. - (AVR_MAX_PROLOGUE_SIZE): Increase from 56 to 64. - (AVR_ARG1_REGNUM, AVR_ARGN_REGNUM): Define. - (AVR_RET1_REGNUM, AVR_RETN_REGNUM): Define. - (AVR_PROLOGUE_*): Enumerate prologue types. - (struct frame_extra_info): Remove. - (struct avr_unwind_cache): Define. - (avr_write_sp): Delete function. - (avr_read_fp): Ditto. - (avr_init_extra_frame_info): Ditto. - (avr_pop_frame): Ditto. - (avr_frame_saved_pc): Ditto. - (avr_saved_pc_after_call): Ditto. - (avr_push_return_address): Ditto. - (avr_frame_chain): Ditto. - (avr_store_struct_return): Ditto. - (avr_push_arguments): Ditto. - (avr_scan_prologue): Update comments. Changed to set up the info for - cache unwinding. Now returns end of prologue PC. - (avr_skip_prologue): Better handling of functions lacking a prologue - by using avr_scan_prologue. - (avr_scan_arg_moves): New function. - (avr_saved_regs_unwinder): Ditto. - (avr_frame_unwind_cache): Ditto. - (avr_unwind_pc): Ditto. - (avr_frame_this_id): Ditto. - (avr_frame_prev_register): Ditto. - (avr_frame_p): Ditto. - (avr_frame_base_address ): Ditto. - (avr_unwind_dummy_id): Ditto. - (avr_push_dummy_code): Ditto. - (push_stack_item): Ditto. - (pop_stack_item): Ditto. - (avr_push_dummy_call): Ditto. - (struct stack_item): Define. - (avr_frame_unwind): Declare structure. - (avr_frame_base): Ditto. - (avr_gdbarch_init): Remove calls to - set_gdbarch_deprecated_init_frame_pc, - set_gdbarch_deprecated_target_read_fp, - set_gdbarch_deprecated_dummy_write_sp, - set_gdbarch_deprecated_fp_regnum, - set_gdbarch_deprecated_push_arguments, - set_gdbarch_deprecated_push_return_address, - set_gdbarch_deprecated_pop_frame, - set_gdbarch_deprecated_store_struct_return, - set_gdbarch_deprecated_frame_init_saved_regs, - set_gdbarch_deprecated_init_extra_frame_info, - set_gdbarch_deprecated_frame_chain, - set_gdbarch_deprecated_frame_saved_pc, - set_gdbarch_deprecated_saved_pc_after_call. - Add calls to set_gdbarch_push_dummy_call, - set_gdbarch_push_dummy_code, - frame_unwind_append_predicate, - frame_base_set_default, - set_gdbarch_unwind_dummy_id, - set_gdbarch_unwind_pc. - Wrap a long line. - -2003-06-18 Corinna Vinschen - - * h8300-tdep.c (h8300s_register_name): Enable MACH and MACL - registers for H8/300S. - (h8300_print_registers_info): Ditto. - (h8300_gdbarch_init): Accommodate register count for H8/300S. - -2003-06-18 Daniel Jacobowitz - - * config/nm-linux.h (linux_record_stopped_pid): New prototype. - * lin-lwp.c (child_wait): Call linux_record_stopped_pid. - (lin_lwp_wait): Likewise. Update comments. - * linux-nat.c (struct simple_pid_list, add_to_pid_list) - (pull_pid_from_list, linux_record_stopped_pid): New. - -2003-06-17 Stephane Carrez - - * ada-lang.c (scan_discrim_bound): Name first argument. - (ada_add_block_symbols): Remove BLOCK_SYM to use local variable - declared by ALL_BLOCK_SYMBOLS. - -2003-06-17 Stephane Carrez - - * ada-tasks.c (find_function_in_inferior): Don't declare it. - ("regcache.h"): Include it. - * ada-lex.l (block_lookup): Replace VAR_NAMESPACE with VAR_DOMAIN. - -2003-06-17 Daniel Jacobowitz - - * NEWS: Mention gdbserver detach change and "disconnect" command. - * infcmd.c (disconnect_command): New function. - (_initialize_infcmd): Add ``disconnect'' command. - * remote.c (remote_async_detach): Delete. - (remote_detach): Merge remote_async_detach. - (remote_disconnect): New. - (init_remote_ops): Set to_disconnect. - (init_remote_cisco_ops): Likewise. - (init_remote_async_ops): Likewise. Use remote_detach. - * target.c (cleanup_target): Default to_disconnect. - (update_current_target): Inherit to_disconnect. - (target_disconnect, debug_to_disconnect): New functions. - (setup_target_debug): Set to_disconnect. - * target.h (struct target_ops): Add to_disconnect. - (target_disconnect): Add prototype. - -2003-06-17 Daniel Jacobowitz - - * breakpoint.c (insert_catchpoint): New function. - (insert_breakpoints): Use catch_exceptions to call - insert_catchpoint. Disable catchpoints if they fail to insert. - -2003-06-17 Daniel Jacobowitz - - * symfile.c (reread_symbols): Clear sym_private. - -2003-06-17 Andrew Cagney - - * trad-frame.h (struct frame_info): Add opaque declaration. - * remote-fileio.h (struct cmd_list_element): Add opaque - declaration. - * h8300-tdep.c (h8300s_register_name): Avoid C++ // style - comments. - -2003-06-17 Daniel Jacobowitz - - * remote.c (remote_prepare_to_store): Replace call to - deprecated_read_register_bytes with multiple regcache_raw_read - calls. - -2003-06-17 Kris Warkentin - - * nto-tdep.c (nto_map_arch_to_cputype): Recognize "powerpc". - (nto_find_and_open_solib): Likewise. - (nto_init_solib_absolute_prefix): Likewise. - (_initialize_nto_tdep): Fix indentation. - -2003-06-17 Kris Warkentin - - * i386-nto-tdep.c (i386nto_sigcontext_addr): Make sp a CORE_ADDR. - -2003-06-17 Kris Warkentin - - * i386-nto-tdep.c (i386nto_sigcontext_addr): Declare sp before using. - -2003-06-17 Jim Blandy - - * ppc-linux-tdep.c: "Linux" -> "GNU/Linux" - -2003-06-16 Theodore A. Roth - - * avr-tdep.c (avr_extract_return_value): New function. - (avr_gdbarch_init): Set extract_return_value method. - -2003-06-16 Andrew Cagney - - * frame.h (deprecated_get_next_frame_hack): Declare. - * frame.c (legacy_saved_regs_prev_register): Only require - DEPRECATED_FRAME_INIT_SAVED_REGS when it is needed. Assert that - there are always saved regs. - (deprecated_generic_get_saved_register): Do not require - DEPRECATED_FRAME_INIT_SAVED_REGS. - (legacy_get_prev_frame): Do not require DEPRECATED_FRAME_CHAIN, - use frame ID unwind instead. - (deprecated_get_next_frame_hack): New function. - -2003-06-16 Corinna Vinschen - - * h8300-tdep.c (h8300_push_arguments): Remove. Substitute by... - (h8300_push_dummy_call): ...this function. Some minor optimization. - (h8300_push_return_address): Remove. - (h8300_gdbarch_init): Remove calls to - set_gdbarch_deprecated_dummy_write_sp, - set_gdbarch_deprecated_push_arguments and - set_gdbarch_deprecated_push_return_address. - Add call to set_gdbarch_push_dummy_call. - -2003-06-16 Corinna Vinschen - - * h8300-tdep.c (E_PSEUDO_CCR_REGNUM): New define. - (E_PSEUDO_EXR_REGNUM): Ditto. - (h8300_is_argument_spill): Check for instructions moving argument - registers into safe registers. - (h8300_skip_prologue): Check for stm instruction to push registers - used for register variables onto stack. - (gdb_print_insn_h8300): Remove. - (h8300_examine_prologue): Add a comment. - (h8300_register_name): Take pseudo registers into account. - (h8300s_register_name): Ditto. - (h8300sx_register_name): Ditto. - (h8300_print_register): Ditto. - (h8300_print_registers_info): Define "nice" printing order. - (h8300_saved_pc_after_call): Take pseudo registers into account. - (h8300_register_type): Ditto. Return type used for remote connection - when requesting real CCR or EXR register, return actual type when - requesting pseudo CCR or EXR. - (h8300_pseudo_register_read): New function. - (h8300_pseudo_register_write): Ditto. - (h8300_dbg_reg_to_regnum): Ditto. - (h8300s_dbg_reg_to_regnum): Ditto. - (h8300_gdbarch_init): Call set_gdbarch_num_pseudo_regs, - set_gdbarch_ecoff_reg_to_regnum, set_gdbarch_dwarf_reg_to_regnum, - set_gdbarch_dwarf2_reg_to_regnum, set_gdbarch_stab_reg_to_regnum and - set_gdbarch_print_insn architecture dependent. - Call set_gdbarch_pseudo_register_read and - set_gdbarch_pseudo_register_write. - (_initialize_h8300_tdep): Remove assignment to deprecated_tm_print_insn. - -2003-06-16 Andrew Cagney - - * gdbarch.sh (SAVE_DUMMY_FRAME_TOS): Deprecate. - * gdbarch.h, gdbarch.c: Re-generate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * infcall.c (call_function_by_hand): Update. - * ia64-tdep.c (ia64_push_arguments): Update comment. - * frame.c (legacy_get_prev_frame): Do not assume - SAVE_DUMMY_FRAME_TOS_P. - * dummy-frame.c (find_dummy_frame): Update comment. - -2003-06-16 Andrew Cagney - - * regcache.c (do_cooked_read): Do not use register_valid_p. - -2003-06-15 Theodore A. Roth - - * avr-tdep.c (avr_register_type): Remove a blank line. - (avr_scan_prologue): Correct some comments. - -2003-06-15 Theodore A. Roth - - * avr-tdep.c (avr_scan_prologue): Update comment describing the various - prologue types. - Properly scan prologues generated by gcc with the -mcall-prologues - option. - Add code to scan -mcall-prologues for mega devices. - -2003-06-15 Theodore A. Roth - - * avr-tdep.c (avr_register_byte): Delete function. - (avr_register_raw_size): Delete function. - (avr_register_virtual_size): Delete function. - (avr_register_virtual_type): Delete function. - (avr_register_type): New function. - (avr_address_to_pointer): Remove unused code. - (avr_read_fp): Need to read FP as two separate bytes due to change to - avr_register_type() usage. - (avr_gdbarch_init): Don't set deprecated_register_size. - Don't set deprecated_register_bytes. - Don't set deprecated_register_byte. - Don't set deprecated_register_raw_size. - Don't set deprecated_max_register_raw_size. - Don't set deprecated_register_virtual_size. - Don't set deprecated_max_register_virtual_size. - Don't set deprecated_register_virtual_type. - Set register_type method. - -2003-06-15 Daniel Jacobowitz - - * Makefile.in (linux-nat.o): Add rule. - * linux-nat.c: New file. - * config/nm-linux.h (CHILD_INSERT_FORK_CATCHPOINT): Define. - (CHILD_INSERT_VFORK_CATCHPOINT): Define. - (CHILD_INSERT_EXEC_CATCHPOINT): Define. - * config/alpha/alpha-linux.mh (NATDEPFILES): Add linux-nat.o. - * config/arm/linux.mh (NATDEPFILES): Likewise. - * config/i386/linux.mh (NATDEPFILES): Likewise. - * config/i386/x86-64linux.mh (NATDEPFILES): Likewise. - * config/ia64/linux.mh (NATDEPFILES): Likewise. - * config/m68k/linux.mh (NATDEPFILES): Likewise. - * config/mips/linux.mh (NATDEPFILES): Likewise. - * config/powerpc/linux.mh (NATDEPFILES): Likewise. - * config/s390/s390.mh (NATDEPFILES): Likewise. - * config/sparc/linux.mh (NATDEPFILES): Likewise. - -2003-06-15 Mark Kettenis - - * i387-tdep.c: Reorder includes, fix some whitespace issues and - replace out-of-date comment. - -2003-06-15 Andrew Cagney - - * rdi-share/host.h (Fail): Change to a varargs function. - * remote-rdi.c (Fail): Update. - -2003-06-15 Mark Kettenis - - * i386-tdep.c (i386_next_regnum): Fix bounds checking. - (i386_convert_register_p, i386_register_to_value, - i386_register_from_value): Handle types longer than 8 bytes. - -2003-06-15 Mark Kettenis - - * i386-tdep.c (i386_register_to_value, i386_value_to_register): - Move floating-point code to new function in i387-tdep.c. - * i387-tdep.c (i387_register_to_value, i387_value_to_register): - New functions containing code moved here from i386-tdep.c. - * i387-tdep.h: Add opaque declaration for `struct type'. - (i387_register_to_value, i387_value_to_register): New prototypes. - * x86-64-tdep.c (x86_64_convert_register_p): New function. - (x86_64_init_abi): Set convert_register_p, register_to_value and - value_to_register here. - -2003-06-14 Andrew Cagney - - * mips-tdep.c (mips_register_to_value): Make static. - (mips_value_to_register): Make static. - * i386-tdep.c (i386_fetch_pointer_argument): Make static. - * ia64-tdep.c (ia64_register_raw_size): Make static. - (ia64_register_virtual_size): Make static. - (ia64_register_byte): Make static. - * i387-tdep.c: Include "i387-tdep.h". - (print_387_control_word): Delete function. - (print_387_status_word): Delete function. - (print_387_status_bits): Delete function. - (print_387_control_bits): Delete function. - * Makefile.in (i387-tdep.o): Update dependencies. - * rdi-share/host.h (Fail): Declare. - * remote-rdi.c (Fail): Update to match declaration. - -2003-06-14 Andrew Cagney - - * config/mips/embedl64.mt (TDEPFILES): Delete "remote-array.o". - * config/mips/embedl.mt (TDEPFILES): Delete "remote-array.o". - * config/mips/embed64.mt (TDEPFILES): Delete "remote-array.o". - * config/djgpp/fnchange.lst: Delete "remote-array.c". - * README: Delete reference to remote-array. - * Makefile.in (ALLDEPFILES): Remove "remote-array.c". - (remote-array.o): Delete target. - * config/mips/embed.mt (TDEPFILES): Delete "remote-array.o". - * remote-array.c: Delete file. - -2003-06-14 Andrew Cagney - Mark Kettenis - - * gdbarch.sh (CONVERT_REGISTER_P): Add "type" parameter. - (REGISTER_TO_VALUE, VALUE_TO_REGISTER): Replace raw buffer - parameter with "frame". - * gdbarch.h, gdbarch.c: Re-generate. - * frame.h (put_frame_register): Declare. - * frame.c (put_frame_register): New function. - * arch-utils.c (legacy_convert_register_p): Add "type" parameter. - (legacy_register_to_value): Rewrite, use "frame" to get the - register value. - (legacy_value_to_register): Rewrite, use "frame" to find the - register's location before storing. - * arch-utils.h (legacy_convert_register_p): Update. - (legacy_register_to_value, legacy_value_to_register): Update. - * findvar.c (value_from_register): Rewrite, eliminate use of - REGISTER_CONVERT_TO_TYPE, pass "type" to CONVERT_REGISTER_P, pass - "frame" to REGISTER_TO_VALUE. - * valops.c (value_assign): Move the CONVERT_REGISTER code to the - lval_reg_frame_relative + lval_register branch of the switch. Do - not use REGISTER_CONVERT_FROM_TYPE. Use put_frame_register. - * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM, - I386_EDI_REGNUM): New defines. - (i386_next_regnum, i386_convert_register_p, - i386_register_to_value, i386_value_to_register): New functions. - (i386_register_convertible, i386_register_convert_to_virtual, - i386_convert_to_raw): Remove functions. - (i386_gdbarch_init): Set convert_register_p, register_to_value and - value_to_register instead of register_convertible, - register_convert_to_virtual and register_convert_to_raw. - * mips-tdep.c (mips_convert_register_p): New function. - (mips_value_to_register): Replace mips_register_convert_from_type. - (mips_register_to_value): Replace mips_register_convert_to_type. - (mips_gdbarch_init): Set conver_register_p, value_to_register and - register_to_value. - * alpha-tdep.c (alpha_convert_register_p): Update. - (alpha_value_to_register): Update, store the register. - (alpha_register_to_value): Update, fetch the register. - -2003-06-14 Theodore A. Roth - - * avr-tdep.c (avr_remote_translate_xfer_address): Delete function. - (avr_gdbarch_init): Remove avr_call_dummy_words variable. - Don't set deprecated_call_dummy_words. - Remove commented out set_gdbarch_believe_pcc_promotion() call. - Don't set remote_translate_xfer_address. - (avr_io_reg_read_command): Remove commented out debug printf. - Wrap a long line. - -2003-06-14 Theodore A. Roth - - * avr-tdep.c (avr_scan_prologue): Fix to avoid a buffer over run which - causes gdb to seg fault. - -2003-06-14 Daniel Jacobowitz - - * sparc-nat.c (fetch_inferior_registers): Correct - a reference to "registers". - -2003-06-14 Jeroen Dekkers - - * Makefile.in (exc_request_U_h): Define - (exc_request_S_h): Likewise. - (msg_reply_S_h): Likewise. - (msg_U_h): Likewise. - (notify_S_h): Likewise. - (process_reply_S_h): Likewise. - (gnu-nat.o): Depend on gdb_obstack_h - * gnu-nat.c: Include "gdb_obstack.h". - -2003-06-13 Andrew Cagney - - * gdbarch.sh: Document what PUSH_DUMMY_CALL replaces. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-06-13 Andrew Cagney - - * gdbarch.sh: Document what UNWIND_DUMMY_ID replaces. Clarify - when deprecated REGISTER macros can be deleted. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-06-13 Jim Blandy - - * solib-svr4.c (solib_break_names): Recognize the 64-bit PowerPC - Linux entry point symbols for _dl_debug_state, too. - -2003-06-13 Andrew Cagney - - * infcall.c (call_function_by_hand): When UNWIND_DUMMY_ID is - available, do not use the FP register, and always save the TOS. - * dummy-frame.c (dummy_frame_this_id): Do not assert - SAVE_DUMMY_FRAME_TOS. - * i386-tdep.c (i386_save_dummy_frame_tos): Delete function. - (i386_gdbarch_init): Do not set save_dummy_frame_tos. - (i386_push_dummy_call): Add 8 to the returned SP. - * frame.c (legacy_frame_p): Do not require SAVE_DUMMY_FRAME_TOS. - * d10v-tdep.c (d10v_unwind_dummy_id): Use d10v_unwind_sp. - (d10v_gdbarch_init): Do not set save_dummy_frame_tos. - * x86-64-tdep.c (x86_64_save_dummy_frame_tos): Delete function. - (x86_64_push_dummy_call): Return "sp + 16". - (x86_64_init_abi): Do not set save_dummy_frame_tos. - * alpha-tdep.c (alpha_gdbarch_init): Do not set - save_dummy_frame_tos. - -2003-06-13 Jim Blandy - - * frv-tdep.c (frv_use_struct_convention): Delete static - declaration for function deleted in my change of 2003-06-12. - -2003-06-13 Theodore A. Roth - - * avr-tdep.c (avr_address_to_pointer): Shift code addrs right 1 bit. - (avr_pointer_to_address): Shift code addrs left 1 bit. - (avr_convert_from_func_ptr_addr): Delete function since operation is - better handled by avr_address_to_pointer and avr_pointer_to_address. - (avr_gdbarch_init): Don't set convert_from_func_ptr_add method. - -2003-06-13 Mark Kettenis - - From Kelley Cook : - * configure.host: Accept i[34567]86 variants. - * configure.tgt: Likewise. - * nlm/configure.in: Likewise. - * nlm/configure: Regenerated. - -2003-06-13 Richard Earnshaw - - * arm-tdep.c (solib-svr4.h): Dont' include it. - (arm_linux_svr4_fetch_link_map_offsets): Move to ... - * arm-linux-tdep.c: ... here. Make static. - (arm_linux_init_abi): Register it. - (solib-svr4.h): Include it. - * Makefile.in: Update dependencies. - * config/arm/tm-linux.h (SVR4_FETCH_LINK_MAP_OFFSETS): Delete. - (arm_linux_svr4_fetch_link_map_offsets): Delete declaration. - -2003-06-13 Corinna Vinschen - - * h8300-tdep.c: Add definitions E_RET0_REGNUM and E_RET1_REGNUM to - indicate registers used for return values. - (struct frame_extra_info): Drop args_pointer and locals_pointer. - (h8300_examine_prologue): Remove initializing dropped frame_extra_info - members. - (h8300_init_extra_frame_info): Ditto. - (h8300_frame_locals_address): Removed. - (h8300_frame_args_address): Removed. - (h8300_extract_return_value): Use new regcache structure. Only care - for 16 bit CPUs. - (h8300h_extract_return_value): Same function for 32 bit CPUs. - (h8300_store_return_value): Use new regcache structure. Only care - for 16 bit CPUs. - (h8300h_store_return_value): Same function for 32 bit CPUs. - (h8300_store_struct_return): Removed. - (h8300_extract_struct_value_address): Use new regcache structure. - (h8300h_extract_struct_value_address): Removed. - (h8300_push_dummy_code): New function. - (h8300_gdbarch_init): Slightly rearranged to stress deprecated calls. - Remove call_dummy_words. Call set_gdbarch_extract_return_value and - set_gdbarch_store_return_value architecture dependent. - Call set_gdbarch_push_dummy_code and - set_gdbarch_extract_struct_value_address. - Remove calls to set_gdbarch_frame_args_address, - set_gdbarch_frame_locals_address, - set_gdbarch_deprecated_store_struct_return, - set_gdbarch_deprecated_extract_return_value, - set_gdbarch_deprecated_extract_struct_value_address, - set_gdbarch_deprecated_call_dummy_words and - set_gdbarch_deprecated_sizeof_call_dummy_words. - -2003-06-13 Corinna Vinschen - - * h8300-tdep.c (h8300_register_byte): Remove. - (h8300h_register_byte): Remove. - (h8300_register_virtual_type): Remove. Substitute by... - (h8300_register_type): New function. - (h8300_extract_struct_value_address): Drop usage of h8300_register_byte. - (h8300h_extract_struct_value_address): Ditto. - (h8300_gdbarch_init): Drop calls to - set_gdbarch_deprecated_register_byte and - set_gdbarch_deprecated_register_virtual_type. - Add call to set_gdbarch_register_type. - -2003-06-13 Andrew Cagney - - * gdbarch.sh: Update comments on registers. - (deprecated_register_byte): Rename register_byte. - (deprecated_register_raw_size): Rename register_raw_size. - (deprecated_register_virtual_size): Rename register_virtual_size. - (deprecated_register_virtual_type): Rename register_virtual_type. - * gdbarch.h, gdbarch.c: Re-generate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c: Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - -2003-06-13 Andrew Cagney - - * mips-tdep.c (mips_gdbarch_init): Replace remaining instances of - mips_o32_use_struct_convention with always_use_struct_convention. - -2003-06-12 David Carlton - - * cp-namespace.c (cp_set_block_scope): Comment out - processing_has_namespace_info branch. - -2003-06-12 Jim Blandy - - Recognize and skip 64-bit PowerPC Linux linkage functions. - * ppc-linux-tdep.c (insn_d, insn_ds, insn_xfx, read_insn, struct - insn_pattern, insns_match_pattern, d_field, ds_field): New - functions, macros, and types for working with PPC instructions. - (ppc64_standard_linkage, PPC64_STANDARD_LINKAGE_LEN, - ppc64_in_solib_call_trampoline, ppc64_standard_linkage_target, - ppc64_skip_trampoline_code): New functions, variables, and macros - for recognizing and skipping linkage functions. - (ppc_linux_init_abi): Use ppc64_in_solib_call_trampoline and - ppc64_skip_trampoline_code for the 64-bit PowerPC Linux ABI. - - * ppc-linux-nat.c (ppc_register_u_addr): Correctly compute u-area - register offsets for both the 32- and 64-bit interfaces. - - Actually finish the job started by my change of 2003-05-29. - * config/powerpc/tm-linux.h (SKIP_TRAMPOLINE_CODE): Remove the - other #definition of this. - (ppc_linux_skip_trampoline_code): Remove declaration. - * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Make this - static. - (ppc_linux_init_abi): Register it as the skip_trampoline_code - method for GDBARCH. - - * config/powerpc/nm-ppc64-linux.h (PTRACE_XFER_TYPE): This is - 'long' on ppc64-*-linux*. - - * ppc-linux-nat.c (ppc_register_u_addr, fill_gregset): If PT_MQ - isn't #defined, assume the register doesn't exist: act as if - tdep->ppc_mq_regnum were -1. - - * configure.host, configure.tgt: Add entries for - powerpc64-*-linux, selecting powerpc/ppc64-linux.mh and - powerpc/linux.mt. - * config/powerpc/ppc64-linux.mh, config/powerpc/nm-ppc64-linux.mh: - New files. - - * arch-utils.c (always_use_struct_convention): New function. - * arch-utils.h (always_use_struct_convention): New prototype. - * alpha-tdep.c (alpha_use_struct_convention): Delete. - (alpha_gdbarch_init): Register always_use_struct_convention, - instead of alpha_use_struct_convention. - * cris-tdep.c (cris_use_struct_convention): Delete. - (cris_gdbarch_init): Register always_use_struct_convention, - instead of cris_use_struct_convention. - * frv-tdep.c (frv_use_struct_convention): Delete. - (frv_gdbarch_init): Register always_use_struct_convention, - instead of frv_use_struct_convention. - * h8300-tdep.c (h8300_use_struct_convention): Delete. - (h8300_gdbarch_init): Register always_use_struct_convention, - instead of h8300_use_struct_convention. - * mips-tdep.c (mips_o32_use_struct_convention): Delete. - (mips_o32_gdbarch_init): Register always_use_struct_convention, - instead of mips_o32_use_struct_convention. - -2003-06-12 Andrew Cagney - - * wince.c: Include "mips-tdep.h". - * mips-tdep.h (mips_next_pc): Declare. - * mcore-tdep.c: Make more local functions static. - * Makefile.in (wince.o): Update dependencies. - -2003-06-12 David Carlton - - * symtab.c (lookup_symbol_aux_minsyms): Replace - DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME. - (find_pc_sect_line, search_symbols, rbreak_command): Ditto. - (COMPLETION_LIST_ADD_SYMBOL): Rewrite in terms of - SYMBOL_NATURAL_NAME. - -2003-06-12 Andreas Schwab - - * Makefile.in (tuiDisassem.o): Update dependencies. - -2003-06-12 David Carlton - - * symtab.h: Delete declaration of make_symbol_overload_list. - Add declaration of lookup_partial_symbol. - * symtab.c (remove_params): Move to cp-support.c. - (overload_list_add_symbol, make_symbol_overload_list) - (sym_return_val_size, sym_return_val_index): Ditto. - (lookup_partial_symbol): Make extern. - * cp-support.h: Add declaration of make_symbol_overload_list. - * cp-support.c: Include dictionary.h, objfiles.h, frame.h, - symtab.h, and block.h. - (remove_params): Move here from symtab.c. - (overload_list_add_symbol, make_symbol_overload_list) - (sym_return_val_size, sym_return_val_index): Ditto. - * valops.c: Include cp-support.h. - * Makefile.in (cp-support.o): Depend on dictionary_h, objfiles_h, - frame_h, and block_h. - (valops.o): Depend on cp_support_h. - -2003-06-12 Corinna Vinschen - - * h8300-tdep.c: Add H8SX registers. Drop E_NUM_REGS entirely, - substitute by NUM_REGS throughout. - (h8300_register_name): Only care for H8/300 and H8/300H registers. - (h8300s_register_name): New function for H8S registers. - (h8300sx_register_name): Ditto for H8SX registers. - (h8300_print_register): Revise register printing, avoid depending - on 32 bit long. - (h8300_register_byte): Only care for H8/300 registers. - (h8300h_register_byte): New function for any other architecture. - (h8300_register_raw_size): Remove. - (h8300_register_virtual_type): Revise to return actually useful - type. - (h8300_extract_struct_value_address): Only care for H8/300 registers. - (h8300h_extract_struct_value_address): New function for any other - architecture. - (h8300_gdbarch_init): Add h8300sxn. Call set_gdbarch_num_regs, - set_gdbarch_register_name, set_gdbarch_register_byte, - set_gdbarch_ptr_bit and set_gdbarch_addr_bit architecture dependent. - Remove calls to set_gdbarch_deprecated_register_size, - set_gdbarch_deprecated_register_bytes, set_gdbarch_register_raw_size, - set_gdbarch_deprecated_max_register_raw_size, - set_gdbarch_register_virtual_size and - set_gdbarch_deprecated_max_register_virtual_size entirely. - Call set_gdbarch_long_long_bit, set_gdbarch_double_bit and - set_gdbarch_long_double_bit. - -2003-06-11 Jeff Johnston - - * doublest.c (convert_doublest_to_floatformat): When dealing - with the implied integer bit, only alter mant_bits if we are - processing a full 32 bits of mantissa. - -2003-06-11 David Carlton - - * dictionary.h: New. - * dictionary.c: New. - * block.h: Add opaque declaration for struct dictionary. - (struct block): Add 'dict' member; delete 'hashtable', 'nsyms', - 'sym' members. - (BLOCK_DICT): New macro. - Delete macros BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM, - BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE, - BLOCK_SHOULD_SORT. - (ALL_BLOCK_SYMBOLS): Update definition. - * Makefile.in (SFILES): Add dictionary.c. - (dictionary_h): New. - (COMMON_OBS): Add dictionary.o. - (dictionary.o): New. - (ada-lang.o): Depend on dictionary_h. - (buildsym.o, coffread.o, jv-lang.o, mdebugread.o, objfiles.o) - (stack.o, symmisc.o, symtab.o, tracepoint.o, valops.o) - (mi-cmd-stack.o): Ditto. - (gdbtk-cmds.o): Update dependencies. - (gdbtk-stack.o): Ditto. - * ada-lang.c: Include dictionary.h. - (symtab_for_sym): Update uses of ALL_BLOCK_SYMBOLS. - (fill_in_ada_prototype, debug_print_block): Ditto. - (ada_add_block_symbols): Update uses of ALL_BLOCK_SYMBOLS; replace - explicit iteration by use of ALL_BLOCK_SYMBOLS. Delete variable - 'is_sorted'. - * mdebugread.c: Include dictionary.h. - (struct parse_stack): Delete 'maxsyms' member. - (parse_symbol): Update calls to new_block. Delete calls to - shrink_block. Use dictionary methods. - (psymtab_to_symtab_1): Delete calls to sort_symtab_syms. - Update calls to new_symtab. Don't maintain maxsyms data. - (mylookup_symbol): Update use of ALL_BLOCK_SYMBOLS. - (add_symbol): Just call dict_add_symbol. - (new_symtab): Delete 'maxsyms' argument. - (new_symtab): Update calls to new_block. - (new_block): Delete 'maxsyms' argument; add 'function' argument. - (shrink_block): Delete function. - (fixup_sigtramp): Update call to new_block. Add symbol via - dict_add_symbol. - * jv-lang.c: Include dictionary.h. - (get_java_class_symtab): Set the BLOCK_DICT of the blocks - appropriately. Set class_symtab->free_func. Make sure the - blockvector is big enough to hold two blocks. - (add_class_symtab_symbol): Use dictionary methods. - (free_class_block): New function. - (type_from_class): Replace explicit iteration by - ALL_BLOCK_SYMBOLS. - * symtab.h (struct symtab): Replace 'free_ptr' method by - 'free_func'. - * dwarf2read.c (psymtab_to_symtab_1): Delete call to - sort_symtab_syms. - * dwarfread.c (psymtab_to_symtab_1): Delete call to - sort_symtab_syms. - * coffread.c (coff_symfile_read): Delete call to sort_symtab_syms. - Include dictionary.h. - (patch_opaque_types): Update use of ALL_BLOCK_SYMBOLS. - * dbxread.c (dbx_psymtab_to_symtab_1): Delete call to - sort_symtab_syms. - * objfiles.c: Include dictionary.h. - (objfile_relocate): Update use of ALL_BLOCK_SYMBOLS. - * buildsym.c: Include dictionary.h. - (finish_block): Use dictionary methods. - (end_symtab): Set free_func to NULL, not free_ptr. - * tracepoint.c: Include dictionary.h. - (add_local_symbols): Update use of ALL_BLOCK_SYMBOLS. - (scope_info): Ditto. - * stack.c: Include dictionary.h. - (print_block_frame_locals): Update use of ALL_BLOCK_SYMBOLS. - (print_block_frame_labels, print_frame_arg_vars) - (print_frame_args): Ditto. - * symmisc.c (free_symtab_block): Use dictionary methods. - (dump_symtab): Ditto. - (free_symtab): Replace use of 'free_ptr' by 'free_func'. - Include dictionary.h. - * symfile.h: Delete declarations of sort_block_syms, - sort_symtab_syms. - * symfile.c (sort_block_syms): Delete. - (sort_symtab_syms): Delete. - * symtab.c: Include dictionary.h. - (lookup_block_symbol): Use dictionary iterators. - (find_pc_sect_symtab): Update use of ALL_BLOCK_SYMBOLS. - (search_symbols, make_symbol_completion_list): Ditto. - (make_symbol_overload_list): Ditto. - * valops.c (value_of_local): Use dict_empty. - Include dictionary.h. - -2003-06-11 J. Brobecker - - * win32-nat.c (solib_symbols_add): Fix a small compilation error. - -2003-06-11 David Carlton - - * block.h (BLOCK_SHOULD_SORT): Delete. - * symtab.c (lookup_block_symbol): Don't worry about sorted linear - blocks. - * ada-lang.c (ada_add_block_symbols): Ditto. - * symfile.c (sort_block_syms): Delete. - (sort_symtab_syms): Ditto. - * symfile.h: Delete sort_symtabs_syms and sort_block_syms - declarations. - * coffread.c (coff_symfile_read): Don't call sort_symtab_syms. - * dbxread.c (dbx_psymtab_to_symtab_1): Ditto. - * dwarf2read.c (psymtab_to_symtab_1): Ditto. - * dwarfread.c (psymtab_to_symtab_1): Ditto. - * hpread.c (hpread_psymtab_to_symtab_1): Ditto. - * mdebugread.c (psymtab_to_symtab_1): Ditto. - * xcoffread.c (xcoff_psymtab_to_symtab_1): Ditto. - -2003-06-11 Jeff Johnston - - * ia64-tdep.c (ia64_gdbarch_init): Set number of long double - bits to 128. - -2003-06-11 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Deprecate - REGISTER_CONVERTIBLE. - (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL): Same. - (DEPRECATED_REGISTER_CONVERT_TO_RAW): Same, make "from" constant. - * gdbarch.h, gdbarch.c: Re-generate. - * arch-utils.h (deprecated_register_convertible_not): Rename - generic_register_convertible_not. - * arch-utils.c (deprecated_register_convertible_not): Rename - generic_register_convertible. - (legacy_convert_register_p, legacy_register_to_value): Update. - * sh-tdep.c (sh64_push_arguments): Update. - * m68klinux-tdep.c (m68k_linux_extract_return_value): Update. - * config/m68k/tm-delta68.h (DEPRECATED_EXTRACT_RETURN_VALUE): Update. - * m68klinux-tdep.c (m68k_linux_store_return_value): Update. - * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Update. - * arch-utils.c (legacy_value_to_register): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - (rs6000_register_convert_to_raw): Make parameter "from" const. - * mips-tdep.c (mips_gdbarch_init): Update. - (mips_register_convert_to_raw): Make parameter"virt_buf" const. - * infcmd.c (default_print_registers_info): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - (ia64_register_convert_to_raw): Make parameter "from" const. - * i386-tdep.c (i386_gdbarch_init): Update. - (i386_register_convert_to_raw): Update. - -2003-06-11 Andrew Cagney - - * remote-fileio.c: Include "remote-fileio.h". - * Makefile.in (remote-fileio.o): Update dependencies. - (remote_fileio_h): Fix typo. - -2003-06-11 Andrew Cagney - - * xstormy16-tdep.c (xstormy16_push_return_address): Make static. - (xstormy16_save_dummy_frame_tos): Make static. - (_initialize_xstormy16_tdep): Add declaration. - * vax-tdep.c (_initialize_vax_tdep): Add declaration. - * v850-tdep.c: Make local functions static. - (_initialize_v850_tdep): Add declaration. - * sparc-tdep.c: Make local functions static. - (_initialize_sparc_tdep): Add declaration. - * sh-tdep.c: Make local functions static. - (_initialize_sh_tdep): Add declaration. - * sh3-rom.c (_initialize_sh3_rom): Add declaration. - * s390-tdep.c: Make local functions static. - (_initialize_s390_tdep): Add declaration. - * dbxread.c (find_stab_function_addr): Make static. - * ppc-bdm.c (_initialize_bdm_ppc): Add declaration. - * ocd.c (_initialize_remote_ocd): Add declaration. - * dink32-rom.c (_initialize_dink32_rom): Add declaration. - * ppcbug-rom.c (_initialize_ppcbug_rom): Add declaration. - * ns32k-tdep.c (_initialize_ns32k_tdep): Add declaration. - * ns32knbsd-tdep.c (_initialize_ns32knbsd_tdep): Add declaration. - * mips-tdep.c (_initialize_mips_tdep): Add declaration. - * remote-array.c (_initialize_array): Add declaration. - (_initialize_remote_monitors): Add declaration. - * remote-mips.c: Make local functions static. - (_initialize_remote_mips): Add declaration. - * mcore-tdep.c: Make all local functions static. - (_initialize_mcore_tdep): Add declaration. - * dbug-rom.c (_initialize_dbug_rom): Add declaration. - * abug-rom.c (_initialize_abug_rom): Add declaration. - * rom68k-rom.c (_initialize_rom68k): Add declaration. - * cpu32bug-rom.c (_initialize_cpu32bug_rom): Add declaration. - * m68k-tdep.c (_initialize_m68k_tdep): Add declaration. - * remote-est.c (_initialize_est): Add declaration. - * m68hc11-tdep.c (_initialize_m68hc11_tdep): Add declaration. - (m68hc11_call_dummy_address): Make static. - * ia64-tdep.c: Make local functions static. - (_initialize_ia64_tdep): Add declaration. - * solib-legacy.c (_initialize_svr4_lm): Add declaration. - * monitor.c (monitor_wait_filter): Make static. - (_initialize_remote_monitors): Add declaration. - * remote-hms.c (_initialize_remote_hms): Add declaration. - * remote-e7000.c (fetch_regs_from_dump): Make static. - (expect_n): Make static. - (_initialize_remote_e7000): Add declaration. - * ser-e7kpc.c: Always include "defs.h". - (_initialize_ser_e7000pc): Add declaration. - * h8300-tdep.c (_initialize_h8300_tdep): Add declaration. - * cris-tdep.c: Make all but one function static. - (_initialize_cris_tdep): Add declaration. - * solib-svr4.c (_initialize_svr4_solib): Add declaration. - * solib.c (update_solib_list): Make static. - (_initialize_solib): Add declaration. - * avr-tdep.c (avr_breakpoint_from_pc): Make static. - (_initialize_avr_tdep): Add declaration. - * remote-rdi.c (voiddummy): Make static. - (_initialize_remote_rdi): Add declaration. - * arm-tdep.c (_initialize_arm_tdep): Add declaration. - * remote-rdp.c (send_rdp): Make static. - (_initialize_remote_rdp): Add declaration. - * alpha-tdep.c (_initialize_alpha_tdep): Add declaration. - -2003-06-11 Corinna Vinschen - - * remote-fileio.c: Make ari happy. - -2003-06-10 J. Brobecker - - * rs6000-nat.c (child_xfer_memory): Compute the right address when - fetching the trailing bytes of the buffer we are about to write. - -2003-06-10 Andrew Cagney - - * remote-fileio.h (REMOTE_FILEIO_H): Replace FILEIO_H. - * Makefile.in (remote-fileio.o): Update dependencies. - * remote-fileio.c: Include "gdb_wait.h" and "gdb_stat.h". Do not - include , or conditional on USG. - (remote_fio_jmp_buf): Delete global variable. - -2003-06-10 Corinna Vinschen - Martin M. Hunt - - * Makefile.in (REMOTE_OBS): Add remote-fileio.o - (SFILES): Add remote-fileio.c. - Add dependencies for building remote-fileio.o. Add remote-fileio.h to - dependencies for building remote.o. - * remote-fileio.c: New file implementing the remote File-I/O protocol. - * remote-fileio.h: New header file defining remote File-I/O interface. - * remote.c (remote_write_bytes, remote_read_bytes): Remove - static storage class. - (remote_wait, remote_async_wait): Call remote_fileio_request() on - 'F' packet. - (_initialize_remote): Call initialize_remote_fileio(). - * remote.h: Declare remote_write_bytes() and remote_read_bytes(). - * defs.h: Declare gdb_stdin, gdb_stdtargerr and gdb_stdtargin. - * main.c: New ui_file gdb_stdin, gdb_stdtargerr and gdb_stdtargin. - (captured_main): Initialize new ui_files. - * ui-file.c: Add read and fgets input functions. - (ui_file_new): set ui_file_fputs and ui_file_read to null functions. - (null_file_read): New function. - (ui_file_read): New function. - (set_ui_file_read): New function. - (stdio_file_read): New function. - * ui-file.h: New type ui_file_read_ftype. - (set_ui_file_read): Declare. - (ui_file_read): Declare. - -2003-06-09 Andrew Cagney - - * frame.h (deprecated_unwind_get_saved_register): Rename - generic_unwind_get_saved_register, update comments. - * mips-tdep.c (mips_get_saved_register): Update. - * frame.c (deprecated_unwind_get_saved_register): Update. - -2003-06-09 Andrew Cagney - - * vax-tdep.c (vax_frame_locals_address): Delete function. - (vax_gdbarch_init): Do not set frame_locals_address. - * m68hc11-tdep.c (m68hc11_frame_locals_address): Delete function. - (m68hc11_gdbarch_init): Do not set frame_locals_address. - * s390-tdep.c (s390_frame_args_address): Delete function. - (s390_gdbarch_init): Do not set frame_args_address or - frame_locals_address. - * ns32k-tdep.c (ns32k_frame_locals_address): Delete. - (ns32k_gdbarch_init): Do not set frame_locals_address. - * hppa-tdep.c (hppa_frame_args_address): Delete function. - (hppa_frame_locals_address): Delete function. - (hppa_gdbarch_init): Do not set frame_args_address, or - frame_locals_address. - * arm-tdep.c (arm_frame_args_address): Delete. - (arm_frame_locals_address): Delete. - (arm_gdbarch_init): Do not set frame_args_address, or - frame_locals_address. - -2003-06-09 Andrew Cagney - - * gdbarch.sh (FRAME_NUM_ARGS): Change to function with predicate. - * gdbarch.h, gdbarch.c: Re-generate. - * arch-utils.h (frame_num_args_unknown): Delete both declarations. - * arch-utils.c (frame_num_args_unknown): Delete function. - * stack.c (print_args_stub): Use FRAME_NUM_ARGS_P. - (frame_info): Use FRAME_NUM_ARGS_P. - * arm-tdep.c (arm_frame_num_args): Delete function. - (arm_gdbarch_init): Do not set frame_num_args. - * config/pa/tm-hppa64.h (FRAME_NUM_ARGS): Delete. - * hppa-tdep.c (hppa_frame_num_args): Delete function. - (hppa_gdbarch_init): Do not set frame_num_args. - * config/sparc/tm-sparc.h (FRAME_NUM_ARGS): Delete. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set - frame_num_args to default frame_num_args_unknown. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Ditto. - -2003-06-09 Andrew Cagney - - * printcmd.c (print_frame_nameless_args): Moved to "stack.c". - (print_frame_args): Moved to "stack.c". - * stack.c: Include "gdb_assert.h". - (print_frame_nameless_args): Moved from "printcmd.c", made static. - (print_frame_args): Moved from "printcmd.c". - * frame.h (print_frame_args): Delete declaration. - * Makefile.in (stack.o): Update dependencies. - -2003-06-08 Andrew Cagney - - * frame.c (get_prev_frame): Remove reference to - frame_args_address_correct in comments. - * frame-base.c (default_frame_args_address): Delete code - conditional on FRAME_ARGS_ADDRESS_CORRECT. - * vax-tdep.c (vax_frame_args_address_correct): Delete. - (vax_frame_args_address): Merge in vax_frame_args_address_correct. - * config/vax/tm-vax.h (FRAME_ARGS_ADDRESS_CORRECT): Delete - (vax_frame_args_address_correct): Delete declaration. - -2003-06-08 Andrew Cagney - - * gdbarch.sh (UNWIND_SP): Add. - * gdbarch.h, gdbarch.c: Re-generate. - * frame.c (frame_sp_unwind): New function. - (get_frame_sp): New function. - * frame.h (get_frame_sp, frame_sp_unwind): Declare. - * regcache.c (read_sp): Rewrite, try each of TARGET_READ_SP, - gdbarch_unwind_sp and SP_REGNUM when looking for the SP register - value. - * d10v-tdep.c (d10v_unwind_sp): Replace d10v_read_sp. - (d10v_gdbarch_init): Set unwind_sp instead of read_sp. - -2003-06-08 Andrew Cagney - - Deprecate BIG_REMOTE_BREAKPOINT, LITTLE_REMOTE_BREAKPOINT and - REMOTE_BREAKPOINT. - * remote.c: Update. - * config/sh/tm-sh.h (DEPRECATED_BIG_REMOTE_BREAKPOINT): Update. - (DEPRECATED_LITTLE_REMOTE_BREAKPOINT): Update. - * config/m68k/tm-sun3.h: Update. - * config/m68k/tm-m68klynx.h: Update. - * config/h8300/tm-h8300.h (DEPRECATED_REMOTE_BREAKPOINT): Update. - - * trad-frame.h (struct trad_frame_saved_reg): Rename "struct - trad_frame". Update comments. - * d10v-tdep.c (struct d10v_unwind_cache): Update. - * trad-frame.c (trad_frame_alloc_saved_regs): Update. - (trad_frame_register_value, trad_frame_prev_register): Update. - -2003-06-08 Andrew Cagney - - * acinclude.m4 (gcc_AC_CHECK_DECL, (gcc_AC_CHECK_DECL): Stolen - from GCC's acinclude.m4. - * configure.in: Check for getopt's delcaration. - * aclocal.m4, config.in, configure: Re-generate. - * main.c (error_init): Delete declaration. - * defs.h (error_init): Declare. - * rs6000-tdep.c (rs6000_fetch_pointer_argument): Make static. - (rs6000_convert_from_func_ptr_addr): Make static. - (_initialize_rs6000_tdep): Add declaration. - * cli/cli-cmds.c (dont_repeat): Delete declaration. - (show_commands, set_verbose, show_history): Delete declaration. - * top.h (set_verbose): Add declaration. - (show_history, set_history, show_commands): Add declaration. - (do_restore_instream_cleanup): Add declaration. - * objc-lang.c (specialcmp): Make static. - (print_object_command): Make static. - (find_objc_msgsend): Make static. - (find_objc_msgcall_submethod_helper): Make static. - (find_objc_msgcall_submethod): Make static. - (_initialize_objc_language): Add declaration. - (find_implementation_from_class): Make static. - (find_implementation): Make static. - * objc-exp.y (yylex): Delete lookup_struct_typedef declaration. - * objc-lang.h (lookup_struct_typedef): Add declaration. - * cli/cli-interp.c (_initialize_cli_interp): Add declaration. - * cli/cli-script.c (clear_hook_in_cleanup): Make static. - (do_restore_user_call_depth): Make static. - (do_restore_instream_cleanup): Delete declaration. - (dont_repeat): Delete declaration. - * cli/cli-decode.c (add_abbrev_cmd): Delete function. - * cli/cli-dump.c (_initialize_cli_dump): Add declaration. - * reggroups.c (_initialize_reggroup): Add declaration. - * cp-support.c (_initialize_cp_support): Add declaration. - * cp-abi.c (_initialize_cp_abi): Add declaration. - * hpacc-abi.c (_initialize_hpacc_abi): Add declaration. - * gnu-v3-abi.c (gnuv3_baseclass_offset): Make static. - (_initialize_gnu_v3_abi): Add declaration. - * gnu-v2-abi.c (gnuv2_value_rtti_type): Make static. - (_initialize_gnu_v2_abi): Add declaration. - * frame-base.c (_initialize_frame_base): Add declaration. - * doublest.c (floatformat_from_length): Make static. - * frame-unwind.c (_initialize_frame_unwind): Add declaration. - * frame.c (create_sentinel_frame): Make static. - (_initialize_frame): Add declaration. - * top.c (do_catch_errors): Make static. - (gdb_rl_operate_and_get_next_completion): Make static. - * typeprint.c: Include "typeprint.h". - * sentinel-frame.c (sentinel_frame_prev_register): Make static. - (sentinel_frame_this_id): Make static. - * p-valprint.c (_initialize_pascal_valprint): Add declaration. - * ui-out.c (make_cleanup_ui_out_begin_end): Delete function. - * dwarf2-frame.c (dwarf2_frame_cache): Make static. - * p-exp.y (push_current_type, pop_current_type): ISO C declaration. - * dwarf2expr.h (dwarf_expr_context): ISO C declaration. - * maint.c (maintenance_print_architecture): Make static. - * signals/signals.c (_initialize_signals): Add declaration. - * std-regs.c (_initialize_frame_reg): Add declaration. - * jv-exp.y (push_variable): ISO C definition. - (push_qualified_expression_name): Ditto. - * memattr.c (_initialize_mem): Add declaration. - * remote.c (remote_check_watch_resources): Make static. - (remote_stopped_by_watchpoint): Make static. - (remote_stopped_data_address): Make static. - * d10v-tdep.c (nr_dmap_regs): Make static. - (a0_regnum): Make static. - (d10v_frame_unwind_cache): Make static. - (d10v_frame_p): Make static. - * osabi.c (show_osabi): Make static. - (_initialize_gdb_osabi): Add extern declaration. - * gdbtypes.c (make_qualified_type): Make static. - (safe_parse_type): Make static. - * macrocmd.c (_initialize_macrocmd): Add extern declaration. - * macrotab.c (macro_bcache_free): Make static. - * interps.c (interp_set_quiet): Make static. - (interpreter_exec_cmd): Make static. - * stack.h (select_frame_command): New file. - * stack.c: Include "stack.h". - (select_frame_command_wrapper): Delete function. - (select_frame_command): Make global. - * infcall.c: Include "infcall.h". - * linespec.c: Include "linespec.h". - * symfile.c (sections_overlap): Make static. - * cp-support.h (cp_initialize_namespace): ISO C declaration. - * charset.c (_initialize_charset): Add missing prototype. - * regcache.c (init_legacy_regcache_descr): Make static. - (do_regcache_xfree): Make static. - (regcache_xfer_part): Make static. - (_initialize_regcache): Add missing prototype. - * breakpoint.c (parse_breakpoint_sals): Make static. - (breakpoint_sals_to_pc): Make static. - * interps.h (clear_interpreter_hooks): ISO C declaration. - * Makefile.in (stack_h): Define. - (stack.o, typeprint.o, mi-main.o): Update dependencies. - (mi-cmd-stack.o, infcall.o, linespec.o): Update dependencies. - -2003-06-08 Andrew Cagney - - * Makefile.in (d10v-tdep.o): Update dependencies. - (SFILES): Add trad-frame.c. - (trad_frame_h): Define. - (COMMON_OBS): Add trad-frame.o. - (trad-frame.o): Specify dependencies. - * d10v-tdep.c: Include "trad-frame.h". - (saved_regs_unwinder): Delete function. - (d10v_frame_prev_register): Use trad_frame_prev_register. - (struct d10v_unwind_cache): Change type of "saved_regs" to "struct - trad_frame", delete "regs" and "prev_sp". - (prologue_find_regs): Use trad-frame. - * trad-frame.h, trad-frame.c: New files. - -2003-06-08 Mark Kettenis - - * dwarf2cfi.c, dwarf2cfi.h: Remove. - -2003-06-07 Adam Fedor - - * gdb/objc-lang.c (FETCH_ARGUMENT): Remove macro. - (OBJC_FETCH_POINTER_ARGUMENT): Shorthand macro for - using FETCH_POINTER_ARGUMENT with Objective-C method arguments. - (find_implementation, resolve_msgsend, resolve_msgsend_stret, - resolve_msgsend_super, resolve_msgsend_super_stret): - Use it. - -2003-06-07 Andrew Cagney - - * symfile.h: Re-indent, clean up comments. - -2003-06-07 Andrew Cagney - - * inferior.h (deprecated_write_sp): Replace - generic_target_write_sp. - * regcache.c (deprecated_write_sp): Replace - generic_target_write_sp. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Update. - -2003-06-07 Andrew Cagney - - * dwarf2-frame.c (dwarf2_frame_cache): Add comments on PC_REGNUM. - Assert that PC_REGNUM is valid. - (dwarf2_frame_prev_register): Add comments on SP_REGNUM. - -2003-06-07 Andrew Cagney - - * gdbarch.sh (TARGET_READ_SP): Add predicate, delete default. - * gdbarch.h, gdbarch.c: Regenerate. - * mn10300-tdep.c: Include "gdb_assert.h". - (mn10300_read_fp): New function. - (mn10300_gdbarch_init): Set deprecated_target_read_fp to - mn10300_read_fp. Do not set read_sp to generic_target_read_sp. - * ia64-tdep.c: Include "gdb_assert.h". - (ia64_read_fp): New function. - (ia64_gdbarch_init): Set deprecated_target_read_fp to - ia64_read_sp. Do not set read_sp to generic_target_read_sp. - * regcache.c (generic_target_read_sp): Delete function. - (read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register. - * inferior.h (generic_target_read_sp): Delete declaration. - * frv-tdep.c (frv_gdbarch_init): Do not set read_sp to - generic_target_read_sp. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto - * sh-tdep.c (sh_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies. - -2003-06-07 Andrew Cagney - - * gdbarch.sh: Comment each field of startup_gdbarch. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-06-07 Andrew Cagney - - * gdbarch.sh (TARGET_READ_PC): Add predicate, remove default. - * gdbarch.h, gdbarch.c: Re-generate. - * regcache.c: Update comments on read_pc et.al. - (generic_target_read_pc): Delete function. - (read_pc_pid): Try TARGET_READ_PC and PC_REGNUM for a PC register. - * inferior.h (generic_target_read_pc): Delete declaration. - * frv-tdep.c (frv_gdbarch_init): Do not set read_pc to - generic_target_read_pc. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - -2003-06-07 Andrew Cagney - - * elfread.c (elf_symtab_read): Replace "special_local_sym_p" and - "index" with "special_local_sect". Use strcmp instead of STREQ. - Append period to coments. - -2003-06-06 Mark Mitchell - - * elfread.c (elf_symtab_read): Avoid use of SECT_OFF_MAX. - (elfstab_offset_sections): Likewise. - * gdb-stabs.h (stab_section_info): Likewise. - * i386-interix-tdep.c (pei_adjust_objfile_offsets): Likewise. - * objfiles.c (objfile_relocate): Likewise. - * pa64solib.c (pa64_solib_add_solib_objfile): Likewise. - * remote.c (get_offsets): Likewise. - (remote_cisco_objfile_relocate): Likewise. - * somread.c (som_symfile_offsets): Likewise. - * symfile.c (alloc_section_addr_info): New function. - (build_section_addr_info_from_section_tab): Use it. - (free_section_addr_info): Adjust. - (default_symfile_offsets): Avoid use of SECT_OFF_MAX. - (syms_from_objfile): Allocate local_addr dynamically. - (symbol_file_add_with_addrs_or_offsets): Allocate orig_addrs - dynamically. - (add_symbol_file_command): Allocate sect_opts dynamically. - (reread_symbols): Avoid use of SECT_OFF_MAX. - * symfile.h (section_addr_info): Do not use MAX_SECTIONS. - (alloc_section_addr_info): Declare it. - * symtab.h (SIZEOF_SECTION_OFFSETS): Remove. - * win32-nat.c (solib_symbols_add): Allocate section_addrs - dynamically. - * xcoffread.c (xcoff_symfile_offsets): Avoid use of SECT_OFF_MAX. - -2003-06-06 Andrew Cagney - - * d10v-tdep.c (struct d10v_unwind_cache): Delete "return_pc". - (d10v_frame_unwind_cache): Do not set "return_pc". - -2003-06-06 Michael Snyder - - * h8300-tdep.c: Make tidy (long lines). - -2003-06-06 Michal Ludvig - - * x86-64-tdep.c (x86_64_fill_fxsave): Pass correct regnums - to regcache_collect(). - -2003-06-05 J. Brobecker - - * hppa-hpux-tdep.c (hppa_hpux_init_abi): New function, setting - pc_in_sigtramp multiarch method. - (hppa_hpux_som_init_abi): Use it. - (hppa_hpux_elf_init_abi): Likewise. - * config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Remove, now that this - macro has been multiarched. - * config/pa/tm-hppa64.h (PC_IN_SIGTRAMP): Temporarily set this - macro here, as hppa64 isn't multiarched yet. - -2003-06-05 Andrew Cagney - - * Makefile.in (value_h): Add $(frame_h). - * value.h: Include "frame.h". - (struct value): Replace "frame_addr" with "frame_id". - (VALUE_FRAME_ID): Replace VALUE_FRAME. - * values.c (allocate_value): Use VALUE_FRAME_ID. - (value_copy): Use VALUE_FRAME_ID. - * findvar.c (value_from_register): Use VALUE_FRAME_ID. - * valops.c (value_assign): Update. Use frame_find_by_id. - -2003-06-05 Michal Ludvig - - * x86-64-tdep.c (x86_64_push_arguments): Don't clear offset - in each pass. - -2003-06-05 Jeff Johnston - - * thread-db.c (check_event): For create/death event breakpoints, - loop through all messages to ensure that we read the message - corresponding to the breakpoint we are at. - -2003-06-04 Michael Snyder - - * h8300-tdep.c (h8300_gdbarch_init): Add h8300hn, h8300sn. - -2003-06-04 Mark Kettenis - - * dwarf2-frame.c (struct comp_unit): Add member `dbase'. - (read_encoded_value): Handle DW_EH_PE_datarel encoding. - (dwarf2_build_frame_info): Set base for DW_EH_PE_datarel encodings - when handling .eh_frame sections. - -2003-06-04 J. Brobecker - - * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Use the generic - prepare_to_proceed procedure instead of the hppa-specific one. - * hppa-tdep.c (hppa_prepare_to_proceed): Remove, no longer used. - -2003-06-04 Jeff Johnston - - * acconfig.h: Add HAVE_TKILL_SYSCALL definition check. - * config.in: Regenerated. - * configure.in: Add test for syscall function and check for - __NR_tkill macro in to set HAVE_TKILL_SYSCALL. - * configure: Regenerated. - * lin-lwp.c [HAVE_TKILL_SYSCALL]: Include and - . - (kill_lwp): New function that uses tkill syscall or - uses kill, depending on whether threading model is nptl or not. - All callers of kill() changed to use kill_lwp(). - (lin_lwp_wait): Make special check when WIFEXITED occurs to - see if all threads have already exited in the nptl model. - (stop_and_resume_callback): New callback function used by the - lin_lwp_wait thread exit handling code. - (stop_wait_callback): Check for threads already having exited and - delete such threads fromt the lwp list when discovered. - (stop_callback): Don't assert retcode of kill call. - - Roland McGrath - * i386-linux-nat.c (ps_get_thread_area): New function needed by - nptl libthread_db. - -2003-06-03 Richard Henderson - - * alpha-tdep.c (alpha_next_pc): Use alpha_read_insn. - (alpha_sigtramp_frame_this_id): Use get_frame_memory. - (alpha_sigtramp_frame_prev_register): Likewise. - (alpha_heuristic_frame_prev_register): Likewise. - * alpha-mdebug-tdep.c (alpha_mdebug_frame_prev_register): Likewise. - - * alpha-mdebug-tdep.c (alpha_mdebug_after_prologue): Use - alpha-specific register id names. - (alpha_mdebug_frame_unwind_cache): Likewise. - (alpha_mdebug_frame_prev_register): Likewise. - -2003-06-03 Richard Henderson - - * alpha-tdep.c (alpha_dwarf2_init_abi): New. - * alpha-tdep.h (alpha_dwarf2_init_abi): Declare it. - * alpha-linux-tdep.c (alpha_linux_init_abi): Use it. - * alphafbsd-tdep.c (alphafbsd_init_abi): Register dwarf2 and mdebug - unwind routines. - * alphanbsd-tdep.c (alphanbsd_init_abi): Likewise. - * config/alpha/fbsd.mt (TDEPFILES): Add alpha-mdebug-tdep.o. - * config/alpha/nbsd.mt (TDEPFILES): Likewise. - - * alpha-linux-tdep.c: Remove unnecessary includes. - * Makefile.in (alpha-linux-tdep.o): Update. - -2003-06-03 Richard Henderson - - * alphabsd-tdep.c (alphabsd_supply_fpreg): Fix typo last change. - (alphabsd_fill_fpreg): Likewise. - -2003-06-03 J. Brobecker - - * alphanbsd-tdep.c (alphanbsd_sigcontext_addr): Replace - references to struct frame_info fields by calls to the equivalent - accessors. Necessary now that frame_info is opaque. - -2003-06-03 J. Brobecker - - * alphanbsd-tdep.c (alphanbsd_skip_sigtramp_frame): Delete. - (alphanbsd_init_abi): Do not set skip_sigtramp_frame in tdep - structure, field no longer exists. - -2003-06-03 J. Brobecker - - * config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-mdebug-tdep.o. - * alpha-osf1-tdep.c (alpha_osf1_init_abi): Enable the mdebug module. - -2003-06-03 J. Brobecker - - * alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Replace - references to struct frame_info fields by calls to the equivalent - accessors. Necessary now that frame_info is opaque. - -2003-06-03 J. Brobecker - - * alpha-osf1-tdep.c (alpha_osf1_skip_sigtramp_frame): Delete. - (alpha_osf1_init_abi): Do not set skip_sigtramp_frame in tdep - structure, field no longer exists. - -2003-06-03 Theodore A. Roth - - * remote.c (init_remote_state): Compute sizeof_g_packet by - accumulation of the size of all registers instead of blindly using - DEPRECATED_REGISTER_BYTES. - -2003-06-03 Michael Snyder - - * config/h8300/tm-h8300.h (h8300sxmode): Declare. - * h8300-tdep.c (h8300_gdbarch_init): Set machine mode - for h8300sx. - -2003-06-03 J. Brobecker - - * alpha-osf1-tdep.c (objfiles.h): #include, needed for symfile_objfile. - * Makefile.in (alpha-osf1-tdep.o): Update dependencies. - -2003-06-03 Andrew Cagney - - * sparc-tdep.c (sparc_convert_to_virtual): Delete function. - (sparc_convert_to_raw): Delete function. - (sparc_gdbarch_init): Do not set register_convert_to_raw or - register_convert_to_virtual. - -2003-06-03 Jeff Johnston - - * thread-db.c (thread_db_mourn_inferior): Unpush thread target - layer if not dealing with a statically-linked threaded program. - -2003-06-03 Kris Warkentin - - * solib.c (solib_open): Update comment to reflect actual search order. - -2003-06-03 Andrew Cagney - - * frame.c (get_frame_memory_signed): New function. - (get_frame_memory, get_frame_memory_unsigned): New function. - (get_frame_arch): New function. - * frame.h (get_frame_signed_memory, get_frame_arch): Declare. - (get_frame_memory, get_frame_unsigned_memory): Declare. - * d10v-tdep.c (d10v_frame_unwind_cache): Use - get_frame_memory_unsigned and get_frame_arch. - (d10v_frame_unwind_cache, saved_regs_unwinder): Ditto. - -2003-06-03 Raoul Gough - - * MAINTAINERS (write after approval): Add myself. - -2003-06-03 Jim Blandy - - * s390-nat.c (supply_gregset, fill_gregset): On the s390x, the - elements of gregset_t are 64 bits each, but access registers - are still 32 bits, so they're packed two per gregset_t - element. Unpack/pack them properly. - -2003-06-02 David Carlton - - * linespec.c (find_methods): Break out code into - add_matching_methods and add_constructors. - (add_matching_methods): New. - (add_constructors): Ditto. - -2003-06-02 Andrew Cagney - - * sparc-tdep.c (sparc_print_registers): Delete call to - REGISTER_CONVERTIBLE. - (sparc_gdbarch_init): Do not set register_convertible. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - -2003-06-02 Elena Zannoni - - * target.h (TARGET_SYMFILE_POSTREAD): Delete unused macro. - * symfile.c (reread_symbols): Delete call to TARGET_SYMFILE_POSTREAD. - (syms_from_objfile): Ditto. - -2003-06-03 Andreas Schwab - - * m68k-tdep.c (m68k_gdbarch_init): Use set_gdbarch_print_insn ... - (_initialize_m68k_tdep): ... instead of deprecated_tm_print_insn. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_register_reggroup_p): Zero is only - a member of all_reggroup. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_register_type): Change from _virtual_type. - (alpha_convert_flt_dbl, alpha_convert_dbl_flt): Remove. - (alpha_lds, alpha_sts): New. - (alpha_convert_register_p): Change from _register_convertible. - (alpha_register_to_value): Change from _convert_to_virtual; - restructure and fail for type sizes other than 4 or 8. - (alpha_value_to_register): Similarly. - (alpha_extract_return_value): Use alpha_sts. - (alpha_store_return_value): Use alpha_lds. - (alpha_gdbarch_init): Update hooks. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_register_virtual_type): Use alpha-specific - regnum identifiers. - (alpha_sigtramp_register_address): Likewise. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_supply_int_regs, alpha_fill_int_regs): New. - (alpha_supply_fp_regs, alpha_fill_fp_regs): New. - * alpha-tdep.h: Declare them. - - * alpha-nat.c (fetch_osf_core_registers): Constify core_reg_mapping. - Remove zerobuf. Don't error on UNIQUE. - (fetch_elf_core_registers): Use alpha_supply_{int,fp}_regs. - (ALPHA_REGSET_UNIQUE): Provide default. - (supply_gregset): Use alpha_supply_int_regs. - (fill_gregset): Use alpha_fill_int_regs. - (supply_fpregset): Use alpha_supply_fp_regs. - (fill_fpregset): Use alpha_fill_fp_regs. - * alphabsd-tdep.c (NUM_GREGS, NUM_FPREGS): Remove. - (alphabsd_supply_reg): Use alpha_supply_int_regs. - (alphabsd_fill_reg): Use alpha_fill_int_regs. - (alphabsd_supply_fpreg): Use alpha_supply_fp_regs. - (alphabsd_fill_fpreg): Use alpha_fill_fp_regs. - * config/alpha/nm-linux.h (ALPHA_REGSET_UNIQUE): New. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_store_return_value): Avoid switch fallthru. - - * alpha-tdep.c (alpha_extract_return_value): Use internal_error. - (alpha_store_return_value): Likewise. - -2003-06-02 David Carlton - - * block.c (contained_in): Add 'const' to arguments. - (block_function): Ditto. - * block.h: Update declarations for block_function and - contained_in. - -2003-06-02 David Carlton - - * objc-lang.c (find_imps): Delete unneeded variable 'sym_symtab'. - * c-valprint.c (c_val_print): Delete unneeded variable 's'. - * p-valprint.c (pascal_val_print): Ditto. - * ada-lang.c (standard_lookup): Delete unneded variable 'symtab'. - -2003-06-02 Richard Henderson - - * alpha-tdep.c (alpha_push_dummy_call): Use - builtin_type_ieee_double_little instead of builtin_type_double. - - * alpha-tdep.c (alpha_push_dummy_call): Handle ABI mandated - sign-extension of 32-bit values. - (alpha_store_return_value): Similarly. - - * alpha-tdep.c (alpha_push_dummy_call): Handle COMPLEX types. - (alpha_extract_return_value): Likewise. - (alpha_store_return_value): Likewise. - - * alpha-tdep.c (alpha_extract_return_value): Handle IEEE Quad floats. - (alpha_store_return_value): Error on IEEE Quad floats. - - * alpha-tdep.c (alpha_extract_return_value): Convert to regcache. - (alpha_extract_struct_value_address): Likewise. - (alpha_store_return_value): Likewise. - (alpha_store_struct_return): Remove. - (alpha_gdbarch_init): Update hook registration to match. - - * alpha-tdep.c (alpha_register_convert_to_virtual): Tidy use of - deprecated interfaces; use ALPHA_REGISTER_SIZE instead of gdbarch - macros where appropriate. - (alpha_register_convert_to_raw): Similarly. Use unpack_long. - (alpha_convert_flt_dbl, alpha_convert_dbl_flt): New. - - * alpha-tdep.c (alpha_register_virtual_type): Use void_data_ptr - for SP, GP; void_func_ptr for PC; non-language-specific types - for all others. - * alpha-tdep.h (ALPHA_GP_REGNUM): New. - -2003-06-02 Richard Henderson - - * top.h (lim_at_start): Declare. - * main.c (captured_main): Set it. - * top.c (lim_at_start): Define. - (command_loop): Use it instead of &environ. - * event-top.c (command_handler): Likewise. - -2003-06-01 Jason Thorpe - - * mipsnbsd-tdep.c: Update copyright years. - (fetch_core_registers): Correct arguments to mipsnbsd_supply_fpreg. - -2003-06-01 Richard Henderson - - * Makefile.in (ALLDEPFILES): Add alpha-mdebug-tdep.c. - (alpha-linux-tdep.o): Update dependencies. - (alpha-nat.o, alpha-tdep.o, alpha-mdebug-tdep.o): Likewise. - * alpha-mdebug-tdep.c: Remove unneeded includes. - -2003-06-01 Richard Henderson - - * alpha-tdep.c (alpha_register_reggroup_p): New. - (alpha_gdbarch_init): Register it. - -2003-06-02 Andrew Cagney - - * dwarfread.c: Eliminate "register" - (decode_die_type): Eliminate assignment within "if". - (struct_type, decode_array_element_type): Ditto. - (dwarf_read_array_type, read_tag_pointer_type): Ditto. - (read_subroutine_type, enum_type, add_enum_psymbol): Ditto. - (decode_modified_type, completedieinfo): Ditto. - * block.c: Eliminate "register". - (blockvector_for_pc_sect): Eliminate assignment within "if". - * cp-support.h (struct symbol): Opaque declaration. - * breakpoint.c (handle_gnu_v3_exceptions): Use xfree, not free. - -2003-06-01 Richard Henderson - - * alpha-tdep.c (alpha_gdbarch_init): Use set_gdbarch_print_insn ... - (_initialize_alpha_tdep): ... not deprecated_tm_print_insn. - -2003-06-01 Adam Fedor - - * gdbarch.sh (function_list): Add FETCH_POINTER_ARGUMENT. - * gdbarch.[ch]: Regenerate. - * hppa-tdep.c (hppa_fetch_pointer_argument): New function. - (hppa_gdbarch_init): Set it in the gdbarch vector. - * i386-tdep.c (i386_fetch_pointer_argument): New - (i386_gdbarch_init): Set it into gdbarch. - * rs6000-tdep.c (rs6000_fetch_pointer_argument): New. - (rs6000_gdbarch_init): Set it in gdbarch. - * sparc-tdep.c (sparc_fetch_pointer_argument): New - (sparc_gdbarch_init): Set it in gdbarch. - -2003-06-01 Andrew Cagney - - * defs.h (extract_address): Delete declaration. - * findvar.c (extract_address): Delete function. - * xstormy16-tdep.c (xstormy16_extract_return_value): Replace - extract_address with the inline equivalent, - extract_unsigned_integer. - (xstormy16_extract_struct_value_address): Ditto. - (xstormy16_pointer_to_address): Ditto. - * vax-tdep.c (vax_extract_struct_value_address): Ditto. - * v850-tdep.c (v850_push_arguments): Ditto. - (v850_extract_return_value): Ditto. - (v850_extract_struct_value_address): Ditto. - * sparcnbsd-tdep.c (sparcnbsd_get_longjmp_target_32): Ditto. - (sparcnbsd_get_longjmp_target_64): Ditto. - * sparc-tdep.c (sparc_frame_saved_pc): Ditto. - (get_longjmp_target): Ditto. - * sh-tdep.c (sh_extract_struct_value_address): Ditto. - (sh64_extract_struct_value_address): Ditto. - (sh_push_arguments): Ditto. - (sh64_push_arguments): Ditto. - * remote-vxsparc.c (vx_read_register): Ditto. - * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Ditto. - * ns32k-tdep.c (ns32k_extract_struct_value_address): Ditto. - * mn10300-tdep.c (mn10300_extract_struct_value_address): Ditto. - * mipsv4-nat.c (get_longjmp_target): Ditto. - * mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Ditto. - * mips-nat.c (get_longjmp_target): Ditto. - * mips-linux-tdep.c (mips_linux_get_longjmp_target): Ditto. - * mcore-tdep.c (mcore_extract_struct_value_address): Ditto. - * m68k-tdep.c (m68k_get_longjmp_target): Ditto. - * m68hc11-tdep.c (m68hc11_extract_struct_value_address): Ditto. - * irix5-nat.c (get_longjmp_target): Ditto. - * irix4-nat.c (get_longjmp_target): Ditto. - * ia64-tdep.c (generic_elf_find_global_pointer): Ditto. - (ia64_push_arguments): Ditto. - * hpux-thread.c (hpux_thread_store_registers): Ditto. - * h8300-tdep.c (h8300_push_arguments): Ditto. - (h8300_store_return_value): Ditto. - (h8300_extract_struct_value_address): Ditto. - * frv-tdep.c (frv_extract_struct_value_address): Ditto. - (frv_push_arguments): Ditto. - * avr-tdep.c (avr_pointer_to_address): Ditto. - (avr_push_arguments): Ditto. - * arm-tdep.c (arm_push_dummy_call): Ditto. - (arm_get_longjmp_target): Ditto. - * arm-linux-tdep.c (arm_linux_push_arguments): Ditto. - * alpha-tdep.c (alpha_extract_struct_value_address): Ditto. - (alpha_get_longjmp_target): Ditto. - - * solib-irix.c (extract_mips_address): Inline extract_address, - replacing it with extract_signed_integer. - * solib-svr4.c (SOLIB_EXTRACT_ADDRESS): Ditto. - (LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY): Ditto. - (first_link_map_member, open_symbol_file_object): Ditto. - (svr4_fetch_objfile_link_map, svr4_fetch_objfile_link_map): Ditto. - * solib-sunos.c (SOLIB_EXTRACT_ADDRESS): Ditto. - (LM_NEXT, LM_NAME): Ditto. - -2003-06-01 Richard Henderson - - * alpha-tdep.h (ALPHA_FP_REGNUM): Remove. - * alpha-tdep.c (alpha_register_name): Remove vfp entry. - (alpha_cannot_fetch_register): Remove ALPHA_FP_REGNUM. - (alpha_cannot_store_register): Likewise. - * alphabsd-nat.c (fetch_inferior_registers): Don't set FP_REGNUM. - * alpha-nat.c (supply_gregset): Likewise. - * alphanbsd-tdep.c (fetch_core_registers): Likewise. - -2003-06-01 Andrew Cagney - - * infcall.c (call_function_by_hand): Update comment on - DEPRECATED_DUMMY_WRITE_SP. - - * mips-tdep.c (mips_gdbarch_init): Do not set - deprecated_dummy_write_sp. - (mips_eabi_push_dummy_call): Set the SP register. - (mips_o64_push_dummy_call): Set the SP register. - (mips_o32_push_dummy_call): Set the SP register. - (mips_n32n64_push_dummy_call): Set the SP register. - -2003-06-01 Richard Henderson - - * alpha-nat.c (fetch_osf_core_registers): Use ALPHA_REGISTER_SIZE - instead of ALPHA_MAX_REGISTER_RAW_SIZE. - (supply_gregset): Likewise. - * alpha-tdep.c (alpha_store_return_value): Likewise. - (alpha_get_longjmp_target): Likewise. - (alpha_register_name): Constify array. - (alpha_gdbarch_init): Remove deprecated_fp_regnum, - deprecated_register_size, deprecated_register_bytes, - deprecated_max_register_raw_size, deprecated_max_register_virtual_size. - * alpha-tdep.h (ALPHA_MAX_REGISTER_RAW_SIZE): Remove. - (ALPHA_MAX_REGISTER_VIRTUAL_SIZE): Remove. - -2003-06-01 Richard Henderson - - * alpha-tdep.c (alpha_push_dummy_call): Store sp. Tidy copies - from arg_reg_buffer to regcache to avoid double conversion. - -2003-06-01 Mark Kettenis - - * i386-linux-nat.c (child_resume): Use I386_ESP_REGNUM instead of - SP_REGNUM. - * i386-linux-tdep.c (i386_linux_sigcontext_addr): Likewise. - * i386bsd-tdep.c (i386bsd_sigcontext_addr): Likewise. - -2003-06-01 Richard Henderson - - * dwarf2-frame.c (struct dwarf2_cie): Add saw_z_augmentation. - (decode_frame_entry): Set it. Skip FDE augmentation. - -2003-06-01 Richard Henderson - - * dwarf2-frame.c (dwarf2_frame_cache): Handle retaddr_column - not overlapping PC_REGNUM. - -2003-06-01 Richard Henderson - - * alpha-tdep.c (alpha_push_dummy_call): Transmography from - alpha_push_arguments. Don't dump argument register data to - the target stack. Fix float and 128-bit long double semantics. - Store $t12 and $ra as specified by the ABI. Use regcache everywhere. - (alpha_fix_call_dummy): Remove. - (alpha_call_dummy_words): Remove. - (alpha_gdbarch_init): Kill deprecated call hooks; add push_dummy_call. - -2003-06-01 Richard Henderson - - * alpha-linux-tdep.c (alpha_linux_init_abi): Install dwarf2 unwinder. - -2003-06-01 Andrew Cagney - - * mips-tdep.c (is_mips16_addr): New function. - (make_mips16_addr, unmake_mips16_addr): New functions. - (pc_is_mips16, mips_fetch_instruction): Use. - (gdb_print_insn_mips, mips_breakpoint_from_pc): Use. - (gdb_print_insn_mips): Eliminate TM_PRINT_INSN_MACH. - (mips_dump_tdep): Delete print of TM_PRINT_INSN_MACH, - UNMAKE_MIPS16_ADDR, MAKE_MIPS16_ADDR, IS_MIPS16_ADDR and - TARGET_MIPS. - * config/mips/tm-mips.h: Update copyright. - (TARGET_MIPS, TM_PRINT_INSN_MACH): Delete. - (DEPRECATED_REGISTER_SIZE, DEPRECATED_REGISTER_BYTES): Delete. - (IS_MIPS16_ADDR, MAKE_MIPS16_ADDR, UNMAKE_MIPS16_ADDR): Delete. - * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Delete. - (TM_PRINT_INSN_MACH): Delete. - * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Delete. - - * configure.tgt: Replace mips64*vr4xxx*el-*-elf*, - mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*, - mips64*vr4300*-*-elf*, mips64*vr4100*el-*-elf*, - mips64*vr4100*-*-elf*, mips64*vr5000*el-*-elf*, and - mips64*vr5000*-*-elf* with mips64 mips64*vr*-*-elf*. Delete - mips*tx39*el*-elf*. Map mips*-sony-* and mips64*-big-* onto - mips64. Map mips*-dec-*, mips*-big-*, mips*-little-*, - mips*-*-riscos* and mips*-*-sysv* onto mips. - * config/mips/mips64.mt: New file. - * config/mips/mips.mt: New file. - * config/mips/littlemips.mt: Delete file. - * config/mips/decstation.mt: Delete file. - * config/mips/vr4300el.mt: Delete file. - * config/mips/vr5000el.mt: Delete file. - * config/mips/vr5000.mt: Delete file. - * config/mips/vr4100.mt: Delete file. - * config/mips/vr4xxxel.mt: Delete file. - * config/mips/vr4300.mt: Delete file. - * config/mips/vr4xxx.mt: Delete file. - * config/mips/bigmips.mt: Delete file. - * config/mips/bigmips64.mt: Delete file. - * config/mips/tx39l.mt (TM_FILE): Set to "tm-tx39.h". - * config/mips/embedl64.mt (TM_FILE): Set to "tm-mips64.h". - * config/mips/embed64.mt (TM_FILE): Set to "tm-mips64.h" - * config/mips/embedl.mt (TM_FILE): Set to "tm-mips.h". - * config/mips/tm-tx39.h: Include "tm-mips.h" instead of - "tm-bigmips.h". - * config/mips/tm-irix3.h: Ditto. - * config/mips/tm-mipsv4.h: Ditto. - * config/mips/tm-embed.h: Ditto. - * config/mips/tm-irix6.h: Include "tm-mips64.h" instead of - "tm-bigmips64.h". - * config/mips/tm-vr5000el.h: Delete file. - * config/mips/tm-tx39l.h: Delete file. - * config/mips/tm-vr4300el.h: Delete file. - * config/mips/tm-vr4xxxel.h: Delete file. - * config/mips/tm-vr4300.h: Delete file. - * config/mips/tm-vr4100.h: Delete file. - * config/mips/tm-vr4xxx.h: Delete file. - * config/mips/tm-vr5000.h: Delete file. - * config/mips/tm-embedl64.h: Delete file. - * config/mips/tm-embedl.h: Delete file. - * config/mips/tm-embed64.h: Delete file. - * config/mips/tm-bigmips64.h: Delete file. - * config/mips/tm-bigmips.h: Delete file. - -2003-06-01 Mark Kettenis - - Fix gdb/1216. - * shnbsd-nat.c: Include "sh-tdep.h". - - From Richard Henderson : - * dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Fix ptr arithmetic. - -2003-05-31 Andrew Cagney - - * mips-tdep.c (set_reg_offset): Add saved_regs parameter. Add - forward declaration. - (mips16_heuristic_proc_desc): Pass temp_saved_regs. - (mips16_heuristic_proc_desc): Pass temp_saved_regs. - (mips_find_saved_regs): Use set_reg_offset. - (mips_frame_init_saved_regs): Delete function. - (mips_pop_frame): Call mips_find_saved_regs instead of - DEPRECATED_FRAME_INIT_SAVED_REGS. - -2003-05-31 Andrew Cagney - - * mips-tdep.c (mips_gdbarch_init): Do not set - deprecated_max_register_raw_size, register_virtual_size, and - deprecated_max_register_virtual_size. - -2003-05-31 Mark Kettenis - - * i386-tdep.c: Include "dwarf2-frame.h". - (i386_gdbarch_init): Hook in the DWARF CFI frame unwinder. - * Makefile.in (i386-tdep.o): Update dependencies. - - * dwarf2-frame.c, dwarf2-frame.h: New files. - * Makefile.in (SFILES): Add dwarf2-frame.c. - (dwarf2_frame_h): Define. - (COMMON_OBS): Add dwarf2-frame.o. - (dwarf2-frame.o): Add dependencies. - -2003-05-31 Andreas Jaeger - - * x86-64-linux-nat.c: Fix comment. - -2003-05-31 Mark Kettenis - - * x86-64-tdep.c (x86_64_push_dummy_call): Adjust for changed - function signature. - - * i386-tdep.c (i386_sigtramp_frame_p): Only handle frames if we - have a sigcontext_addr handler. - * x86-64-tdep.c (x86_64_sigtramp_frame_p): Assert that we have a - sigcontext_addr handler. - -2003-05-31 Andrew Cagney - - * mips-tdep.c (print_gp_register_row): Replace do_gp_register_row. - (print_fp_register_row): Replace do_fp_register_row. - (mips_print_fp_register): Add "file" and "frame" parameters. - (mips_print_register): Add "file" and "frame" parameters. - (mips_print_registers_info): Replace mips_do_registers_info. - (mips_gdbarch_init): Set print_registers_info instead of - deprecated_do_registers_info. - (mips_read_fp_register_single): Add "frame" parameter. - (mips_read_fp_register_double): Add "frame" parameter. - -2003-05-31 Mark Kettenis - - * i386-tdep.c (i386_register_name): Check for MMX registers first. - Fixes a bug where GDB would print the wrong register names for - targets without SSE. - - * x86-64-tdep.c (X86_64_NUM_SAVED_REGS): Set to X86_64_NUM_GREGS. - (x86_64_sigtramp_frame_cache): Use `sc_reg_offset' to find saved - registers. - - * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): New variable. - (x86_64_linux_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs instead of TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - - From Michal Ludvig : - * i386-tdep.h (struct gdbarch_tdep): Add members `sc_reg_offset' - and `sc_num_regs'. - (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, - I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM, - I386_ST0_REGNUM): Move here from... - * i386-tdep.c: ... here. - (I386_NUM_SAVED_REGS): Define to I386_NUM_REGS. - (i386_sigtramp_frame_cache): Use `sc_reg_offset' to find saved - registers if possible. - (i386_gdbarch_init): Initialize TDEP->sc_reg_offset. - * i386bsd-tdep.c (i386bsd_sc_pc_offset, i386bsd_sc_sp_offset): - Remove variables. - (i386bsd_sc_reg_offset): New variable. - (i386bsd_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs instead of TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - (i386fbsd_sc_reg_offset): New variable. - (i386fbsdaout_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs. - (i386fbsd4_sc_pc_offset, i386fbsd4_sc_sp_offset): Remove - variables. - (i386fbsd4_sc_reg_offset): New variable. - (i3864bsd4_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs instead of TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - * i386-linux-tdep.c (i386_linux_sc_reg_offset): New variable. - (i386_linux_init_abi): Set TDEP->sc_reg_offset and TDEP->sc_num_regs. - * i386nbsd-tdep.c (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset): - Remove variables. - (i386nbsd_sc_reg_offset): New variable. - (i386nbsd_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs instead of TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - * i386obsd-tdep.c (i386obsd_sc_pc_offset, i386obsd_sc_sp_offset): - Remove variables. - (i386obsd_sc_reg_offset): New variable. - (i386obsd_init_abi): Initialize TDEP->sc_reg_offset and - TDEP->sc_num_regs instead of TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - * i386bsd-nat.c (_initialize_i386bsd_nat): Adjust for changes in - i386bsd-tdep.c, i386nbsd-tdep.c and i386obsd-tdep.c. Add check - for frame pointer offset in `struct sigcontext'. - -2003-05-31 Andrew Cagney - - * mips-tdep.c (mips_gdbarch_init): Do not set the deprecated - architecture methods call_dummy_words, sizeof_call_dummy_words, - push_return_address, store_struct_return, and fix_call_dummy. Set - push_dummy_call instead of deprecated_push_arguments. - (mips_store_struct_return): Delete function. - (mips_fix_call_dummy): Delete function. - (mips_push_return_address): Delete function. - (mips_eabi_push_dummy_call): Replace mips_eabi_push_arguments, set - RA_REGNUM and T9_REGNUM. - (mips_n32n64_push_dummy_call): Ditto for - mips_n32n64_push_arguments. - (mips_o32_push_dummy_call): Ditto for mips_o32_push_arguments. - (mips_o64_push_dummy_call): Ditto for mips_o64_push_arguments. - -2003-05-31 Andrew Cagney - - * gdbarch.sh (PUSH_DUMMY_CALL): Add "func_addr" parameter. Rename - "dummy_addr" to "bp_addr". - * infcall.c (call_function_by_hand): Pass "funaddr" to - gdbarch_push_dummy_call. - * gdbarch.h, gdbarch.c: Re-generate. - * i386-tdep.c (i386_push_dummy_call): Update. - * arm-tdep.c (arm_push_dummy_call): Update. - * d10v-tdep.c (d10v_push_dummy_call): Update. - -2003-05-31 Mark Kettenis - - * x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove - variable declarations. - (x86_64_register_number, x86_64_register_name): Remove prototypes. - (x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call, - x86_64_linux_in_sigtramp, x86_64_linux_frame_chain, - x86_64_init_frame_pc, x86_64_init_frame_pc, - x86_64_function_has_prologue): Remove prototypes. - (X86_64_NUM_GREGS): New define. - (x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes. - * x86-64-tdep.c: Don't include "dwarf2cfi.h". Include - "dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h". - (RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM, - XMM1_REGNUM): Remove defines. - (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM, - X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM, - X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, - X86_64_XMM1_REGNUM): New defines. - (struct x86_64_register_info): Renamed from `struct - register_info'. Remove `size' member. - (x86_64_register_info_table): Remove variable. - (x86_64_register_info): New variable. - (X86_64_NUM_REGS): New define. - (X86_64_NUM_GREGS): Remove define. - (x86_64_num_regs, x86_64_num_gregs): Remove variables. - (x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length): - Remove variables. - (x86_54_dwarf2_reg_to_regnum): Remove function. - (x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables. - (x86_64_dwarf_reg_to_regnum): New function. - (x86_64_register_name): Rewrite. - (x86_64_register_raw_size): Remove function. - (x86_64_register_byte_table): Remove variable. - (x86_64_register_byte): Remove function. - (x86_64_register_virtual_type): Remove function. - (x86_64_register_type): New function. - (x86_64_register_convertible, x86_64_register_convert_to_virtual, - x86_64_register_convert_to_raw): Remove functions. - (x86_64_push_return_address, x86_64_pop_frame): Remove functon. - (x86_64_use_struct_convention): Make static. Adjust for renamed - defines. - (x86_64_frame_init_saved_regs): Remove function. - (x86_64_push_arguments): Make static. Change to accept a regcache - as argument. - (x86_64_store_return_value, x86_64_extract_return_value): Make - static. Rewrite based on i386 counterparts. - (x86_64_push_dummy_call): New function. - (X86_64_NUM_SAVED_REGS): New define. - (x86_64_register_number): Remove function. - (x86_64_store_struct_return): Remove function. - (x86_64_frameless_function_invocation, - x86_64_function_has_prologue): Remove functions. - (PROLOG_BUFSIZE): Remove define. - (struct x86_64_frame_cache): New structure. - (x86_64_alloc_frame_cache, x86_64_analyze_prologue, - x86_64_frame_cache, x86_64_frame_this_id, - x86_64_frame_prev_register, x86_64_frame_p, - x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id, - x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New - functions. - (x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New - variables. - (x86_64_skip_prologue): Rewrite in terms of - x86_64_analyze_prologue. - (x86_64_frame_base_address): New function. - (x86_64_frame_base): New variable. - (x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite. - (x86_64_init_abi): Set register_type and push_dummy_call. Don't - set deprecated_fp_regnum, deprecated_register_size, - deprecated_register_bytes, register_raw_size, register_byte, - register_virtual_type, register_convertiable, - register_convert_to_virtual, convert_to_raw, - deprecated_get_saved_register, deprecated_target_read_fp, - deprecated_push_arguments, deprecated_push_return_address, - deprecated_pop_frame, deprecated_store_struct_return, - deprecated_frame_init_saved_regs, deprecated_frame_chain, - frameless_function_invocation, deprecated_frame_saved_pc, - deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp, - dwarf2_build_frame_info, deprecated_init_extra_frame_info, - deprecated_init_frame_pc and virtual_frame_pointer. Call - frame_unwind_append_predicate to register x86_64_sigtramp_frame_p - and x86_64_frame_p. Call frame_base_set_default to register - x86_64_frame_base. - (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines. - (x86_64_supply_fxsave, x86_64_fill_fxsave): New functions. - (_initialize_x86_64_tdep): Remove function. - * x86-64-linux-tdep.c: Don't include "dwarf2cfi.h". - (LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET, - LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't - define. - (X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define. - (x86_64_linux_sigcontext_addr): Rewrite. - (x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call, - x86_64_linux_frame_saved_pc): Remove functions. - (x86_64_linux_pc_in_sigtramp): Renamed from - x86_64_linux_in_sigtramp. Try harder to recognize a signal - trampoline. - (x86_64_linux_frame_chain, x86_64_init_frame_pc): - Remove_functions. - (x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize - TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset. - * x86-64-linux-nat.c: Sync with i386-linux-tdep.c. - (x86_64_regmap): Rename to regmap. - (GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of - x86_64_num_gregs. - (supply_gregset, fill_gregset): Likewise. Use regmap instead of - x86_64_regmap. - (x86_64_fxsave_offset): Remove function. - (supply_fpregset): Simply call x86_64_supply_fxsave. - (fill_fpregset): Simply call x86_64_fill_fxsave. - (fetch_inferior_registers, store_inferior_registers): Avoid - asignment in if-statement. - (LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn, - SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET, - LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines. - (fetch_core_registers): Remove function. - (linux_elf_core_fns): Remove. - (offsetoff): Don't define. - (_initialize_x86_64_linux_nat, kernel_u_size): Remove functions. - * config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o. - * config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o, - add core-regset.o. - * config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for - protection against multiple includes instead of NM_X86_64_h. Add - various comments. Include "config/nm-linux.h". Don't include - . - (REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR, - GET_THREAD_SIGNALS): Remove defines. - (x86_64_register_u_addr, kernel_u_size, - lin_thread_get_thread_signals): Remove prototypes. - (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'. - [HAVE_LINK_H]: Don't include "solib.h". - [HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define. - * config/i386/tm-x86-64linux.h: Fix comments. - * Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o, - x86-64-tdep.o): Update dependencies. - -2003-05-30 Andrew Cagney - - * config/sparc/tm-sparc.h (sparc_extract_struct_value_address): - Change parameter type to a "struct regcache *". - - * gdbarch.sh: Regardless of the multi-arch level, always define - the macro when not already defined. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-05-30 Richard Henderson - - * alpha-mdebug-tdep.c (alpha_mdebug_frame_p): Reject prologues. - (alpha_mdebug_frame_unwind_cache): Don't call the heuristic unwinder. - (alpha_mdebug_frame_this_id): Likewise. - (alpha_mdebug_frame_prev_register): Likewise. - (alpha_mdebug_frame_base_address): Likewise. - (alpha_mdebug_frame_locals_address): Likewise. - (alpha_mdebug_frame_args_address): Likewise. - (struct alpha_mdebug_unwind_cache): Remove in_prologue_cache. - * alpha-tdep.c (alpha_heuristic_proc_start): Use get_pc_function_start. - (alpha_heuristic_frame_unwind_cache): Make static; add missing - loop increment. - (alpha_heuristic_frame_this_id): Make static. - (alpha_heuristic_frame_prev_register): Likewise. - (alpha_heuristic_frame_base_address): Likewise. - * alpha-tdep.h: Update. - -2003-05-30 Mark Kettenis - - * i386-tdep.h (i386bsd_sigcontext_addr): Remove prototype. - (I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS): Remove - defenitions. - (IS_FP_REGNUM, IS_SSE_REGNUM): Remove definitions. - * i386-tdep.c: Mark functions that are 64-bit safe as such. - (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, - I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM, - I386_ST0_REGNUM): New defines. - (CODESTREAM_BUFSIZ, codestream_tell, codestream_peek, - codestream_get): Remove define. - (codestream_next_addr, condestream_addr, condestream_buf, - codestream_off, codestream_cnt): Remove variables. - (codestream_fill, codestream_seek, codestream_read): Remove - functions. - (i386_follow_jump): Rewrite to avoid usage of removed codestream - functionality. - (i386_get_frame_setup, i386_frameless_signal_p, i386_frame_chain, - i386_sigtramp_saved_pc, i386_sigtramp_saved_sp, - i386_frame_saved_pc, i386_saved_pc_after_call, - i386_frame_num_args, i386_frame_init_saved_regs, - i386_push_return_address, i386_do_pop_frame, i386_pop_frame, - i386_push_arguments): Remove functions. - (i386_skip_prologue): Rewrite to avoid usage of removed codestream - functionality. Use i386_analyze_prologue instead of - i386_get_frame_setup. - (I386_NUM_SAVED_REGS): New define. - (struct i386_frame_cache): New structure. - (i386_alloc_frame_cache, i386_analyze_struct_return, - i386_skip_probe, i386_analyze_frame_setup, - i386_analyze_register_saves, i386_analyze_prologue, - i386_unwind_pc, i386_frame_cache, i386_frame_this_id, - i386_frame_prev_register, i386_sigtramp_frame_cache, - i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register, - i386_frame_p, i386_sigtramp_frame_p, i386_frame_base_address, - i386_unwind_dummy_id, i386_save_dummy_tos, i386_push_dummy_call): - New functions. - (i386_frame_unwind, i386_sigtramp_frame_unwind, i386_frame_base): - New variables. - (LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): Define in terms of - I386_EAX_REGNUM and I386_EDX_REGNUM. - (i386_extract_return_value, i386_store_return_value): Use - I386_ST0_REGNUM where appropriate. - (i386_extract_struct_value_address): Rewrite to use extract_address. - (i386_svr4_pc_in_sigtramp): Add comment. - (i386_svr4_sigcontext_addr): Rewrite. - (i386_svr4_init_abi): Adjust TDEP->sc_pc_offset and - TDEP->sc_sp_offset. - (i386_gdbarch_init): Don't set deprecated_init_frame_pc. Set - sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum in terms - of new defines. Set push_dummy_call, don't set - deprecated_push_arguments, deprecated_push_return_address, - deprecated_pop_frame. Don't set parm_boundary. Don't set - deprecated_frame_chain, deprecated_frame_saved_pc, - deprecated_saved_pc_after_call. Set unwind_dummy_id, - save_dummy_frame_tos, unwind_pc. Call - frame_unwind_append_predicate and frame_base_set_default. Don't - set deprecated_dummy_write_pc. Don't set deprecated_fp_regnum. - Don't set frameless_function_invocation. Don't set - deprecated_register_bytes, deprecated_register_size, - deprecated_call_dummy_words and deprecated_sizeof_call_dummy. - * i386-linux-tdep.c: Fix formatting in some comments. - (LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0, - LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1, - LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2, - LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0, - LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1): Drop - redundant parentheses. - (I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): New define. - (i386_linux_sigcontext_addr): Use it. Rewrite. - (find_minsym_and_objfile): Change name of second argument. - (skip_gnu_resolver): Renamed from skip_hurd_resolver. All callers - changed. Use frame_pc_unwind instead of - DEPRECATED_SAVED_PC_AFTER_CALL. - (i386_linux_init_abi): Don't set deprecated_register_bytes. - * i386bsd-tdep.c (i386bsd_sigcontext_addr): Rewrite. - * i386-nto-tdep.c (i386nto_sigcontext_addr): Adapt for new frame - unwinder. - * i386-cygwin-tdep.c: Don't include "gdbcore.h", "frame.h" and - "dummy-frame.h". - (i386_cygwin_frame_chain_valid, i386_cygwin_frame_chain): Removed. - (_initialize_i386_cygwin_tdep): New prototype. - (i386_cygwin_init_abi): Don't set deprecated_frame_chain and - deprecated_frame_chain_valid. - * i386-sol2-tdep.c (i386_sol2_init_abi): Don't set - TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset. - Rely on the SVR4 defaults. - * config/i386/i386sol2.mt (TDEPFILES): Remove i386bsd-tdep.o. - * Makefile.in (i386-tdep.o, i386-cygwin-tdep.o): Update dependencies. - -2003-05-30 Andrew Cagney - - * infcall.c (call_function_by_hand): Always call - DEPRECATED_FIX_CALL_DUMMY, even for AT_ENTRY_POINT case. - -2003-05-30 Richard Henderson - - * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Fix loop - increment. - -2003-05-29 Jim Blandy - - Use gdbarch methods for solib stuff on PowerPC Linux. - * config/powerpc/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE, - SKIP_TRAMPOLINE_CODE): #undef these, so the gdbarch methods will - show through. - * ppc-linux-tdep.c (ppc_linux_init_abi): Register - IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE methods here, - giving the same effect as the #definitions above. - -2003-05-29 Adam Fedor - - * objc-lang.c (CONVERT_FUNCPTR): Remove macro - (find_implementation_from_class): Replace it with the standard - case i.e. do nothing. - -2003-05-29 Richard Henderson - - * alpha-linux-tdep.c (alpha_linux_sigtramp_offset_1): New. - (alpha_linux_sigtramp_offset): Use it. Make static. - (alpha_linux_sigcontext_addr): Handle __NR_rt_sigreturn; - update for new frame model. - * alpha-mdebug-tdep.c: New file. - * alpha-osf1-tdep.c (alpha_call_dummy_address): Move from alpha-tdep.c. - (alpha_osf1_init_abi): Install it. - * alpha-tdep.c (PROC_*): Move to alpha-mdebug-tdep.c. - (linked_proc_desc_table): Remove. - (alpha_frame_past_sigtramp_frame): Remove. - (alpha_dynamic_sigtramp_offset): Remove. - (ALPHA_PROC_SIGTRAMP_MAGIC): Remove. - (alpha_proc_desc_is_dyn_sigtramp): Remove. - (alpha_set_proc_desc_is_dyn_sigtramp): Remove. - (push_sigtramp_desc): Remove. - (alpha_cannot_fetch_register): Use ALPHA_FP_REGNUM. - (alpha_cannot_store_register): Likewise. - (alpha_sigcontext_addr): Remove. - (alpha_find_saved_regs): Remove. - (alpha_frame_init_saved_regs): Remove. - (alpha_init_frame_pc_first): Remove. - (read_next_frame_reg): Remove. - (alpha_frame_saved_pc): Remove. - (alpha_saved_pc_after_call): Remove. - (temp_proc_desc, temp_saved_regs): Remove. - (alpha_about_to_return): Remove. - (cached_proc_desc): Remove. - (alpha_frame_chain): Remove. - (alpha_print_extra_frame_info): Remove. - (alpha_init_extra_frame_info): Remove. - (alpha_frame_locals_address): Remove. - (alpha_frame_args_address): Remove. - (alpha_push_arguments): Use ALPHA_REGISTER_BYTES not sizeof CORE_ADDR. - (alpha_push_dummy_frame): Remove. - (alpha_pop_frame): Remove. - (alpha_after_prologue): Rename from after_prologue; remove mdebug bits. - (alpha_read_insn): New. - (alpha_skip_prologue): Merge alpha_skip_prologue_internal; adjust - for different insn encodings. - (alpha_in_lenient_prologue): Remove. - (struct alpha_sigtramp_unwind_cache): New. - (alpha_sigtramp_frame_unwind_cache): New. - (alpha_sigtramp_register_address): New. - (alpha_sigtramp_frame_this_id): New. - (alpha_sigtramp_frame_prev_register): New. - (alpha_sigtramp_frame_unwind): New. - (alpha_sigtramp_frame_p): New. - (struct alpha_heuristic_unwind_cache): New. - (alpha_heuristic_proc_start): Rename from heuristic_proc_start; - don't count nop insns that occur between functions. - (alpha_heuristic_frame_unwind_cache): New; incorporate much of - heuristic_proc_desc, but without the mdebug wrapping. - (alpha_heuristic_frame_this_id): New. - (alpha_heuristic_frame_prev_register): New. - (alpha_heuristic_frame_unwind): New. - (alpha_heuristic_frame_p): New. - (alpha_heuristic_frame_base_address): New. - (alpha_heuristic_frame_base): New. - (alpha_unwind_dummy_id): New. - (alpha_unwind_pc): New. - (alpha_gdbarch_init): Don't set skip_sigtramp_frame. Kill use of - frame related deprecated initializations; install replacements. - (alpha_dump_tdep): Remove. - * alpha-tdep.h (struct gdbarch_tdep): Remove skip_sigtramp_frame. - (alpha_read_insn, alpha_after_prologue, - alpha_heuristic_frame_unwind_cache, alpha_heuristic_frame_this_id, - alpha_heuristic_frame_prev_register, - alpha_heuristic_frame_base_address, alpha_mdebug_init_abi): Declare. - * config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-mdebug-tdep.o. - * config/alpha/tm-alpha.h (PRINT_EXTRA_FRAME_INFO): Remove. - * config/alpha/tm-alphalinux.h (SIGTRAMP_START, SIGTRAMP_END): Remove. - -2003-05-29 Andrew Cagney - - * gdb_assert.h (gdb_assert_fail): Provide different definitions - dependant on the availability of ASSERT_FUNCTION. - (ASSERT_FUNCTION): Do not define when there is no function name. - -2003-05-29 Kevin Buettner - - From Jimi X : - * rs6000-tdep.c (skip_prologue): Improve support for 64-bit code. - -2003-05-28 Jim Blandy - - * ppc-linux-nat.c (store_altivec_registers): Don't cast fourth - argument to ptrace to int; the system headers should give it the - right type, and pointers don't fit in ints on powerpc64-*-*. - -2003-05-28 H.J. Lu - - * dwarf2read.c (process_die): Handle DW_TAG_try_block and - DW_TAG_catch_block. - -2003-05-26 Elena Zannoni - - * stabsread.c (dbx_lookup_type): Make static. - (read_type): Ditto. - (add_undefined_type): Ditto. - * stabsread.h (dbx_lookup_type, read_type, add_undefined_type): Do - not export. - -2003-05-26 Elena Zannoni - - * hpread.c (hpread_has_name): Make static. - (hpread_psymtab_to_symtab): Ditto. - (file_exists): Ditto. - (hpread_call_pxdb): Ditto. - (hpread_pxdb_needed): Ditto. - (hpread_quick_traverse): Ditto. - (hpread_get_header): Ditto. - (hpread_get_lntt): Ditto. - (hpread_get_slt): Ditto. - (class_of): Ditto. - -2003-05-25 Andreas Schwab - - * m68k-tdep.c (m68k_gdbarch_init): Set parm_boundary instead of - stack_align and deprecated_extra_stack_alignment_needed. - (m68k_stack_align): Delete. - - * m68k-tdep.c (m68k_register_raw_size): Remove cast. - (m68k_register_virtual_size): Likewise. - (altos_skip_prologue): Remove obsolete function. - (isi_frame_num_args): Likewise. - (news_frame_num_args): Likewise. - (m68k_fix_call_dummy): Make static. - (m68k_push_dummy_frame): Likewise. - (m68k_pop_frame): Likewise. - (m68k_skip_prologue): Likewise. - (m68k_frame_init_saved_regs): Likewise. - (m68k_saved_pc_after_call): Likewise. - (m68k_get_longjmp_target): Make multi-arch. - (m68k_gdbarch_init): Allocate and initialize gdbarch_tdep - structure. Register m68k_get_longjmp_target if enabled. - * m68k-tdep.h (struct gdbarch_tdep): Define. - * config/m68k/tm-m68k.h: Don't include "regcache.h". - - * Makefile.in (config.status): Also depend on configure.tgt - and configure.host. - (m68klinux-tdep.o): Update dependencies. - * configure.tgt (m68*-*-linux*): Set gdb_multi_arch to 1. - * m68klinux-tdep.c (M68K_LINUX_JB_ELEMENT_SIZE): Define. - (M68K_LINUX_JB_PC): Define. - (m68k_linux_pc_in_sigtramp): Renamed from m68k_linux_in_sigtramp - and take additional parameter. - (m68k_linux_sigtramp_saved_pc): Update. - (m68k_linux_init_abi): Set jb_pc and jb_elt_size. Register - m68k_linux_pc_in_sigtramp, in_plt_section, - find_solib_trampoline_target. - * config/m68k/tm-linux.h: Don't include any tm headers. - (START_INFERIOR_TRAPS_EXPECTED): Remove definition. - (JB_ELEMENT_SIZE): Likewise. - (JB_PC): Likewise. - (GET_LONGJMP_TARGET): Likewise. - (IN_SIGTRAMP): Likewise. - (SVR4_SHARED_LIBS): Define this and include "solib.h". - -2003-05-25 Mark Kettenis - - * sparc-tdep.c (sparc32_do_push_arguments): New function. - (sparc32_push_arguments): Re-implement by calling - sparc32_do_push_arguments. - -2003-05-25 Mark Kettenis - - * sparc-tdep.c (SPARC_F0_REGNUM, SPARC_F1_REGNUM, SPARC_O0_REGNUM, - SPARC_O1_REGNUM): New defines. - (sparc32_extract_return_value): Rewrite to operate on a regcache. - (sparc32_store_return_value): New function. - (sparc_extract_struct_value_address): Rewrite to operate on a - regcache. - (sparc_gdbarch_init): Don't set - deprecated_extract_struct_value_address. Set - extract_struct_value_address instead. Don't set - deprecated_extract_return_value and deprecated_store_return_value - for 32-bit targets. Set extract_return_value and - store_return_value instead. - * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE, - DEPRECATED_EXTRACT_RETURN_VALUE, - DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Don't define these. - (STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE, - EXTRACT_STRUCT_VALUE_ADDRESS): Define these instead. - (sparc_store_return_value): Remove prototype. - (sparc32_store_return_value): New prototype. - (sparc32_extract_return_value, sparc_extract_struct_value_address): - Adjust prototypes. - -2003-05-24 Mark Kettenis - - * sparcnbsd-tdep.c: Include "gdb_string.h". - -2003-05-23 Andrew Cagney - - * p-valprint.c (pascal_val_print): Replace extract_address with - the inline equivalent extract_unsigned_integer. - * jv-valprint.c (java_value_print): Ditto. - * ada-valprint.c (ada_val_print_1): Ditto. - * ada-lang.h (EXTRACT_ADDRESS): Ditto. - -2003-05-23 Theodore A. Roth - - * blockframe.c (frameless_look_for_prologue): Remove unused - after_prologue variable. - -2003-05-23 Mark Kettenis - - * blockframe.c (get_pc_function_start): Rewrite to avoid - asignments in if-statements. - -2003-05-23 Raoul Gough - - Committed by Elena Zannoni . - * coffread.c(coff_symtab_read): Do relocate static symbols from PE - files, don't relocate absolute symbols (and do use mst_abs). - -2003-05-23 Andrew Cagney - - * objc-lang.c: Include "gdb_assert.h". - (objc_op_print_tab): Use OP_NULL and PREC_NULL instead of 0. - (CHECK, CHECK_FATAL, __CHECK_FUNCTION): Delete macros. - (gdb_check, gdb_check_fatal): Delete functions. - (read_objc_methlist_method): Replace CHECK and CHECK_FATAL with - gdb_assert. - (parse_selector, parse_method, find_methods, find_imps): Ditto. - * Makefile.in (objc-lang.o): Update dependencies. - -2003-05-22 Ian Lance Taylor - - * disasm.c (gdb_disassemble_info): Initialize disassemble_info - with fprintf_filtered, not fprintf_unfiltered. - -2003-05-22 Andrew Cagney - - * stack.c (frame_info): Inline extract_address, replacing it with - extract_unsigned_integer. - * findvar.c (unsigned_pointer_to_address): Ditto. - * dwarf2loc.c (dwarf_expr_read_reg): Ditto. - * dwarf2expr.c (dwarf2_read_address): Ditto. - * frame.c (frame_pc_unwind): Update comment. - * dummy-frame.c (deprecated_read_register_dummy): Update comment. - -2003-05-22 Jeff Johnston - - * infptrace.c (detach): Call print_sys_errmsg rather than - perror_with_name to issue warning message when errno is non-zero - after calling ptrace detach. - -2003-05-21 J. Brobecker - - * config/pa/tm-hppa.h: Delete some unused macros. Move some - macro definitions from here... - * hppa-tdep.c: ...to there. - -2003-05-20 Kevin Buettner - - * mips-nat.c (REGISTER_PTRACE_ADDR): Convert macro to function - register_ptrace_addr(). Fix all callers. - -2003-05-21 Andreas Schwab - - * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update - dependencies. - * m68k-tdep.c (m68k_gdbarch_init): Call gdbarch_init_osabi at the - end. - * m68klinux-tdep.c (m68k_linux_init_abi): New function. - (_initialize_m68k_linux_tdep): New function. - (m68k_linux_frame_saved_pc): Make static. - (m68k_linux_extract_return_value): Likewise. - (m68k_linux_store_return_value): Likewise. - (m68k_linux_extract_struct_value_address): Likewise. - * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): - Remove. - (DEPRECATED_STORE_RETURN_VALUE): Remove. - (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove. - (DEPRECATED_FRAME_SAVED_PC): Remove. - -2003-05-20 Kris Warkentin - - * nto-tdep.c (fetch_core_registers): Match gdb's idea of - regset numbering rather than our own. - -2003-05-19 David Carlton - - * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/rtti*. - -2003-05-19 David Carlton - - Partial fix for PR c++/827. - * cp-support.h: Include symtab.h. - Declare cp_lookup_symbol_nonlocal, cp_lookup_symbol_namespace. - * cp-namespace.c: Update contributors. - (cp_lookup_symbol_nonlocal): New. - (lookup_namespace_scope, cp_lookup_symbol_namespace) - (lookup_symbol_file): Ditto. - * c-lang.c (cplus_language_defn): Use cp_lookup_symbol_nonlocal. - * block.h: Declare block_scope, block_using, block_global_block. - * block.c (block_scope): New. - (block_using, block_global_block): Ditto. - * Makefile.in (cp_support_h): Depend on symtab_h. - * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/namespace1.cc. - -2003-05-19 David Carlton - - * language.h (struct language_defn): Add 'la_value_of_this' - and 'la_lookup_symbol_nonlocal' members. - * symtab.h: Declare basic_lookup_symbol_nonlocal, - lookup_symbol_static, lookup_symbol_global, - lookup_symbol_aux_block. - * symtab.c (lookup_symbol_aux): Call language hooks to determine - if we should search fields of this and how to do static/global - lookup. - (lookup_symbol_aux_block): Make extern. - (basic_lookup_symbol_nonlocal): New. - (lookup_symbol_static, lookup_symbol_global): Ditto. - * ada-lang.c (ada_language_defn): Set 'la_value_of_this' and - 'la_lookup_symbol_nonlocal' members. - * c-lang.c (c_language_defn, cplus_language_defn) - (asm_language_defn, minimal_language_defn): Ditto. - * jv-lang.c (java_language_defn): Ditto. - * language.c (unknown_language_defn, auto_language_defn) - (local_language_defn): Ditto. - * m2-lang.c (m2_language_defn): Ditto. - * objc-lang.c (objc_language_defn): Ditto. - * scm-lang.c (scm_language_defn): Ditto. - * f-lang.c (f_language_defn): Ditto, and include value.h as well. - * p-lang.c (pascal_language_defn): Ditto for both. - * Makefile.in (f-lang.o): Depend on value_h. - (p-lang.o): Ditto. - -2003-05-19 David Carlton - - * block.h: Declare block_static_block. - * block.c (block_static_block): New. - * symtab.c (lookup_symbol_aux): Remove 'static_block' argument to - lookup_symbol_aux_local, calling block_static_block instead. - (lookup_symbol_aux_local): Delete 'static_block' argument. - -2003-05-19 David Carlton - - * symtab.c (lookup_symbol_aux): Delete #if 0 hunk. - -2003-05-19 Michal Ludvig - - * x86-64-tdep.c (x86_64_dwarf2gdb_regno_map): Fix - register numbers mapping. - -2003-05-18 Adam Fedor - - * symtab.c (completion_list_objc_symbol): New function. - (make_symbol_completion_list): Use it to add ObjC symbols - when looking though the list. - (language_search_unquoted_string): New function. - (make_file_symbol_completion_list): Use it. - -2003-05-18 Andreas Schwab - - * Makefile (m68klinux-nat.o, m68klinux-tdep.o): Update - dependencies. - * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Define - as m68k_linux_extract_return_value. - (DEPRECATED_STORE_RETURN_VALUE): Define as - m68k_linux_store_return_value. - (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Define as - m68k_linux_extract_struct_value_address. - * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Use - get_next_frame, get_frame_base, get_frame_pc. - (m68k_linux_frame_saved_pc): Use get_frame_base. - (m68k_linux_extract_return_value): New function. - (m68k_linux_store_return_value): New function. - (m68k_linux_extract_struct_value_address): New function. - * config/m68k/tm-m68k.h: Declare m68k_get_longjmp_target. - - * c-exp.y (typebase): Remove duplicate occurence of - `SIGNED_KEYWORD LONG LONG'. Use builtin_type_long_long instead - of lookup_signed_typename. - -2003-05-18 Mark Kettenis - - * dwarf2loc.c (find_location_expression): Change type of second - argument to `size_t *'. - (loclist_read_variable, loclist_tracepoint_var_ref): Use size_t - for size variable. - -2003-05-18 David Carlton - - * symtab.c (lookup_symbol_aux): Rename 'mangled_name' argument to - 'linkage_name'. Add comment. - (lookup_symbol_aux_local): Rename 'mangled_name' argument to - 'linkage_name'. - (lookup_symbol_aux_block, lookup_symbol_aux_symtabs) - (lookup_symbol_aux_psymtabs, lookup_symbol_aux_minsyms) - (lookup_block_symbol): Ditto. - -2003-05-16 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_BYTES): Rename REGISTER_BYTES. - * gdbarch.h, gdbarch.c: Re-generate. - * arm-linux-tdep.c (arm_linux_extract_return_value): Delete reference. - * TODO (REGISTER_BYTES): Delete reference. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init_32082): Update. - (ns32k_gdbarch_init_32382): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * i386-linux-tdep.c (i386_linux_init_abi): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * sparc-tdep.c (sparc_pop_frame): Update. - * rs6000-tdep.c (rs6000_pop_frame): Update. - * remote.c (init_remote_state): Update. - (remote_prepare_to_store): Update. - * remote-vx.c (vx_prepare_to_store): Update. - * remote-sds.c (sds_fetch_registers): Update. - (sds_prepare_to_store): Update. - * remote-array.c: Update. - * regcache.c (init_legacy_regcache_descr): Update. - (init_regcache_descr): Update. - * mips-tdep.c (mips_eabi_extract_return_value): Update. - (mips_o64_extract_return_value): Update. - * irix5-nat.c (fetch_core_registers): Update. - * irix4-nat.c (fetch_core_registers): Update. - * i386-tdep.h: Update. - * hppa-tdep.c (pa_do_registers_info): Update. - (pa_do_strcat_registers_info): Update. - * cris-tdep.c (cris_register_bytes_ok): Update. - * config/nm-gnu.h (CHILD_PREPARE_TO_STORE): Update. - * config/sparc/tm-sparc.h (DEPRECATED_REGISTER_BYTES): Update. - * config/sparc/nm-sun4sol2.h (CHILD_PREPARE_TO_STORE): Update. - * config/sparc/nm-sun4os4.h (CHILD_PREPARE_TO_STORE): Update. - * config/sparc/nm-nbsd.h (CHILD_PREPARE_TO_STORE): Update. - * config/sparc/tm-sp64.h (DEPRECATED_REGISTER_BYTES): Update. - * config/s390/tm-s390.h (DEPRECATED_REGISTER_BYTES): Update. - * config/pa/tm-hppa64.h (DEPRECATED_REGISTER_BYTES): Update. - * config/mips/tm-mips.h (DEPRECATED_REGISTER_BYTES): Update. - * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Update. - * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Update. - * config/m68k/tm-sun3.h (DEPRECATED_REGISTER_BYTES): Update. - (REGISTER_BYTES_OK): Update. - * config/m68k/nm-sun3.h (CHILD_PREPARE_TO_STORE): Update. - * config/ia64/tm-ia64.h (DEPRECATED_REGISTER_BYTES): Update. - -2003-05-16 Ian Lance Taylor - - * vax-tdep.c (INVALID_FLOAT, MAXLEN, NOPCODES): Don't define. - (vax_print_insn, print_insn_arg): Remove static functions. - (vax_gdbarch_init): Call set_gdbarch_print_insn with - print_insn_vax from opcodes library. - (_initialize_vax_tdep): Don't set deprecated_tm_print_insn. - -2003-05-15 Andrew Cagney - - * arch-utils.h (legacy_breakpoint_from_pc): Delete declaration. - * target.h (memory_breakpoint_from_pc): Delete declaration. - * mem-break.c (memory_breakpoint_from_pc): Delete function. - * arch-utils.c (legacy_breakpoint_from_pc): Delete function. - * monitor.c (monitor_insert_breakpoint): Use - gdbarch_breakpoint_from_pc instead of memory_breakpoint_from_pc. - * gdbarch.sh (BREAKPOINT_FROM_PC): Do not provide a default. - * gdbarch.h, gdbarch.c: Re-generate. - * sparc-tdep.c (sparc_breakpoint_from_pc): New function. - (sparc_gdbarch_init): Set breakpoint_from_pc to - sparc_breakpoint_from_pc. - * config/sparc/tm-sparc.h (BREAKPOINT): Delete macro. - (BREAKPOINT_FROM_PC): Define. - (sparc_breakpoint_from_pc): Declare. - * hppa-tdep.c (hppa_breakpoint_from_pc): New function. - * config/pa/tm-hppa.h (hppa_breakpoint_from_pc): Declare. - (BREAKPOINT_FROM_PC): Define. - (BREAKPOINT): Delete macro. - * target.h: Update comment. - * s390-tdep.c (s390_gdbarch_init): Update comments. - * remote.c: Update comments. - * remote-mips.c: Update comments. - * proc-api.c (write_with_trace): Do not check for a breakpoint. - * mem-break.c: Update comment. - * ia64-tdep.c (IA64_BREAKPOINT): Rename BREAKPOINT. - (ia64_memory_insert_breakpoint): Update. - * config/sparc/tm-sparc.h: Update comment. - * config/pa/tm-hppa64.h: Update comment. - * rs6000-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro. - (rs6000_breakpoint_from_pc): Update. - * mips-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro. - (PMON_BIG_BREAKPOINT, PMON_LITTLE_BREAKPOINT): Delete macro. - (IDT_LITTLE_BREAKPOINT, IDT_LITTLE_BREAKPOINT): Delete macro. - (MIPS16_LITTLE_BREAKPOINT, MIPS16_BIG_BREAKPOINT): Delete macro. - (mips_breakpoint_from_pc): Update. - (mips_dump_tdep): Update. - - * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Delete macro. - * minsyms.c (lookup_minimal_symbol): Inline - DEPRECATED_SYMBOL_MATCHES_NAME. Replace STREQ with strcmp. - - * c-lang.c (c_printstr): Delete "extern inspect_it" declaration. - * p-valprint.c (pascal_object_print_value_fields): Ditto. - * p-lang.c (pascal_printstr): Ditto. - * objc-lang.c (objc_printstr): Ditto. - * m2-lang.c (m2_printstr): Ditto. - * jv-valprint.c (java_print_value_fields): Ditto. - * f-lang.c (f_printstr): Ditto. - * cp-valprint.c (cp_print_value_fields): Ditto. Include "valprint.h". - * ada-valprint.c (inspect_it, repeat_count_threshold): Ditto, and - for repeat_count_threshold. - * Makefile.in (cp-valprint.o): Update dependencies. - -2003-05-15 Jeff Johnston - - * ia64-tdep.c: Increase max_skip_non_prologue_insns to 40. - (examine_prologue): Support looking through leaf functions, knowing - they start with mov r2,r12. Support skipping over indirect stores - of the input registers. Upon hitting a non-nop branch instruction - or predicated instruction, bail out by setting lim_pc to the current - pc value in the loop. At the end, if the lim_pc value is still - beyond our calculated value and we have trust_limit set, - use the lim_pc value. - -2003-05-15 Andrew Cagney - - * dummy-frame.h (deprecated_find_dummy_frame_regcache): Rename - generic_find_dummy_frame. - * dummy-frame.c (deprecated_find_dummy_frame_regcache): Update. - (deprecated_generic_find_dummy_frame): Update. - (deprecated_read_register_dummy): Update. - * frame.c (deprecated_generic_get_saved_register): Update. - -2003-05-15 Theodore A. Roth - - * avr-tdep.c (avr_breakpoint_from_pc): New function. - (avr_gdbarch_init): Set breakpoint_from_pc method. - -2003-05-15 Andrew Cagney - - * regcache.c (build_regcache): Set deprecated_register_valid - directly. - (deprecated_grub_regcache_for_register_valid): Delete function. - * regcache.h (deprecated_grub_regcache_for_register_valid): Delete - declaration. - -2003-05-15 David Carlton - - Committed by Elena Zannoni - * symtab.c (lookup_symbol_aux): Delete calls to - lookup_symbol_aux_minsyms. - (lookup_symbol_aux_minsyms): Comment out function and - prototype. Delete lookup by mangled name. - -2003-05-14 Kevin Buettner - - * dwarf2expr.c (new_dwarf_expr_context): Set ``stack_len'' to - correctly indicate an empty stack and ``stack_allocated'' to the - indicate the number of elements initially allocated. - (dwarf_expr_grow_stack): Simplify method for computing new - stack size. Don't loop infinitely if ``stack_len'' is zero. - (execute_stack_op): Move ``ctx->in_reg'' initialization - out of loop. Allow DW_OP_reg0 ... DW_OP_reg31 and DW_OP_regx to - be used in conjuction with DW_OP_piece. Revise error message - accordingly. - -2003-05-14 Theodore A. Roth - - * MAINTAINERS: Update my email address. - * avr-tdep.c: Ditto. - -2003-05-14 Elena Zannoni - - * symtab.h (enum domain_enum): Rename from namespace_enum. - (UNDEF_DOMAIN, VAR_DOMAIN, STRUCT_DOMAIN, LABEL_DOMAIN, - VARIABLES_DOMAIN, FUNCTIONS_DOMAIN, TYPES_DOMAIN, METHODS_DOMAIN): - Rename from UNDEF_NAMESPACE, VAR_NAMESPACE, STRUCT_NAMESPACE, - LABEL_NAMESPACE, VARIABLES_NAMESPACE, FUNCTIONS_NAMESPACE, - TYPES_NAMESPACE, METHODS_NAMESPACE. - (SYMBOL_NAMESPACE): Rename to SYMBOL_DOMAIN. - (struct symbol, struct partial_symbol): Rename field - 'namespace_enum namespace' to 'domain_enum domain'. - (PSYMBOL_NAMESPACE): Rename to PSYMBOL_DOMAIN. - Delete old define kludge for namespace. - - * ada-exp.y, ada-lang.c, ada-lang.h, alpha-tdep.c, arm-tdep.c, - blockframe.c, c-exp.y, c-valprint.c, coffread.c, dbxread.c, - dwarf2read.c, dwarfread.c, f-exp.y, gdbtypes.c, gdbtypes.h, - gnu-v3-abi.c, hppa-tdep.c, hpread.c, jv-exp.y, jv-lang.c, - language.c, linespec.c, m2-exp.y, m3-nat.c, mdebugread.c, - mips-tdep.c, nlmread.c, objc-exp.y, objc-lang.c, objfiles.c, - p-exp.y, p-valprint.c, parse.c, printcmd.c, scm-lang.c, source.c, - stabsread.c, stack.c, symfile.c, symfile.h, symmisc.c, symtab.c, - valops.c, values.c, xcoffread.c, xstormy16-tdep.c: Replace all - occurrences of the above. - -2003-05-14 Ian Lance Taylor - - * Makefile.in (install-only): Use $(SHELL) when running - mkinstalldirs. - -2003-05-13 Ian Lance Taylor - - * MAINTAINERS (write after approval): Add myself. - - * ser-pipe.c (_initialize_ser_pipe): Correct call to memset--swap - second and third arguments. - * ser-tcp.c (_initialize_ser_tcp): Likewise. - * ser-unix.c (_initialize_ser_hardwire): Likewise. - -2003-05-13 Andrew Cagney - - * defs.h (store_address): Delete declaration. - findvar.c (store_address): Delete function. - * arm-tdep.c (arm_push_dummy_call): Replace store_address with - store_unsigned_integer. - * xstormy16-tdep.c (xstormy16_address_to_pointer): Ditto. - * v850-tdep.c (v850_push_arguments): Ditto. - * sparc-tdep.c (sparc_get_saved_register): Ditto. - * sh-tdep.c (sh64_get_saved_register): Ditto. - * rs6000-tdep.c (rs6000_push_arguments): Ditto. - * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Ditto. - * mips-tdep.c (mips_eabi_push_arguments): Ditto. - (mips_get_saved_register): Ditto. - * ia64-tdep.c (ia64_get_saved_register): Ditto. - (find_func_descr, ia64_push_arguments): Ditto. - * i386-tdep.c (i386_push_arguments): Ditto. - * hpux-thread.c (hpux_thread_fetch_registers): Ditto. - * frv-tdep.c (frv_push_arguments): Ditto. - * frame.c (legacy_saved_regs_prev_register): Ditto. - (deprecated_generic_get_saved_register): Ditto. - * findvar.c (unsigned_address_to_pointer): Ditto. - * dwarf2read.c (dwarf2_const_value): Ditto. - * arm-linux-tdep.c (arm_linux_push_arguments): Ditto. - * alpha-tdep.c (alpha_push_arguments): Ditto. - -2003-05-12 J. Brobecker - - * NEWS: Mention that the hppa-hpux port has been partially - multiarched (32bit ABIT only, so far). - -2003-05-11 Andrew Cagney - - * Makefile.in (mi-symbol-cmds.o): Rename mi-cmd-symbol. - * config/djgpp/fnchange.lst: Rename include/xtensa-isa-internal.h, - include/xtensa-isa.h, sim/testsuite/sim/arm/misaligned1.ms, - sim/testsuite/sim/arm/misaligned2.ms, and - sim/testsuite/sim/arm/misaligned3.ms. - * disasm.h (struct ui_file): Add opaque struct declaration. - * config/pa/tm-hppa64.h (struct type, struct frame_info): Ditto. - * frame.h (struct ui_file): Ditto. - -2003-05-11 Mark Kettenis - - * value.h: Pretty print. - -2003-05-10 Mark Kettenis - - * config/i386/tm-linux.h (I386_GNULINUX_TARGET): Remove define. - -2003-05-08 Andrew Cagney - - * regcache.h (max_register_size): Delete declaration. - * regcache.c (max_register_size): Delete function. - (struct regcache_descr): Delete field "max_register_size". - (init_regcache_descr, init_legacy_regcache_descr): Assert that all - registers fit in MAX_REGISTER_SIZE. - (regcache_save): Replace max_register_size with MAX_REGISTER_SIZE. - (regcache_restore, regcache_xfer_part, regcache_dump): Ditto. - * thread-db.c: Replace max_register_size with MAX_REGISTER_SIZE. - * sh-tdep.c, rom68k-rom.c, remote-sim.c, remote-mips.c: Ditto. - * remote-e7000.c, monitor.c, mipsv4-nat.c, mips-nat.c: Ditto. - * m68klinux-nat.c, lynx-nat.c, irix4-nat.c: Ditto. - * hpux-thread.c, hppah-nat.c, hppab-nat.c, hppa-tdep.c: Ditto. - * dve3900-rom.c, hppa-tdep.c: Ditto. - -2003-05-08 David Carlton - - * valops.c (push_word): Fix typo. - -2003-05-08 Andrew Cagney - - * gdbarch.sh: Delete references to MAX_REGISTER_RAW_SIZE. - * gdbarch.h: Re-generate. - * defs.h (MAX_REGISTER_RAW_SIZE): Delete macro. - (legacy_max_register_raw_size): Delete declaration. - * regcache.c (legacy_max_register_raw_size): Delete function. - * valops.c: Replace MAX_REGISTER_RAW_SIZE with MAX_REGISTER_SIZE. - * target.c, stack.c, sparc-tdep.c, sh-tdep.c: Ditto. - * rs6000-tdep.c, rs6000-nat.c, remote.c, remote-sim.c: Ditto. - * remote-rdp.c, remote-array.c, regcache.c: Ditto. - * ppc-linux-nat.c, monitor.c, mn10300-tdep.c: Ditto. - * mips-tdep.c, mips-linux-tdep.c, m68klinux-nat.c: Ditto. - * infptrace.c, ia64-tdep.c, i386-tdep.c, frame.c: Ditto. - * findvar.c, dwarf2cfi.c: Ditto. - -2003-05-08 Andrew Cagney - - * mips-tdep.c (read_signed_register): New function, moved to here - from "regcache.c". - (read_signed_register_pid): Ditto. - * regcache.c (read_signed_register_pid): Delete function, moved to - "mips-tdep.c". - (read_signed_register): Ditto. - * regcache.h (read_signed_register): Delete declaration. - (read_signed_register_pid): Delete declaration. - -2003-05-08 Andrew Cagney - - * gdbarch.sh: Add comments on MAX_REGISTER_SIZE. - * gdbarch.h: Re-generate. - * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Delete macro. - (legacy_max_register_virtual_size): Delete declaration. - * infcmd.c (default_print_registers_info): Use MAX_REGISTER_SIZE. - * d10v-tdep.c (d10v_print_registers_info): Ditto. - * tracepoint.c (memrange_sortmerge): Ditto. - * sparc-tdep.c (sparc_print_registers): Ditto. - * regcache.c (legacy_max_register_virtual_size): Delete function. - -2002-05-08 J. Brobecker - - * fork-child.c (escape_bang_in_quoted_argument): New function. - (fork_inferior): Escape '!' characters in quoted arguments - only when needed. - -2003-05-08 J. Brobecker - - * dwarf2read.c (set_cu_language): Set the language to "minimal" if - the language of the CU is not currently supported by GDB. - -2003-05-08 J. Brobecker - - * defs.h (language): Add language_minimal enum value. - * c-lang.c (minimal_language_defn): New language definition. - (_initialize_c_language): Add the new minimal language to the list - of languages known to GDB. - -2003-05-08 Kevin Buettner - - * frame.c (get_frame_type): Don't attempt to lazily initialize - frame's unwinder for legacy frames. - -2003-05-07 Andrew Cagney - - * ia64-tdep.c (ia64_remote_translate_xfer_address): Add "gdbarch" - and "regcache" parameters. - * avr-tdep.c (avr_remote_translate_xfer_address): Ditto. - -2003-05-07 Jeff Johnston - - * dwarf2read.c (dwarf_decode_lines): Only use output of - check_cu_functions() when calling record_line(). Do not update - the current address. - -2003-05-07 Andrew Cagney - - * fork-child.c (startup_inferior): Delete #ifdef STARTUP_INFERIOR - code. - -2003-05-07 Jim Blandy - - Rename commands 'maint list symtabs' and 'maint list psymtabs' to - 'maint info symtabs' and 'maint info psymtabs'. - * symmisc.c (maintenance_info_symtabs, maintenance_info_psymtabs): - Renamed from maintenance_list_symtabs and maintenance_list_psymtabs. - * symtab.h (maintenance_info_symtabs, maintenance_info_psymtabs): - Declarations updated. - * maint.c (maintenance_list_command): Delete. - (_initialize_maint_cmds): Update calls to add_cmd. - * gdbcmd.h (maintenancelistlist): Delete declaration. - * cli/cli-cmds.c (maintenancelistlist): Delete. - (init_cmd_lists): Don't initialize it. - * cli/cli-cmds.h (maintenancelistlist): Delete declaration. - -2003-05-07 Andrew Cagney - - * d10v-tdep.c (remote_d10v_translate_xfer_address): Add - "regcache". - (d10v_print_registers_info): Update. - (d10v_dmap_register, d10v_imap_register): Delete functions. - (struct gdbarch_tdep): Add "regcache" parameter to "dmap_register" - and "imap_register". - (d10v_ts2_dmap_register, d10v_ts2_imap_register): Add "regcache". - (d10v_ts3_dmap_register, d10v_ts3_imap_register): Add "regcache". - * arch-utils.c (generic_remote_translate_xfer_address): Add - "regcache" and "gdbarch" parameters. - * gdbarch.sh (REMOTE_TRANSLATE_XFER_ADDRESS): Add "regcache" - parameter. Change class to multi-arch. - * gdbarch.h, gdbarch.c: Re-generate. - * remote.c (remote_xfer_memory): Use - gdbarch_remote_translate_xfer_address. - -2003-05-07 Jeff Johnston - - * infrun.c (prev_pc): Move declaration ahead of proceed(). - (proceed): Refresh prev_pc value before resuming. - (stop_stepping): Remove code to refresh prev_pc. - -2003-05-06 Kris Warkentin - - * nto-tdep.c: Removed stray comment. - -2003-05-06 Kris Warkentin - - * i386-nto-tdep.c: Fix old K&R function definitions. - * nto-tdep.c: Likewise and change stat.h include to gdb_stat.h. - Also change add_show_from_set() call to add_setshow_cmd(). - * nto-tdep.h: Remove PARAMS and grep ^func ARI hits. - -2003-05-05 Andrew Cagney - - * dummy-frame.c: Include "command.h" and "gdbcmd.h". - (fprint_dummy_frames): New function. - (maintenance_print_dummy_frames): New function. - (_initialize_dummy_frame): Add command "maint print dummy-frames". - * frame.c (fprint_frame_id): Make global. - * frame.h (fprint_frame_id): Declare. - * Makefile.in (dummy-frame.o): Update dependencies. - -2003-05-05 Andrew Cagney - - * gdbarch.sh (DEPRECATED_REGISTER_SIZE): Rename REGISTER_SIZE. - (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS): Rename - SIZEOF_CALL_DUMMY_WORDS. - (DEPRECATED_CALL_DUMMY_WORDS): Rename CALL_DUMMY_WORDS. - (DEPRECATED_FIX_CALL_DUMMY): Rename FIX_CALL_DUMMY. - (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET): Rename - CALL_DUMMY_BREAKPOINT_OFFSET. - (DEPRECATED_CALL_DUMMY_START_OFFSET): Rename - CALL_DUMMY_START_OFFSET. - (DEPRECATED_CALL_DUMMY_LENGTH): Rename CALL_DUMMY_LENGTH. - * gdbarch.h, gdbarch.c: Re-generate. - * alpha-tdep.c, alphafbsd-tdep.c, arm-linux-tdep.c: Update. - * arm-tdep.c, avr-tdep.c, breakpoint.c, cris-tdep.c: Update. - * dummy-frame.c, dummy-frame.h, frv-tdep.c, gdbarch.c: Update. - * gdbarch.h, gdbarch.sh, h8300-tdep.c, hppa-tdep.c: Update. - * i386-tdep.c, ia64-tdep.c, infcall.c, inferior.h: Update. - * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Update. - * mips-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Update. - * rs6000-tdep.c, s390-tdep.c, sh-tdep.c, sol-thread.c: Update. - * sparc-tdep.c, target.c, v850-tdep.c, valops.c: Update. - * vax-tdep.c, x86-64-tdep.c, xstormy16-tdep.c: Update. - * config/ia64/tm-ia64.h, config/m68k/tm-vx68.h: Update. - * config/mips/tm-mips.h, config/pa/nm-hppah.h: Update. - * config/pa/tm-hppa.h, config/pa/tm-hppa64.h: Update. - * config/s390/tm-s390.h, config/sparc/tm-sp64.h: Update. - * config/sparc/tm-sparc.h: Update. - -2003-05-05 Kris Warkentin - - * configure.tgt: Add i[3456]86-*-nto*. - * i386-nto-tdep.c: New file. i386 specific support for QNX Neutrino. - * nto-tdep.c: New file. Neutrino target support routines. - * nto-tdep.h: New file. Neutrino target header. - * config/tm-qnxnto.h: New file. - * config/i386/i386nto.mt: New file. - * config/i386/tm-i386nto.h: New file. - -2003-05-04 Andrew Cagney - - * gdbthread.h (save_infrun_state): Drop prev_func_name parameter. - (load_infrun_state): Ditto. - (struct thread_info): Drop "prev_func_name" field. - * thread.c (load_infrun_state): Update. - (save_infrun_state): Update. - * infrun.c (prev_func_name): Delete variable. - (init_wait_for_inferior): Do not clear prev_func_name. - (stop_stepping, keep_going, context_switch): Do not swap - prev_func_name. - (handle_inferior_event, check_sigtramp2): Use pc_in_sigtramp - instead of PC_IN_SIGTRAMP. - -2003-05-04 Andrew Cagney - - * sentinel-frame.c (sentinel_frame_prev_register): Replace - REGISTER_BYTE with register_offset_hack. - * regcache.c (init_regcache_descr): When REGISTER_BYTE_P, check - that REGISTER_BYTE is consistent with the regcache. - * gdbarch.sh (REGISTER_BYTE): Add a predicate. - * gdbarch.h, gdbarch.c: Regenerate. - -2003-05-04 Mark Kettenis - - * i387-tdep.c (fxsave_offset): Add entries for %xmm8-%xmm15. - (FXSAVE_ADDR, i387_supply_fxsave): Add support for %xmm8-%xmm15. - - * i386-linux-nat.c (supply_gregset): Remove unnecessary casts. - -2003-05-03 J. Brobecker - - From Thierry Schneider - * Makfile.in (SUBDIR_MI_OBS): Add dependency on mi-cmd-symbol.o. - (SUBDIR_MI_SRCS): Add mi-cmd-symbol.c. - (mi-cmd-symbol.o): Add rule. - -2003-05-03 Andrew Cagney - - * gdbarch.sh (PUSH_DUMMY_CODE): New architecture method, add - comments noteing that it replaces the old FIX_CALL_DUMMY code. - * gdbarch.h, gdbarch.c: Re-generate. - * d10v-tdep.c (d10v_push_dummy_code): New function. - (d10v_gdbarch_init): Set push_dummy_code. - * infcall.c (legacy_push_dummy_code): New function. - (generic_push_dummy_code): New function. - (push_dummy_code): New function. - (call_function_by_hand): Call push_dummy_code. Pass bp_addr, - instead of dummy_addr, to push_dummy_call. Move call to - generic_save_call_dummy_addr to outside of CALL_DUMMY_LOCATION - switch. - * sparc-tdep.c (sparc_gdbarch_init): Mention push_dummy_code. - -2003-05-03 Andrew Cagney - - * disasm.h (print_insn): Declare. - * disasm.c (init_gdb_disassemble_info): New function. - (gdb_disassembly): Call init_gdb_disassemble_info. - (gdb_print_insn): New function. - * v850-tdep.c (v850_scan_prologue): Call gdb_print_insn, instead - of TARGET_PRINT_INSN. Send debug info to "gdb_stdlog". - * mcore-tdep.c: Include "disasm.h" - (mcore_dump_insn): Call gdb_print_insn, instead of TARGET_PRINT_INSN. - * d10v-tdep.c: Include "disasm.h". - (display_trace): Call gdb_print_insn, instead of print_insn. - (print_insn): Delete function. - * printcmd.c: Include "disasm.h". - (print_insn): Delete function. - (print_formatted): Call gdb_print_insn, instead of print_insn. - * Makefile.in (printcmd.o): Update dependencies. - (mcore-tdep.o, d10v-tdep.o): Ditto. - -2003-05-02 Andrew Cagney - - * std-regs.c (value_of_builtin_frame_pc_reg): Delete #ifdef - PC_REGNUM, re-indent. - * stack.c (frame_info): Use "pc" for the name of get_frame_pc when - PC_REGNUM isn't set. - - * gdbarch.sh (REGISTER_SIZE, REGISTER_BYTES): Make optional. - * gdbarch.h, gdbarch.c: Re-generate. - * d10v-tdep.c (d10v_gdbarch_init): Do not set register_size, - register_virtual_size, pc_regnum, or register_bytes. - (D10V_PC_REGNUM): Rename _PC_REGNUM. - (d10v_register_type): Use D10V_PC_REGNUM. - (d10v_print_registers_info, d10v_read_pc): Ditto. - (d10v_write_pc, d10v_eva_prepare_to_trace): Ditto. - (d10v_unwind_pc, d10v_frame_prev_register): Ditto. - -2003-05-02 David Carlton - - * objfiles.c (allocate_objfile): For anonymous objfiles, allocate - the name with mstrsave. - -2003-05-02 Elena Zannoni - - * charset.c (GDB_DEFAULT_TARGET_CHARSET, - GDB_DEFAULT_HOST_CHARSET): Move to earlier in the file. - (host_charset_name, target_charset_name): New vars for use by - set/show commands. - (host_charset_enum, target_charset_enum): New enums for set/show - commands. - (set_charset_sfunc, set_host_charset_sfunc, - set_target_charset_sfunc): New functions. - (set_host_charset, set_target_charset): Make static. - (list_charsets, set_host_charset_command, - set_target_charset_command): Delete functions. - (show_charset_command): Rewrite as.... - (show_charset): Hook this up with the set/show command mechanism. - (_initialize_charset): Change names of charsets to match the - set/show enums. Use host_charset_name and target_charset_name. - Use set/show mechanism for charset, host-charset, target-charset - commands. Do not make 'show host-charset' and 'show - target-charset' be aliases of 'show charset'. - - * charset.h (set_host_charset, set_target_charset): Don't export, - they are not used outside the file. - -2003-05-01 Andrew Cagney - - * disasm.c (gdb_disassemble_from_exec): Delete global variable. - (gdb_disassembly): Make "di" non static, always initialize and - cleanup. Always use dis_asm_read_memory. - (gdb_dis_asm_read_memory): Delete function. - -2003-05-01 Andrew Cagney - - * d10v-tdep.c (d10v_frame_align): Replace d10v_stack_align. - (d10v_gdbarch_init): Set frame_align instead of stack_align. - -2003-04-30 Andrew Cagney - - * gdbarch.sh (deprecated_tm_print_insn_info): Rename - "tm_print_insn_info". - (TARGET_PRINT_INSN_INFO): Delete macro. - (dis_asm_read_memory): Delete function declaration. - (dis_asm_memory_error, dis_asm_print_address): Ditto. - (tm_print_insn_info): Delete variable definition. - (_initialize_gdbarch): Do not initialize "tm_print_insn_info". - * gdbarch.h, gdbarch.c: Re-generate. - * d10v-tdep.c (display_trace): Replace "tm_print_insn_info" with - "deprecated_tm_print_insn_info". - * mcore-tdep.c (mcore_dump_insn): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * sparc-tdep.c (_initialize_sparc_tdep): Ditto. - * v850-tdep.c (v850_scan_prologue, v850_gdbarch_init): Ditto. - * ia64-tdep.c (_initialize_ia64_tdep): Ditto. - * printcmd.c (print_insn): Use "deprecated_tm_print_insn_info" - instead of TARGET_PRINT_INSN_INFO, add comment. - * s390-tdep.c (s390_get_frame_info): Instead of - "dis_asm_read_memory", use "deprecated_tm_print_insn_info". - (s390_check_function_end, s390_is_sigreturn): Ditto. - * corefile.c (dis_asm_read_memory): Move to "disasm.c". - (dis_asm_memory_error, dis_asm_print_address): Ditto. - * disasm.c: Include "gdbcore.h". - (_initialize_disasm): New function, initialize - "deprecated_tm_print_insn_info". - (deprecated_tm_print_insn_info): New variable. - (dis_asm_read_memory): Moved from "corefile.c", made static. - (dis_asm_print_address, dis_asm_memory_error): Ditto. - * Makefile.in (disasm.o): Update dependencies. - -2003-04-30 Andrew Cagney - - * sparc-tdep.c (SPARC_HAS_FPU): When multi-arch, define as 1. - -2003-04-29 Adam Fedor - - * eval.c (evaluate_subexp_standard): Handle ObjC ops. - * infcall.c (find_function_addr): Make non-static. - * infcall.h (find_function_addr): Declare. - * Makefile.in (eval.o): Update dependencies. - -2003-04-28 Adam Fedor - - * symtab.c (symbol_find_demangled_name): Check for and demangle - ObjC symbols. - (symbol_init_demangled_name): Init for language_objc as well. - -2003-04-28 Andrew Cagney - - * gdbarch.sh (DEPRECATED_TARGET_READ_FP): Replace TARGET_READ_FP. - (DEPRECATED_FP_REGNUM): Replace FP_REGNUM. - * gdbarch.h, gdbarch.c: Re-generate. - * infcall.c (call_function_by_hand): Use DEPRECATED_FP_REGNUM, - DEPRECATED_TARGET_READ_FP, or "sp" to create the dummy frame ID. - * inferior.h (deprecated_read_fp): Rename read_fp. - (generic_target_read_fp): Delete declaration. - * regcache.c (generic_target_read_fp): Delete function. - (deprecated_read_fp): Replace read_fp, use - DEPRECATED_TARGET_READ_FP or DEPRECATED_FP_REGNUM. - * d10v-tdep.c (d10v_read_fp): Delete function. - (d10v_gdbarch_init): Do not set deprecated_read_fp. - - * sparc-tdep.c (sparc_gdbarch_init): Do not set - deprecated_target_read_fp to generic_target_read_fp. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - - * xstormy16-tdep.c (xstormy16_gdbarch_init): Set - deprecated_fp_regnum. - * x86-64-tdep.c (x86_64_init_abi): Ditto. - * vax-tdep.c (vax_gdbarch_init): Ditto. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * hppa-tdep.c (hppa_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Ditto. - - * x86-64-tdep.c (x86_64_init_abi): Set deprecated_target_read_fp. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * hppa-tdep.c (hppa_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - - * vax-tdep.c (vax_frame_init_saved_regs): Replace FP_REGNUM with - DEPRECATED_FP_REGNUM. - (vax_push_dummy_frame, vax_pop_frame): Ditto. - * std-regs.c (value_of_builtin_frame_fp_reg): Ditto. - * sparc-tdep.c (sparc_init_extra_frame_info): Ditto. - (sparc_push_dummy_frame, sparc64_read_fp): Ditto. - (sparc32_register_virtual_type): Ditto. - * sh-tdep.c (sh64_frame_chain): Ditto. - (sh64_get_saved_register, sh64_pop_frame): Ditto. - (sh_nofp_frame_init_saved_regs): Ditto. - (sh64_nofp_frame_init_saved_regs): Ditto. - (sh_fp_frame_init_saved_regs): Ditto. - * remote-mips.c (mips_wait, mips_fetch_registers): Ditto. - * remote-e7000.c (fetch_regs_from_dump): Ditto. - * procfs.c (procfs_fetch_registers): Ditto. - (procfs_store_registers): Ditto. - * ns32knbsd-nat.c (fetch_inferior_registers): Ditto. - (store_inferior_registers, fetch_core_registers): Ditto. - (fetch_kcore_registers, clear_regs): Ditto. - * ns32k-tdep.c (ns32k_frame_init_saved_regs): Ditto. - (ns32k_push_dummy_frame, ns32k_pop_frame): Ditto. - * nlm/i386.h (DEPRECATED_FP_REGNUM): Ditto. - * nlm/i386.c (do_status): Ditto. - * mipsv4-nat.c (supply_gregset): Ditto. - * mips-tdep.c: Ditto for comments. - * mips-nat.c (fetch_inferior_registers): Ditto. - (store_inferior_registers, fetch_core_registers): Ditto. - * m68k-tdep.c (m68k_push_dummy_frame): Ditto. - (m68k_pop_frame, m68k_frame_init_saved_regs): Ditto. - * i386-tdep.c (i386_frame_init_saved_regs): Ditto. - (i386_do_pop_frame, i386_register_type): Ditto. - * hppa-tdep.c (hppa_frame_chain): Ditto. - (hppa_push_dummy_frame, find_dummy_frame_regs): Ditto. - (hppa_pop_frame, hppa_read_fp): Ditto. - (skip_prologue_hard_way, hppa_frame_find_saved_regs): Ditto. - * cris-tdep.c (cris_examine, cris_pop_frame): Ditto. - * config/vax/nm-vax.h (REGISTER_U_ADDR): Ditto. - * config/sparc/tm-sparc.h (DEPRECATED_FP_REGNUM): Ditto. - * config/sparc/tm-sp64.h (DEPRECATED_FP_REGNUM): Ditto. - * config/s390/tm-s390.h (DEPRECATED_FP_REGNUM): Ditto. - * config/pa/tm-hppa64.h (DEPRECATED_FP_REGNUM): Ditto. - * config/ia64/tm-ia64.h (DEPRECATED_FP_REGNUM): Ditto. - * blockframe.c: Ditto for comments. - * arch-utils.h: Ditto for comments. - * arch-utils.c (legacy_virtual_frame_pointer): Ditto. - * alphanbsd-tdep.c (fetch_core_registers): Ditto. - * alphabsd-nat.c (fetch_inferior_registers): Ditto. - * alpha-tdep.h: Ditto for comments. - * alpha-tdep.c (alpha_cannot_fetch_register): Ditto. - (alpha_cannot_store_register): Ditto. - (alpha_push_dummy_frame): Ditto. - * alpha-nat.c (supply_gregset): Ditto. - - * config/sparc/tm-sp64.h (DEPRECATED_TARGET_READ_FP): Update. - * config/pa/tm-hppa64.h (DEPRECATED_TARGET_READ_FP): Update. - * config/sparc/tm-sparc.h: Update comment. - - * hppa-tdep.c (hppa_init_extra_frame_info): Use - deprecated_read_fp instead of TARGET_READ_FP. - (hppa_init_extra_frame_info, hppa_frame_chain): Ditto. - (hppa_push_dummy_frame, hppa_read_fp): Ditto. - * sparc-tdep.c (sparc_init_extra_frame_info): Use - deprecated_read_fp instead of read_fp. - * s390-tdep.c (s390_push_arguments): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * frame.h: Ditto in comments. - * frame.c (legacy_get_prev_frame): Ditto. - * dummy-frame.c (dummy_frame_this_id): Ditto. - * arm-tdep.c (arm_init_extra_frame_info): Ditto. - -2003-04-28 Andrew Cagney - - * gdbarch.sh (deprecated_tm_print_insn): Rename tm_print_insn. - * gdbarch.h, gdbarch.c: Re-generate. - * xstormy16-tdep.c (_initialize_xstormy16_tdep): Update. - * vax-tdep.c (_initialize_vax_tdep): Update. - * v850-tdep.c (_initialize_v850_tdep): Update. - * sparc-tdep.c (_initialize_sparc_tdep): Update. - * s390-tdep.c (_initialize_s390_tdep): Update. - * ns32k-tdep.c (_initialize_ns32k_tdep): Update. - * mn10300-tdep.c (_initialize_mn10300_tdep): Update. - * mips-tdep.c (_initialize_mips_tdep): Update. - * mcore-tdep.c (_initialize_mcore_tdep): Update. - * m68k-tdep.c (_initialize_m68k_tdep): Update. - * ia64-tdep.c (_initialize_ia64_tdep): Update. - * hppa-tdep.c (_initialize_hppa_tdep): Update. - * h8300-tdep.c (_initialize_h8300_tdep): Update. - * frv-tdep.c (_initialize_frv_tdep): Update. - * cris-tdep.c (cris_delayed_get_disassembler): Update. - (_initialize_cris_tdep): Update. - * arch-utils.c (legacy_print_insn): Update. - * alpha-tdep.c (_initialize_alpha_tdep): Update. - -2003-04-26 Adam Fedor - - * linespec.c (decode_objc): New function to decode ObjC calls - (decode_line_1): Check for ObjC calls (using decode_objc) - * Makefile (linespec.o): Update dependencies. - -2003-04-26 Daniel Jacobowitz - - * breakpoint.h (struct breakpoint_ops): New. - (struct breakpoint): Add ops member. - - * breakpoint.c (print_bp_stop_message, print_one_breakpoint) - (mention): Use new breakpoint ops member. - (set_raw_breakpoint): Initialize ops field to NULL. - (print_exception_catchpoint, print_one_exception_catchpoint) - (print_mention_exception_catchpoint, handle_gnu_v3_exceptions): New. - (gnu_v3_exception_catchpoint_ops): New. - (catch_exception_command_1): Call handle_gnu_v3_exceptions. - -2003-04-25 Adam Fedor - - * Makefile.in (COMMON_OBS): Add objc-lang.o - -2003-04-25 Andrew Cagney - - * d10v-tdep.c (print_insn): Delete function. - (display_trace): Use TARGET_PRINT_INSN. - (_initialize_d10v_tdep): Do not set tm_print_insn. - (d10v_gdbarch_init): Set print_insn. - -2003-04-25 Andrew Cagney - - * d10v-tdep.c (d10v_extract_return_value): Delete call to printf. - (_initialize_d10v_tdep): Use add_setshow_boolean_cmd. - (d10v_frame_unwind_cache): Use FRAME_OBSTACK_CALLOC. - (NR_DMAP_REGS, A0_REGNUM): Delete, replaced by ... - (nr_dmap_regs, a0_regnum): ... new functions. - (d10v_print_registers_info): Use a0_regnum, use register_size. - (d10v_register_byte): Delete function. - (d10v_register_raw_size): Delete function. - (d10v_register_type): Use a0_regnum. - (d10v_print_registers_info): Use a0_regnum. - (D10V_SP_REGNUM): Rename _SP_REGNUM, replace it and SP_REGNUM. - (d10v_gdbarch_init): Do not set register_byte or - register_raw_size, use D10V_SP_REGNUM to set sp_regnum. - (d10v_pointer_to_address): Use extract_unsigned_integer instead of - extract_address. - (trace_command): Use XCALLOC. - (print_insn): Delete reference to tm_print_insn. - (saved_regs_unwinder): Use store_unsigned_integer instead of - store_address. - * frame.h (FRAME_OBSTACK_CALLOC): Define - -2003-04-25 David Carlton - - * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/maint.exp. - -2003-04-24 Adam Fedor - - * objc-lang.c: Include "valprint.h" - * Makefile.in (objc-lang.o): Update dependencies. - -2003-04-24 Adam Fedor - - * objc-lang.c (FETCH_ARGUMENT, CONVERT_FUNCPTR): Remove - architecture dependant compilation and mark as unimplemented - (until they get put in the gdbarch vector). - -2003-04-23 David Carlton - - * cp-support.c (cp_find_first_component): Accept 'operator' in - more locations. - -2003-04-23 Andrew Cagney - - * infcall.c (call_function_by_hand): Eliminate redundant - indentation. Move "saved_async" and "old_cleanups" to where they - are needed. - -2003-04-23 Andrew Cagney - - * infcall.c (call_function_by_hand): Eliminate the variables "rc" - and "buffer". Move the "name" code to where it is needed. - -2003-04-23 Andrew Cagney - - * infcall.c (call_function_by_hand): Move variables "start_sp", - "dummy", "sizeof_dummy1" and "dummy1" and corresponding dummy call - code to ON_STACK switch branch. - -2003-04-23 Andrew Cagney - - * infcall.c (call_function_by_hand): Make declaration of "i", - "sal", "bpt" and "old_sp" more local to their use. Delete #if - lint. - -2003-04-23 Andrew Cagney - - * infcall.c (call_function_by_hand): Delete variable - "n_method_args". Localize "param_type"'s declaration to the loop - that it is used. Reinstate code assigning to said variable - - deleted on 2002-06-14. Rationalize calls to value_args_coerce. - Rationalize code using "param_type". - -2003-04-22 Andrew Cagney - - * infcall.c (call_function_by_hand): Use new variable "bp_addr" to - compute the breakpoint address. Only call FIX_CALL_DUMMY when - ON_STACK. Eliminate the variable "addr". Do not pass "real_pc" - to DEPRECATED_PUSH_RETURN_ADDRESS. - -2003-04-22 Kevin Buettner - - * dwarf2loc.c (dwarf2_evaluate_loc_desc): Invoke DWARF2_REG_TO_REGNUM - on the DWARF2 register number prior to fetching a register. - -2003-04-22 J. Brobecker - - * config/pa/tm-hppa.h (SOFT_FLOAT): Delete this macro. - Update all the tests using SOFT_FLOAT considering the fact that - this macro was always set to 0. - * config/pa/tm-hppa64.h: Update all the tests using SOFT_FLOAT - considering the fact that this macro was always set to 0. - * hppa-tdep.h (hppa_store_return_value): Likewise. - (hppa_extract_return_value): Likewise. - -2003-04-22 J. Brobecker - - * config/pa/tm-hppa.h: Remove obsolete code, was used by - the hppa-pro target only. - -2003-04-21 J. Brobecker - - Ongoing multi-arch conversion effort for HP/UX: - * config/pa/tm-hppa.h: Move all macro that are no longer - defined now that GDB_MULTI_ARCH is now set to 1 from here... - * config/pa/tm-hppa64.h: ... to here (hppa64 is not multiarch'ed yet). - -2003-04-21 J. Brobecker - - * config/pa/tm-hppa.h: Obsolete a section that was only used - for hppa-pro. - -2003-04-21 J. Brobecker - - Ongoing multi-arch conversion for HP/UX. - * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Set to 1. Do not define - if already defined (allows hppa64 to stay non-multiarched for now). - * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Define. - -2003-04-21 Andrew Cagney - - * frame.c (frame_id_eq): Fail when the code_addr's do not match. - -2003-04-21 Andrew Cagney - - * i386-tdep.c (i386_gdbarch_init): Replace "mmx_num_regs" with - "i386_num_mmx_regs". - -2003-04-21 Andrew Cagney - - * infcall.c: New file. - * infcall.h: New file. - * valarith.c: Include "infcall.h". - * scm-lang.c, objc-lang.cm, hppa-tdep.c, gcore.c: Ditto. - * eval.c, ada-valprint.c, ada-lang.c: Ditto. - * Makefile.in (valarith.o, scm-lang.o): Update dependencies. - (objc-lang.o, hppa-tdep.o, gcore.o): Update dependencies. - (eval.o, ada-valprint.o, ada-lang.o): Update dependencies. - (SFILES): Add "infcall.c" - (COMMON_OBS): Add "infcall.o". - (infcall.o): Specify dependencies. - * value.h (call_function_by_hand): Delete declaration. - * inferior.h (run_stack_dummy): Delete declaration. - * infcmd.c (breakpoint_auto_delete_contents): Move to "infcall.c". - (run_stack_dummy): Move to "infcall.c", merged into - call_function_by_hand. - * valops.c (call_function_by_hand): Moved to "infcall.c". - (find_function_addr, value_arg_coerce): Ditto. - (unwindonsignal_p, coerce_float_to_double): Ditto. - (_initialize_valops): Move "set/show coerce-float-to-double", and - "set/show unwindonsignal" commands to "infcall.c". - * v850-tdep.c, target.h: Update comments. - * sparc-tdep.c (sparc_fix_call_dummy): Update comments. - * sh-tdep.c (sh_init_extra_frame_info): Update comments. - (sh64_init_extra_frame_info): Update comments. - * mn10300-tdep.c: Update comments. - * mcore-tdep.c (mcore_init_extra_frame_info): Update comments. - * config/sparc/tm-sparc.h: Update comments. - * breakpoint.h: Update comments. - * avr-tdep.c (avr_init_extra_frame_info): Update comments. - * arm-tdep.c: Update comment. - -2003-04-19 Mark Kettenis - - * i386-tdep.c (i386_num_register_names): New variable. - (i386_num_mmx_regs): Renamed from mmx_num_regs. - (MM0_REGNUM): Remove redundant parentheses in define. - (i386_mmx_regnum_p): Use i386_mmx_regnum instead of mmx_num_regs. - (i386_fp_regnum_p, i386_fpc_regnum_p, i386_sse_regnum_p, - i386_mxcsr_regnum_p): Remove redundant parentheses. - (i386_register_name): Use i386_num_register_names. - - * i386-tdep.c (i386_extract_return_value, - i386_store_return_value): Correct check for availability of - floating-point registers. - - * i386-tdep.c (i386_frame_num_args): Remove function. - (i386_gdbarch_init): Set frame_num_args to frame_num_args_unknown. - - * i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Renamed from - mmx_regnum_to_fp_regnum. Adjust all callers. - - * i386-tdep.c (i386_get_longjmp_target): Use - TYPE_LENGTH(builtin_type_void_func_ptr) instead of TARGET_PTR_BIT - and TARGET_CHAR_BIT. Use extract_typed_address instead of - extract_address. - -2003-04-19 Mark Kettenis - - * core-regset.c: Update comments to reflect reality. Re-order - includes. - (fetch_core_registers): Use switch instead of if. Remove - redundant prototype. - -2003-04-18 Jim Blandy - - * s390-tdep.c (s390_frame_align): New function. - (s390_gdbarch_init): Register it with the gdbarch object. - -2003-04-17 Richard Henderson - - * remote.c (minitelnet): Don't redeclare escape_count, echo_check. - -2003-04-17 Michael Snyder - Karen Bennet - - Committed by Elena Zannoni - * gdb_gcore.sh: New script to create a core dump of a process. - -2003-04-17 Elena Zannoni - - * values.c (value_being_returned): Don't fetch the return - value if the return type is void. - -2003-04-17 Jeff Johnston - - * thread-db.c: Reindented. - -2003-04-17 Jeff Johnston - - * gdb_indent.sh: Recognize td_thrhandle_t, td_event_msg_t, - td_thr_events_t, td_notify_t, td_thr_iter_f, and td_thrinfo_t - as types. - - - - - - - - - - - - - - - - - - - - - - - - - -2003-04-16 Kevin Buettner - - * rs6000-tdep.c (rs6000_gdbarch_init): For the SysV ABI, set - the size of ``long double'' to 16, instead of 8. - -2003-04-16 Mark Kettenis - - * i386-linux-nat.c: Add some whitespace to make things more - readable. - (fetch_register, store_register, fetch_inferior_registers, - store_inferior_registers): Get rid of assignment in if-statement. - (store_register): Fix typo in error message. - -2003-04-16 Andrew Cagney - - * utils.c (xmmalloc): Always allocate something, matches - libiberty/xmalloc's semantics. - (xmrealloc, xmcalloc): Ditto. - -2003-04-16 Andrew Cagney - - * frame.c (get_prev_frame): Do not initialize "unwind" or "type", - update comments. - (get_frame_type): Initialize unwind and type when needed. - (get_frame_id, frame_register_unwind): Ditto. - -2003-04-16 Andrew Cagney - - * NEWS: Mention that sparclet-*-* and sparclite-*-* have been made - obsolete. - * sparc-tdep.c: Obsolete SPARCLET and SPARCLITE code. - * sparcl-stub.c: Obsolete file. - * config/sparc/tm-sparclet.h: Obsolete file. - * sparclet-stub.c: Obsolete file. - * sparclet-rom.c: Obsolete file. - * sparcl-tdep.c: Obsolete file. - * config/sparc/tm-sparclite.h: Obsolete file. - * config/sparc/sparclite.mt: Obsolete file. - * config/sparc/sparclet.mt: Obsolete file. - * configure.tgt: Make sparclet-*-*, sparclite-*-*, and - sparc86x-*-* obsolete. - -2003-04-15 David Carlton - - * Makefile.in (SFILES): Add cp-namespace.c. - (COMMON_OBS): Add cp-namespace.o. - (block.o): Depend on gdb_obstack_h and cp_support_h. - (buildsym.o): Depend on cp_support_h. - (cp-namespace.o): New. - (cp-support.o): Depend on gdb_string_h, demangle_h, gdb_assert_h, - gdb_obstack_h, symtab_h, symfile_h, and gdbcmd_h. - (dwarf2read.o): Depend on cp_support_h. - * jv-lang.c (get_java_class_symtab): Set BLOCK_NAMESPACE. - * dwarf2read.c (process_die): Set processing_has_namespace_info, - processing_current_namespace. - (read_namespace): Update processing_current_namespace; check for - anonymous namespaces. - (dwarf2_name): New function. - (dwarf2_extension): Ditto. - * cp-support.h: Update copyright, contributors. - Add inclusion guards. - Add opaque declaration for structs obstack, block, symbol. - (struct using_direct): New struct. - Add declarations for cp_find_first_component, - cp_entire_prefix_len, processing_has_namespace_info, - processing_current_namespace, cp_is_anonymous, - cp_add_using_directive, cp_initialize_namespace, - cp_finalize_namespace, cp_set_block_scope, - cp_scan_for_anonymous_namespaces. - * cp-namespace.c: New file. - * cp-support.c: Update copyright. - Include ctype.h, gdb_assert.h, gdbcmd.h. - New variable maint_cplus_cmd_list. - (cp_find_first_component): New function. - (cp_entire_prefix_len, maint_cplus_command) - (first_component_command, _initialize_cp_support): Ditto. - * buildsym.c: Include cp-support.h. - New variable using_list. - (add_symbol_to_list): Check for anonymous namespaces. - (finish_block): Set block's scope. - (start_symtab): Initialize C++ namespace support. - (end_symtab): Finalize C++ namespace support. - * block.h: Add opaque declarations for structs - block_namespace_info, using_direct, and obstack. - Add declarations for block_set_scope and block_set_using. - (struct block): Add 'language_specific' member. - (BLOCK_NAMESPACE): New macro. - * block.c: Include gdb_obstack.h and cp-support.h. - (struct block_namespace_info): New struct. - (block_set_scope): New function. - (block_set_using, block_initialize_namespace): Ditto. - -2003-04-14 Kevin Buettner - - * solib-svr4.c (svr4_have_link_map_offsets): New function. - (locate_base): Return early if there aren't any link map offsets. - (svr4_solib_create_inferior_hook): Warn if shared library support - is unavailable. - -2003-04-14 David Carlton - - * symtab.c (symbol_set_names): Add prefix when storing Java names - in hash table. Fix for PR java/1039. - -2003-04-14 David Carlton - - * symtab.c (symbol_set_names): Rename 'name' arg to - 'linkage_name', and 'tmpname' variable to 'linkage_name_copy'. - * symtab.h: Change 'name' argument in declaration of - symbol_set_names to 'linkage_name'. - (SYMBOL_SET_NAMES): Change 'name' argument to 'linkage_name'. - -2003-04-14 Andrew Cagney - - * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE, - return the fully sign-extended register value. - (get_frame_pointer): Ditto. - (mips_pop_frame): Initialize "proc_desc" after checking for a - dummy frame. - -2003-04-14 Andrew Cagney - - * mips-tdep.c (mips_push_dummy_frame): Delete function. - (MASK, PUSH_FP_REGNUM, GEN_REG_SAVE_MASK): Delete macros. - (FLOAT_REG_SAVE_MASK, FLOAT_SINGLE_REG_SAVE_MASK): Delete macro. - (mips_push_register): Delete function. - (mips_dump_tdep): Delete references to GEN_REG_SAVE_MASK and - PUSH_FP_REGNUM. - -2003-04-14 Jim Blandy - - * symmisc.c: #include "gdb_regex.h". - (maintenance_list_symtabs, maintenance_list_psymtabs): New - functions. - * maint.c (maintenance_list_command): New function. - (_initialize_maint_cmds): Register the above as commands. - * symtab.h (maintenance_list_symtabs, - maintenance_list_psymtabs): New declarations. - * cli/cli-cmds.c (maintenancelistlist): New variable. - (init_cmd_lists): Initialize it. - * cli/cli-cmds.h (maintenancelistlist): New declaration. - * gdbcmd.h (maintenancelistlist): New declaration. - * Makefile.in (symmisc.o): Update dependencies. - -2003-04-14 Elena Zannoni - - * s390-nat.c: Include asm/types.h for addr_t. - -2003-04-14 Corinna Vinschen - - * cp-valprint.c (cp_print_class_method): Call unpack_pointer() with - actually incoming type. - -2003-04-13 Andrew Cagney - - * ppc-linux-tdep.c: Use get_frame_base, get_frame_pc, - get_next_frame and get_frame_saved_regs. - -2003-04-13 Andrew Cagney - - * reggroups.c (default_register_reggroup_p): Use NUM_REGS instead - of gdbarch_num_regs. - -2003-04-13 Andrew Cagney - - * frame.h: Mention what replaced what in "struct frame_info". - * hppa-hpux-tdep.c: Use get_frame_base, get_frame_pc and - deprecated_update_frame_base_hack and - deprecated_update_frame_pc_hack. - * hppa-tdep.c: Ditto. - -2003-04-13 Daniel Jacobowitz - - * dwarf2expr.h (struct dwarf_expr_context): Remove extra arguments - to read_reg and update its comment. Remove regnum member. - * dwarf2expr.c (execute_stack_op): Remove memaddr and expr_lval. - Don't call read_reg when setting in_reg. Call read_reg to get - the frame base if it's in a register. Return the register number - on the stack instead of in the context. Remove extra arguments - to read_reg. - * dwarf2loc.c (dwarf_expr_read_reg): Remove extra arguments. - (dwarf2_evaluate_loc_desc): Call value_from_register. Expect - the register number on the expression stack. - (needs_frame_read_reg): Remove extra arguments. - -2003-04-13 Daniel Jacobowitz - - * dwarf2expr.c (dwarf2_read_address): Renamed from read_address; - made non-static. - (execute_stack_op): All callers updated. - * dwarf2expr.h: Add prototype for dwarf2_read_address. - * dwarf2loc.c (find_location_expression): New function. - (dwarf_expr_frame_base): Call it. - (dwarf2_evaluate_loc_desc): Handle 0-length location expressions. - (dwarf2_tracepoint_var_ref): New function, broken out from - locexpr_tracepoint_var_ref. - (locexpr_tracepoint_var_ref): Call dwarf2_tracepoint_var_ref. - Make static. - (loclist_read_variable, loclist_read_needs_frame): New functions. - (loclist_describe_location, loclist_tracepoint_var_ref): New - functions. - (dwarf2_loclist_funcs): New struct location_funcs. - * dwarf2loc.h (struct dwarf2_loclist_baton): New type. - (struct dwarf2_locexpr_baton): Add comments. - (dwarf2_loclist_funcs): New extern. - * dwarf2read.c (struct comp_unit_head): Remove DIE member, add - base_address and base_known. - (dwarf_loc_buffer): New variable. - (struct dwarf2_pinfo): Add dwarf_loc_buffer and dwarf_loc_size. - (DWARF_LOC_BUFFER, DWARF_LOC_SIZE): New macros. - (dwarf2_has_info): Initialize dwarf_loc_offset. - (dwarf2_build_psymtabs): Read in .debug_loc. - (dwarf2_build_psymtabs_hard): Use DWARF_LOC_BUFFER and - DWARF_LOC_SIZE. - (psymtab_to_symtab_1): Likewise. Move base address calculation - here, from... - (dwarf2_get_pc_bounds): ... here. Use the base address from - cu_header. - (dwarf2_symbol_mark_computed): Handle location lists. - -2003-04-13 Daniel Jacobowitz - - * minsyms.c (install_minimal_symbols): Only switch to gnu-v3 mode - if the linkage name demangled successfully. - -2003-04-13 Mark Kettenis - - * x86-64-tdep.c (att_flavour, intel_flavour, valid_flavours, - disassmbly_flavour): Removed. - - * x86-64-tdep.c (gdb_print_insn_x86_64): Removed. - -2003-04-13 Mark Kettenis - - * x86-64-tdep.c (x86_64_breakpoint_from_pc): Removed. - -2003-04-12 Andrew Cagney - - * frame.h (struct frame_info): Move definition from here ... - * frame.c (struct frame_info): ... to here. - -2003-04-12 Andrew Cagney - - * gdbthread.h (save_infrun_state): Delete parameter - "prev_func_start". - (struct thread_info): Delete field "prev_func_start". - (load_infrun_state): Ditto. - * thread.c (load_infrun_state, save_infrun_state): Update. - * infrun.c (prev_func_start): Delete variable. - (context_switch, init_wait_for_inferior): Update. - (stop_stepping, keep_going): Update. - -2003-04-12 Andrew Cagney - - * gdbarch.sh: Add missing opaque declarations. - * gdbarch.h: Regnerate. - * symtab.h: Add missing opaque declarations. - * value.h, target.h, symfile.h, stabsread.h: Ditto. - * x86-64-tdep.h, xmodem.h, monitor.h, typeprint.h: Ditto. - * srec.h, solib-svr4.h, source.h, inferior.h: Ditto. - * ser-unix.h, serial.h, remote-utils.h, gdbcore.h: Ditto. - * ppc-tdep.h, ocd.h, mips-tdep.h, gdbtypes.h: Ditto. - * buildsym.h, builtin-regs.h, linespec.h, language.h: Ditto. - * i387-tdep.h, gdbthread.h, event-top.h, gdb.h: Ditto. - * dwarf2cfi.h, doublest.h, disasm.h, cp-abi.h: Ditto. - * cli-out.h, c-lang.h, ax-gdb.h, arch-utils.h: Ditto. - * ada-lang.h, config/nm-lynx.h, config/nm-linux.h: Ditto. - * config/sparc/tm-sp64.h, config/rs6000/tm-rs6000.h: Ditto. - * config/pa/tm-hppah.h, config/m68k/tm-delta68.h: Ditto. - * cli/cli-setshow.h, cli/cli-script.h: Ditto. - -2003-04-11 Andrew Cagney - - * frame.c (get_frame_id): Return this frame's "id". - (legacy_get_prev_frame): Set prev's frame ID code_addr to the - function start. - (legacy_saved_regs_this_id): Replace function body with - internal-error. - (deprecated_frame_xmalloc): Mark the frame ID as valid, use - FRAME_OBSTACK_ZALLOC. - (create_new_frame): Mark the frame ID as valid. - -2003-04-11 Alexandre Oliva - - * Makefile.in (libbfd_h): Added missing setting. - * mips-tdep.c (mips_gdbarch_init): Set disassembler_options - according to the selected ABI. - -2003-04-11 Jeff Johnston - - * gdb_indent.sh: Recognize pid_t and sigset_t as types. - -2003-04-11 Andrew Cagney - - * gdbarch.sh (DEPRECATED_SAVED_PC_AFTER_CALL): Deprecate - SAVED_PC_AFTER_CALL. - * gdbarch.h, gdbarch.c: Regenerate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - (ia64_saved_pc_after_call): Update declaration. - * i386ly-tdep.c (i386lynx_init_abi): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * ns32knbsd-nat.c (frame_num_args): Update. - * ns32k-tdep.c (umax_frame_num_args): Update. - * mips-tdep.c (mips_init_frame_pc_first): Update. - * infrun.c (step_over_function): Update. - * i386-linux-tdep.c (skip_hurd_resolver): Update. - * i386-interix-tdep.c (i386_interix_back_one_frame): Update. - * config/sparc/tm-sparc.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update. - (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/pa/tm-hppa.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update. - * arm-linux-tdep.c (skip_hurd_resolver): Update. - * arch-utils.c (init_frame_pc_default): Update. - * alpha-tdep.c (alpha_init_frame_pc_first): Update. - * x86-64-tdep.h (x86_64_linux_saved_pc_after_call): Update - declaration. - -2003-04-11 Andrew Cagney - - * i387-tdep.c: Update copyright. - (i387_to_double): Delete function. - (double_to_i387): Delete function. - -2003-04-10 Andrew Cagney - - * d10v-tdep.c (d10v_frame_this_id): Set the code addr to the - frame's function's address. Simplify. - (d10v_frame_unwind_cache): Check that the frame's function is - non-zero. - -2003-04-10 Jim Blandy - - * s390-tdep.c (s390_gdbarch_init): Put back accidentally deleted - call to set_gdbarch_deprecated_push_arguments. - -2003-04-10 Andrew Cagney - - * frame.c (fprint_frame_id): New function. - (fprint_frame_type, fprint_frame): New function. - (frame_pc_unwind, frame_func_unwind): Add/update trace code. - (create_sentinel_frame, get_frame_id): Ditto. - (frame_id_p, frame_id_eq): Ditto. - (frame_id_inner, create_new_frame): Ditto. - (legacy_get_prev_frame, get_prev_frame): Ditto. - (deprecated_update_frame_pc_hack): Ditto. - (frame_register_unwind): Ditto. - (deprecated_update_frame_base_hack): Ditto. - -2003-04-10 Corinna Vinschen - - * i386-cygwin-tdep.c (i386_cygwin_frame_chain): New function. - (i386_cygwin_init_abi): Set i386_cygwin_frame_chain as new - frame_chain function. - * Makefile.in: Add dependencies due to above change. - -2003-04-10 Corinna Vinschen - - * blockframe.c (legacy_frame_chain_valid): Move call to - DEPRECATED_FRAME_CHAIN_VALID before calls to inside_entry_func and - inside_entry_file. - -2003-04-09 Andrew Cagney - - * frame.h (struct frame_id): Replace "pc" and "base" with - "stack_addr" and "code_addr". Update comments. - (frame_id_build): Update parameter names and comment. - (struct frame_info): Replace "id_p" and "id" with "this_id". - * dummy-frame.c (dummy_frame_this_id): Update. - * breakpoint.c (print_one_breakpoint): Update. - * frame.c (get_frame_id): Update. - (get_frame_base, frame_id_build): Update. - (create_sentinel_frame, legacy_get_prev_frame): Update. - (deprecated_update_frame_base_hack): Update. - (frame_id_p, frame_id_eq): Rework, return 0 when an invalid ID. - (frame_id_inner): Ditto. - -2003-04-09 Andrew Cagney - - * defs.h (gdb_print_host_address): Make "addr" parameter a - pointer constant. - * utils.c (gdb_print_host_address): Update. - -2003-04-09 Kevin Buettner - - * rs6000-tdep.c (frame_get_saved_regs): Don't assume that the - register number for R0 is 0. - -2003-04-09 J. Brobecker - - * frame.h (struct gdbarch): Add opaque structure definition - to avoid a compilation warning on LynxOS 4.0. - -2003-04-09 Andrew Cagney - - * frame.h (struct frame_info): Delete field "pc". Replace - "pc_unwind_cache" and "pc_unwind_cache_p" with "prev_pc" - structure. - * frame.c (frame_pc_unwind): Update. - (create_sentinel_frame): Do not set "pc". - (get_prev_frame): Do not set "pc". Use frame_pc_unwind. - (get_frame_pc): Call frame_pc_unwind. - (deprecated_update_frame_pc_hack): Update. - (create_new_frame): Use "pc" not "->pc". - -2003-04-09 Andrew Cagney - - * frame.c (get_frame_id): Eliminate code updating "frame". - (legacy_get_prev_frame): Ditto. - (get_frame_base): Return id.base directly. - (deprecated_update_frame_base_hack): Update "id.base". - * frame.h (struct frame_info): Delete field "frame". - -2003-04-09 Andrew Cagney - - * NEWS: Mention that the "Sequent family" is obsolete. - * configure.tgt: Obsolete i[3456]86-sequent-bsd*, - i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*. - * configure.host: Obsolete i[3456]86-sequent-bsd*, - i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*. - * config/i386/tm-ptx4.h: Obsolete file. - * config/i386/tm-ptx.h: Obsolete file. - * symm-tdep.c: Obsolete file. - * config/i386/symmetry.mt: Obsolete file. - * config/i386/tm-symmetry.h: Obsolete file. - * symm-nat.c: Obsolete file. - * config/i386/nm-symmetry.h: Obsolete file. - * config/i386/xm-symmetry.h: Obsolete file. - * config/i386/symmetry.mh: Obsolete file. - * config/i386/nm-ptx4.h: Obsolete file. - * config/i386/ptx4.mh: Obsolete file. - * config/i386/ptx.mt: Obsolete file. - * config/i386/ptx.mh: Obsolete file. - * config/i386/xm-ptx4.h: Obsolete file. - * config/i386/xm-ptx.h: Obsolete file. - -2003-04-09 Andrew Cagney - - Obsolete mips*-*-mach3*. - * NEWS: Mention that mips*-*-mach3* is obsolete. - * m3-nat.c: Obsolete file. - * config/nm-m3.h: Obsolete file. - * config/mips/tm-mipsm3.h: Obsolete file. - * config/mips/mipsm3.mt: Obsolete file. - * config/mips/mipsm3.mh: Obsolete file. - * config/mips/xm-mipsm3.h: Obsolete file. - * mipsm3-nat.c: Obsolete file. - * configure.host: Obsolete mips-dec-mach3*. - * configure.tgt: Obsolete mips*-*-mach3*. - -2003-04-09 Andrew Cagney - - * doublest.h: Update copyright. - (deprecated_store_floating, deprecated_extract_floating): Rename - store_floating and extract_floating. Update comments. - * doublest.c: Update copyright. - (extract_floating_by_length): Replace extract_floating. - (store_floating_by_length): Replace store_floating. - (deprecated_extract_floating): New function. - (deprecated_store_floating): New function. - (extract_typed_floating): Call extract_floating_by_length. - (store_typed_floating): Call store_floating_by_length. - * x86-64-tdep.c (x86_64_store_return_value): Update. - * sh-tdep.c (sh3e_sh4_extract_return_value): Update. - (sh64_extract_return_value): Update. - (sh_sh4_register_convert_to_virtual): Update. - (sh_sh64_register_convert_to_virtual): Update. - (sh_sh4_register_convert_to_raw): Update. - (sh_sh64_register_convert_to_raw): Update. - * rs6000-tdep.c (rs6000_register_convert_to_virtual): Update. - (rs6000_register_convert_to_raw): Update. - * ia64-tdep.c (ia64_register_convert_to_virtual): Update. - (ia64_register_convert_to_raw): Update. - * config/i386/tm-symmetry.h (REGISTER_CONVERT_TO_RAW): Update. - (REGISTER_CONVERT_TO_VIRTUAL): Update. - * arm-linux-tdep.c (arm_linux_push_arguments): Update. - * alpha-tdep.c (alpha_register_convert_to_virtual): Update. - (alpha_register_convert_to_raw): Update. - -2003-04-08 Andrew Cagney - - * gdbarch.sh (SAVED_PC_AFTER_CALL): Add a predicate. - * gdbarch.h, gdbarch.c: Re-generate. - * d10v-tdep.c (d10v_saved_pc_after_call): Delete function. - (d10v_gdbarch_init): Do not set saved_pc_after_call. - * infrun.c (step_over_function): Call SAVED_PC_AFTER_CALL_P - conditionally, use frame_pc_unwind as an alternative. Add - comments. - * arch-utils.c (init_frame_pc_default): Only call - SAVED_PC_AFTER_CALL when available. - -2003-04-08 Elena Zannoni - - * infrun.c (stop_soon): Rename from stop_soon_quietly. - (struct inferior_status): Rename stop_soon_quietly field to stop_soon. - (clear_proceed_status): Rename stop_soon_quietly to stop_soon. - (start_remote): Ditto. - (handle_inferior_event): Ditto. - (save_inferior_status): Ditto. - (restore_inferior_status): Ditto. - * infcmd.c (attach_command): Ditto. - * fork-child.c (startup_inferior): Ditto. - * inferior.h (stop_soon): Rename from stop_soon_quietly. - * alpha-tdep.c (heuristic_proc_start): Ditto. - * mips-tdep.c (heuristic_proc_start): Ditto. - * solib-svr4.c (svr4_solib_create_inferior_hook): Ditto. - * solib-sunos.c (sunos_solib_create_inferior_hook): Ditto. - * solib-osf.c (osf_solib_create_inferior_hook): Ditto. - * solib-irix.c (irix_solib_create_inferior_hook): Ditto. - * remote-vx.c (vx_create_inferior): Ditto. - -2003-04-08 Elena Zannoni - - * infrun.c (stop_soon_quietly): Make it an enum, to better - override the default behavior of handle_inferior_event. - (clear_proceed_status): Update uses of stop_soon_quietly to - reflect that it is now an enum. - (start_remote): Ditto. - (handle_inferior_event): Change logic a bit if stop_soon_quietly - is set to handle the new GNU/Linux kernel behavior for - attach/sigstop. Update uses of stop_soon_quietly. - * inferior.h (enum stop_kind): New enum. - * infcmd.c (attach_command): Use STOP_QUIETLY_NO_SIGSTOP. - Reset normal handle_inferior_event behavior, afterwards. - * fork-child.c (startup_inferior): Update. - * alpha-tdep.c (heuristic_proc_start): Update. - * solib-svr4.c (svr4_solib_create_inferior_hook): Update. - * solib-sunos.c (sunos_solib_create_inferior_hook): Update. - * solib-osf.c (osf_solib_create_inferior_hook): Update. - * solib-irix.c (irix_solib_create_inferior_hook): Update. - * remote-vx.c (vx_create_inferior): Update. - * mips-tdep.c (heuristic_proc_start): Update. - -2003-04-07 Elena Zannoni - - * disasm.c (dump_insns): Move variables inside loop, or they will - be freed more than once, causing wild memory corruptions. - (gdb_disassembly): Look for the substring "-thread", - instead of "-threads" in the target name, to make sure to find - the 'multi-thread' target. Also, make sure we do the right thing - with the "core" target. - -2003-04-07 Kevin Buettner - - * mips-tdep.c (mips_print_fp_register): New function, created from - do_fp_register_row(). Registers are now (also) printed as hex. - Only one register is printed per row. - (mips_print_register, do_fp_register_row): Print floating point - registers with mips_print_fp_register(). - -2003-04-06 Andrew Cagney - - * valprint.h (inspect_it): Add extern declaration. - * objc-lang.c (value_nsstring): Avoid assignment inside of "if". - (selectors_info, classes_info): Ditto. - (find_objc_msgcall): Fix indentation. - (objc_printstr): Delete extern declarations. - - * arm-tdep.c (arm_frameless_function_invocation): Fix typo. - -2003-04-06 Andrew Cagney - - * frame.h (legacy_frame_chain_valid): Rename frame_chain_valid. - Update comment. - * frame.c (legacy_saved_regs_this_id): Update. - (legacy_get_prev_frame): Update. - * xstormy16-tdep.c: Update comment. - * sparc-tdep.c (sparc_frame_chain): Update comment. - * blockframe.c (legacy_frame_chain_valid): Update. - -2003-04-06 Andrew Cagney - - * valprint.c (val_print_type_code_int): Delete #ifdef - PRINT_TYPELESS_INTEGER code. - - * gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES) - (CALL_DUMMY_LOCATION, DEPRECATED_PC_IN_CALL_DUMMY): Allow partial - multi-arch definition. - * gdbarch.h: Re-generate. - -2003-04-05 Andrew Cagney - - Eliminate FRAME_FIND_SAVED_REGS. - * config/pa/tm-hppah.h (hppa_hpux_frame_find_saved_regs_in_sigtramp): - Change FSR parameter to a pointer. - * config/pa/tm-hppa64.h (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): - Assume FSR parameter is a pointer. - * hppa-hpux-tdep.c (hppa_hpux_frame_find_saved_regs_in_sigtramp): - Make fsr a pointer. - * hppa-tdep.c (hppa_frame_find_saved_regs): New function. - (hppa_frame_saved_pc): Call hppa_frame_init_saved_regs. Make - saved_regs a pointer. - (hppa_frame_saved_pc): Ditto. - (find_dummy_frame_regs): Make frame_saved_regs a pointer - (hppa_pop_frame): Call hppa_frame_init_saved_regs. Make fsr a - pointer. - (restore_pc_queue): Make fsr a pointer. - (hppa_frame_find_saved_regs): Make frame_saved_regs a pointer. - (hppa_frame_chain): Make saved_regs a pointer, call - hppa_frame_init_saved_regs. - * sparc-tdep.c: Include "gdb_assert.h". - (sparc_frame_find_saved_regs): Replace internal_error with - gdb_assert. - * remote-vxsparc.c (vx_read_register): Delete reference to - FRAME_FIND_SAVED_REGS. - * gdbarch.sh: Delete check for FRAME_FIND_SAVED_REGS. - * gdbarch.h: Regenerate. - * frame.h (DEPRECATED_FRAME_INIT_SAVED_REGS): Delete macro. - (deprecated_get_frame_saved_regs): Delete declaration. - (struct frame_saved_regs): Delete definition. - * frame.c (deprecated_get_frame_saved_regs): Delete function. - * config/pa/tm-hppa.h (hppa_frame_init_saved_regs): Declare. - (hppa_frame_find_saved_regs): Delete declaration. - (FRAME_FIND_SAVED_REGS): Delete macro. - (DEPRECATED_FRAME_INIT_SAVED_REGS): Define. - * config/i386/tm-ptx.h (FRAME_FIND_SAVED_REGS): Delete - FRAME_FIND_SAVED_REGS in comment. - -2003-04-05 Andrew Cagney - - * frame.c (frame_func_unwind, get_frame_func): New functions. - * frame.h (get_frame_func, frame_func_unwind): Declare. - (struct frame_info): Add field "prev_func" for caching the - previous frame's function address. - * arm-tdep.c (arm_frameless_function_invocation): Combine - get_pc_function_start and get_frame_pc into get_frame_func. - * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto. - (sh64_nofp_frame_init_saved_regs): Ditto. - * s390-tdep.c (s390_function_start): Ditto. - * rs6000-tdep.c (rs6000_pop_frame): Ditto. - (rs6000_frameless_function_invocation): Ditto. - (rs6000_frame_saved_pc): Ditto. - * m68k-tdep.c (m68k_frame_init_saved_regs): Ditto. - * ia64-tdep.c (ia64_frame_init_saved_regs): Ditto. - * i386-tdep.c (i386_frameless_signal_p): Ditto. - (i386_frame_init_saved_regs): Ditto. - * hppa-tdep.c (hppa_frame_find_saved_regs): Ditto. - * d10v-tdep.c (d10v_frame_unwind_cache): Combine - get_pc_function_start and frame_pc_unwind into frame_func_unwind. - * cris-tdep.c (cris_frame_init_saved_regs): Ditto. - * blockframe.c (frameless_look_for_prologue): Ditto. - -2003-04-05 Andrew Cagney - - * frame.c (legacy_get_prev_frame): Link prev to next at the - function start. Update comments. - -2003-04-05 Andrew Cagney - - * frame.c (get_frame_id): Update comment. - (legacy_get_prev_frame): Update comment. - * gdbarch.sh: Delete check for EXTRA_FRAME_INFO. - * gdbarch.h: Regenerate. - * config/sparc/tm-sparc.h (EXTRA_FRAME_INFO): Delete. - * frame.h: Delete #ifdef EXTRA_FRAME_INFO code. - -2003-04-05 Andrew Cagney - - * stack.c (print_frame_info): Use get_frame_pc. - -2003-04-04 Andrew Cagney - - * frame.c (get_prev_frame): Do not call frame_type_from_pc. Set - the frame's type from the unwinder. - (get_frame_type): Map UNKNOWN_FRAME onto NORMAL_FRAME. - (create_new_frame, legacy_get_prev_frame): When the unwinder's - type isn't UNKNOWN_FRAME, initalize "type" from the unwinder. - (get_frame_base_address): Use get_frame_type. - (get_frame_locals_address, get_frame_args_address): Ditto. - (legacy_saved_regs_unwinder): Set the type to UNKNOWN_TYPE. - * frame.h (enum frame_type): Add UNKNOWN_FRAME. - (struct frame_info): Add comment explaining why the frame contains - a "type" field. - * dummy-frame.c (dummy_frame_unwind): Set the type to DUMMY_FRAME. - * d10v-tdep.c (d10v_frame_unwind): Set the type to NORMAL_FRAME. - * sentinel-frame.c (sentinel_frame_unwinder): Set the type to - NORMAL_FRAME. - * frame-unwind.h: Include "frame.h". - (struct frame_unwind): Add "type" field. - * Makefile.in (frame_unwind_h): Add $(frame_h). - -2003-04-04 Andrew Cagney - - * x86-64-tdep.c (x86_64_unwind_dummy_id): Use frame_id_build. - * dummy-frame.c (dummy_frame_this_id): Use frame_id_build. - * d10v-tdep.c (d10v_frame_this_id): Use get_frame_pc and - get_frame_base. - (d10v_unwind_dummy_id): Use frame_id_build. - * frame.c (find_frame_sal): Use get_frame_pc. - (create_new_frame): Use deprecated_update_frame_pc_hack and - deprecated_update_frame_base_hack. - (create_sentinel_frame): Add comment about ->pc going away. - (get_prev_frame): Add comment about ->pc going away. - (legacy_get_prev_frame): Use get_frame_base, get_frame_pc, - frame_id_build, deprecated_update_frame_pc_hack and - deprecated_update_frame_base_hack. - (select_frame): Use get_frame_pc. - (legacy_saved_regs_this_id): Use frame_id_build. - -2003-04-04 Elena Zannoni - - * x86-64-tdep.c (x86_64_push_arguments): Handle correctly the - signed integer case. - (classify_argument): Handle enumerations and references. - -2003-04-04 Andrew Cagney - - * frame.c (create_sentinel_frame): Initialize the sentinel frame's - ID to NULL. - -2003-04-01 Adam Fedor - - * gdb/objc-lang.c (selectors_info): Replace calls to - SYMBOL_DEMANGLED_NAME and DEPRECATED_SYMBOL_NAME with - SYMBOL_NATURAL_NAME. - (classes_info, find_methods): Likewise. - -2003-04-03 Kevin Buettner - - * rs6000-tdep.c (rs6000_gdbarch_init): For xcoff executables, set - ``mach'' to the value determined by bfd_default_set_arch_mach(). - -2003-04-02 Bob Rossi - - * Makefile.in (SUBDIR_MI_OBS): Add "mi-cmd-file.o". - (SUBDIR_MI_SRCS): Add "mi-cmd-file.c". - (mi-cmd-file.o): Update dependencies. - -2003-04-01 Kevin Buettner - - * mips-tdep.c (mips_dwarf_dwarf2_ecoff_reg_to_regnum) - (mips_stab_reg_to_regnum): Add mappings for HI_REGNUM and LO_REGNUM. - -2003-04-01 Adam Fedor - - * Makefile.in (c_lang.o, jv_lang.o, language.o): Add $(demangle_h). - * language.h (struct language_defn): Add la_demangle. - (language_demangle): Declare. - * language.c (language_demangle): New function. - (unk_lang_demangle): Likewise. - (unknown_language_defn, auto_language_defn, local_language_defn): - Add ukn_lang_demangle. - * ada-lang.c (ada_language_defn): Add NULL for la_demangle element. - * f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise. - * c-lang.c (c_language_defn, asm_language_defn): Likewise. - (cplus_language_defn): Add cplus_demangle for la_demangle element. - * jv-lang.c (java_demangle): New function - (java_language_defn): Use it for la_demangle element. - * objc-lang.c (objc_demangle): Add options argument - (objc_language_defn): Use objc_demangle for la_demangle element. - * maint.c (maintenance_demangle): Replace switch with - call to language_demangle. - * utils.c (fprintf_symbol_filtered): Likewise. - -2003-04-01 Andrew Cagney - - * printcmd.c (print_frame_nameless_args): Delete #ifdef - NAMELESS_ARG_VALUE, PRINT_NAMELESS_INTEGER and - PRINT_TYPELESS_INTEGER. - * config/sparc/tm-sp64.h (DEPRECATED_PUSH_RETURN_ADDRESS): Rename - PUSH_RETURN_ADDRESS. - -2003-04-01 Andrew Cagney - - * Makefile.in (d10v-tdep.o): Update dependencies. - * d10v-tdep.c: Include "frame-base.h". - (d10v_frame_unwind): Make constant. - (d10v_frame_base_address): New function. - (d10v_frame_base): New variable. - (d10v_gdbarch_init): Set frame_base default. - (struct d10v_unwind_cache): Add the field "prev_sp". Update - comment for base. - (d10v_frame_unwind_cache): Set and use "prev_sp". - (d10v_frame_this_id): Use the previous frame's inner most stack - address and this frame's func address for the frame ID. Use - frame_id_build. Don't analyze beyond the current instruction. - -2003-04-01 Andrew Cagney - - * frame.h (get_frame_locals_address, get_frame_args_address): - Refer to the base address, instead of the address of the first - local or parameter. - -2003-04-01 Andrew Cagney - - Add frame debug info addresses: - * frame-base.c: New file. - * frame-base.h: New file. - * frame.h (struct frame_base): Add opaque declaration. - (get_frame_base): Update comment. - (get_frame_base_address): Declare. - (get_frame_locals_address): Declare. - (get_frame_args_address): Declare. - (struct frame_info): Add "base" and "base_cache". Update - comments on the unwinder. - * frame.c: Include "frame-base.h". - (get_frame_locals_address): New function. - (get_frame_base_address): New function. - (get_frame_args_address): New function. - * findvar.c (read_var_value): Use get_frame_locals_address and - get_frame_args_address. - * stack.c (frame_info): Use get_frame_locals_address and - get_frame_args_address. - (FRAME_ARGS_ADDRESS_CORRECT): Delete conditionally defined macro, - moved to "frame-base.c". - * printcmd.c (print_frame_nameless_args): Ditto. - * symtab.h (address_class): Update comments. - * dwarf2loc.c (dwarf_expr_frame_base): Add note about - get_frame_base_address. - * dwarf2expr.c (execute_stack_op): Ditto. - * Makefile.in (frame_base_h): Define. - (frame.o): Update dependencies. - (frame-base.o): Add dependencies. - (SFILES): Add frame-base.c. - (COMMON_OBS): Add frame-base.o. - -2003-04-01 Andrew Cagney - - * gdbarch.sh (CALL_DUMMY_START_OFFSET): Default to zero. - CALL_DUMMY_LENGTH): Ditto. - * gdbarch.c: Re-generate. - * inferior.h (CALL_DUMMY_START_OFFSET): Delete macro. - (CALL_DUMMY_LENGTH): Delete macro. - * alpha-tdep.c (alpha_gdbarch_init): Do not set above when zero. - * arm-tdep.c (arm_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * hppa-tdep.c (hppa_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * vax-tdep.c (vax_gdbarch_init): Ditto. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. - -2003-04-01 Corinna Vinschen - - * frame.c (get_prev_frame): Disable call to inside_entry_file(). - -2003-04-01 Andrew Cagney - - * gdbarch.sh (CALL_DUMMY_BREAKPOINT_OFFSET): Default to zero. - (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. - * gdbarch.h, gdbarch.c: Re-generate. - * config/sparc/tm-sp64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. - (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. - * config/pa/tm-hppa64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. - * inferior.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. - (CALL_DUMMY_BREAKPOINT_OFFSET): Delete. - * infcmd.c (run_stack_dummy): Simplify assuming - CALL_DUMMY_BREAKPOINT_OFFSET_P. - * infrun.c (handle_inferior_event): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Do not set - call_dummy_breakpoint_offset or call_dummy_breakpoint_offset_p. - * arm-tdep.c (arm_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * vax-tdep.c (vax_gdbarch_init): Ditto. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. - -2003-04-01 Daniel Jacobowitz - - * symfile.c (symfile_relocate_debug_section): Update call to - bfd_simple_get_relocated_section_contents. - -2003-03-31 Andrew Cagney - - * gdbarch.sh (FIX_CALL_DUMMY): Change to function with predicate. - * gdbarch.h, gdbarch.c: Regenerate. - * inferior.h (FIX_CALL_DUMMY): Delete macro. - * valops.c (hand_function_call): Only call FIX_CALL_DUMMY when - available. - * frame.h (generic_fix_call_dummy): Delete declaration. - * dummy-frame.h: Update comment. - * dummy-frame.c (generic_fix_call_dummy): Delete function. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set - fix_call_dummy. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - -2003-03-31 J. Brobecker - - * config/pa/tm-hppa64.h (FRAME_ARGS_ADDRESS): Delete macro, not useful. - (INIT_FRAME_AP): Likewise. - (EXTRA_FRAME_INFO): Likewise. - -2003-03-31 Andrew Cagney - - * gdbarch.sh: Include "symfile.h". - (CALL_DUMMY_ADDRESS): Default to entry_point_address. - * gdbarch.h, gdbarch.c: Re-generate. - * inferior.h (CALL_DUMMY_ADDRESS): Delete macro. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set - call_dummy_address, the default is at entry_point_address. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - -2003-03-31 Andrew Cagney - - * gdbarch.sh (CALL_DUMMY_P): Delete. - * gdbarch.h, gdbarch.c: Re-generate. - * inferior.h (CALL_DUMMY_P): Delete macro. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * d10v-tdep.c (d10v_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * breakpoint.c (deprecated_frame_in_dummy): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * dummy-frame.c (dummy_frame_this_id): Update comments. - * rs6000-tdep.c (rs6000_extract_struct_value_address): Ditto. - * frame.c (legacy_get_prev_frame): Ditto. - * valops.c (call_function_by_hand): Delete function. - (hand_function_call): Rename to call_function_by_hand - -2003-03-30 Andrew Cagney - - 2002-11-10 Klee Dienes - * value.h (struct value): Update comment. - -2003-03-30 Andrew Cagney - - * d10v-tdep.c: Replace _FP_REGNUM and FP_REGNUM with - D10V_FP_REGNUM. - (d10v_gdbarch_init): Do not set fp_regnum. - - * frame.c (get_frame_base): Force ID initialization. - (get_prev_frame): Move computation of the frame ID from here ... - (get_frame_id): ... to here. - (legacy_get_prev_frame): Mark the frame ID as valid. - * frame.h (struct frame_info): Add field "id_p". - -2003-03-30 Mark Kettenis - - * i386-tdep.c (i386_store_struct_return): Removed. - (i386_gdbarch_init): Don't set deprecated_store_struct_return. - -2003-03-30 Andrew Cagney - - * gdbarch.sh (DEPRECATED_DUMMY_WRITE_SP): Replace TARGET_WRITE_SP. - * gdbarch.h, gdbarch.c: Regenerate. - * v850-tdep.c (v850_gdbarch_init): Set deprecated_dummy_write_sp. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * vax-tdep.c (vax_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_push_dummy_frame, sparc_pop_frame): Update. - * config/sparc/tm-sp64.h (DEPRECATED_DUMMY_WRITE_SP): Update. - * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Define. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * valops.c (hand_function_call): Replace TARGET_WRITE_SP with - DEPRECATED_DUMMY_WRITE_SP. Call when the method is available, - instead of when push_dummy_call is not available. - -2003-03-30 Andrew Cagney - - * infttrace.c: Include "gdbthread.h". - (parent_attach_all): Fix function signature. - (call_ptrace): Update call. - * Makefile.in (infttrace.o): Update dependencies. - -2003-03-30 Andrew Cagney - - * gdbarch.sh (DEPRECATED_PUSH_RETURN_ADDRESS): Replace - PUSH_RETURN_ADDRESS. - * gdbarch.h, gdbarch.c: Regenerate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * valops.c (hand_function_call): Update. - -2003-03-29 Andrew Cagney - - * d10v-tdep.c (d10v_gdbarch_init): Do not set call_dummy_words or - sizeof_call_dummy_words. - * gdbarch.sh (CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS): Always - define. - * gdbarch.h: Regenerate. - -2003-03-29 Andrew Cagney - - * infttrace.h: New file. - * hpread.c: Include "gdb_assert.h" and "somsolib.h". - (hpread_get_textlow): Detect an uninitialized dn_bufp. - (hpread_read_doc_function_type): Detect an initialized type1. - (hpread_quick_traverse): Initialize mod_name_string. - * somsolib.h: Add #ifdef SOMSOLIB_H wrapper. - (som_solib_get_solib_by_pc): Declare. - (so_lib_thread_start_addr): Declare. - (no_shared_libraries): Declare. - * somread.c (init_import_symbols): Make static. Add forward - declaration. - * config/pa/nm-hppah.h: Include "infttrace.h" for - parent_attach_all. - (hppa_insert_hw_watchpoint): Declare. - (hppa_can_use_hw_watchpoint, hppa_remove_hw_watchpoint): Declare. - * hppah-nat.c: Include "gdb_string.h". - (parent_attach_all): Delete extern declaration, moved to - "infttrace.h". - (hppa_can_use_hw_watchpoint): Change type of "type" parameter to - int. - (hppa_remove_hw_watchpoint, hppa_insert_hw_watchpoint): Ditto. - * Makefile.in (infttrace_h): Define. - (hpread.o): Update dependencies. - (hppah-nat.o, hppa-hpux-tdep.o, hppa-tdep.o): Ditto. - * hppa-hpux-tdep.c: Include "gdb_string.h". - * hppa-tdep.c (hppa_frame_saved_pc): Initialize "old_pc". - * infrun.c (handle_inferior_event): Always initialize - stepped_after_stopped_by_watchpoint. Add default and remove - fallthrough in switch statement. - * infttrace.c (hppa_can_use_hw_watchpoint): Change type of "type" - parameter to int. - (hppa_remove_hw_watchpoint): Ditto. - -2003-03-29 Andrew Cagney - - * ns32k-tdep.c (ns32k_gdbarch_init): Set the call dummy breakpoint - offset. - -2003-03-29 Richard Earnshaw - - * arm-tdep.c (arm_push_arguments): Delete. - (struct stack_item): New type. - (push_stack_item, pop_stack_item, arm_push_dummy_call): New functions. - (arm_store_struct_return): Delte. - (arm_gdbarch_init): Register arm_push_dummy_call. Don't register - arm_push_arguments or arm_store_struct_return. - -2003-03-28 Andrew Cagney - - * Makefile.in (d10v-tdep.o): Update dependencies. - * remote.h (target_resume_hook, target_wait_loop_hook): Declare. - * d10v-tdep.c: Include "remote.h". - (target_resume_hook): Delete extern declaration. - (target_wait_loop_hook): Ditto. - (tdisassemble_command): Eliminate assignment in "if" conditional. - (d10v_ts2_register_sim_regno): Eliminate call to - legacy_register_sim_regno. - (d10v_ts3_register_sim_regno): Ditto. - -2003-03-28 Jeff Johnston - - * thread.c: Reindented. - * lin-lwp.c: Ditto. - * linux-proc.c: Ditto. - -2003-03-28 Bob Rossi - - * MAINTAINERS (write after approval): Add myself. - -2003-03-27 Theodore A. Roth - - * objc-exp.y: Add missing semi-colons. - -2003-03-27 Andrew Cagney - - * regcache.c (write_sp): Delete function and references. - * inferior.h (write_sp): Delete declaration. - * valops.c (hand_function_call): Replace write_sp with - TARGET_WRITE_SP. - * sparc-tdep.c (sparc_push_dummy_frame): Ditto. - (sparc_pop_frame): Ditto. - -2003-03-27 Andrew Cagney - - * NEWS: Mention removal of support for hppa*-*-bsd* and - hppa*-*-osf* natives, and hppa*-*-pro* target. - * config/pa/xm-hppah.h: Do not include "pa/xm-pa.h". - * config/pa/xm-pa.h: Obsolete file. - * config/pa/xm-hppab.h: Obsolete file. - * config/pa/nm-hppab.h: Obsolete file. - * config/pa/tm-hppab.h: Obsolete file. - * config/pa/tm-hppao.h: Obsolete file. - * config/pa/nm-hppao.h: Obsolete file. - * config/pa/tm-pro.h: Obsolete file. - * config/pa/hppaosf.mt: Obsolete file. - * config/pa/hppaosf.mh: Obsolete file. - * config/pa/hppapro.mt: Obsolete file. - * config/pa/hppabsd.mt: Obsolete file. - * config/pa/hppabsd.mh: Obsolete file. - * configure.host: Disable hppa*-*-bsd* and hppa*-*-osf*. - * configure.tgt: Disable hppa*-*-bsd*, hppa*-*-pro* and - hppa*-*-osf*. - -2003-03-27 Andrew Cagney - - * d10v-tdep.c (d10v_gdbarch_init): Set push_dummy_call instead of - push_arguments. Don't set push_return_address or write_sp. - (d10v_push_dummy_call): Replace d10v_push_arguments. - (d10v_push_return_address, d10v_write_sp): Delete function, - handled by push_dummy_call. - -2003-03-26 Andrew Cagney - - * gdbarch.sh (DEPRECATED_PUSH_ARGUMENTS): Rename PUSH_ARGUMENTS. - (push_dummy_call): New pure multi-arch replacement with gdbarch, - regcache and dummy_addr parameters. - * gdbarch.h, gdbarch.c: Re-generate. - * valops.c (hand_function_call): Use gdbarch_push_dummy_call when - available; assume it will handle stack alignment and return - address issues. Fall back to DEPRECATED_PUSH_ARGUMENTS and - legacy_push_arguments. - (legacy_push_arguments): Rename default_push_arguments. - * value.h (legacy_push_arguments): Rename default_push_arguments. - * i386-tdep.c (i386_push_arguments): Call legacy_push_arguments. - * config/sparc/tm-sparc.h (DEPRECATED_PUSH_ARGUMENTS): Update. - * config/sparc/tm-sp64.h (DEPRECATED_PUSH_ARGUMENTS): Update. - * config/pa/tm-hppa.h (DEPRECATED_PUSH_ARGUMENTS): Update. - * config/i386/tm-symmetry.h: Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * d10v-tdep.c (d10v_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * arm-linux-tdep.c (arm_linux_init_abi): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - -2003-03-26 Daniel Jacobowitz - - * signals/signals.c (do_target_signal_to_host): Correct realtime - signal range test. - -2003-03-26 Daniel Jacobowitz - - * breakpoint.c (handle_gnu_4_16_catch_command, get_catch_sals) - (struct sal_chain, map_catch_names): Remove. - (catch_exception_command_1): Don't call - handle_gnu_4_16_catch_command. - -2003-03-26 Daniel Jacobowitz - - From Mark Dettinger : - * dwarf2cfi.c (read_2u): Increment pointer by two. - -2003-03-26 Daniel Jacobowitz - - * signals/signals.c: Fix typos in last change. - -2003-03-26 Daniel Jacobowitz - - * signals/signals.c (REALTIME_LO, REALTIME_HI): Define if - not already defined. Use __SIGRTMIN if available. - (target_signal_from_host): Remove SIGRTMIN block. - (do_target_signal_to_host): Remove SIGRTMIN block; check that - the signal is within the realtime range. - -2003-03-25 Adam Fedor - - * Makefile.in (infrun.o): Add $(language_h) - * infrun.c (handle_inferior_event): Use skip_language_trampoline - for language specific trampolines. - * language.h (struct language_defn): Add skip_trampoline. - (skip_language_trampoline): Declare. - * language.c (unk_lang_trampoline, skip_language_trampoline): - New functions. - (unknown_language_defn, auto_language_defn, local_language_defn): - Add ukn_lang_trampoline. - * ada-lang.c (ada_language_defn): Add NULL for language - specific skip_trampoline. - * c-lang.c, f-lang.c, jv-lang.c, m2-lang.c, p-lang.c, - scm-lang.c: Likewise. - * objc-lang.c (objc_skip_trampoline): New function. - (objc_language_defn): Add objc_skip_trampoline. - -2003-03-25 Andrew Cagney - - * frame.c (get_prev_frame): Delay validating a frame's ID - - non-NULL, didn't go backwards - until an attempt to unwind it to - the previous frame. - -2003-03-25 Andrew Cagney - - * gdbarch.sh (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Replace - EXTRA_STACK_ALIGNMENT_NEEDED. Default to 0 not 1. - * gdbarch.h, gdbarch.c: Re-generate. - * config/sparc/tm-sparc.h - (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Define. - * sparc-tdep.c (sparc_gdbarch_init): Set - deprecated_extra_stack_alignment_needed. - * config/pa/tm-hppa.h (EXTRA_STACK_ALIGNMENT_NEEDED): Delete. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not clear - extra_stack_alignment_needed. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * hppa-tdep.c (hppa_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - -2003-03-25 Andrew Cagney - - * gdbarch.sh (DEPRECATED_STORE_STRUCT_RETURN): Replace - STORE_STRUCT_RETURN. - * gdbarch.h, gdbarch.c: Regenerate. - * d10v-tdep.c (d10v_store_struct_return): Delete function. - (d10v_push_arguments): Set the struct return register. - (d10v_gdbarch_init): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - -2003-03-25 Andrew Cagney - - * gdbarch.sh (CALL_DUMMY_STACK_ADJUST_P): Delete. - (DEPRECATED_CALL_DUMMY_STACK_ADJUST): Replace - CALL_DUMMY_STACK_ADJUST with a predicate variable. - * gdbarch.h, gdbarch.c: Regenerate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set - call_dummy_stack_adjust_p. - * vax-tdep.c (vax_gdbarch_init): Ditto. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68k-tdep.c (m68k_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Ditto. - * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update. - * config/sparc/tm-sparc.h (CALL_DUMMY_STACK_ADJUST): Update. - * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. Do not set - call_dummy_stack_adjust_p. - * inferior.h (CALL_DUMMY_STACK_ADJUST_P): Delete macro. - (CALL_DUMMY_STACK_ADJUST): Delete macro. - * sparc-tdep.c (sparc32_push_arguments): Update. - * valops.c (hand_function_call): Update. - -2003-03-25 Corinna Vinschen - - * xstormy16-tdep.c (xstormy16_gdbarch_init): Add call to - set_gdbarch_char_signed. - -2003-03-25 Richard Earnshaw - - PR cli/548 - * arm-tdep.c (_initialize_arm_tdep): Command is "set arm disassembler". - -2003-03-25 Richard Earnshaw - - * arm-tdep.c (arm_gdbarch_init): Register the disassembler function. - (_initialize_arm_tdep): Don't set tm_print_insn. - -2003-03-24 Adam Fedor - - * Makefile.in (YYOBJ): Add objc-exp.tab.o - * objc-lang.h: Add multiple inclusion protection. - (start_msglist, add_msglist, end_msglist): Additional declarations. - -2003-03-24 Richard Earnshaw - - * armnbsd-tdep.c (arm_netbsd_aout_init_abi): ARM_FLOAT_SOFT enum - value was renamed to ARM_FLOAT_SOFT_FPA. - -2003-03-23 Andrew Cagney - - * gdbarch.sh (DEPRECATED_FRAME_CHAIN): Replace FRAME_CHAIN. - (DEPRECATED_FRAME_CHAIN_VALID): Replace FRAME_CHAIN_VALID. - * gdbarch.h, gdbarch.c: Regenerate. - * valops.c (hand_function_call): Update. - * objfiles.h (DEPRECATED_FRAME_CHAIN_VALID): Update. - * frame.c (legacy_saved_regs_this_id): Update. - (legacy_get_prev_frame, get_prev_frame, legacy_frame_p): Update. - * dummy-frame.h: Update. - * config/sparc/tm-sparc.h (DEPRECATED_FRAME_CHAIN): Update. - * config/pa/tm-hppa.h (DEPRECATED_FRAME_CHAIN_VALID): Update. - * config/m68k/tm-vx68.h (DEPRECATED_FRAME_CHAIN): Update. - * config/m68k/tm-os68k.h (DEPRECATED_FRAME_CHAIN): Update. - * config/m68k/tm-sun3.h: Update. - * blockframe.c (inside_main_func, frame_chain_valid): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_frame_chain, sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_frame_saved_pc): Update. - (rs6000_gdbarch_init, rs6000_frame_saved_pc): Update. - (frame_get_saved_regs): Update. - * ppc-linux-tdep.c (ppc_linux_init_abi): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_frame_num_args, i386_gdbarch_init): Update. - * i386-interix-tdep.c (i386_interix_init_abi): Update. - (i386_interix_back_one_frame): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - (hppa_init_extra_frame_info): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - -2003-03-22 Richard Earnshaw - - * arm-tdep.h (arm_float_model): Add AUTO and LAST values. - (arm_get_fp_model): Declare. - * arm-tdep.c (fp_model_strings): New string array. - (arm_fp_model, current_fp_model): New variables. - (arm_get_fp_model): New function. - (arm_set_fp): New function. - (set_fp_model_sfunc): New function. - (show_fp_model): New function. - (_initialize_arm_tdep): Add new command to set/show the FPU. - (arm_extract_return_value): Use arm_get_fp_model. - (arm_store_return_value): Likewise. - (arm_gdbarch_init): Default fpa model is softfpa. Call arm_set_fp - to initialize the floating-point data types. - * arm-linux-tdep.c (arm_linux_init_abi): The default floating point - model is FPA. - -2003-03-22 Richard Earnshaw - - * arm-tdep.c (show_arm_command): Don't print out help. Instead, show - the current setting of each value. - (_initialize_arm_tdep): Delete variable new_cmd and add new vars - new_set and new_show. Use add_setshow_cmd_full and - add_setshow_boolean_cmd as appropriate. Deprecate "set/show apcs32" - commands and add new version as subcommands of "set/show arm". - -2003-03-22 Richard Earnshaw - - * arm-tdep.c (setarmcmdlist, showarmcmdlist): New command lists. - (set_arm_command, show_arm_command): New functions. - (_initialize_arm_tdep): Add them. - (num_disassembly_options): Renamed from num_flavor_options. - (valid_disassembly_styles): Renamed from valid_flavors. - (disassembly_style): Renamed from disassembly_flavor. - (set_disassembly_style_sfunc): Renamed from - set_disassembly_flavor_sfunc. - (set_disassembly_style): Renamed from set_disassembly_flavor. - (arm_othernames): Updated. - (_initialize_arm_tdep): Deprecate "set/show disassembly-flavor" - command. Add "set/show arm disassembly" commands. Deprecate - "othernames" command. - -2003-03-22 Richard Earnshaw - - * Makefile.in (elf_reloc_macros_h, elf_arm_h): Define. - (arm-tdep.o): Depend on elf_arm_h. - -2003-03-22 Richard Earnshaw - - * Makefile.in (coff_internal_h): Define. - (arm-tdep.o): Update dependencies. - -2003-03-22 Richard Earnshaw - - * arm-tdep.c (prologue_cache): Delete. - (check_prologue_cache, save_prologue_cache): Delete. - (arm_scan_prologue): Don't check or update the prologue_cache. - (arm_gdb_arch_init): Don't initialize it. - (_initialize_arm_tdep): Likewise. - -2003-03-21 Stephane Carrez - - * MAINTAINERS (tui): Maintainer of tui code. - -2003-03-21 Corinna Vinschen - - * Makefile.in (ALLDEPFILES): Add i386-cygwin-tdep.c. - (i386-cygwin-tdep.o): Add dependencies. - * defs.h (enum gdb_osabi): Add GDB_OSABI_CYGWIN. - * i386-cygwin-tdep.c: New file. - * osabi.c (gdb_osabi_name): Add string for GDB_OSABI_CYGWIN. - * config/i386/cygwin.mt (TDEPFILES): Add i386-cygwin-tdep.o. - -2003-03-20 Andrew Cagney - - * infrun.c (DYNAMIC_TRAMPOLINE_NEXTPC): Delete macro. - (handle_inferior_event): Remove code calling - DYNAMIC_TRAMPOLINE_NEXTPC. - - * Makefile.in (init.c): Don't add $(srcdir) prefix when a file - already has a full path. - - * main.c (gdb_main): Return 1. - (captured_main): Call error to report an invalid interpreter. - - * Makefile.in (alpha-osf1-tdep.o): Update dependencies. - * alpha-osf1-tdep.c: Include "gdb_string.h". - -2003-03-19 J. Brobecker - - Continuing work to convert the hppa targets to multiarch partial. - - * hppa-tdep.c (hppa_gdbarch_init): Set the push_dummy_frame gdbarch - method, now that hppa_push_dummy_frame has a conformant prototype. - * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Wrap macro - inside "#if !GDB_MULTI_ARCH ... #endif" conditional, in preparation - for the switch to multiarch partial. - -2003-03-19 Kevin Buettner - - * mdebugread.c (parse_symbol): For stEnd, we're done counting - when iss is issNull. - -2003-03-18 Kevin Buettner - - * mips-tdep.c (mips_register_name): Fix fencepost error involving - NUM_REGS bounds check. - -2003-03-18 Kevin Buettner - - * Makefile.in (mips-tdep.o): Add dependency on $(gdb_assert_h). - * mips-tdep.c (gdb_assert.h): Include. - (mips_generic_reg_names, mips_processor_reg_names): Make static. - (mips_register_name): Handle integer registers explicitly. Add - bounds checking. - (mips_r3041_reg_names, mips_r3051_reg_names, mips_r3081_reg_names) - (mips_lsi33k_reg_names): Don't list integer registers; they're - handled by mips_register_name() now. - * config/mips/tm-irix3.h (MIPS_REGISTER_NAMES): Likewise. - * config/mips/tm-irix6.h (MIPS_REGISTER_NAMES): Likewise. - * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Likewise. - * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Likewise. - * config/mips/tm-tx39l.h (MIPS_REGISTER_NAMES): Likewise. - -2003-03-18 Andrew Cagney - - * printcmd.c (print_scalar_formatted): Change VALADDR parameter to - a void pointer. - * gdbtypes.h (print_scalar_formatted): Update declaration. - * expression.h (enum exp_opcode): Remove non-ISO C trailing comma. - -2003-03-18 J. Brobecker - - * infrun.c (observer.h): Add #include. - (normal_stop): Add call to observer_notify_normal_stop. - * Makefile.in (infrun.o): Add dependency on observer.h. - -2003-03-18 J. Brobecker - - Continuing work to convert the hppa targets to multiarch partial. - * hppa-tdep.c (hppa_push_dummy_frame): Remove unused function - parameter. Reformat comment. - * config/pa/tm-hppa.h (hppa_push_dummy_frame): Update profile. - (DEPRECATED_PUSH_DUMMY_FRAME): Update call to hppa_push_dummy_frame() - to match new profile. - -2003-03-18 J. Brobecker - - * hppa-tdep.c (hppa_push_dummy_frame): Remove hack which does not - appear to be working in any case. - -2003-03-18 J. Brobecker - - * observer.c (observer_test_first_observer): New static variable. - (observer_test_second_observer): Likewise. - (observer_test_third_observer): Likewise. - (observer_test_first_notification_function): New static function. - (observer_test_second_notification_function): Likewise. - (observer_test_third_notification_function): Likewise. - -2003-03-17 J. Brobecker - - * hppa-tdep.c (gdb_assert.h): Add missing #include. - * somsolib.c (gdb_assert.h): Likewise. - * Makefile.in (hppa-tdep.o): Add dependency on gdb_assert.h. - (somsolib.o): Likewise. - -2003-03-17 Andrew Cagney - - * disasm.c (gdb_disassembly): Set di.mach using the architecture's - BFD. Simplify setting of di.endian. - -2003-03-17 Andrew Cagney - - * rs6000-tdep.c (ppc_floating_point_unit_p): New function. - * ppc-tdep.h (ppc_floating_point_unit_p): Declare. - - From Elena Zannoni - * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Handle e500 - vector and floating-point parameters. - (ppc_sysv_abi_use_struct_convention): Handle e500 struct return - convention. - (ppc_sysv_abi_broken_use_struct_convention): Ditto. - -2003-03-17 Fernando Nasser - - * MAINTAINERS: Remove my name from several maintainership roles. - -2003-03-17 Andrew Cagney - - Fix frame off-by-one bug. - * frame-unwind.h (frame_this_id_ftype): Replace - frame_unwind_id_ftype. - (frame_prev_register_ftype): Replace frame_unwind_reg_ftype. - (struct frame_unwind): Replace "id" with "this_id". Replace "reg" - with "prev_register". - * frame-unwind.c (frame_unwind_find_by_pc): Return - legacy_saved_regs_unwind instead of trad_frame_unwind. Update - comment. - * dummy-frame.c (cached_find_dummy_frame): Delete function. - (dummy_frame_this_id): Replace dummy_frame_id_unwind. - (dummy_frame_prev_register): Replace dummy_frame_register_unwind. - (dummy_frame_unwind): Update. - * sentinel-frame.c (sentinel_frame_prev_register): Replace - sentinel_frame_register_unwind. - (sentinel_frame_this_id): Replace sentinel_frame_id_unwind. - (sentinel_frame_unwinder): Update. - * frame.h (legacy_saved_regs_unwind): Replace trad_frame_unwind. - (struct frame_info): Rename "unwind_cache" to "prologue_cache". - * frame.c (create_sentinel_frame): Update. Initialize - "prologue_cache" instead of "unwind_cache". - (frame_register_unwind): Call this frame's prev_register with the - next frame and this frame's prologue cache. - (get_prev_frame): Simplify. Always call prev frame's this_id with - this frame and prev frame's prologue cache. Document that this - call is shifted one to the left when compared to the - frame_register_unwind call. - (legacy_saved_regs_prev_register): Replace - frame_saved_regs_register_unwind. - (legacy_saved_regs_this_id): Replace frame_saved_regs_id_unwind. - (legacy_saved_regs_unwinder): Replace trad_frame_unwinder. - (legacy_saved_regs_unwind): Replace trad_frame_unwind. - * d10v-tdep.c (d10v_frame_this_id): Replace d10v_frame_id_unwind. - (d10v_frame_unwind): Update. - (d10v_frame_prev_register): Replace d10v_frame_register_unwind. - (d10v_frame_unwind_cache): Replace this "fi" with "next_frame". - (saved_regs_unwinder): Replace this "frame" with "next_frame", and - "saved_regs" with "this_saved_regs". - -2003-03-16 Andrew Cagney - - * frame.c (frame_pop): Don't call target_store_registers. Fix - problem reported by Mark Kettenis. - -2003-03-16 Mark Kettenis - - * i386-tdep.c (i386_register_type): Renamed from - i386_register_virtual_type. Adjust function signature. - (i386_gdbarch_init): Set register_type instead of - deprecated_max_register_raw_size, - deprecated_max_register_virtual_size and register_virtual_type. - -2003-03-14 Andrew Cagney - - * frame.c (get_prev_frame): When a legacy frame, always call - legacy_get_prev_frame. Simplify unwind code using assumption that - the unwinder is new. - (legacy_get_prev_frame): Handle legacy sentinel frame unwind here. - (legacy_frame_p): When no gdbarch_unwind_dummy_id, or - SAVED_DUMMY_FRAME_TOS, assume a legacy frame. - -2003-03-14 Andrew Cagney - - * frame.c (get_saved_register): Delete function. - * frame.h (get_saved_register): Delete declaration. - * xstormy16-tdep.c: Update comment. - * regcache.h: Update comments. - * sparc-tdep.c (sparc_init_extra_frame_info): Instead of - get_saved_register and extract_address, use - frame_read_unsigned_register. - (sparc_frame_saved_pc): Ditto. - (sparc_get_saved_register): Instead of get_saved_register, use - frame_register. - (sparc_pop_frame): Ditto. - * findvar.c: Update comments. - (value_of_register): Call frame_register instead of - get_saved_register. - (value_from_register): Ditto. - * config/sparc/tm-sparc.h: Update comment. - * breakpoint.c: Update comment. - -2003-03-14 Andrew Cagney - - * gdbarch.sh (DEPRECATED_GET_SAVED_REGISTER): Replace - GET_SAVED_REGISTER. - * gdbarch.h, gdbarch.c: Re-generate. - * frame.h: Update comments. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * frame.c (frame_register): Update. - (get_saved_register): Update. - * config/sparc/tm-sparc.h (DEPRECATED_GET_SAVED_REGISTER): Update. - -2003-03-13 Andrew Cagney - - * gdbarch.sh (DEPRECATED_POP_FRAME): Replace POP_FRAME. - * gdbarch.h, gdbarch.c: Regenerate. - * valops.c (hand_function_call): Update comment. - * stack.c (return_command): Update comment. - * config/sparc/tm-sparc.h (DEPRECATED_POP_FRAME): Update. - * config/pa/tm-hppa.h (DEPRECATED_POP_FRAME): Update. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - -2003-03-13 Andrew Cagney - - * frame.c (legacy_frame_p): New function. - (get_prev_frame): Use legacy_frame_p. - * frame.h (legacy_frame_p): Declare. - -2003-03-13 D. Venkatasubramanian - - * MAINTAINERS (write after approval): Alphabetically - listing corrected. - -2003-03-13 D. Venkatasubramanian - - * MAINTAINERS (write after approval): Add myself. - -2003-03-12 Andrew Cagney - - * frame.c (get_prev_frame): Rename the frame parameter to - "this_frame". - (get_next_frame, legacy_get_prev_frame): Ditto. - -2003-03-12 Andrew Cagney - - * frame.c (get_current_frame): Check target_has_registers before - checking target_has_stack. - * eval.c (evaluate_subexp_standard): Use get_selected_frame, - instead of deprecated_selected_frame. - * findvar.c (value_of_register): Pass "frame", not - deprecated_selected_frame, to value_of_builtin_reg. - -2003-03-12 Andrew Cagney - - * regcache.c (regcache_cooked_write_signed): New function. - (regcache_cooked_write_unsigned): New function. - (regcache_cooked_read_unsigned): Fix regnum in range assertion. - (regcache_cooked_read_signed): Fix regnum in range assertion. - * regcache.h (regcache_cooked_write_signed): Declare. - (regcache_cooked_write_unsigned): Declare. - -2003-03-12 Andrew Cagney - - * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC. - * gdbarch.h, gdbarch.c: Re-generate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.h: Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ppc-linux-tdep.c (ppc_linux_init_abi): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * i386-interix-tdep.c (i386_interix_init_abi): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * sh-tdep.c (sh_init_extra_frame_info): Update. - (sh64_init_extra_frame_info): Update. - * ns32knbsd-nat.c (frame_num_args): Update. - * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update. - * xstormy16-tdep.c (xstormy16_pop_frame): Update. - (xstormy16_frame_chain_valid): Update. - * vax-tdep.c (vax_saved_pc_after_call): Update. - * v850-tdep.c (v850_frame_chain): Update. - (v850_pop_frame): Update. - (v850_init_extra_frame_info): Update. - * sparc-tdep.c (setup_arbitrary_frame): Update. - * ns32k-tdep.c (umax_frame_num_args): Update. - * s390-tdep.c (s390_pop_frame_regular): Update. - * mn10300-tdep.c (mn10300_frame_chain): Update. - (mn10300_pop_frame_regular): Update. - (mn10300_init_extra_frame_info): Update. - * mips-tdep.c (mips_init_frame_pc_first): Update. - (mips_frame_chain): Update. - (mips_pop_frame): Update. - * mcore-tdep.c (mcore_frame_chain): Update. - (mcore_pop_frame): Update. - (mcore_init_extra_frame_info): Update. - * arch-utils.c (init_frame_pc_default): Update. - * m68k-tdep.c (isi_frame_num_args): Update. - (delta68_frame_num_args): Update. - (news_frame_num_args): Update. - * ia64-tdep.c (ia64_pop_frame_regular): Update. - * alpha-tdep.c (alpha_init_frame_pc_first): Update. - (alpha_frame_chain): Update. - (alpha_pop_frame): Update. - * hppa-tdep.c (hppa_saved_pc_after_call): Update. - (hppa_init_extra_frame_info): Update. - (hppa_frame_chain): Update. - (hppa_frame_chain_valid): Update. - * cris-tdep.c (cris_init_extra_frame_info): Update. - * avr-tdep.c (avr_init_extra_frame_info): Update. - * arm-tdep.c (arm_frame_chain_valid): Update. - (arm_init_extra_frame_info): Update. - (arm_pop_frame): Update. - * frame.c (frame_pc_unwind): Update. - * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update. - (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update. - * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update. - * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update. - -2003-03-12 Andrew Cagney - - Eliminate the need for POP_FRAME. - * frame.c (do_frame_unwind_register): New function. - (frame_pop): When no POP_FRAME, pop the frame using register - unwind and a scratch regcache. - (frame_saved_regs_pop): Delete function. - (trad_frame_unwinder): Update. - * d10v-tdep.c (d10v_frame_pop): Delete function. - (d10v_frame_unwind): Update. - * sentinel-frame.c (sentinel_frame_pop): Delete function. - (sentinel_frame_unwinder): Update. - * dummy-frame.c (dummy_frame_pop): Delete function. - (dummy_frame_unwind): Update. - * frame-unwind.h (frame_unwind_pop_ftype): Delete definition. - (struct frame_unwind): Update. - -2003-03-11 Kevin Buettner - - * mips-tdep.c (mips_ecoff_reg_to_regnum): Rename to - mips_dwarf_dwarf2_ecoff_reg_to_regnum(). - (mips_dwarf_dwarf2_ecoff_reg_to_regnum, mips_stab_reg_to_regnum): - Do range checks on register number obtained from debugging info. - (mips_gdbarch_init): Call set_gdbarch_dwarf_reg_to_regnum() and - set_gdbarch_dwarf2_reg_to_regnum(). Adjust call of - set_gdbarch_ecoff_reg_to_regnum() to account for new name of - mapping function. - (do_fp_register_row): Fix typo which caused double type to be - used when attempting to unpack a float. - -2003-03-11 J. Brobecker - - * breakpoint.c (bpstat_stop_status): Fix a small memory leak. - -2003-03-11 Andrew Cagney - - * frame.c (deprecated_update_frame_pc_hack): Don't assume a next - frame. Problem found by Corinna Vinschen. - -2003-03-11 Pierre Muller - - * doublest.c (floatformat_from_length): Accept also - the real size of 'long double' type. - -2003-03-10 Daniel Jacobowitz - - From Klee Dienes : - * breakpoint.c (bpstat_copy): Copy the command lines as well - as the old value, to match what is freed in bpstat_clear. - -2003-03-10 David Carlton - - * minsyms.c (add_minsym_to_hash_table): Replace - DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME. - (compare_minimal_symbols, compact_minimal_symbols) - (install_minimal_symbols, find_solib_trampoline_target): Ditto. - (lookup_minimal_symbol_text): Use strcmp on linkage names instead - of DEPRECATED_SYMBOL_MATCHES_NAME. - (lookup_minimal_symbol_solib_trampoline): Ditto. - -2003-03-10 Andrew Cagney - - * regcache.h (regcache_cooked_read_ftype): Define. - (regcache_save, regcache_restore): Add a cooked_read parameter. - * regcache.c (regcache_save, regcache_restore): Update. - (do_cooked_read): New function. - (regcache_cpy): Pass do_cooked_read to regcache_save and - regcache_restore. - -2003-03-10 Andrew Cagney - - * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC. - * gdbarch.h, gdbarch.c: Re-generate. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.h: Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ppc-linux-tdep.c (ppc_linux_init_abi): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * i386-interix-tdep.c (i386_interix_init_abi): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * sh-tdep.c (sh_init_extra_frame_info): Update. - (sh64_init_extra_frame_info): Update. - * ns32knbsd-nat.c (frame_num_args): Update. - * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update. - * xstormy16-tdep.c (xstormy16_pop_frame): Update. - (xstormy16_frame_chain_valid): Update. - * vax-tdep.c (vax_saved_pc_after_call): Update. - * v850-tdep.c (v850_frame_chain): Update. - (v850_pop_frame): Update. - (v850_init_extra_frame_info): Update. - * sparc-tdep.c (setup_arbitrary_frame): Update. - * ns32k-tdep.c (umax_frame_num_args): Update. - * s390-tdep.c (s390_pop_frame_regular): Update. - * mn10300-tdep.c (mn10300_frame_chain): Update. - (mn10300_pop_frame_regular): Update. - (mn10300_init_extra_frame_info): Update. - * mips-tdep.c (mips_init_frame_pc_first): Update. - (mips_frame_chain): Update. - (mips_pop_frame): Update. - * mcore-tdep.c (mcore_frame_chain): Update. - (mcore_pop_frame): Update. - (mcore_init_extra_frame_info): Update. - * arch-utils.c (init_frame_pc_default): Update. - * m68k-tdep.c (isi_frame_num_args): Update. - (delta68_frame_num_args): Update. - (news_frame_num_args): Update. - * ia64-tdep.c (ia64_pop_frame_regular): Update. - * alpha-tdep.c (alpha_init_frame_pc_first): Update. - (alpha_frame_chain): Update. - (alpha_pop_frame): Update. - * hppa-tdep.c (hppa_saved_pc_after_call): Update. - (hppa_init_extra_frame_info): Update. - (hppa_frame_chain): Update. - (hppa_frame_chain_valid): Update. - * cris-tdep.c (cris_init_extra_frame_info): Update. - * avr-tdep.c (avr_init_extra_frame_info): Update. - * arm-tdep.c (arm_frame_chain_valid): Update. - (arm_init_extra_frame_info): Update. - (arm_pop_frame): Update. - * frame.c (frame_pc_unwind): Update. - * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update. - (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. - * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update. - * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update. - * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update. - -2003-03-10 Andrew Cagney - - * gdbarch.sh (gdbarch_unwind_pc): New method. - * gdbarch.h, gdbarch.c: Regenerate. - * frame.c (frame_pc_unwind): Rewrite. Prefer gdbarch_unwind_pc, - but use read_pc and FRAME_SAVED_PC as fall backs. - (frame_saved_regs_pc_unwind): Delete function. - (trad_frame_unwinder): Update. - * frame-unwind.h (frame_unwind_pc_ftype): Delete declaration. - (struct frame_unwind): Update. - * dummy-frame.c (dummy_frame_pc_unwind): Delete function. - (dummy_frame_unwind): Update. - * sentinel-frame.c (sentinel_frame_pc_unwind): Delete function. - (sentinel_frame_unwinder): Update. - * d10v-tdep.c (d10v_frame_pc_unwind): Delete function. - (d10v_frame_unwind): Update. - (d10v_unwind_pc): New function. - (d10v_gdbarch_init): Set unwind_pc. - -2003-03-10 Andrew Cagney - - * gdbarch.h: Re-generate. - - * d10v-tdep.c (d10v_frame_register_unwind): Correctly unwind the - PC. - (d10v_frame_pop): Unwind the PC, and not the LR, when restoring - the PC register. - -2003-03-08 Mark Kettenis - - * gdbarch.sh (save_dummy_frame_tos): Add comment. - -2003-03-08 Andrew Cagney - - * cli-out.c: Update copyright. - (cli_out_data): Define typedef. Use instead of ui_out_data. - -2003-03-08 Andrew Cagney - - * valarith.c (value_subscripted_rvalue): Copy the array's REGNO to - the result. - -2003-03-07 Andrew Cagney - - * gdbarch.sh: Don't generate two macro definitions when an - undefined macro taking no arguments. - * gdbarch.h: Regenerate. - -2002-03-07 Michal Ludvig - - * x86-64-tdep.c (x86_64_save_dummy_frame_tos) - (x86_64_unwind_dummy_id): New functions. - (x86_64_init_abi): Register these two new functions. - -2003-03-07 Michal Ludvig - - * x86-64-tdep.c (x86_64_function_has_prologue): New function. - (x86_64_skip_prologue): Move prologue detection to - separate function. - * x86-64-tdep.h (x86_64_function_has_prologue): New prototype. - -2003-03-05 Andrew Cagney - - * d10v-tdep.c (d10v_unwind_dummy_id): New function. - (d10v_gdbarch_init): Set unwind_dummy_id and save_dummy_frame_tos. - * frame.c (get_prev_frame): Restructure the frame ID unwind code - to use unwind_dummy_id when a dummy frame. - * gdbarch.sh (unwind_dummy_id): New multi-arch method with - predicate. - * gdbarch.h, gdbarch.c: Regneerate. - -2003-03-05 Andrew Cagney - - * d10v-tdep.c (struct d10v_unwind_cache): Add field "base". - (d10v_frame_unwind_cache): Rewrite code computing the base and SP. - Do not use d10v_read_sp or d10v_read_fp when obtaining register - values. - -2003-03-05 Andrew Cagney - - * d10v-tdep.c (struct frame_extra_info): Delete unused structure. - (struct d10v_unwind_cache): Delete field "frameless". Replace - "next_addr" with "sp_offset". Add "r11_offset". - (d10v_frame_unwind_cache): Update. - (prologue_find_regs): Update. When "mv r11, sp", save the - "sp_offset" in "r11_offset". Recognize "st rn, @r11", note that - RN was saved in r11_offset. - -2003-03-05 Andrew Cagney - - * frame.c (deprecated_update_frame_pc_hack): Also update the the - cached PC value in the next frame. - -2003-03-05 Andrew Cagney - - * frame.h (struct frame_info): Replace "id_unwind_cache_p" and - "id_unwind_cache" with "id". - (frame_id_unwind): Delete declaration. - * frame.c (frame_id_unwind): Delete function. - (get_prev_frame): Call the frame id unwind method directly. Store - the returned next frame's ID value in NEXT_FRAME. Note that there - is a problem with the wrong unwind ID being called with the wrong - unwind cache. - -2003-03-05 Daniel Jacobowitz - - * Makefile.in (FLAGS_TO_PASS): Add LDFLAGS. - -2003-03-05 James Ingham - Daniel Jacobowitz - - * cp-abi.c: Include "command.h", "gdbcmd.h", and "ui-out.h". - (auto_cp_abi): New variable. - (current_cp_abi, num_cp_abis): Make static. - (CP_ABI_MAX): Define. - (cp_abis): Turn into an array. - (value_virtual_fn_field): Fix formatting. - (switch_to_cp_abi, register_cp_abi): Update. register_cp_abi now - takes a pointer. - (set_cp_abi_as_auto_default, set_cp_abi_cmd, show_cp_abi_cmd) - (list_cp_abis, _initialize_cp_abi): New functions. - * cp-abi.h: Add prototype for set_cp_abi_as_auto_default. Remove - declarations for cp_abis, num_cp_abis, current_cp_abi, and - switch_to_cp_abi. Update prototype for register_cp_abi. - * Makefile.in (cp-abi.o): Update dependencies. - * minsyms.c (install_minimal_symbols): Call set_cp_abi_as_auto_default - instead of switch_to_cp_abi. - * gnu-v2-abi.c (_initialize_gnu_v2_abi): Likewise. Update call to - register_cp_abi. - * gnu-v3-abi.c (_initialize_gnu_v3_abi): Update call to - register_cp_abi. - * hpacc-abi.c (_initialize_hpacc_abi): Likewise. - -2003-03-05 Daniel Jacobowitz - - * dwarf2expr.c (new_dwarf_expr_context): Add (void) to definition. - * dwarf2loc.c: Include "regcache.h". - (dwarf_expr_read_reg): Rename regnum argument to dwarf_regnum. Use - register_size. - * Makefile.in (dwarf2loc.o): Update dependencies. - -2003-03-04 Theodore A. Roth - - * avr-tdep.c (avr_io_reg_read_command): Fix to handle case when the - number of io registers reported by remote target is not a multiple of - step. - -2003-03-04 David Carlton - - * symtab.c (lookup_partial_symbol): Add linkage_name argument. - (lookup_symbol_aux_psymtabs): Update call to - lookup_partial_symbol. - (lookup_transparent_type, find_main_psymtab) - (make_symbol_overload_list): Ditto. - -2003-03-04 Kazu Hirata - - * MAINTAINERS (Write after approval): Update my email address. - -2003-03-03 Andrew Cagney - - Make MAX_REGISTER_RAW_SIZE and MAX_REGISTER_VIRTUAL_SIZE optional. - * gdbarch.sh (DEPRECATED_MAX_REGISTER_RAW_SIZE): Variable with - predicate. Replace MAX_REGISTER_RAW_SIZE. - (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto for - MAX_REGISTER_VIRTUAL_SIZE. - * regcache.c (legacy_max_register_raw_size): New function. - (legacy_max_register_virtual_size): New function. - * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Define. - (MAX_REGISTER_RAW_SIZE): Define. - (legacy_max_register_raw_size): Declare. - (legacy_max_register_virtual_size): Declare. - * config/sparc/tm-sparc.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) - (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Update. - * config/sparc/tm-sp64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) - (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto. - * config/pa/tm-hppa.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) - (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto. - * config/pa/tm-hppa64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. - * config/ia64/tm-ia64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. - * config/i386/tm-ptx.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * h8300-tdep.c (h8300_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * cris-tdep.c (cris_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * d10v-tdep.c (d10v_gdbarch_init): Do not set - max_register_raw_size or max_register_virtual_size. - -2003-03-03 David Carlton - - * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Rename from - SYMBOL_MATCHES_NAME, add comment. - (SYMBOL_MATCHES_NATURAL_NAME): New. - * minsyms.c (lookup_minimal_symbol_solib_trampoline): Replace - SYMBOL_MATCHES_NAME with DEPRECATED_SYMBOL_MATCHES_NAME. - (lookup_minimal_symbol, lookup_minimal_symbol_text): Ditto. - * symtab.c (lookup_partial_symbol): Use - SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Delete - unhelpful comment. - (lookup_block_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not - SYMBOL_MATCHES_NAME. - Fix for PR c++/33. - -2003-03-03 David Carlton - - * symtab.h (SYMBOL_MATCHES_REGEXP): Delete. - * symtab.c (search_symbols): Replace uses of SYMBOL_MATCHES_REGEXP - by regexp matching against SYMBOL_NATURAL_NAME. - -2003-03-03 David Carlton - - * linespec.c (find_method): Extract code into collect_methods. - (collect_methods): New. - -2003-03-02 Mark Kettenis - - * i386bsd-tdep.c (i386bsd_sigcontext_addr): Use get_next_frame and - get_frame_base. - - * i386-tdep.c (i386_pe_skip_trampoline_code): Replace usage of - DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. - -2003-03-02 Stephane Carrez - - * arch-utils.c (generic_register_byte): Fix to use the loop index - and not regnum when summing the size of all registers up to regnum. - -2003-03-01 Andrew Cagney - - * gdbarch.sh (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename - FRAME_INIT_SAVED_REGS. - * gdbarch.h, gdbarch.c: Regenerate. - * stack.c (frame_info): Update. - * sh-tdep.c (sh_find_callers_reg, sh64_get_saved_pr): Update. - (sh_init_extra_frame_info, sh64_init_extra_frame_info): Update. - (sh64_get_saved_register, sh_pop_frame, sh64_pop_frame): Update. - * ns32k-tdep.c (ns32k_pop_frame): Update. - * mips-tdep.c (mips_pop_frame): Update. - * m68hc11-tdep.c (m68hc11_pop_frame): Update. - * ia64-tdep.c (ia64_frame_chain): Update. - (ia64_frame_saved_pc, ia64_get_saved_register): Update. - (ia64_frameless_function_invocation): Update. - (ia64_init_extra_frame_info): Update. - (ia64_pop_frame_regular): Update. - * frame.h (struct frame_info): Update comment. - (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename macro. - * frame.c (frame_saved_regs_register_unwind): Update. - (frame_saved_regs_register_unwind): Update. - (deprecated_generic_get_saved_register): Update. - * cris-tdep.c: Update comment. - * config/sparc/tm-sparc.h (DEPRECATED_FRAME_INIT_SAVED_REGS): - Rename macro. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. - * x86-64-tdep.c (x86_64_init_abi): Update. - * vax-tdep.c (vax_gdbarch_init): Update. - * v850-tdep.c (v850_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * sh-tdep.c (sh_gdbarch_init): Update. - * s390-tdep.c (s390_gdbarch_init): Update. - * rs6000-tdep.c (rs6000_gdbarch_init): Update. - * ppc-linux-tdep.c (ppc_linux_init_abi): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * mn10300-tdep.c (mn10300_gdbarch_init): Update. - * mips-tdep.c (mips_gdbarch_init): Update. - * mcore-tdep.c (mcore_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. - * ia64-tdep.c (ia64_gdbarch_init): Update. - * i386-tdep.c (i386_gdbarch_init): Update. - * frv-tdep.c (frv_gdbarch_init): Update. - * avr-tdep.c (avr_gdbarch_init): Update. - * arm-tdep.c (arm_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - -2003-03-01 Andrew Cagney - - * main.c (captured_main): Add OPT_WINDOWS and OPT_NOWINDOWS to - option enum and switch. When no windows, set the interpreter to - INTERP_CONSOLE. - -2003-03-01 Andrew Cagney - - * main.c (captured_main): Replace magic option characters with an - enum. - -2003-03-01 Andrew Cagney - - * gdbarch.sh (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename - INIT_EXTRA_FRAME_INFO. - * gdbarch.h, gdbarch.c: Regenerate. - * arm-tdep.c: Update comments. - * sh-tdep.c, mcore-tdep.c, m68hc11-tdep.c: Ditto. - * i386-interix-tdep.c, hppa-tdep.c, h8300-tdep.c: Ditto. - * frame.h, avr-tdep.c: Ditto. - * frame.c (get_prev_frame): DEPRECATED_INIT_EXTRA_FRAME_INFO. - (create_new_frame, legacy_get_prev_frame): Ditto. - * config/sparc/tm-sparc.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename. - * config/pa/tm-hppa.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Initialize - deprecated_init_extra_frame_info instead of init_extra_frame_info. - * x86-64-tdep.c (x86_64_init_abi): Ditto. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sparc-tdep.c (sparc_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * ppc-linux-tdep.c (ppc_linux_init_abi): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-interix-tdep.c (i386_interix_init_abi): Ditto. - * hppa-tdep.c (hppa_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - * alpha-tdep.c (alpha_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - -2003-03-01 Andrew Cagney - - * gdbarch.sh (register_type): New function with predicate. - (REGISTER_VIRTUAL_TYPE): Change to function with predicate. - * gdbarch.h, gdbarch.c: Re-generate. - * arch-utils.c (generic_register_byte): Use generic_register_size. - (generic_register_size): When available, use - gdbarch_register_type. - * regcache.c (init_regcache_descr): When available, initialize the - register type array using gdbarch_register_type. If the - architecture supplies gdbarch_register_type, do not use the legacy - regcache layout. - * d10v-tdep.c (d10v_register_type): Replace - d10v_register_virtual_type. - (d10v_gdbarch_init): Set register_type instead of - register_virtual_type. - -2003-03-01 Andrew Cagney - - * Makefile.in (ax-gdb.o): Update dependencies. - * ax-gdb.c: Include "regcache.h". - (gen_expr): Use register_type instead of REGISTER_VIRTUAL_TYPE. - * findvar.c (value_of_register): Ditto. - * infcmd.c (default_print_registers_info): Ditto. - -2003-03-01 Mark Kettenis - - * i386-linux-tdep.c (find_minsym_and_objfile): Replace usage of - DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. - -2003-03-01 Mark Kettenis - - * i386-linux-tdep.c (find_minsym_and_objfile): Use strcmp instead - of STREQ. - -2003-02-28 Daniel Jacobowitz - - * Makefile.in (dwarf2loc.o): Update dependencies. - * ax-gdb.c (gen_var_ref): Handle LOC_COMPUTED and LOC_COMPUTED_ARG. - * dwarf2expr.c (read_uleb128, read_sleb128): Make non-static. - * dwarf2expr.h (read_uleb128, read_sleb128): Add prototypes. - * dwarf2loc.c: Include "ax.h" and "ax-gdb.h". - (locexpr_tracepoint_var_ref): New function. - (dwarf2_locexpr_funcs): Add locexpr_tracepoint_var_ref. - -2003-02-28 Andrew Cagney - - * regcache.c (register_size): New function. - * regcache.h (register_size): Declare - * d10v-tdep.c: Use register_size instead of REGISTER_RAW_SIZE, use - max_register_size instead of MAX_REGISTER_RAW_SIZE. - -2003-02-28 David Carlton - - * linespec.c (decode_compound): Extract code into find_method. - (find_method): New. - -2003-02-28 J. Brobecker - - * Makefile.in: Add rules to build and link in observer.o. - -2003-02-27 J. Brobecker - - * observer.c: Minor comments edits. - -2003-02-27 J. Brobecker - - * observer.h, observer.c: New file. - -2003-02-27 Andrew Cagney - - * arm-tdep.c (gdb_print_insn_arm): Rename _bfd to just bfd. - -2003-02-27 Stephane Carrez - - * m68hc11-tdep.c (M6811_OP_LDX_EXT, M6811_OP_STS_EXT): New defines. - (M6812_OP_STS_EXT): Likewise. - (m6811_prologue): Use the above to recognize prologue. - (m6812_prologue): Likewise. - -2003-02-27 David Carlton - - * symfile.c (compare_symbols): Use SYMBOL_NATURAL_NAME, not - SYMBOL_PRINT_NAME. - (compare_psymbols): Ditto. - * symtab.c (lookup_partial_symbol, lookup_block_symbol): Ditto. - -2003-02-27 Michael Snyder - - * f-lang.c (build_fortran_types): New function. - (_initialize_f_language): Gdbarch-register built-in fortran types. - * doublest.c (extract_floating): Fix warning text. - -2003-02-27 Andrew Cagney - - * gdbarch.sh (DEPRECATED_PUSH_DUMMY_FRAME): Procedure with - predicate. Replaces PUSH_DUMMY_FRAME. - * gdbarch.h, gdbarch.c: Regnerate. - * valops.c (hand_function_call): Update. Call - generic_push_dummy_frame directly. - * vax-tdep.c (vax_gdbarch_init): Update. - * sparc-tdep.c (sparc_gdbarch_init): Update. - * ns32k-tdep.c (ns32k_gdbarch_init): Update. - * m68k-tdep.c (m68k_gdbarch_init): Update. - * hppa-tdep.c (hppa_gdbarch_init): Update. - * alpha-tdep.c (alpha_gdbarch_init): Update. - * config/sparc/tm-sparc.h (DEPRECATED_PUSH_DUMMY_FRAME): Update. - * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Update. - * inferior.h (PUSH_DUMMY_FRAME): Delete definition. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Don't set - push_dummy_frame to generic_push_dummy_frame. - * v850-tdep.c (v850_gdbarch_init): Ditto. - * sh-tdep.c (sh_gdbarch_init): Ditto. - * s390-tdep.c (s390_gdbarch_init): Ditto. - * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. - * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. - * mips-tdep.c (mips_gdbarch_init): Ditto. - * mcore-tdep.c (mcore_gdbarch_init): Ditto. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. - * ia64-tdep.c (ia64_gdbarch_init): Ditto. - * i386-tdep.c (i386_gdbarch_init): Ditto. - * h8300-tdep.c (h8300_gdbarch_init): Ditto. - * frv-tdep.c (frv_gdbarch_init): Ditto. - * d10v-tdep.c (d10v_gdbarch_init): Ditto. - * cris-tdep.c (cris_gdbarch_init): Ditto. - * avr-tdep.c (avr_gdbarch_init): Ditto. - * arm-tdep.c (arm_gdbarch_init): Ditto. - -2003-02-26 Kevin Buettner - - * mips-tdep.c (show_mips_abi): New function. - (_initialize_mips_tdep): Use show_mips_abi() to implement the - command ``show mips abi''. - -2003-02-26 Jeff Johnston - - From Elena Zannoni - * dbxread.c (process_one_symbol): Only record line 0 if one or - more sline entries have been seen for the function. - -2003-02-26 Michael Chastain - - * configure: Regenerate with autoconf 000227. - -2003-02-26 Michael Chastain - - Close PR build/660. - * PROBLEMS (i[3456]86-*-linux*): Note explicit error message - for old libc5/glibc. - * gdb_thread_db.h: Die if not HAVE_UINTPTR_T. - -2003-02-26 Kris Warkentin - - * defs.h (gdb_osabi): Add GDB_OSABI_QNXNTO. - * osabi.c (gdb_osabi_names): Add "QNX Neutrino". - -2003-02-26 Michael Chastain - - * configure.in: New variable HAVE_UINTPTR_T. - * configure, config.in: Regenerated. - -2003-02-26 Daniel Jacobowitz - - Fix PR build/1097. - * utils.c (gdb_realpath): Move closing brace outwards one #endif. - -2003-02-25 Andrew Cagney - - * frame.c (get_prev_frame): Add comment on check for - inside_entry_func. Only check for inside_entry_file when not a - dummy and not a sentinel. Check that the new frame is not inner - to the old frame. - -2003-02-25 Andrew Cagney - - * frame.c (frame_debug): New variable. - (_initialize_frame): Add "set/show debug frame" command. - (get_prev_frame): When frame_debug, print reason why unwind - failed. - -2003-02-25 Michael Chastain - - * PROBLEMS (i[3456]86-*-linux*): Require glibc 2.1.3 or later - to avoid uintptr_t definition problems. - -2003-02-25 David Carlton - - * symtab.h (SYMBOL_NATURAL_NAME): New macro. - (SYMBOL_LINKAGE_NAME): Ditto. - (SYMBOL_PRINT_NAME): Use SYMBOL_NATURAL_NAME and - SYMBOL_LINKAGE_NAME. - (struct general_symbol_info): Expand comment. - (DEPRECATED_SYMBOL_NAME): Rename from SYMBOL_NAME. - (SYMBOL_MATCHES_NAME): Use DEPRECATED_SYMBOL_NAME. - (SYMBOL_MATCHES_REGEXP): Ditto. - * symtab.c (symbol_natural_name): New function. - * objfiles.h: Replace all uses of SYMBOL_NAME by - DEPRECATED_SYMBOL_NAME. - * xcoffread.c, valops.c, typeprint.c, tracepoint.c: Ditto. - * symtab.c, symmisc.c, symfile.c, stack.c, stabsread.c: Ditto. - * somsolib.c, sol-thread.c, rs6000-tdep.c, p-valprint.c: Ditto. - * printcmd.c, objfiles.c, objc-lang.c, mipsread.c: Ditto. - * minsyms.c, mdebugread.c, linespec.c, jv-lang.c: Ditto. - * i386-tdep.c, i386-linux-tdep.c, hpread.c, hppa-tdep.c: Ditto. - * gnu-v2-abi.c, f-valprint.c, findvar.c, expprint.c: Ditto. - * dwarfread.c, dwarf2read.c, dbxread.c, c-valprint.c: Ditto. - * cp-valprint.c, coffread.c, buildsym.c, breakpoint.c: Ditto. - * blockframe.c, ax-gdb.c, arm-linux-tdep.c, ada-lang.c: Ditto. - * ada-exp.y: Ditto. - * ada-exp.y: Update copyright. - * sol-thread.c, mipsread.c, jv-lang.c, f-valprint.c: Ditto. - * cp-valprint.c: Ditto. - -2003-02-25 Jeff Johnston - - * infptrace.c (detach): Do not flag error if ptrace detach fails - and errno is set to ESRCH. - -2003-02-24 Andrew Cagney - - * infptrace.c (udot_info): Change type of udot_off to long. Use - paddr when printing udot_off's value. - -2003-02-24 David Carlton - - * symtab.c (make_symbol_overload_list): Only read in partial - symtabs containing a matching partial symbol. - -2003-02-24 David Carlton - - * symtab.c (lookup_partial_symbol): Use strcmp_iw_ordered to - do the comparison, not strcmp. - * symfile.c (compare_psymbols): Ditto. - * defs.h: Declare strcmp_iw_ordered. - * utils.c (strcmp_iw_ordered): New function. - -2003-02-24 Jim Blandy - - * MAINTAINERS (GNU/Linux/x86, linespec, breakpoints, Scheme - support, shared libs): Remove my name from here, to better reflect - reality. - -2003-02-24 Kris Warkentin - - * target.h: (HAVE_CONTINUABLE_WATCHPOINT): Define. - (target_ops): Add to_have_continuable_watchpoint. - * target.c (update_current_target): Add INHERIT line for - to_have_continuable_watchpoint. - * infrun.c: Remove HAVE_CONTINUABLE_WATCHPOINT defines. - * config/i386/nm-i386.h, config/i386/nm-i386sco5.h, - config/i386/nm-i386sol2.h, config/s390/nm-linux.h, - config/sparc/nm-sun4sol2.h: HAVE_CONTINUABLE_WATCHPOINT defined as 1. - -2003-02-24 Elena Zannoni - - * MAINTAINERS (Core): Drop main.c and top.c. Clarify event loop - maintainership. - -2003-02-24 Kris Warkentin - - * solib.c (solib_open): Call target defined search function after - failing with solib-search-path. - * solist.h (target_so_ops): Add find_and_open_solib function hook and - create define TARGET_SO_FIND_AND_OPEN_SOLIB. - -2003-02-24 Kris Warkentin - - * MAINTAINERS: Add myself to Write After section. - -2003-02-23 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_gdbarch_init): long double is 64-bit wide. - -2003-02-22 Stephane Carrez - - * m68hc11-tdep.c (m68hc11_init_reggroups): New function. - (m68hc11_add_reggroups): New function. - (m68hc11_register_reggroup_p): New to register hard/soft reggroups. - (m68hc11_gdbarch_init): Install the reggroups. - (_initialize_m68hc11_tdep): Initialize them. - -2003-02-21 James E Wilson - - * MAINTAINERS: Update my email address. - -2003-02-21 David Carlton - - * arm-tdep.c (arm_gdbarch_init): Add break after default label. - -2003-02-21 Daniel Jacobowitz - - Based on a patch from Daniel Berlin (dberlin@dberlin.org). - * symtab.h: Add opaque declarations of struct axs_value and - struct agent_expr. - (enum address_class): Add LOC_COMPUTED and LOC_COMPUTED_ARG. - (struct location_funcs): New type. - (struct symbol): Add "loc" to aux_value. - (SYMBOL_LOCATION_BATON, SYMBOL_LOCATION_FUNCS): New macros. - * dwarf2read.c: Include "dwarf2expr.h". - (dwarf2_symbol_mark_computed): New function. - (read_func_scope): Use it. - (var_decode_location): New function. - (new_symbol): Use it. - * dwarf2expr.c, dwarf2expr.h, dwarf2loc.c, dwarf2loc.h: New files. - - * Makefile.in (SFILES): Add dwarf2loc.c and dwarf2expr.c. - (dwarf2expr_h, dwarf2loc_h): New variables. - (COMMON_OBS): Add dwarf2expr.o and dwarf2loc.o. - (dwarf2expr.o, dwarf2loc.o): New rules. - (dwarf2read.o): Add $(dwarf2expr_h) and $(dwarf2loc_h). - * buildsym.c (finish_block): Handle LOC_COMPUTED and - LOC_COMPUTED_ARG. - * findvar.c (symbol_read_needs_frame, read_var_value): Likewise. - * m2-exp.y (yylex): Likewise. - * printcmd.c (address_info, print_frame_args): Likewise. - * stack.c (print_block_frame_locals, print_frame_arg_vars): Likewise. - * symmisc.c (print_symbol, print_partial_symbols): Likewise. - * ada-lang.c (ada_resolve_subexp, symtab_for_sym) - (ada_add_block_symbols, fill_in_ada_prototype): Likewise. - * symtab.c (lookup_block_symbol): Likewise. - -2003-02-20 Adam Fedor - - * symtab.h: Remove objc_specific struct - (SYMBOL_OBJC_DEMANGLED_NAME): Remove. - * symtab.c (symbol_init_language_specific, symbol_demangled_name): - Have language_objc use cplus_specific struct. - -2003-02-20 Tom Tromey - - * jv-valprint.c (java_value_print): Look at TYPE_TAG_NAME, not - TYPE_NAME, when printing a String value. PR java/1075. - -2003-02-20 Adam Fedor - - * objc-lang.h (find_methods): Remove declaration. - * objc-lang.c (find_methods): Make static. - -2003-02-20 Christopher Faylor - - * win32-nat.c (get_image_name): Check return value from - ReadProcessMemory. - (child_xfer_memory): Ditto. - -2003-02-20 Alexandre Oliva - - * configure.in (TARGET_SYSTEM_ROOT): Set default to - ${exec_prefix}/${target_alias}/sys-root. Match explicit - '${exec_prefix}' (in addition to the expansion thereof) as - relocatable. - * configure: Rebuilt. - -2003-02-20 David Carlton - - * symtab.c (search_symbols): Revert the search_symbols part of my - 2002-12-23 patch. Add comment. - -2002-02-20 Daniel Jacobowitz - - * coffread.c (coff_symfile_read): Clean up minimal symbols earlier. - * dbxread.c (elfstab_build_psymtabs): Don't call - install_minimal_symbols. - (stabsect_build_psymtabs): Likewise. - * elfread.c (elf_symfile_read): Call install_minimal_symbols - earlier. - * somread.c (som_symfile_read): Call install_minimal_symbols - and do_cleanups earlier. - * nlmread.c (nlm_symfile_read): Likewise. - * mdebugread.c (elfmdebug_build_psymtabs): Call - install_minimal_symbols and make appropriate cleanups. - -2003-02-20 Kevin Buettner - - * solib.c (reload_shared_libraries): New function. - (_initialize_solib): Add callbacks for ``set solib-search-path'' - and ``set solib-absolute-prefix''. - -2003-02-20 David Carlton - - * symtab.h (SYMBOL_PRINT_NAME): Rename from SYMBOL_SOURCE_NAME; - expand comment. - * ada-lang.c (user_select_syms, ada_finish_decode_line_1): Replace - SYMBOL_PRINT_NAME with SYMBOL_SOURCE_NAME. - * ada-typeprint.c (ada_typedef_print): Ditto. - * ax-gdb.c (gen_var_ref): Ditto. - * breakpoint.c (print_one_breakpoint): Ditto. - * buildsym.c (finish_block): Ditto. - * c-valprint.c (c_val_print): Ditto. - * expprint.c (print_subexp): Ditto. - * findvar.c (locate_var_value): Ditto. - * infcmd.c (jump_command): Ditto. - * linespec.c (decode_line_2, decode_compound): Ditto. - * maint.c (maintenance_translate_address): Ditto. - * objc-lang.c (compare_selectors, compare_classes): Ditto. - * printcmd.c (build_address_symbolic, sym_info, print_frame_args): - Ditto. - * p-valprint.c (pascal_val_print): Ditto. - * stabsread.c (define_symbol): Ditto. - * stack.c (print_frame, frame_info, print_block_frame_locals) - (print_frame_arg_vars, return_command): Ditto. - * symfile.c (compare_symbols, compare_psymbols): Ditto. - * symmisc.c (print_symbol): Ditto. - * symtab.c (lookup_partial_symbol, lookup_block_symbol) - (compare_search_syms, print_symbol_info, print_msymbol_info) - (rbreak_command): Ditto. - * tracepoint.c (tracepoints_info): Ditto. - * typeprint.c (typedef_print): Ditto. - * valops.c (value_of_variable, hand_function_call): Ditto. - * cli/cli-cmds.c (edit_command, list_command): Ditto. - * ada-typeprint.c: Update Copyright. - * infcmd.c, objc-lang.c, p-valprint.c, symmisc.c: Ditto. - * tracepoint.c, cli/cli-cmds.c: Ditto. - -2003-02-20 Kevin Buettner - - * frame.c (generic_unwind_get_saved_register): Make non-static. - * frame.h (generic_unwind_get_saved_register): Declare. - * mips-tdep.c (read_next_frame_reg): Fetch register from - current regcache when frame is NULL. - (mips_init_extra_frame_info): Pass NULL explicitly for parameter - that must be NULL. - (mips_get_saved_register): Call generic_unwind_get_saved_register() - instead of frame_register_unwind(). - -2003-02-20 Andrew Cagney - - * remote-sim.c (gdbsim_insert_breakpoint) - (gdbsim_remove_breakpoint): Delete #ifdef SIM_HAS_BREAKPOINTS - code. - -2003-02-20 Andrew Cagney - - * remote.c (_initialize_remote): Add commands "set/show remote - hardware-watchpoint-limit" and "set/show remote - hardware-breakpoint-limit". - (remote_hw_watchpoint_limit): Initialize to -1. - (remote_hw_breakpoint_limit): Ditto. - (remote_check_watch_resources): Treat a limit of -1 as unlimited. - -2003-02-19 Raoul Gough - - * coff-pe-read.c: New file - support reading of minimal symbols from a - portable executable using the export table. - * coff-pe-read.h: New file. - * coffread.c: Include coff-pe-read.h. - (coff_symtab_read): Call read_pe_exported_syms iff no recognized - debugging symbols found. - * Makefile.in (SFILES): Add coff-pe-read.o. - (coff_pe_read_h): Define. - (COMMON_OBS): Add coff-pe-read.o. - (coffread.o): Add coff_pe_read_h dependency. - (coff-pe-read.o): New target. - -2003-02-19 David Carlton - - * Makefile.in (SFILES): Add block.c. - (block_h): New. - (COMMON_OBS): Add block.o. - (block.o): New. - (x86-64-tdep.o): Add $(block_h). - (values.o, valops.o, tracepoint.o, symtab.o, symmisc.o, symfile.o) - (stack.o, printcmd.o, p-exp.tab.o, parse.o, objfiles.o) - (objc-exp.tab.o, objc-lang.o, nlmread.o, mips-tdep.o, mdebugread.o) - (m2-exp.tab.o, linespec.o, jv-lang.o, jv-exp.tab.o, infcmd.o) - (f-valprint.o, findvar.o, f-exp.tab.o, expprint.o, coffread.o) - (c-exp.tab.o, buildsym.o, breakpoint.o, blockframe.o, ax-gdb.o) - (alpha-tdep.o, ada-lang.o, ada-exp.tab.o, mi-cmd-stack.o): Ditto. - * value.h: Add opaque declaration for struct block. - * parser-defs.h, objc-lang.h, buildsym.h, breakpoint.h: Ditto. - * ada-lang.h: Ditto. - * x86-64-tdep.c: #include "block.h" - * values.c, valops.c, tracepoint.c, symtab.c, symmisc.c: Ditto. - * symfile.c, stack.c, printcmd.c, p-exp.y, parse.c: Ditto. - * objfiles.c, objc-exp.y, objc-lang.c, nlmread.c: Ditto. - * mips-tdep.c, mdebugread.c, m2-exp.y, linespec.c: Ditto. - * jv-lang.c, jv-exp.y, infcmd.c, f-valprint.c: Ditto. - * findvar.c, f-exp.y, expprint.c, coffread.c, c-exp.y: Ditto. - * buildsym.c, breakpoint.c, blockframe.c, ax-gdb.c: Ditto. - * alpha-tdep.c, ada-lang.c, ada-exp.y: Ditto. - * blockframe.c (blockvector_for_pc_sect): Move to "block.c". - (blockvector_for_pc, block_for_pc_sect, block_for_pc): Ditto. - * symtab.c (block_function): Ditto. - (contained_in): Ditto. - * frame.h: Move block_for_pc and block_for_pc_sect declarations to - block.h. Add opaque declaration for struct block. - * symtab.h: Move block_function and contained_in declarations to - block.h. Add opaque declarations for struct block, struct - blockvector. - (struct block): Move to block.h. - (struct blockvector): Ditto. - (BLOCK_START, BLOCK_END, BLOCK_FUNCTION, BLOCK_SUPERBLOCK) - (BLOCK_GCC_COMPILED, BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM) - (BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE) - (ALL_BLOCK_SYMBOLS, BLOCK_SHOULD_SORT, BLOCKVECTOR_NBLOCKS) - (BLOCKVECTOR_BLOCK, GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOCK): - Ditto. - * block.c: New file. - * block.h: New file. - -2003-02-19 Theodore A. Roth - - * avr-tdep.c (avr_extract_return_value): Remove function. - (avr_store_return_value): Remove function. - (avr_extract_struct_value_address): Remove function. - (avr_gdbarch_init): Remove set_gdbarch_deprecated_*() calls. - -2003-02-19 Andrew Cagney - - * rs6000-tdep.c: Include "gdb_assert.h". - (registers_e500): Add "acc" and "spefscr". - (PPC_GPRS_PSEUDO_REGS): Remove trailing comma. - (rs6000_gdbarch_init): Update initialization of ppc_gp0_regnum, - ppc_gplast_regnum, sp_regnum and fp_regnum. Check that gp0_regnum - really is "r0". - (registers_e500): Mark the "acc" as a 64 bit (from Jim Willson). - -2003-02-18 Keith Seitz - - * Makefile.in: Add gdbtk-interps.c. - -2003-02-18 Kevin Buettner - - * sparc-tdep.c (sparc_frame_chain): Adjust return value. - * config/sparc/tm-sparc.h (init_frame_pc_noop): Declare. - -2003-02-18 Andrew Cagney - - * symtab.h (struct objfile): Add opaque declaration. - -2003-02-18 Elena Zannoni - - From Jim Ingham : - * dbxread.c (process_one_symbol): Use last_function_start rather - than function_start_offset to find the real beginning of the - current function. The latter is just the text section offset on - some systems, the former is always the real function start. - -2003-02-17 Andrew Cagney - - * configure.in: Revert ${target} != ${host}. - -2003-02-17 Andrew Cagney - - * configure.in (Makefile): Use the test ${target} != ${host}, - instead of the absence of the "nm.h" file, to determine of the - configuration non-native. - * configure: Regenerate. - -2003-02-14 Elena Zannoni - - From Brian Ford - - * cli/cli-decode.c (lookup_cmd_composition) [TUI]: Properly - conditionalize tui_active test. - (lookup_cmd_1): Ditto. - -2003-02-14 Mark Kettenis - - * configure.in: Add check for _etext. - * maint.c (maintenance_set_profile_cmd): Use etext if _etext isn't - available. - * config.in, configure: regenerated. - -2003-02-14 Daniel Jacobowitz - - * dwarf2read.c (dwarf2_get_pc_bounds): Offset addresses by base. - -2003-02-14 Andrew Cagney - - * main.c (tui_version): Delete variable. - (captured_main): When --tui, set interpreter_p to "tui" instead of - enabling tui_version. - * printcmd.c (display_command) [TUI]: Test tui_active instead of - tui_version. - * cli/cli-decode.c (lookup_cmd_composition): Ditto. - * cli/cli-cmds.c (disassemble_command): Ditto. - * defs.h (tui_version): Delete declaration. - * Makefile.in (SUBDIR_TUI_SRCS): Add "tui/tui-interp.c". - (tui-interp.o): Add rules. - (SUBDIR_TUI_OBS): Add "tui-interp.o". - -2003-02-14 Christopher Faylor - - * win32-nat.c (register_loaded_dll): Correctly set address range for - just-loaded dll. - -2003-02-12 Jason Molenda (jmolenda@apple.com) - - * symmisc.c (print_objfile_statistics): Include information about - the number of psymtabs and symtabs in each object file. - -2003-02-13 Keith R Seitz - - * main.h (struct captured_main_args): Add interpreter_p. - * main.c (captured_main): Initialize interpreter_p from context. - * gdb.c (main): Set interpreter_p argument. - * Makefile.in (gdb.o): Add dependency for interps.h. - -2003-02-12 Andrew Cagney - - * event-top.c (cli_command_loop): Delete declaration. - (_initialize_event_loop): Delete function setting event_loop_hook. - * event-top.h (cli_command_loop): Declare. Update copyright. - (EVENT_TOP_H): Define. Wrap header in #ifdef EVENT_TOP_H. - * interps.c (current_interp_command_loop): When event_loop_p, call - cli_command_loop. - -2003-02-12 Andrew Cagney - - * interps.h (interp_command_loop_ftype): Change return type to - void. - -2003-02-12 Michal Ludvig - - * x86-64-tdep.c (x86_64_extract_return_value) - (x86_64_store_return_value): Use regcache instead of regbuf. - (x86_64_gdbarch_init): Change related set_gdbarch_* functions. - * x86-64-linux-nat.c (fill_gregset): Use regcache. - -2003-02-11 Andrew Cagney - - * acinclude.m4 (no_tcl): SUBST TCL_CC_SEARCH_FLAGS. - * aclocal.m4: Regenerate. - * configure: Regenerate. - - * Makefile.in (TCL): Use TCL_CC_SEARCH_FLAGS instead of - TCL_LD_SEARCH_FLAGS. - -2003-02-10 Michal Ludvig - - * dwarf2cfi.c: Reindented. - -2003-02-09 Andrew Cagney - - * interps.c (clear_interpreter_hooks): Convert function definition - to ISO C. - -2003-02-07 David Carlton - - * gdb_mbuild.sh: Delete extra shift after parsing '-f'. - -2003-02-07 Kevin Buettner - - * gdbtypes.h (struct main_type): Move ``length'' field from here... - (struct type): ...to here. - (TYPE_LENGTH): Adjust to reflect different location of ``length'' - field. - * gdbtypes.c (make_qualified_type): Set length on newly created type. - (replace_type): Set length on all type variants for a given type. - -2003-02-07 Andrew Cagney - - * sol-thread.c, hpux-thread.c: Include "gdb_stat.h" instead of - . - * Makefile.in (sol-thread.o, hpux-thread.o): Update dependencies. - -2003-02-06 Andrew Cagney - - * Makefile.in (symm-nat.o): Update dependencies. - (sparc-nat.o, procfs.o, proc-api.o, ppc-linux-nat.o): Ditto. - (lynx-nat.o, ia64-linux-nat.): Ditto. - * symm-nat.c, sparc-nat.c, procfs.c, proc-api.c: Include - "gdb_wait.h" instead of or . - * ppc-linux-nat.c, lynx-nat.c, ia64-linux-nat.c: Ditto. - - * Makefile.in (inflow_h): Define. - (procfs.o, inflow.o, procfs.o): Update dependencies. - * inftarg.c (child_stop): Delete extern declaration of - inferior_process_group. Include "inflow.h". - * procfs.c (procfs_stop): Ditto. Include "inflow.h". - * inflow.c (PROCESS_GROUP_TYPE): Move definitions from here ... - * inflow.h (PROCESS_GROUP_TYPE): ... to here. New file. - (our_process_group, inferior_process_group): Extern declarations. - - * procfs.c: Include "gdb_assert.h". - - * linux-proc.c: Include "gdb_stat.h" instead of . - * cp-valprint.c (cp_print_value_fields): Eliminate STREQN. - * jv-typeprint.c (java_type_print_base): Ditto. - * typeprint.c (typedef_print): Eliminate STREQ. - * cli/cli-script.c (define_command, define_command): Ditto. - * main.c (captured_main): Ditto. - * values.c (lookup_internalvar): Ditto. - * utils.c (safe_strerror, parse_escape): Eliminate assignment - within `if' conditional. - * linespec.c (decode_line_2): Ditto. - * cli/cli-dump.c (bfd_openr_with_cleanup): Ditto. - (bfd_openw_with_cleanup): Ditto. - -2003-02-07 Mark Kettenis - - * x86-64-tdep.c (x86_64_init_abi): Set extract_return_value to - legacy_extract_return_value and store_return_value to - legacy_return_value. - -2003-02-06 Raoul Gough - - * win32-nat.c (get_relocated_section_addrs): New function. Find - section load addresses for symbol handling in relocated DLLs. - (solib_symbols_add): Open a bfd and call get_relocated_section_addrs. - -2003-02-05 Fred Fish - - * remote-e7000.c (e7000_drain_command): Fix precedence problem with - '=' and '!='. - * rdi-share/ardi.c (wait_for_debug_message): Fix precedence problem - with '&' and '=='. - (angel_RDI_info): Ditto. - * infttrace.c (threads_continue_all_but_one): Fix precedence problem - with '&' and '!='. - (threads_continue_all_with_signals): Ditto. - -2003-02-05 Jim Ingham - Keith Seitz - Elena Zannoni - Andrew Cagney - - * Makefile.in (SUBDIR_CLI_OBS): Add "cli-interp.o". - (SUBDIR_CLI_SRCS): Add "cli/cli-interp.c". - (SUBDIR_MI_OBS): Add "mi-interp.o". - (SUBDIR_MI_SRCS): Add "mi/mi-interp.c". - (SFILES): Add "interps.c". - (COMMON_OBS): Add "interps.o". - (interps_h, mi_main_h): Define. - (interps.o, cli-interp.o, mi-interp.o): Add dependencies. - (mi-main.o, main.o, event-top.o): Update dependencies. - * cli/cli-interp.c: New file. - * interps.h, interps.c: New files. - * top.c: (gdb_init): Don't install the default interpreter, handed - by captured_main. - * main.c: Include "interps.h". - (interpreter_p): Note that it should malloc'ed. - (captured_command_loop): Call current_interp_command_loop. - (captured_main): Initialize interpreter_p to INTERP_CONSOLE. Use - xfree and xstrdup when updating interpreter_p. Install the - default interpreter. Add hack to stop mi1's copyright notice - being encoded. - * event-top.h (gdb_setup_readline): Declare. - (gdb_disable_readline): Declare. - * event-top.c: Include "interps.h". - (display_gdb_prompt): Call current_interp_display_prompt_p. - (gdb_setup_readline): Initialize gdb_stdout, gdb_stderr, - gdb_stdlog, and gdb_stdtarg. - (_initialize_event_loop): Don't call gdb_setup_readline. - * cli-out.c (cli_out_set_stream): New function. - * cli-out.h (cli_out_set_stream): Declare. - -2003-02-06 Mark Kettenis - - * configure.tgt (i[3456]86-*-sysv4.2*, i[3456]86-*-sysv4*, - i[3456]86-*-sysv5*, i[3456]86-*-sco3.2v5*): Remove. These are all - handled fine by i[3456]86-*sco* and i[3456]86-sysv*. - * config/i386/i386sco5.mt, config/i386/i386v4.mt, - config/i386/i386v42mp.mt: Removed. - -2003-02-05 Mark Kettenis - - * configure.tgt (*-*-solaris*): Set gdb_osabi to - GDB_OSABI_SOLARIS. - -2003-02-05 Michael Chastain - - * PROBLEMS (i[3456]86-*-linux*): Warn about binutils - 2.12.1 and earlier versions. - -2003-02-05 Andrew Cagney - - Remove orphaned hosts, targets and files. - * config/i386/gdbserve.mt, config/m68k/nm-apollo68b.h: Delete. - * config/m68k/nm-hp300bsd.h, config/m68k/tm-apollo68b.h: Delete. - * config/m68k/tm-es1800.h, config/m68k/tm-hp300bsd.h: Delete. - * config/m68k/tm-mac.h, config/m68k/xm-apollo68b.h: Delete. - * config/pa/hpux1020.mt, config/pa/hpux11.mt: Delete. - * config/pa/hpux11w.mt, config/powerpc/gdbserve.mt: Delete. - * config/powerpc/ppcle-eabi.mt, config/powerpc/ppcle-sim.mt: Delete. - * config/powerpc/tm-ppc-sim.h, config/sparc/sp64sim.mt: Delete. - * config/sparc/tm-sp64sim.h: Delete. - * configure.host: Delete strongarm-*-*, xscale-*-*, and arm*-*-* - hosts. - * configure.tgt: Delete i[3456]86-*-sco3.2v4*, and - mips*-dec-mach3* targets. - -2003-02-04 Michael Chastain - - * NEWS: Fix typo: sepcifying -> specifying. - -2003-02-04 Michael Chastain - - * dwarfread.c: Add documentation on the state of dwarf-1, - looking towards obsoletion. - -2003-02-03 Michael Chastain - - * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1023.cc, - gdb/testsuite/gdb.c++/pr-1023.exp. - -2003-02-04 Andrew Cagney - - * values.c: Delete code conditional on IS_TRAPPED_INTERNALVAR. - * TODO: Delete reference to IS_TRAPPED_INTERNALVAR. - - * utils.c (init_page_info): Delete reference to MPW in comments. - * main.c (captured_main): Delete #ifdef MPW. - -2003-02-04 Andrew Cagney - - * NEWS: Note that the m32r-*-elf* is obsolete. - * monitor.c (monitor_expect): Obsolete reference to m32r. - * configure.tgt: Mark m32r-*-elf* as obsolete. - * MAINTAINERS: Mark m32k as obsolete. - * m32r-rom.c: Obsolete file. - * config/m32r/m32r.mt: Obsolete file. - * config/m32r/tm-m32r.h: Obsolete file. - * m32r-stub.c: Obsolete file. - * m32r-tdep.c: Obsolete file. - -2003-02-04 Andrew Cagney - - * NEWS: Mention that the z8k-zilog-none is obsolete. - * MAINTAINERS: Mark z8k as obsolete. - * configure.tgt: Obsolete the z8k-*-coff* target. - * config/z8k/z8k.mt: Obsolete file. - * config/z8k/tm-z8k.h: Obsolete file. - * z8k-tdep.c: Obsolete file. - -2003-02-04 Andrew Cagney - - * NEWS: Mention that the mn10200-elf is obsolete. - * configure.tgt: Obsolete mn10200-*-* target. - * breakpoint.c (update_breakpoints_after_exec): Update comment to - mention that the mn10200 is obsolete. - * breakpoint.h: Ditto. - * MAINTAINERS: Mark the mn10200-elf as obsolete. - * config/mn10200/mn10200.mt: Obsolete file. - * config/mn10200/tm-mn10200.h: Obsolete file. - * mn10200-tdep.c: Obsolete file. - -2003-02-04 Andrew Cagney - - * MAINTAINERS: Mark h8500 as obsolete. - * configure.tgt (h8500-*-*): Mark h8500 code as obsolete. - * findvar.c (value_from_register): Ditto. - * h8500-tdep.c: Mark file as obsolete. - * config/h8500/h8500.mt: Ditto. - * config/h8500/tm-h8500.h: Ditto. - * NEWS: Mention that h8500 is obsolete. - -2003-02-04 David Carlton - - * objfiles.c (allocate_objfile): Always set name. Add comment at - start of function. - * jv-lang.c (get_dynamics_objfile): Add comment. - -2003-02-04 David Carlton - - * symtab.h (SYMBOL_LINKAGE_NAME): Delete. - * printcmd.c (build_address_symbolic): Replace uses of - SYMBOL_LINKAGE_NAME by equivalent uses of SYMBOL_SOURCE_NAME, - SYMBOL_NAME, and asm_demangle. - Update copyright. - -2003-02-04 David Carlton - - * linespec.c (decode_compound): Extract code into - lookup_prefix_sym. - (lookup_prefix_sym): New function. - -2003-02-04 David Carlton - - * gdbtypes.h: Delete INTEGER_COERCION_BADNESS, - FLOAT_COERCION_BADNESS. - * gdbtypes.c (rank_one_type): Replace all uses of - INTEGER_COERCION_BADNESS by INTEGER_CONVERSION_BADNESS. - -2003-02-04 Jim Blandy - - * dwarf2read.c (dwarf2_locate_sections): When we find a macro info - section, let dwarf_macinfo_section point to it, not - dwarf_loc_section. - -2003-02-04 Daniel Jacobowitz - - Pointed out by Anton Blanchard . - * ppc-linux-tdep.c (insn_is_sigreturn): New function. - (ppc_linux_at_sigtramp_return_path): Use it. - -2003-02-04 Daniel Jacobowitz - - * defs.h (streq): Add prototype. - * utils.c (streq): New function. - - * dwarf2read.c (new_symbol): Use SYMBOL_SET_NAMES instead of - SYMBOL_NAME and SYMBOL_INIT_DEMANGLED_NAME. - * mdebugread.c (new_symbol): Likewise. - * stabsread.c (define_symbol): Likewise. - * coffread.c (process_coff_symbol): Likewise. - * dwarfread.c (new_symbol): Likewise. - - * minsyms.c (prim_record_minimal_symbol_and_info): Use - SYMBOL_SET_NAMES instead of setting SYMBOL_NAME. Set the language - here. - (install_minimal_symbols): Don't set SYMBOL_LANGUAGE or call - SYMBOL_INIT_DEMANGLED_NAME. - * objfiles.c: Include "hashtab.h". - (allocate_objfile): Call htab_set_functions_ex for the - demangled_names_hash. - (free_objfile): Call htab_delete for the demangled_names_hash. - * objfiles.h (struct htab): Add declaration. - (struct objfile): Add demangled_names_hash. - * symfile.c: Include "hashtab.h". - (reread_symbols): Call htab_delete for the demangled_names_hash. - (add_psymbol_to_list): Use SYMBOL_SET_NAMES instead of putting - SYMBOL_NAME in the bcache. - * symtab.c: Include "hashtab.h". Update comments. - (create_demangled_names_hash, symbol_set_names): New functions. - (symbol_find_demangled_name): New function, broken out from - symbol_init_demangled_names. - (symbol_init_demangled_names): Use it. - * symtab.h (SYMBOL_INIT_DEMANGLED_NAME): Add missing parentheses. - (SYMBOL_SET_NAMES): New macro. - (symbol_set_names): Add prototype. - -2003-02-03 Jim Blandy - - Use a single, consistent representation for an empty minimal - symbol table in an objfile. - * objfiles.c (terminate_minimal_symbol_table): New function. - (allocate_objfile): Call it. - * objfiles.h (terminate_minimal_symbol_table): New declaration. - (ALL_MSYMBOLS): No need to test whether (objfile)->msymbols is - non-NULL. - * minsyms.c (lookup_minimal_symbol_by_pc_section): To see whether - objfile has minimal symbols, compare minimal_symbol_count to zero, - instead of comparing msymbols with NULL. - * objfiles.c (have_minimal_symbols): Same. - * solib-sunos.c (solib_add_common_symbols): Call - terminate_minimal_symbol_table. - * symfile.c (reread_symbols): Same. - -2003-02-03 Kevin Buettner - - * s390-tdep.c (s390_address_class_type_flags) - (s390_address_class_type_flags_to_name) - (s390_address_class_name_to_type_flags): New functions. - (s390_gdbarch_init): Define ADDRESS_CLASS_TYPE_FLAGS_TO_NAME, - ADDRESS_CLASS_NAME_TO_TYPE_FLAGS, and ADDRESS_CLASS_TYPE_FLAGS. - -2003-02-03 Michael Snyder - - * arm-tdep.c: Fix spell-o in comment. - -2003-02-03 Michal Ludvig - - * dwarf2cfi.c (pointer_encoding): Added new parameter. - * dwarf2cfi.c, dwarf2read.c: Changed all warnings and - error messages to contain BFD filename. - -2003-02-02 Elena Zannoni - - Fix PR gdb/742 gdb/743 gdb/877 - * disasm.c (dump_insns): Use make_cleanup_ui_out_tuple_begin_end. - (do_mixed_source_and_assembly): Use - make_cleanup_ui_out_tuple_begin_end and - make_cleanup_ui_out_tuple_begin_end. - (do_mixed_source_and_assembly): Ditto. - * thread.c (do_captured_list_thread_ids): Ditto. - * ui-out.h (ui_out_table_begin, ui_out_list_begin, - ui_out_tuple_begin, ui_out_table_end, ui_out_list_end, - ui_out_tuple_end): Delete prototypes. - * ui-out.c (ui_out_list_begin, ui_out_tuple_begin, - ui_out_list_end, ui_out_tuple_end): Delete. - - From Kevin Buettner : - * ui-out.h (make_cleanup_ui_out_table_begin_end): New function. - * ui-out.c (make_cleanup_ui_out_table_begin_end) - (do_cleanup_table_end): New functions. - * breakpoint.c (print_it_typical, print_one_breakpoint, mention): - Use cleanups to invoke_ui_out_tuple_end(). - (breakpoint_1): Use cleanup to invoke ui_out_table_end(). - * cli/cli-setshow.c (cmd_show_list): Use - make_cleanup_ui_out_tuple_begin_end. - -2003-02-02 Andrew Cagney - - * frame.c (frame_unwind_register): New function. - (frame_unwind_unsigned_register): Use. - (frame_unwind_signed_register): Use. - (frame_read_register): New function. - * frame.h (frame_unwind_register): Declare. - (frame_read_register): Declare. - - * d10v-tdep.c (d10v_frame_pop): Rewrite. Use regcache_cooked_write - and frame_unwind_register instead of read_memory, write_register - and deprecated_write_register_bytes. - -2003-02-02 Andrew Cagney - - * frame.h: Note that namelen can be negative. - * frame.c (frame_map_name_to_regnum): When LEN is negative, use - NAME's length. - - * NEWS: Mention that the d10v's `regs' command is deprecated. - * d10v-tdep.c (d10v_gdbarch_init): Set print_registers_info. - (d10v_print_registers_info): New function. - (show_regs): Call d10v_print_registers_info. - (_initialize_d10v_tdep): Mark "show regs" command as deprecated. - -2003-02-02 Mark Kettenis - - * stack.c (print_frame_info): Restore call to annotate_frame_begin - lost in the previous patch. - -2003-02-01 Andrew Cagney - - From 2002-11-09 Jason Molenda (jason-cl@molenda.com) - * stack.c (print_frame_info_base): Output complete FRAME tuple - for synthesized frames. - -2003-02-02 Andrew Cagney - - * mips-nat.c (zerobuf): Delete. - (fetch_inferior_registers): Alloc local zerobuf. - (fetch_core_registers): Alloc local zerobuf. - * d10v-tdep.c (show_regs): Don't allocate a dynamic array using - MAX_REGISTER_RAW_SIZE or MAX_REGISTER_VIRTUAL_SIZE. - * thread-db.c (thread_db_store_registers): Ditto. - * sh-tdep.c (sh_do_register): Ditto. - * rom68k-rom.c (rom68k_supply_one_register): Ditto. - * remote-sim.c (gdbsim_store_register): Ditto. - * remote-mips.c (mips_wait, mips_fetch_registers): Ditto. - * remote-e7000.c (fetch_regs_from_dump): Ditto. - * monitor.c (monitor_supply_register): Ditto. - * mipsv4-nat.c (supply_gregset, supply_fpregset): Ditto. - * mips-nat.c (fetch_inferior_registers): Ditto. - * m68klinux-nat.c (fetch_register): Ditto. - * lynx-nat.c (fetch_inferior_registers): Ditto. - (fetch_inferior_registers): Ditto. - * irix4-nat.c (supply_gregset, supply_fpregset): Ditto. - * hpux-thread.c (hpux_thread_fetch_registers): Ditto. - (hpux_thread_store_registers): Ditto. - * hppah-nat.c (fetch_register): Ditto. - * hppab-nat.c (fetch_register): Ditto. - * hppa-tdep.c (pa_register_look_aside): Ditto. - (pa_print_fp_reg, pa_strcat_fp_reg): Ditto. - * dve3900-rom.c (fetch_bitmapped_register): Ditto. - -2003-02-01 Andrew Cagney - - * gdbarch.sh: Explictly specify all method levels. When a - variable with an empty level, provide a non-multi-arch default. - (BELIEVE_PCC_PROMOTION_TYPE): Set level to empty. - * gdbarch.h: Re-generate. - * stabsread.c (BELIEVE_PCC_PROMOTION_TYPE): Delete. Always defined. - * config/m68k/tm-sun3.h (BELIEVE_PCC_PROMOTION_TYPE): Define as 1 - -2003-02-01 Andrew Cagney - - * defs.h (host_pointer_to_address): Delete declaration. - (address_to_host_pointer): Delete declaration. - * utils.c (host_pointer_to_address): Delete function. - (address_to_host_pointer): Delete function. - * procfs.c (procfs_address_to_host_pointer): New function. - * procfs.c (proc_set_watchpoint): Use. - (procfs_can_use_hw_breakpoint): Update comments. - * somsolib.c (hpux_address_to_host_pointer_hack): New function. - (som_solib_add): Use. - * hppa-tdep.c (hppa_pointer_to_address_hack): New function. - * hppa-tdep.c (unwind_command): Use. - -2003-02-01 Andrew Cagney - - * gdb_dirent.h: Mark up valid uses of , d_namelen and - strlen d_name. - - * main.c (captured_main): Delete #ifdef ADDITIONAL_OPTIONS, - ADDITIONAL_OPTION_CASES, and ADDITIONAL_OPTION_HANDLER code. - (print_gdb_help): Delete #ifdef ADDITIONAL_OPTION_HELP code. - * stabsread.c (DBX_PARM_SYMBOL_CLASS): Delete macro. - (define_symbol): Update. - * symfile.c (generic_load): Remove references to nindy. - * symtab.c: Remove references to nindy. - -2003-02-01 Andrew Cagney - - * infcmd.c (print_float_info): Delete code conditional on - FLOAT_INFO. - * config/nm-lynx.h: Delete #undef FLOAT_INFO. Update copyright. - * config/m68k/nm-apollo68b.h: Ditto. - * config/i386/tm-ptx.h (FLOAT_INFO): Delete. Update copyright. - * config/ns32k/nm-nbsd.h (FLOAT_INFO): Ditto. - * config/i386/tm-symmetry.h (FLOAT_INFO): Ditto. - -2003-02-01 Mark Kettenis - - * config/i386/tm-i386os9k.h: Removed. - - * configure.host (i[3456]86-*-isc*): Set gdb_host to i386v. - Remove i[3456]86-*-sysv3.2* and i[3456]86-*-sysv32* entries since - they're identical to i[3456]86-*-sysv* now. - * config/i386/i386v32.mh: Removed. - * config/i386/xm-i386v32.h: Removed. - * config/i386/xm-i386sco.h (U_FPSTATE): Remove macro. - - * config/i386/i386mk.mt, config/i386/i386mk.mh: Removed. - - * config/i386/i386dgux.mh: Removed. - * configure.host (i[3456]86-*-dgux): Set gdb_host to i386v4. - - * configure.in: Fix typo. - * configure: Regenerated. - -2003-01-31 David Carlton - - * dwarf2read.c (dwarf2_locate_sections): Set - dwarf_ranges_section. - -2003-01-31 Andrew Cagney - - * objc-exp.y, c-exp.y, f-exp.y: Remove PTR casts. - * utils.c: Update comments documenting legitimate uses of PTR. - - * utils.c: Re-indent. - - * config/djgpp/fnchange.lst: Delete nindy files. - * nindy-share/ttyflush.c, nindy-share/stop.h: Delete files. - * nindy-share/nindy.c, nindy-share/env.h: Delete files. - * nindy-share/coff.h, nindy-share/block_io.h: Delete files. - * nindy-share/b.out.h, nindy-share/VERSION: Delete files. - * nindy-share/README, nindy-share/Onindy.c: Delete files. - * nindy-tdep.c, nindy-share/Makefile: Delete files. - * Makefile.in (init.c): Remove nindy references. - (saber_gdb): Delete rule. - (ALLDEPFILES): Delete hp300ux-nat.c, nindy-tdep.c, - nindy-share/Onindy.c, nindy-share/nindy.c, nindy-share/ttyflush.c, - and a68v-nat.c. - (hp300ux-nat.o, a68v-nat.o, ptx4-nat.o): Delete rules. - (Onindy.o, nindy.o, ttyflush.o, nindy-tdep.o): Delete rules. - (HFILES_NO_SRCDIR): Delete nindy-share/b.out.h, - nindy-share/block_io.h, nindy-share/coff.h, nindy-share/env.h, and - nindy-share/stop.h. - * hp300ux-nat.c, a68v-nat.c, ptx4-nat.c: Delete files. - * saber.suppress: Delete file. - -2003-01-31 Daniel Jacobowitz - - * dbxread.c (stabs_data): New static variable. - (fill_symbuf): Support an in-memory buffer for stabs data. - (stabs_seek): New function. - (dbx_psymtab_to_symtab): Relocate the stabs data if necessary. - (read_ofile_symtab): Use stabs_seek. - (elfstab_build_psymtabs): Take an asection* instead of - an offset and size. Relocate the stabs data if necessary. - Save the section* for dbx_psymtab_to_symtab. - * dwarf2read.c: Add section variables for each debug section. - (dwarf2_locate_sections): Fill them in. - (dwarf2_read_section): Take an asection* argument. - Relocate the section contents if necessary. - (dwarf2_build_psymtabs, dwarf2_build_psymtabs_easy): Update callers. - * dwarf2cfi.c (parse_frame_info): Take a section argument and pass - it to dwarf2_read_section. - (dwarf2_build_frame_info): Update callers. - * elfread.c (elf_symfile_read): Update call to - elfstab_build_psymtabs. - * gdb-stabs.h (struct dbx_symfile_info): Add stab_section. - (DBX_STAB_SECTION): New macro. - * stabsread.h (elfstab_build_psymtabs): Update prototype. - * symfile.c (symfile_dummy_outputs): New function. - (symfile_relocate_debug_section): New function. - * symfile.h (symfile_relocate_debug_section): Add prototype. - -2003-01-31 Richard Henderson - - * alpha-nat.c (REGISTER_PTRACE_ADDR): Merge into ... - (register_addr): ... here. Support ALPHA_UNIQUE_REGNUM. - (fetch_elf_core_registers): Support ALPHA_UNIQUE_REGNUM. - * alpha-tdep.c (alpha_register_name): Add "unique". - * alpha-tdep.h (ALPHA_NUM_REGS): Increment. - (ALPHA_UNIQUE_REGNUM): New. - * config/alpha/nm-linux.h (ALPHA_UNIQUE_PTRACE_ADDR): New. - -2003-01-31 Andrew Cagney - - * README: Remove reference to Ericsson 1800 monitor. - * Makefile.in (remote-es.o): Delete rule. - (ALLDEPFILES): Delete remote-es.c. - * remote-es.c: Delete file. - * config/m68k/es1800.mt: Delete file. - * config/djgpp/fnchange.lst: Update. - * configure.tgt: Delete m68*-ericsson-* target. - -2003-01-31 Adam Fedor - - * infrun.c (handle_inferior_event): Rename 'tmp' to real_stop_pc. - Remove duplicate/shadowing variable of same name. - -2003-01-30 Jim Blandy - - * symfile.c (find_separate_debug_file): Assert that the objfile's - directory name we compute ends with a slash, and then assume that - that's so everywhere we use it. - -2003-01-30 Daniel Jacobowitz - - * valops.c (value_assign): Flush frame cache after stores to memory - also. - -2003-01-30 Andrew Cagney - - * Makefile.in (mon960-rom.o): Delete rule. - * mon960-rom.c: Delete file. - -2003-01-30 Andrew Cagney - - * d10v-tdep.c: Include "frame-unwind.h". - (d10v_gdbarch_init): Append d10v_frame_p to the unwind predicate - list. - (next_addr, uses_frame): Delete. - (struct d10v_unwind_cache): Define. - (prologue_find_regs): Add struct d10v_unwind_cache info parameter. - Use info instead of next_addr and uses_frame globals. - (d10v_frame_init_saved_regs): Delete function. - (d10v_init_extra_frame_info): Delete function. - (d10v_gdbarch_init): Do not initialize init_extra_frame_info, - frame_init_saved_regs or pop_frame, frame_chain, frame_chain_valid, - init_frame_pc or frame_saved_pc. - (d10v_pop_frame): Delete function. - (do_d10v_pop_frame): Delete function. - (d10v_frame_chain): Delete function. - (d10v_frame_chain_valid): Delete function. - (d10v_frame_pc_unwind): New function. - (d10v_frame_id_unwind): New function. - (saved_regs_unwinder): New function. - (d10v_frame_register_unwind): New function. - (d10v_frame_pop): New function. - (d10v_frame_unwind): New variable. - (d10v_frame_p): New function. - (d10v_frame_saved_pc): Delete function. - * Makefile.in (d10v-tdep.o): Update dependencies. - -2003-01-30 J. Brobecker - - * config/pa/tm-hppa64.h (CALL_DUMMY_LOCATION): Remove #undef - causing some regressions due to a change in the default value - for this macro. - -2003-01-29 Richard Henderson - Elena Zannoni - Daniel Jacobowitz - - Fix PR gdb/961. - * dwarf2read.c (dwarf_ranges_offset, dwarf_ranges_size): New - variables. - (RANGES_SECTION): New. - (dwarf_ranges_buffer): New variable. - (struct comp_unit_head): Add member "die". - (struct dwarf2_pinfo): Add dwarf_ranges_buffer, dwarf_ranges_size. - (DWARF_RANGES_BUFFER, DWARF_RANGES_SIZE): New. - (dwarf2_has_info): Init dwarf_ranges_offset and dwarf_ranges_size. - (dwarf2_locate_sections): Likewise. - (dwarf2_build_psymtabs): Read .debug_ranges. - (dwarf2_build_psymtabs_hard): Swap dwarf_ranges out. - (psymtab_to_symtab_1): Swap dwarf_ranges in. Set cu_header.die. - (dwarf2_get_pc_bounds): New cu_header argument; adjust all callers. - Look for DW_AT_ranges and return the bounding box. - -2003-01-29 Brian Ford - - * win32-nat.c (cygwin_pid): Removed as unused. - (child_attach): Try fall back to Cygwin pid. - -2003-01-29 Jim Blandy - - * objfiles.h (struct objfile): Doc fix. - -2003-01-29 Andrew Cagney - - * frame.c (frame_saved_regs_id_unwind): Assert FRAME_CHAIN_P. - (legacy_get_prev_frame): Assert FRAME_CHAIN_P. - (get_prev_frame): When FRAME_CHAIN_P, call legacy_get_prev_frame. - (frame_saved_regs_pc_unwind): Assert FRAME_SAVED_PC_P. - * gdbarch.sh (FRAME_CHAIN): Change to a function with predicate. - (FRAME_SAVED_PC): Change to a function with predicate. - * gdbarch.h, gdbarch.c: Re-generate. - -2003-01-28 Andrew Cagney - - * hppah-nat.c (child_pid_to_exec_file): Don't use boolean. - - * complaints.c (complain): Delete function. - * complaints.h (struct deprecated_complaint): Delete definition. - (complain): Delete declaration. - -2003-01-28 Kevin Buettner - - * mips-tdep.c (mips_init_extra_frame_info): Return early for - dummy frames. - -2003-01-27 Andrew Cagney - - * sentinel-frame.h, sentinel-frame.c: New files. - * Makefile.in (frame.o): Update dependencies. - (SFILES): Add sentinel-frame.c. - (sentinel_frame_h): Define. - (COMMON_OBS): Add sentinel-frame.o. - (sentinel-frame.o): Specify dependencies. - * frame.c: Include "sentinel-frame.h". - (frame_register_unwind): Rewrite assuming that there is always a a - ->next frame. - (frame_register, generic_unwind_get_saved_register): Ditto. - (frame_read_unsigned_register, frame_read_signed_register): Ditto. - (create_sentinel_frame, unwind_to_current_frame): New functions. - (get_current_frame): Rewrite using create_sentinel_frame and - unwind_to_current_frame. When possible, always create a frame. - (create_new_frame): Set next to the sentinel frame. - (get_next_frame): Rewrite. Don't go below the level 0 frame. - (deprecated_update_frame_pc_hack): Update the next frame's PC and - ID cache when necessary. - (frame_saved_regs_id_unwind): Use frame_relative_level. - (deprecated_generic_get_saved_register): Use frame_relative_level, - get_frame_saved_regs, get_frame_pc, get_frame_base and - get_next_frame. - (frame_saved_regs_register_unwind): Use get_frame_saved_regs and - frame_register. - -2003-01-27 Daniel Jacobowitz - - * gdb_indent.sh: Add -T bfd and -T asection to the indent arguments. - -2003-01-27 Daniel Jacobowitz - - * maint.c [! (HAVE_MONSTARTUP && HAVE__MCLEANUP)] - (maintenance_set_profile_cmd): Use error () instead of warning (). - -2003-01-27 Daniel Jacobowitz - - * configure.in: Check that -pg works if using --enable-profiling. - Check for monstartup and _mcleanup regardless of --enable-profiling. - * maint.c: Check for monstartup and _mcleanup before using them. - * config.in: Regenerated. - * configure: Regenerated. - -2003-01-24 Nick Clifton - - * Add sh2e support: - - 2002-04-02 Elena Zannoni - - * gdb/sh-tdep.c (sh_sh2e_register_name): New. - (sh2e_show_regs): New. - (sh_gdbarch_init): Handle bfd_mach_sh2e. - * config/sh/tm-sh.h: Added sh2e to comments. - -2003-01-23 Jim Blandy - - * symfile.c (syms_from_objfile): Don't print the "(no debugging - symbols found)" message here; we haven't checked for a separate - debug info file yet, so we don't know yet. - (symbol_file_add_with_addrs_or_offsets): Print it here, after - we've looked everywhere. Also, there's no need to print a special - message when we're loading the separate debug info file: the one - symbol_file_add prints is fine. - -2003-01-23 Alexander Larsson - Jim Blandy - - Add support for executables whose debug info has been separated - out into a separate file, leaving only a link behind. - * objfiles.h (struct objfile): New fields: separate_debug_objfile - and separate_debug_objfile_backlink. - (put_objfile_before): New declaration. - * symfile.c: #include "filenames.h". - (symbol_file_add_with_addrs_or_offsets): If this objfile has its - debug info in a separate file, read that, too. Save the addrs - argument, so we can use it again to read the separated debug info; - syms_from_objfile modifies the table we pass it. - (reread_symbols): After re-reading an objfile, call - reread_separate_symbols to refresh its separate debug info - objfile, if it has one. - (reread_separate_symbols, find_separate_debug_file, - get_debug_link_info, separate_debug_file_exists): New functions. - (debug_file_directory): New global var. - (_initialize_symfile): Initialize debug_file_directory, and - provide the new `set debug-file-directory' command to let the user - change it. - * objfiles.c (free_objfile): If this objfile has its debug info in - a separate objfile, free that one too. If this is itself a - separate debug info objfile, clear our parent's backlink. - (put_objfile_before): New function. - * utils.c (gnu_debuglink_crc32): New function. - * defs.h (gnu_debuglink_crc32): New declaration. - * Makefile.in (symfile.o): Note dependency on "filenames.h". - * configure.in: Handle --with-separate-debug-dir config option. - * acinclude.m4 (AC_DEFINE_DIR): New macro. - * acconfig.h (DEBUGDIR): New macro. - * configure, aclocal.m4, config.in: Regenerated. - -2003-01-22 Jim Blandy - - * symfile.c (symbol_file_add_with_addrs_or_offsets): New function, - like the old symbol_file_add, but taking new arguments: you can - now pass in either a `struct section_addr_info' list to say where - each section is loaded, or a `struct section_offsets' table. Pass - these new arguments through to syms_from_objfile as appropriate. - (symbol_file_add): Just call symbol_file_add_with_addrs_or_offsets, - with the appropriate quiescent values for the new arguments. - - * symfile.c: #include "gdb_assert.h". - (syms_from_objfile): Add the ability to pass in a section offset - table directly, as an alternative to the section_addr_info table. - Document arguments better. - (symbol_file_add): Pass extra arguments to syms_from_objfile. - * symfile.h (syms_from_objfile): Update declaration. - * rs6000-nat.c (objfile_symbol_add): Pass new arguments to - syms_from_objfile. - * Makefile.in (symfile.o): List dependency on $(gdb_assert_h). - -2003-01-22 Daniel Jacobowitz - - Original patch by Tom Tromey and - Jason Molenda . - * Makefile.in (PROFILE_CFLAGS): Substitute from configure. - (INTERNAL_LDFLAGS): Don't include PROFILE_CFLAGS. - * NEWS: Mention profiling. - * configure.in (--enable-gdbtk): Fix typo. - (--enable-profiling): New. Set PROFILE_CFLAGS. - * maint.c (maintenance_set_profile_cmd): Remove NOTYET. - Fill in function. - (profiling_state): New variable. - (mcleanup_wrapper): New function. - (_initialize_maint): Remove NOTYET, fix call to - add_setshow_boolean_cmd for "maint set profile". - * configure: Regenerated. - -2003-01-21 Martin M. Hunt - - * Makefile.in (install-gdbtk): Install PNG images too. - -2003-01-21 Andrew Cagney - - * exec.c (text_start): Delete global variable. - (exec_file_attach): Make text_start local to the function. - * inferior.h (BEFORE_TEXT_END, AFTER_TEXT_END): Delete macros. - * valops.c (hand_function_call): Delete code that handles - BEFORE_TEXT_END and AFTER_TEXT_END. - * gdbarch.sh (CALL_DUMMY_LENGTH): Test call_dummy_length instead - of CALL_DUMMY_LOCATION. - * gdbarch.c: Regenerate. - * inferior.h (deprecated_pc_in_call_dummy_before_text_end) - (deprecated_pc_in_call_dummy_after_text_end): Delete declaration. - * blockframe.c (deprecated_pc_in_call_dummy_before_text_end) - (deprecated_pc_in_call_dummy_after_text_end): Delete functions. - (text_end): Delete extern declaration. - -2003-01-21 Andrew Cagney - - * frame.h (FRAME_OBSTACK_ZALLOC): Define. - * blockframe.c (backtrace_below_main): Move to "frame.c". - (frame_chain_valid): Delete check for backtrace_below_main. - (_initialize_blockframe): Delete initialization, move ``set - backtrace-below-main'' command to "frame.c". - (do_flush_frames_sfunc): Delete function. - * frame.c: Include "command.h" and "gdbcmd.h". - (frame_type_from_pc): New function. - (create_new_frame): Use frame_type_from_pc. - (legacy_get_prev_frame): New function. - (get_prev_frame): Rewrite. When an old style frame, call - legacy_get_prev_frame. Otherwize, unwind the PC first. - (_initialize_frame): Add ``set backtrace-below-main'' command. - * Makefile.in (frame.o): Update dependencies. - -2003-01-19 Andrew Cagney - - * config/pa/tm-hppa.h (DEPRECATED_DO_REGISTERS_INFO): Rename - DEPRECATED_REGISTERS_INFO. - -2003-01-19 Andrew Cagney - - * MAINTAINERS: Replace `Blanket Write Privs' with `Global - Maintainers'. Update `Various Maintainers'. - -2003-01-19 Andrew Cagney - - * frame.c (frame_saved_regs_pop): Assert POP_FRAME_P. - * gdbarch.sh (POP_FRAME): Change to function with predicate. - Suppress actual parameters when `-'. - * gdbarch.h, gdbarch.c: Regenerate. - -2003-01-19 Andrew Cagney - - * d10v-tdep.c (d10v_frame_saved_pc, d10v_frame_chain): Restore - code handling dummy frames. - -2003-01-19 Andrew Cagney - - * frame-unwind.h (frame_unwind_pop_ftype): Declare. - (struct frame_unwind): Add field pop. - * frame.h (frame_pop): Declare. - * frame.c (frame_saved_regs_pop): New function. - (trad_frame_unwinder): Add frame_saved_regs_pop. - (frame_pop): New function. - * dummy-frame.c (dummy_frame_pop): New function. - (discard_innermost_dummy): New function. - (generic_pop_dummy_frame): Use discard_innermost_dummy. - (dummy_frame_unwind): Add dummy_frame_pop. - * infrun.c (normal_stop): Call frame_pop instead of POP_FRAME. - * valops.c (hand_function_call): Ditto. - * stack.c (return_command): Ditto. - -2003-01-18 Andrew Cagney - - * cris-tdep.c: Fix function declaration indentation. - * dwarfread.c, gdbcore.h, gdbtypes.h, i386v-nat.c: Ditto. - * mips-tdep.c, monitor.h, parse.c, proc-utils.h: Ditto. - * rs6000-nat.c, ser-go32.c, somread.c, stabsread.c: Ditto. - * symfile.h, symtab.h, target.c, target.h, value.h: Ditto. - * xcoffread.c, config/pa/tm-hppa.h: Ditto. - * config/sparc/tm-sp64.h, config/sparc/tm-sparc.h: Ditto. - -2003-01-18 Michael Chastain - - * README (Unpacking and Installation -- quick overview): - Warn against ".../gdb-5.3/gdb/configure". - -2003-01-18 Andrew Cagney - - * dummy-frame.h (dummy_frame_id_unwind): Delete declaration. - (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto. - (struct frame_unwind): Declare opaque. - (dummy_frame_p): Declare function. - * dummy-frame.c (dummy_frame_id_unwind): Make static. - (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto. - * dummy-frame.c: Include "frame-unwind.h". - (dummy_frame_p): New function. - (dummy_frame_unwind): New variable. - * frame.c: Include "frame-unwind.h". - (frame_pc_unwind, frame_id_unwind, frame_register_unwind): Update - to use the new unwind field. - (set_unwind_by_pc): Delete function. - (create_new_frame, get_prev_frame): Set unwind field using - frame_unwind_find_by_pc. - (trad_frame_unwind, trad_frame_unwinder): New variables. - * frame.h (trad_frame_unwind): Declare variable. - (frame_id_unwind_ftype): Delete declaration. - (frame_pc_unwind_ftype, frame_register_unwind_ftype): Ditto. - (struct frame_unwind): Declare opaque. - (struct frame_info): Replace the fields id_unwind, pc_unwind and - register_unwind with a single unwind pointer. - * frame-unwind.h, frame-unwind.c: New files. - * Makefile.in (SFILES): Add frame-unwind.c. - (frame_unwind_h): Define. - (COMMON_OBS): Add frame-unwind.o. - (frame-unwind.o): Specify dependencies. - (frame.o, dummy-frame.o): Update dependencies. - -2003-01-18 Andrew Cagney - - * ada-valprint.c: Eliminate PTR. - * breakpoint.c, corelow.c, cris-tdep.c, dbxread.c: Ditto. - * defs.h, dve3900-rom.c, dwarf2read.c, dwarfread.c: Ditto. - * exec.c, hppa-tdep.c, hpread.c, infcmd.c, mdebugread.c: Ditto. - * objfiles.c, objfiles.h, ocd.c, remote-es.c: Ditto. - * remote-mips.c, remote-sds.c, remote-vx.c: Ditto. - * solib-svr4.c, solib.c, stack.c, symfile.c, symfile.h: Ditto. - * symmisc.c, v850ice.c, xcoffread.c, cli/cli-script.c: Ditto. - -2003-01-17 Andrew Cagney - - * main.c (captured_main): Don't use PTR. - * cp-valprint.c (cp_print_class_method): Replace STREQ with strcmp. - * gdbtypes.c (lookup_primitive_typename): Ditto. - (lookup_struct_elt_type): Ditto. - * f-valprint.c (info_common_command): Ditto. - (list_all_visible_commons): Ditto. - * jv-typeprint.c (java_type_print_base): Ditto. - - * config/djgpp/fnchange.lst: Rename mi1-var-block.exp, - mi1-var-child.exp, mi1-var-cmd.exp and mi1-var-display.exp. - Rename opcodes/iq2000-desc.c and opcodes/iq2000-dis.c. Rename - i386-interix-nat.c and i386-interix-tdep.c. Rename - m68klinux-nat.c and m68klinux-tdep.c. Rename - config/mips/tm-linux.h and config/mips/tm-linux64.h. Rename - bfd/po/.cvsignore and opcodes/po/.cvsignore. Rename - gdb/objc-exp.tab.c and gdb/ada-exp.tab.c - * main.c (captured_main): Use xfree, not free. - -2003-01-16 Andrew Cagney - - * frame.h (frame_id_unwind_ftype): Change type so that the frame's - ID back using a parameter. - * frame.c (frame_id_unwind): Update call. - (frame_saved_regs_id_unwind): Update. - * dummy-frame.c (dummy_frame_id_unwind): Update function. - * dummy-frame.h (struct frame_id): Add opaque declaration. - (dummy_frame_id_unwind): Update declaration. - -2003-01-15 Andrew Cagney - - * sparc-tdep.c: Delete reference to PRINT_REGISTER_HOOK. - -2003-01-15 Stephen P. Smith - - * MAINTAINERS (Stephen P. Smith): Updated email address. - -2003-01-14 Elena Zannoni - - Fix PR gdb/898 - * breakpoint.c (until_break_command): Add new argument. Use it to - decide whether to stop only at the current frame or not. - * breakpoint.h (until_break_command): Update prototype. - * infcmd.c (until_command): Add new argument to until_break_command - call. - (advance_command): New function. - (_initialize_infcmd): Update help string for 'until' command. - Add new 'advance' command. - -2003-01-14 David Carlton - - * linespec.c (decode_line_1): Normalize comments. - (set_flags): Ditto. - (locate_first_half): Ditto. - (decode_compound): Ditto. - (symtab_from_filename): Ditto. - (decode_all_digits): Ditto. - (decode_dollar): Ditto. - (find_methods): Ditto. - (find_toplevel_char): Ditto. - -2003-01-13 Andrew Cagney - - * ax-gdb.c, c-valprint.c, charset.c, corefile.c: Update copyright. - * demangle.c, disasm.c, dwarf2cfi.c, dwarfread.c: Update copyright. - * elfread.c, eval.c, expprint.c, expression.h: Update copyright. - * f-typeprint.c, findvar.c, gcore.c, gdb_mbuild.sh: Update copyright. - * gdbtypes.h, gnu-v2-abi.c, inferior.h, inftarg.c: Update copyright. - * language.c, language.h, m32r-tdep.c: Update copyright. - * mn10200-tdep.c, scm-lang.c, scm-lang.h: Update copyright. - * somsolib.c, somsolib.h, symfile.c, symtab.h: Update copyright. - * thread-db.c, typeprint.c, utils.c, valarith.c: Update copyright. - * values.c, win32-nat.c, x86-64-linux-nat.c: Update copyright. - * x86-64-linux-tdep.c, z8k-tdep.c: Update copyright. - * cli/cli-decode.h, config/h8500/tm-h8500.h: Update copyright. - -2003-01-13 Elena Zannoni - - * stabsread.h (process_later, resolve_cfront_continuation): - Obsolete. - Update copyright years. - * buildsym.c (start_subfile): Obsolete comment pertinent to Cfront. - Update copyright year. - * dbxread.c(struct cont_elem): Obsolete. - (process_later, process_now): Obsolete functions. - (read_dbx_symtab, read_ofile_symtab): Obsolete cfront support. - Update copyright year. - * gdbtypes.c (INIT_EXTRA, ADD_EXTRA): Obsolete macros. - (add_name, add_mangled_type, cfront_mangle_name): Obsolete functions. - * mdebugread.c (parse_type): Obsolete comment pertinent to Cfront. - (parse_partial_symbols): Obsolete cfront support. - * stabsread.c - (CFRONT_VISIBILITY_PRIVATE,CFRONT_VISIBILITY_PUBLIC): Obsolete - macros. - (get_substring, get_cfront_method_physname, msg_unknown_complaint, - read_cfront_baseclasses, read_cfront_member_functions, - resolve_cfront_continuation,read_cfront_static_fields, - copy_cfront_struct_fields): Obsolete functions. - (define_symbol, read_one_struct_field): Obsolete cfront support. - * xcoffread.c (scan_xcoff_symtab): Obsolete CFront support. - Update Copyright year. - -2003-01-13 Elena Zannoni - - * stack.c (print_frame_info, print_stack_frame_base_stub, - print_stack_frame_base, show_and_print_stack_frame_stub, - show_and_print_stack_frame, print_only_stack_frame_stub, - print_only_stack_frame): Delete functions. - (print_stack_frame_stub): Call print_frame_info instead of - print_frame_info_base. - (print_frame_info_base): Rename to print_frame_info. - (backtrace_command_1): Call print_frame_info, instead of - print_frame_info_base. - (current_frame_command): Call print_stack_frame, instead of - print_only_stack_frame. - (frame_command): Call print_stack_frame, instead of - show_and_print_stack_frame. - (up_command): Ditto. - (down_command): Ditto. - * frame.h (print_only_stack_frame): Delete prototype. - * infrun.c (normal_stop): Call print_stack_frame, instead of - show_and_print_stack_frame. - * thread.c (info_threads_command): Call print_stack_frame, instead - of print_only_stack_frame. - -2003-01-13 Andrew Cagney - - * README (Graphical interface to GDB): Update URL. Point at - gdb/links/. - - * gdb_indent.sh: Update to version 2.2.9. Warn when not exact - version match. - -2003-01-13 Daniel Jacobowitz - - * symtab.c (find_pc_sect_line): Don't consider end-of-function - lines. - -2003-01-13 Daniel Jacobowitz - - * thread-db.c (attach_thread): Prototype. - (struct private_thread_info): Remove lwpid. Add thread handle (th), - thread information (ti), and valid flags (th_valid, ti_valid). - (attach_thread): Move target_pid_to_str call to after the thread - is added to GDB's list. Initialize the cache. - (thread_get_info_callback, thread_db_map_id2thr) - (thread_db_get_info): New functions. - (thread_from_lwp, lwp_from_thread, thread_db_fetch_registers) - (thread_db_store_registers, thread_db_thread_alive) - (thread_db_get_thread_local_address): Use them. - (thread_db_pid_to_str): Likewise. Return "Missing" instead - of calling error() for threads in unknown state. - - (clear_lwpid_callback): New function. - (thread_db_resume): Use it to clear the cache. - -2003-01-13 Daniel Jacobowitz - - * lin-lwp.c (struct private_thread_info, find_lwp_callback): Remove. - (resume_callback): Remove dead code. - -2003-01-13 Andrew Cagney - - * gdbarch.sh (FRAME_INIT_SAVED_REGS): Change to function with - predicate. - * gdbarch.h, gdbarch.c: Regenerate. - * stack.c (frame_info): Only initialize the saved registers when - FRAME_INIT_SAVED_REGS_P. - * frame.c (frame_saved_regs_register_unwind): Assert - FRAME_INIT_SAVED_REGS_P. - (deprecated_generic_get_saved_register): Ditto. - -2003-01-13 Daniel Jacobowitz - - * source.c (openp): Squelch warning about "filename". - -2003-01-13 Daniel Jacobowitz - - * source.c (openp): If the file does not exist don't necessarily - search the path. - -2003-01-13 Daniel Jacobowitz - - Fix PR gdb/872. - * gdbtypes.c (init_type): Mark "char" as TYPE_FLAG_NOSIGN. - (integer_types_same_name_p): New function. - (rank_one_type): Use it. - * stabsread.c (read_range_type): Mark "char" as TYPE_FLAG_NOSIGN. - -2003-01-13 Daniel Jacobowitz - - * Makefile.in (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_DEFINE): New + (sparc64_supply_gregset, sparc64_collect_gregset, + sparc64_supply_fpregset, sparc64_collect_fpregset): New functions. + (sparc64_init_abi): New function. + * sparc64-tdep.h: Update copyright year. Fix typo in multiple + inclusion guard. Include "sparc-tdep.h". + (BIAS): Define. + (r_tstate_offset, r_fprs_offset): New defines. + (enum sparc_regnum): Remove defenition. + (enum sparc64_regnum): Reformat. + (sparc_supply_rwindow, sparc_fill_rwindow): Remove prototypes. + (sparc64_init_abi, sparc64_supply_gregset, + sparc64_collect_gregset, sparc64_supply_fpregset, + sparc64_collect_fpregset): New prototypes. + (sparc64_sol2_gregset, sparc64nbsd_gregset, sparc64fbsd_gregset): + Add extern declarations. + (sparc64_sol2_init_abi): New prototype. + (sparc64fbsd_supply_reg, sparc64fbsd_fill_reg) + (sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove + prototypes. + * sparc64fbsd-nat.c: Include "sparc-nat.h", don't include + "sparnbsd-nat.h". + (sparc64fbsd_reg_supplies_p, sparc64fbsd_fpreg_supplies_p): Remove + functions. + (_initialize_sparc64fbsd_nat): Remove initialization of + sparcbsd_supply_reg, sparcbsd_fill_reg, sparcbsd_supply_fpreg, + sparcbsd_fill_fpreg, sparcbsd_reg_supplies_p, + sparcbsd_fpreg_supplies_p. Initialize sparc_gregset. + * sparc64fbsd-tdep.c: Update copyright year. Include "frame.h", + "frame-unwind.h", "trad-frame.h" and "gdb_assert.h". + (sparc64fbsd_r_global_offset, sparc64fbsd_r_out_offset) + (sparc64fbsd_r_fprs_offset, sparc64fbsd_r_tnpc_offset) + (sparc64fbsd_r_tpc_offset, sparc64fbsd_r_tstate_offset) + (sparc64fbsd_r_y_offset): Remove variables. + (sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg): + Make static and const. + (sparc64fbsd_supply_reg, sparc64fbsd_fill_reg) + (sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove + functions. + (sparc64fbsd_gregset): New variable. + (fetch_core_registers): Replace calls to sparc64fbsd_supply_reg + and sparc64fbsd_supply_fpreg with calls to sparc64_supply_gregset + and sparc64_supply_fpregset. + (sparc64fbsd_pc_in_sigtramp, sparc64fbsd_sigtramp_frame_cache) + (sparc64fbsd_sigtramp_frame_this_id) + (sparc64fbsd_sigtramp_frame_prev_register): New functions. + (sparc64fbsd_sigtramp_frame_unwind): New variable. + (sparc64fbsd_sigtramp_frame_sniffer): New function. + (sparc64fbsd_init_abi): Set pc_in_sigtramp, append + sparc64fbsd_sigtramp_frame_sniffer. Call sparc64_init_abi. + * sparcnbsd-tdep.c: Update copyright year. Include + "floatformat.h", "frame.h", "frame-unwind.h", "symtab.h", + "trad-frame.h" and "gdb_assert.h", don't include "target.h", + "value.h" and "sparcnbsd-tdep.h". + (REG32_OFFSET_PSR, REG32_OFFSET_PC, REG32_OFFSET_NPC) + (REG32_OFFSET_Y, REG32_OFFSET_GLOBAL, REG32_OFFSET_OUT) + (REG64_OFFSET_TSTATE, REG64_OFFSET_PC, REG64_OFFSET_NPC) + (REG64_OFFSET_Y, REG64_OFFSET_GLOBAL, REG64_OFFSET_OUT): Remove + defines. + (sparcnbsd_gregset): New variable. + (sparcnbsd_supply_reg32, sparcnbsd_supply_reg64) + (sparcnbsd_fill_reg32, sparcnbsd_fill_reg64) + (sparcnbsd_supply_fpreg32, sparcnbsd_supply_fpreg64) + (sparcnbsd_fill_reg32, sparcnbsd_fill_reg64): Remove functions. + (sparc32nbsd_sigtramp_start, sparc32nbsd_sigtramp_end): New variables. - (main.o): Custom rule which uses $(TARGET_SYSTEM_ROOT_DEFINE). - * configure.in: Add --with-sysroot. - * configure: Regenerated. - * main.c (gdb_sysroot): New variable. - (captured_main): Initialize gdb_sysroot. - * defs.h (gdb_sysroot): New extern declaration. - * solib.c (_initialize_solib): Initialize solib_absolute_prefix. - -2003-01-12 Michael Chastain - - * config/djgpp/fnchange.lst: add gdb/ChangeLog-2002. - -2003-01-12 Michael Chastain - - * top.c (print_gdb_version): Bump copyright year to 2003. - -2003-01-12 David Carlton - - * linespec.c (symtab_from_filename): Rename variable 's' to - 'file_symtab'. - -2003-01-12 Andrew Cagney - - * d10v-tdep.c (d10v_init_extra_frame_info): Remove checks for a - dummy frame. - (d10v_frame_saved_pc, d10v_frame_chain): Ditto. - -2003-01-12 Andrew Cagney - - * d10v-tdep.c: Include "gdb_assert.h". - (d10v_store_return_value): Rewrite to match current interface. - (d10v_extract_struct_value_address): Ditto. - (d10v_extract_return_value): Ditto. - (d10v_gdbarch_init): Set store_restore_value, - extract_struct_value_address and extract_return_value. - -2003-01-12 J. Brobecker - - * hpread.c (set_namestring): New procedure replacing the - SET_NAMESTRING macro. - (hpread_build_psymtabs): Replace calls to SET_NAMESTRING - by calls to set_namestring. - -2003-01-11 J. Brobecker - - * hpread.c (SET_NAMESTRING): Remove an incorrect cast to fix - a compilation warning. - (hpread_process_one_debug_symbol): Likewise. - -2003-01-10 David Carlton - - * linespec.c (decode_line_1): Rename variable 's' to - 'file_symtab'. - (decode_all_digits): Rename argument 's' to 'file_symtab'. - (decode_dollar): Ditto. - (decode_variable): Ditto. - (symbol_found): Ditto. - -2003-01-09 Michael Chastain - - * config/djgpp/fnchange.lst: update file list for testsuite/gdb.c++. - -2003-01-07 Corinna Vinschen - - * win32-nat.c (set_process_privilege): New function. - (child_attach): Call set_process_privilege() to enable the - SE_DEBUG_NAME user privilege if available in process token. - -2003-01-10 J. Brobecker - - * hpread.c (hpread_process_one_debug_symbol): Fix a small - compilation error in the previous revision. - -2003-01-09 David Carlton - - * linespec.c: Update copyright. - -2003-01-09 Daniel Jacobowitz - - * lin-lwp.c (child_wait): Ignore exit statuses for processes other - than inferior_ptid. - (lin_lwp_wait): Ignore exit statuses for unknown LWPs. - -2003-01-09 Andrew Cagney - - * frame.h (frame_obstack_zalloc): Replace frame_obstack_alloc. - Update comments. - * frame.c (frame_obstack_zalloc): Replace frame_obstack_alloc. - (frame_saved_regs_zalloc): Update. - (frame_saved_regs_register_unwind): Update. - (create_new_frame): Update. - (get_prev_frame): Update. - (frame_extra_info_zalloc): Update. - (deprecated_get_frame_saved_regs): Update. - * dwarf2cfi.c (cfi_init_extra_frame_info): Update. - * cris-tdep.c: Update comment. - - * somsolib.h: Fix function indentation. - * disasm.c, buildsym.c, buildsym.h: Eliminate PTR. - * gnu-v2-abi.c, f-typeprint.c, x86-64-linux-tdep.c: Eliminate STREQ. - * demangle.c, ax-gdb.c, c-valprint.c: Eliminate STREQ. - * alpha-osf1-tdep.c, corefile.c: Eliminate STREQ. - * somsolib.c, inftarg.c: Remove assignment in if conditional. - - * infrun.c (follow_fork): Use ISO C definition. - * expprint.c (print_subexp): Use xfree instead of free. - * charset.c: Include "gdb_string.h" instead of . - (register_iconv_charsets): Use ISO C definition. - (host_charset, target_charset): Ditto. - * Makefile.in (charset.o): Update dependencies. - (mi-cmd-env.o): Update dependencies. - -2003-01-08 Andrew Cagney - - * alpha-linux-tdep.c (alpha_linux_sigcontext_addr): Use - get_frame_base. - -2003-01-08 Andrew Cagney - - * gdb_mbuild.sh: Add --keep option. When specified, keep the - build directories. Save edited gdb output in Mbuild.log. If a - build fails, remove any final GDB executable. - -2003-01-08 Andrew Cagney - - * gdb_mbuild.sh: Edit the output of `maint print architecture' - replacing hex constants with function names and stripping leading - file name directory prefixes. - -2003-01-08 Andrew Cagney - - * gcore.c, i386-linux-tdep.c: Use get_frame_pc, get_next_frame and - get_frame_base. - -2003-01-08 David Carlton - - * linespec.c (decode_line_1): Move code into decode_variable. - (decode_variable): New function. - -2003-01-08 Andrew Cagney - - * mn10300-tdep.c (analyze_dummy_frame): Fix typo. - -2003-01-08 Andrew Cagney - - * cris-tdep.c (cris_frame_init_saved_regs): Use - get_frame_saved_regs and SIZEOF_FRAME_SAVED_REGS when copying a - saved_regs buffer. - * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto. - (sh64_nofp_frame_init_saved_regs): Ditto. - (sh_fp_frame_init_saved_regs): Ditto. - * arm-tdep.c: Use deprecated_set_frame_saved_regs_hack. - * mips-tdep.c (mips_init_extra_frame_info): Ditto. - * mcore-tdep.c (analyze_dummy_frame): Ditto. - * mn10300-tdep.c (analyze_dummy_frame): Ditto. - -2003-01-08 Daniel Jacobowitz - - * minsyms.c (lookup_minimal_symbol): Update comment. - (lookup_minimal_symbol_text): Update comment. Use the hash table. - (lookup_minimal_symbol_solib_trampoline): Likewise. - -2003-01-08 Andrew Cagney - - * d10v-tdep.c (d10v_init_extra_frame_info): Use - frame_relative_level. - - * alpha-tdep.c: Use get_frame_extra_info. - * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. - * h8300-tdep.c, ia64-tdep.c, m68hc11-tdep.c, mcore-tdep.c: Ditto. - * mips-tdep.c, mn10300-tdep.c, s390-tdep.c, sh-tdep.c: Ditto. - * sparc-tdep.c, xstormy16-tdep.c: Ditto. - - * alpha-tdep.c: Use get_next_frame. - * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. - * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto. - * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Ditto. - * mips-tdep.c, mn10200-tdep.c, mn10300-tdep.c: Ditto. - * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, sparc-tdep.c: Ditto. - * v850-tdep.c, vax-tdep.c, x86-64-linux-tdep.c: Ditto. - * xstormy16-tdep.c: Ditto. - -2003-01-07 Andrew Cagney - - * alpha-tdep.c: Use get_frame_base. - * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. - * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto. - * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto. - * mn10300-tdep.c, ns32k-tdep.c, s390-tdep.c, sh-tdep.c: Ditto. - * sparc-tdep.c, v850-tdep.c, vax-tdep.c: Ditto. - * x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto. - * config/h8500/tm-h8500.h, config/mn10200/tm-mn10200.h: Ditto. - * config/sparc/tm-sparc.h: Ditto. - -2003-01-07 Andrew Cagney - - * frame.c (deprecated_get_frame_context): New function. - (deprecated_set_frame_context): New function. - * frame.h (deprecated_get_frame_context): Declare. - (deprecated_set_frame_context): Declare. - * dwarf2cfi.c (UNWIND_CONTEXT): Use deprecated_get_frame_context. - (cfi_init_extra_frame_info): Use deprecated_set_frame_context. - -2003-01-07 Andrew Cagney - - * frame.c (deprecated_set_frame_next_hack): New function. - (deprecated_set_frame_prev_hack): New function. - * frame.h (deprecated_set_frame_next_hack): Declare. - (deprecated_set_frame_prev_hack): Declare. - * mcore-tdep.c (analyze_dummy_frame): Use - deprecated_set_frame_next_hack and deprecated_set_frame_prev_hack. - * mn10300-tdep.c (analyze_dummy_frame): Ditto. - -2003-01-07 David Carlton - - * linespec.c (decode_line_1): Move code into decode_dollar. - (decode_dollar): New function. - -2003-01-07 Andrew Cagney - - * arm-tdep.c (arm_init_extra_frame_info): Use - deprecated_update_frame_base_hack. - * xstormy16-tdep.c (xstormy16_scan_prologue): Ditto. - * mn10300-tdep.c (analyze_dummy_frame): Ditto. - (fix_frame_pointer): Ditto. - (mn10300_analyze_prologue): Ditto. - -2003-01-07 Andrew Cagney - - * xstormy16-tdep.c (xstormy16_init_extra_frame_info): Allocate - extra_info using frame_extra_info_zalloc. - * sparc-tdep.c (sparc_init_extra_frame_info): Ditto. - * sh-tdep.c (sh_init_extra_frame_info): Ditto. - (sh64_init_extra_frame_info): Ditto. - * mn10300-tdep.c (mn10300_init_extra_frame_info): Ditto. - * s390-tdep.c (s390_init_extra_frame_info): Ditto. - * mips-tdep.c (mips_init_extra_frame_info): Ditto. - * mcore-tdep.c (mcore_init_extra_frame_info): Ditto. - * frv-tdep.c (frv_init_extra_frame_info): Ditto. - * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Ditto. - * ia64-tdep.c (ia64_init_extra_frame_info): Ditto. - * h8300-tdep.c (h8300_init_extra_frame_info): Ditto. - * d10v-tdep.c (d10v_init_extra_frame_info): Ditto. - * cris-tdep.c (cris_init_extra_frame_info): Ditto. - * arm-tdep.c (arm_init_extra_frame_info): Ditto. - * alpha-tdep.c (alpha_init_extra_frame_info): Ditto. - - * mn10300-tdep.c (analyze_dummy_frame): Use - deprecated_set_frame_extra_info_hack. - * mcore-tdep.c (analyze_dummy_frame): Ditto. - -2003-01-07 J. Brobecker - - * mdebugread.c (parse_symbol): Skip stProc entries which storage - class is not scText. These do not define "real" procedures. - (parse_partial_symbols): Likewise. - -2003-01-06 Michael Snyder - - * lin-lwp.c: Added or elaborated on "debug lin-lwp" info. - -2003-01-06 Andrew Cagney - - * frame.h (deprecated_frame_xmalloc_with_cleanup): Declare. - * frame.c (deprecated_frame_xmalloc_with_cleanup): New function. - * arm-tdep.c (arm_frame_chain): Allocate caller_fi using - deprecated_frame_xmalloc_with_cleanup. - * m32r-tdep.c (m32r_virtual_frame_pointer): Allocate `fi' using - deprecated_frame_xmalloc. - * mcore-tdep.c (analyze_dummy_frame): Ditto for dummy. - * mn10200-tdep.c (mn10200_frame_chain): Ditto for dummy_frame. - -2003-01-06 Andrew Cagney - - * x86-64-linux-tdep.c: Include "osabi.h". - * Makefile.in (x86-64-linux-tdep.o): Update dependencies. - - * sparc-tdep.c (sparc_dump_tdep): Fix typo, match -> mach. - -2003-01-06 Andrew Cagney - - * MAINTAINERS (Target Instruction Set Architectures): Update - arm-elf. Can be built with -Werror, has been multiarched. - - * value.h (unpack_long): Make buffer parameter constant. - (unpack_double, unpack_pointer, unpack_field_as_long): Ditto. - * scm-lang.h (scm_parse): Ditto. - * defs.h (extract_typed_address, extract_address): Ditto. - (extract_long_unsigned_integer): Ditto. - * inferior.h (unsigned_pointer_to_address): Ditto. - (signed_pointer_to_address): Ditto. - * gdbarch.sh (POINTER_TO_ADDRESS): Ditto. - * gdbarch.h, gdbarch.c: Regenerate. - * findvar.c (extract_long_unsigned_integer): Update. - (extract_address): Update. - (extract_typed_address): Update. - (unsigned_pointer_to_address): Update. - * values.c (unpack_long): Update. - (unpack_double): Update. - (unpack_pointer): Update. - (unpack_field_as_long): Update. - * d10v-tdep.c (d10v_pointer_to_address): Update. - * avr-tdep.c (avr_pointer_to_address): Update. - * scm-lang.c (scm_unpack): Update. - * findvar.c (signed_pointer_to_address): Update. - -2003-01-06 Michal Ludvig - - * x86-64-linux-nat.c (i386_sse_regnum_p): Deleted. Not needed anymore - since it is in i386-tdep.c. - -2003-01-06 J. Brobecker - - * alpha-tdep.c (alpha_gdbarch_init): Fix a small compilation - failure introduced in the previous change. - -2003-01-05 Michael Chastain - - * README: Remove references to deleted remote-*.c files: - remote-adapt.c, remote-eb.c, remote-mm.c, remote-nindy.c, - remote-nrom.c, remote-os9k.c, remote-udi.c. - -2003-01-05 Mark Kettenis - - * i386-tdep.c (i386_get_longjmp_target): Make usable on x86-64. - * x86-64-tdep.c (x86_64_init_abi): Remove FIXME about - i386_get_longjmp_target. - -2003-01-05 Andrew Cagney - - * arm-tdep.c (prologue_cache): Change to a pointer. - (_initialize_arm_tdep): Allocate prologue_cache. - (check_prologue_cache): Update. - (save_prologue_cache): Update. - (arm_gdbarch_init): Update. - -2003-01-04 Daniel Jacobowitz - - * stabsread.c (update_method_name_from_physname): Call complaint() - instead of error. - -2003-01-04 Daniel Jacobowitz - - * arm-tdep.c (arm_frame_chain_valid): Remove unnecessary test. - * d10v-tdep.c (d10v_frame_chain_valid): Remove unnecessary tests. - * hppa-tdep.c (hppa_frame_chain_valid): Remove unnecessary test. - - * blockframe.c: Include "gdbcmd.h" and "command.h". - (backtrace_below_main): New variable. - (file_frame_chain_valid, func_frame_chain_valid) - (nonnull_frame_chain_valid, generic_file_frame_chain_valid) - (generic_func_frame_chain_valid): Remove functions. - (frame_chain_valid, do_flush_frames_sfunc): New functions. - (_initialize_blockframe): New function. - * Makefile.in (blockframe.o): Update dependencies. - * frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME - comment. Call frame_chain_valid (). - * frame.h: Remove old prototypes. Add prototype for - frame_chain_valid and update comments to match. - * gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function. - Remove old comment. - * gdbarch.h: Regenerated. - * gdbarch.c: Regenerated. - - * alpha-tdep.c (alpha_gdbarch_init): Don't call - set_gdbarch_frame_chain_valid. - * avr-tdep.c (avr_gdbarch_init): Likewise. - * cris-tdep.c (cris_gdbarch_init): Likewise. - * frv-tdep.c (frv_gdbarch_init): Likewise. - * h8300-tdep.c (h8300_gdbarch_init): Likewise. - * i386-tdep.c (i386_svr4_init_abi): Likewise. - (i386_nw_init_abi): Likewise. - (i386_gdbarch_init): Likewise. - * ia64-tdep.c (ia64_gdbarch_init): Likewise. - * m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise. - * m68k-tdep.c (m68k_gdbarch_init): Likewise. - * mcore-tdep.c (mcore_gdbarch_init): Likewise. - * mips-tdep.c (mips_gdbarch_init): Likewise. - * mn10300-tdep.c (mn10300_gdbarch_init): Likewise. - * ns32k-tdep.c (ns32k_gdbarch_init): Likewise. - * ppcnbsd-tdep.c (ppcnbsd_init_abi): Likewise. - * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. - * s390-tdep.c (s390_gdbarch_init): Likewise. - * sh-tdep.c (sh_gdbarch_init): Likewise. - * sparc-tdep.c (sparc_gdbarch_init): Likewise. - * v850-tdep.c (v850_gdbarch_init): Likewise. - * vax-tdep.c (vax_gdbarch_init): Likewise. - * x86-64-tdep.c (x86_64_init_abi): Likewise. - - * config/m32r/tm-m32r.h (FRAME_CHAIN_VALID): Don't define. - * config/m68k/tm-apollo68b.h (FRAME_CHAIN_VALID): Likewise. - * config/m68k/tm-m68kv4.h (FRAME_CHAIN_VALID): Likewise. - * config/m68k/tm-monitor.h (FRAME_CHAIN_VALID): Likewise. - * config/m68k/tm-os68k.h (FRAME_CHAIN_VALID): Likewise. - * config/m68k/tm-vx68.h (FRAME_CHAIN_VALID): Likewise. - * config/mn10200/tm-mn10200.h (FRAME_CHAIN_VALID): Likewise. - * config/sparc/tm-sparclite.h (FRAME_CHAIN_VALID): Likewise. - -2002-01-04 Daniel Jacobowitz - - * Makefile.in (acconfig_h): Remove incorrect macro. - (config_h): Define. - (osabi.o): Update dependencies. - * configure.tgt: Set gdb_osabi based on target triplet. - * configure.in: Define GDB_OSABI_DEFAULT based on gdb_osabi. - * configure: Regenerated. - * config.in: Regenerated. - * osabi.c: Include "arch-utils.h", "gdbcmd.h", and "command.h". - (GDB_OSABI_DEFAULT): Define if not already defined. - (user_osabi_state, user_selected_osabi, gdb_osabi_available_names) - (set_osabi_string): New variables. - (gdbarch_register_osabi): Add new OS ABI to - gdb_osabi_available_names. - (gdbarch_lookup_osabi): Honor specified and default OS ABIs. - (set_osabi, show_osabi): New functions. - (_initialize_gdb_osabi): Add "set osabi" and "show osabi" commands. - -2003-01-04 Daniel Jacobowitz - - * arch-utils.c (gdbarch_info_init): Set osabi to - GDB_OSABI_UNINITIALIZED. - * gdbarch.sh: Add osabi to struct gdbarch and to struct - gdbarch_info. Include "osabi.h" in gdbarch.c. Check osabi - in gdbarch_list_lookup_by_info and in gdbarch_update_p. - * gdbarch.c: Regenerated. - * gdbarch.h: Regenerated. - * osabi.c (gdbarch_lookup_osabi): Return GDB_OSABI_UNINITIALIZED if - there's no BFD. - (gdbarch_init_osabi): Remove osabi argument; use info.osabi. - * osabi.h (enum gdb_osabi): Move to defs.h. - (gdbarch_init_osabi): Update prototype. - * defs.h (enum gdb_osabi): Moved here. - * Makefile.in: Update dependencies. - - * alpha-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove osabi member. - * alpha-tdep.c: Include "osabi.h". - (alpha_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Update call to gdbarch_init_osabi. - (alpha_dump_tdep): Don't dump osabi. - * alpha-linux-tdep.c: Include "osabi.h". - * alpha-osf1-tdep.c: Include "osabi.h". - * alphafbsd-tdep.c: Include "osabi.h". - * alphanbsd-tdep.c: Include "osabi.h". - - * arm-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove osabi member. - * arm-tdep.c: Include "osabi.h". - (arm_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Update call to gdbarch_init_osabi. - (arm_dump_tdep): Don't dump osabi. - * arm-linux-tdep.c: Include "osabi.h". - * armnbsd-tdep.c: Include "osabi.h". - - * hppa-tdep.c (hppa_gdbarch_init): Don't call gdbarch_lookup_osabi. - Update call to gdbarch_init_osabi. - - * i386-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove osabi member. - * i386-tdep.c: Include "osabi.h". - (i386_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Update call to gdbarch_init_osabi. - (i386_dump_tdep): Don't dump osabi. - * i386-linux-tdep.c: Include "osabi.h". - * i386-sol2-tdep.c: Include "osabi.h". - * i386bsd-tdep.c: Include "osabi.h". - * i386gnu-tdep.c: Include "osabi.h". - * i386ly-tdep.c: Include "osabi.h". - * i386nbsd-tdep.c: Include "osabi.h". - * i386obsd-tdep.c: Include "osabi.h". - - * mips-tdep.c (struct gdbarch_tdep): Remove osabi member. - (mips_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - check osabi when iterating over arches. Update call to - gdbarch_init_osabi. - (mips_dump_tdep): Don't dump osabi. - - * ns32k-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove. - * ns32k-tdep.c (ns32k_gdbarch_init): Don't call - gdbarch_lookup_osabi. Don't iterate over arches. Don't - allocate tdep. Update call to gdbarch_init_osabi. - (ns32k_dump_tdep): Remove. - (_initialize_ns32k_tdep): Update call to gdbarch_register. - * ns32knbsd-tdep.c: Include "osabi.h". - - * ppc-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove osabi member. - * rs6000-tdep.c: Include "osabi.h". - (rs6000_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't check - osabi when iterating over arches. Update call to - gdbarch_init_osabi. - (rs6000_dump_tdep): Don't dump osabi. - * ppc-linux-tdep.c: Include "osabi.h". - * ppcnbsd-tdep.c: Include "osabi.h". - - * sh-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove osabi member. - * sh-tdep.c: Include "osabi.h". - (sh_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Update call to gdbarch_init_osabi. - (sh_dump_tdep): Don't dump osabi. - * shnbsd-tdep.c: Include "osabi.h". - - * sparc-tdep.c: Include "osabi.h". - (sparc_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Update call to gdbarch_init_osabi. - (sparc_dump_tdep): Don't dump osabi. Do dump the rest of the - tdep structure. - - * vax-tdep.h: Don't include "osabi.h". - (struct gdbarch_tdep): Remove. - * vax-tdep.c: Include "osabi.h". - (vax_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't - iterate over arches. Don't allocate tdep. Update call - to gdbarch_init_osabi. - (vax_dump_tdep): Remove. - (_initialize_vax_tdep): Update call to gdbarch_register. - -2003-01-04 Daniel Jacobowitz - - * breakpoint.c (insert_breakpoints): Skip disabled breakpoints - entirely. - (breakpoint_re_set_one): Don't fetch the value for a disabled - watchpoint. - -2003-01-04 Daniel Jacobowitz - - * buildsym.h (processing_hp_compilation): Remove obsolete variable. - * gdbarch.sh Remove include of "value.h" in gdbarch.h. - (COERCE_FLOAT_TO_DOUBLE): Remove. - * gdbarch.c: Regenerate. - * gdbarch.h: Regenerate. - * Makefile.in: Remove value_h from gdbarch_h. - * valops.c (coerce_float_to_double): New variable. - (default_coerce_float_to_double): Remove. - (standard_coerce_float_to_double): Remove. - (value_arg_coerce): Use coerce_float_to_double. - (_initialize_valops): Add "set coerce-float-to-double". - * value.h (default_coerce_float_to_double): Remove prototype. - (standard_coerce_float_to_double): Remove prototype. - - * hpread.c (hpread_process_one_debug_symbol): Mark C++ functions as - prototyped. - * mdebugread.c (parse_symbol): Likewise. - * stabsread.c (define_symbol): Mark all functions as prototyped. - - * hppa-tdep.c (hppa_coerce_float_to_double): Remove. - * alpha-tdep.c (alpha_gdbarch_init): Remove call to - set_gdbarch_coerce_float_to_double. - * arm-tdep.c (arm_gdbarch_init): Likewise. - * frv-tdep.c (frv_gdbarch_init): Likewise. - * h8300-tdep.c (h8300_gdbarch_init): Likewise (commented out). - * i386-sol2-tdep.c (i386_sol2_init_abi): Likewise. - * mips-tdep.c (mips_gdbarch_init): Likewise. - (mips_coerce_float_to_double): Remove. - * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. - (rs6000_coerce_float_to_double): Remove. - * s390-tdep.c (s390_gdbarch_init): Likewise. - * sh-tdep.c (sh_gdbarch_init): Likewise. - (sh_coerce_float_to_double): Remove. - * sparc-tdep.c (sparc_gdbarch_init): Likewise. - (sparc_coerce_float_to_double): Remove. - * v850-tdep.c (v850_gdbarch_init): Likewise. - * xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise. - * config/m32r/tm-m32r.h (COERCE_FLOAT_TO_DOUBLE): Remove. - * config/pa/tm-hppa.h: (COERCE_FLOAT_TO_DOUBLE): Remove. - (hppa_coerce_float_to_double): Remove prototype. - * config/sparc/tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Remove. - -2003-01-04 Daniel Jacobowitz - - * regformats/reg-m68k.dat: Remove fpcode and fpflags. - -2003-01-04 Daniel Jacobowitz - - Suggested by Stewart Brown : - * c-typeprint.c (c_type_print_varspec_prefix): Pass value of show - in recursive calls. Handle TYPE_CODE_TYPEDEF. - (c_type_print_varspec_suffix): Likewise. - -2003-01-04 Mark Kettenis - - * configure.in: Don't set and AC_SUBST SUBDIRS. - * configure: Regenerated. - - * configure.in: Remove code dealing with shared libraries. - * Makefile.in: Remove HLDFLAGS and HLDENV. - * configure: Regenerated. - -2003-01-04 Andrew Cagney - - * frame.c (deprecated_frame_xmalloc): New function. - (deprecated_set_frame_saved_regs_hack): New function. - (deprecated_set_frame_extra_info_hack): New function. - * frame.h (deprecated_frame_xmalloc): Declare. - (deprecated_set_frame_saved_regs_hack): Declare. - (deprecated_set_frame_extra_info_hack): Declare. - -2003-01-04 Mark Kettenis - - * configure.in: Move code that provides the --enable-gdbtk option - right after the code that handles the --enable-tui option, and - polish it somewhat. - * configure: Regenerated. - - * configure.in: Call AC_GNU_SOURCE. Check for pread64 using - AC_CHECK_FUNCS and remove the old check for pread64. - * acinclude.m4 (AC_GNU_SOURCE): New macro. - * acconfig.h (_GNU_SOURCE): Add. - (HAVE_PREAD64): Remove. - * configure, aclocal.m4, config.in: Regenerated. - -2003-01-03 Andrew Cagney - - * alpha-tdep.c: Use get_frame_saved_regs. - * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. - * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto. - * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Ditto. - * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, v850-tdep.c: Ditto. - * vax-tdep.c, xstormy16-tdep.c: Ditto. - -2003-01-03 Mark Kettenis - - * configure.in: Remove all use of the SUBDIRS variable; add - directories using the AC_CONFIG_SUBDIRS macro instead. Polish - code providing the --enable-multi-ice option, and move it right in - front of the code that checks whether gdbserver is supported. - Polish that too. - * configure: Regenerated. - * Makefile.in (SUBDIRS): Substitute @subdirs@ instead of - @SUBDIRS@. - -2003-01-03 Andrew Cagney - - * alpha-tdep.c: Use deprecated_update_frame_base_hack. - * avr-tdep.c, cris-tdep.c: Ditto. - * mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto. - * sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto. - -2003-01-03 Mark Kettenis - - * configure.in: Remove --enable-netrom option. - * configure: Regenerated. - -2003-01-03 Mark Kettenis - - * cli/cli-decode.h: Don't include "gdb_regex.h"; provide a forward - declaration for `struct re_pattern_buffer' instead. - * Makefile.in (cli_decode_h): Remove $(gdb_regex_h). - -2003-01-03 J. Brobecker - - * mdebugread.c (parse_symbol): Count until the stEnd matching - the structure name. - -2003-01-02 Mark Kettenis - - * configure.in: Remove --with-cpu option. - subscripts. Remove evil changequotes here. - * acconfig.h (TARGET_CPU_DEFAULT): Remove. - * config.in, configure: Regenerated. - - * acconfig.h (DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC): Remove. - * configure.in: Cleanup section that sources GDB and BFD configure - subscripts. Remove evil changequotes here. - * config.in, configure: Regenerated. - -2003-01-02 Andrew Cagney - - * arm-tdep.c: Use get_frame_pc and deprecated_update_frame_pc_hack - frame accessor methods. - * alpha-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. - * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto. - * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c, mips-tdep.c: Ditto. - * mn10200-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Ditto. - * s390-tdep.c, sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto. - * vax-tdep.c, x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto. - * z8k-tdep.c: Ditto. - -2003-01-02 Mark Kettenis - - * configure.in: Remove UI_OUT configuration code. - * ada-lang.c: Update assuming UI_OUT is always true. - * Makefile.in (UIOUT_CFLAGS): Remove. - * configure: Regenerated. - * TODO: Remove blurb about elimination of -DUI_OUT. - - * configure.in: Move code that provides the --enable-gdbcli, - --enable-gdbmi options right before the code that handles the - --enable-tui option. Polish a bit. - * configure: Regenerated. - - * configure.in: Rewrite check for GNU regex and the - --without-included regex option, and move it into the "Checks for - library functions" section. This makes us use the system regex - again by default on systems with version 2 of the GNU C library. - This was apparently broken. - * gdb_regex.h [!USE_INCLUDED_REGEX] (_REGEX_RE_COMP): Define. - * acconfig.h (USE_INCLUDED_REGEX): Remove. - * config.in, configure: Regenerated. - - * configure.in: Move code that provides the --enable-tui option - before the "Checks for libraries" section. Polish the code - somewhat and set need_curses to yes if we build the TUI. Rewrite - code that looks for a library providing termcap functionality to - match more closely what's done in the Readline library, and move - it into to the "Checks for libraries" section. - * configure: Regenerated. - * Makefile.in (TERMCAP): Remove variable. - * config/i386/go32.mh (TERMCAP): Remove variable. - -2003-01-02 Andrew Cagney - - * MAINTAINERS: Mention gdb_mbuild.sh. - * gdb_mbuild.sh: Rewrite. - -2003-01-02 Mark Kettenis - - * configure.in: Fix typo in last change. - * config.in, configure: Regenerated. - -2003-01-02 Andrew Cagney - - * valarith.c (value_binop): Delete obsolete code and comments. - * configure.host: Ditto. - * buildsym.h (make_blockvector): Ditto. - * buildsym.c (make_blockvector): Ditto. - * defs.h (enum language): Ditto. - (chill_demangle): Ditto. - * elfread.c (elf_symtab_read): Ditto. - * dwarfread.c (CHILL_PRODUCER): Ditto. - (set_cu_language): Ditto. - (handle_producer): Ditto. - * expprint.c (print_subexp): Ditto. - * gdbtypes.c (chill_varying_type): Ditto. - * gdbtypes.h (builtin_type_chill_bool): Ditto. - (builtin_type_chill_char, builtin_type_chill_long): Ditto. - (builtin_type_chill_ulong, builtin_type_chill_real): Ditto. - (chill_varying_type): Ditto. - * language.h (_LANG_chill): Ditto. - * language.c (binop_result_type, integral_type): Ditto. - (character_type, string_type, structured_type): Ditto. - (lang_bool_type, binop_type_check): Ditto. - * stabsread.h (os9k_stabs): Ditto. - * stabsread.c (os9k_type_vector, dbx_lookup_type): Ditto. - (define_symbol, read_type, read_struct_fields): Ditto. - (read_array_type, read_enum_type, read_huge_number): Ditto. - (read_range_type, start_stabs): Ditto. - * symfile.c (init_filename_language_table): Ditto. - (add_psymbol_with_dem_name_to_list): Ditto. - * symtab.c (symbol_init_language_specific): Ditto. - (symbol_init_demangled_name, symbol_demangled_name): Ditto. - * symtab.h (struct general_symbol_info): Ditto. - (SYMBOL_CHILL_DEMANGLED_NAME): Ditto. - * typeprint.c (typedef_print): Ditto. - * utils.c (fprintf_symbol_filtered): Ditto. - * valops.c (value_cast, search_struct_field, value_slice): Delete - obsolete code. - (varying_to_slice): Delete function. - * value.h (COERCE_VARYING_ARRAY): Delete obsolete macro contents. - (varying_to_slice): Delete declaration. - * MAINTAINERS: Update. - -2003-01-02 Mark Kettenis - - * configure.in: Reorganize "Checks for library functions section" - a bit. Remove check for `btowc' and `isascii' functions. - * configure: Regenerated. - - * acconfig.h (_MSE_INT_H): Remove. - * configure.in: Create "Checks for header files" section, and move - appropriate tests there. Don't check for objlist.h, wchar.h, - wctype.h and asm/debugreg.h. Rewrite Solaris 2.[78] - misdetection fix. Also add "Checks for types", "Checks for - compiler characteristics" and "Checks for library functions" - sections. - * config.in, configure: Regenerated. - - * configure.in: Create "Checks for programs" section, and move - appropriate tests there. - -2003-01-01 Mark Kettenis - - * configure.in: Create "Checks for libraries" section, and move - appropriate tests there. Cleanup check for wctype in libw. Use - AC_SEARCH_LIBS to see whether we need libsocket. - * configure: Regenerated. + (sparc32nbsd_pc_in_sigtramp, sparc32nbsd_sigcontext_frame_cache) + (sparc32nbsd_sigcontext_frame_this_id) + (sparc32nbsd_sigcontext_frame_prev_register): New functions. + (sparc32nbsd_sigcontext_frame_unwind): New variable. + (sparc32nbsd_sigtramp_frame_sniffer): New function. + (sparcnbsd_get_longjmp_target_32, + sparcnbsd_get_longjmp_target_64): Remove functions. + (sparcnbsd_aout_in_solib_call_trampoline): Rewrite. + (sparcnbsd_init_abi_common, sparcnbsd_init_aout, + sparcnbsd_init_elf): Remove. + (sparcnbsd_init_abi, sparcnbsd_aout_init_abi) + (sparcnbsd_elf_init_abi): New functions. + (_initialize_sparcnbsd_tdep): New prototype. + (_initialize_sparnbsd_tdep): Update. + * config/sparc/fbsd.mh (NATDEPFILES): Remove sparcbsd-nat.o and + corelow.o. Add sparc64-nat.o and sparc-nat.o. + * config/sparc/fbsd.mt (TDEPFILES): Add sparc-tdep.o and corelow.o. + * config/sparc/linux.mh: Update comment. + (XM_FILE, HOST_IPC): Remove variables. + (NATDEPFILES): Add sparc-sol2-nat.o and core-regset.o. Remove + sparc-linux-nat.o. + * config/sparc/linux.mt: Update comment. + (TDEPFILES): Add sparc-sol2-tdep.o and sparc-linux-tdep.o. + * config/sparc/nbsd.mt: Reformat. + * config/sparc/nbsd64.mh: Update comment. + (NATDEPFILES): Add sparc-nat.o. + * config/sparc/nbsd64.mt: Update comment. + (TDEPFILES): Add sparc64-tdep.o and sparc64nbsd-tdep.o. + (TM_FILE): Set to tm-nbsd.h. + * config/sparc/nbsdelf.mh: Update comment. + (NATDEPFILES): Add sparc-nat.o. + (XM_FILE): Delete. + * config/sparc/nbsdaout.mh: Update comment. + (NATDEPFILES): Add sparc-nat.o + (XM_FILE): Delete. + * config/sparc/nm-linux.h: Update copyright year. Don't include + "config/nm-svr4.h" and "solib.h". Add protection against multiple + inclusion. + (KERNEL_U_SIZE): Remove define. + (kernel_u_size): Remove prototype. + (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define. + * config/sparc/nm-nbsd.h: Update copyright. Don't include + "regcache.h". + (CHILD_PREPARE_TO_STORE): Remove define. + * config/sparc/nm-nbsdaout.h: Tweak some comments. + * sparc-nat.c, sparc-tdep.c, sparc-tdep.h, sparc64nbsd-nat.c, + sparcnbsd-nat.c: Rewrite files. + * config/sparc/tm-linux.h, config/sparc/tm-nbsd.h: Rewrite files. + * sparc-linux-nat.c, sparcbsd-nat.c, sparcbsd-nat.h, + sparcnbsd-tdep.h: Remove files. + * config/sparc/nm-sparclynx.h, config/sparc/nm-sun4os4.h, + config/sparc/nm-sun4sol2.h, config/sparc/sp64.mt, + config/sparc/sp64linux.mt, config/sparc/sp64sol2.mt, + config/sparc/sparc-em.mt, config/sparc/sparclynx.mh, + config/sparc/sparclynx.mt, config/sparc/sun4os4.mh, + config/sparc/sun4os4.mt, config/sparc/sun4sol2.mh, + config/sparc/sun4sol2.mt, config/sparc/tm-sp64.h, + config/sparc/tm-sp64linux.h, config/sparc/tm-sparc.h, + config/sparc/tm-sparclynx.h, config/sparc/tm-spc-em.h, + config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h, + config/sparc/tm-vxsparc.h, config/sparc/vxsparc.mt, + config/sparc/xm-linux.h, config/sparc/xm-sun4sol2.h: Remove files. + * sparc-linux-tdep.c, sparc-nat.h, sparc-sol2-nat.c, + sparc-sol2-tdep.c, sparc64-linux-nat.c, sparc64-linux-t dep.c, + sparc64-nat.c, sparc64-sol2-tdep.c, sparc64nbsd-tdep.c: New files. + * config/sparc/linux64.mh, config/sparc/linux64.mt, + config/sparc/nm-sol2.h, config/sparc/sol2-64.mt, + config/sparc/sol2.mh, config/sparc/sol2.mt, config/sparc/sparc.mt, + config/sparc/sparc64.mt, config/sparc/tm-sol2.h: New files. + +2004-01-02 Andrew Cagney + + From 2003-12-18 Kazuhiro Inaoka: + * configure.host: Add m32r-linux target. + +2004-01-02 Michael Chastain + + * top.c (print_gdb_version): Update year to 2004. + +2004-01-02 Mark Mitchell + + * MAINTAINERS: Add myself to the write-after-approval category. + +2004-01-02 Daniel Jacobowitz + + From Bernardo Innocenti : + * configure.tgt: Add uClinux target. + +2004-01-02 Andrew Cagney + + * utils.c (do_my_cleanups): Make static, add forward declaration. + * defs.h (do_my_cleanups): Delete declaration. + +2004-01-02 Eli Zaretskii + + * config/djgpp/fnchange.lst: Add lines for gdb/ChangeLog-2003 and + bfd/ChangeLog-0203. + +2004-01-02 Mark Kettenis + + * configure.in: Check for . Check for `struct reg' + in . + * configure, config.in: Regenerate. -For older changes see ChangeLog-2002 +For older changes see ChangeLog-2003, mi/ChangeLog-1999-2003, and +tui/ChangeLog-1998-2003. Local Variables: mode: change-log diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS index 7b997643bb7..8548526d98b 100644 --- a/gdb/MAINTAINERS +++ b/gdb/MAINTAINERS @@ -366,6 +366,7 @@ Glen McCready gkm@redhat.com Greg McGary greg@mcgary.org Jason Merrill jason@redhat.com David S. Miller davem@redhat.com +Mark Mitchell mark@codesourcery.com Marko Mlinar markom@opencores.org Alan Modra amodra@bigpond.net.au Jason Molenda jmolenda@apple.com @@ -375,6 +376,7 @@ Hans-Peter Nilsson hp@bitrange.com David O'Brien obrien@freebsd.org Alexandre Oliva aoliva@redhat.com Tom Rix trix@redhat.com +Nick Roberts nick@nick.uklinux.net Bob Rossi bob_rossi@cox.net Theodore A. Roth troth@openavr.org Ian Roxborough irox@redhat.com diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 4fccb9caffd..af681337c14 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -758,10 +758,9 @@ solib_svr4_h = solib-svr4.h solist_h = solist.h somsolib_h = somsolib.h source_h = source.h -sparc64_tdep_h = sparc64-tdep.h -sparcbsd_nat_h = sparcbsd-nat.h -sparcnbsd_tdep_h = sparcnbsd-tdep.h +sparc_nat_h = sparc-nat.h sparc_tdep_h = sparc-tdep.h +sparc64_tdep_h = sparc64-tdep.h srec_h = srec.h stabsread_h = stabsread.h stack_h = stack.h @@ -1119,7 +1118,6 @@ gdb1$(EXEEXT): gdb$(EXEEXT) # dependency to do the right thing. tm-sun3.h tm-altos.h: tm-m68k.h tm-sun2.h tm-3b1.h: tm-m68k.h -tm-sun4os4.h: tm-sparc.h xm-vaxult.h: xm-vax.h xm-vaxbsd.h: xm-vax.h @@ -1314,10 +1312,14 @@ ALLDEPFILES = \ s390-tdep.c s390-nat.c \ ser-go32.c ser-pipe.c ser-tcp.c \ sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \ - solib.c solib-irix.c solib-svr4.c solib-sunos.c sparc-linux-nat.c \ - sparc-nat.c \ - sparc64nbsd-nat.c sparcnbsd-nat.c sparcnbsd-tdep.c \ - sparc-tdep.c sparcl-tdep.c sun3-nat.c \ + solib.c solib-irix.c solib-svr4.c solib-sunos.c \ + sparc-linux-tdep.c sparc-nat.c sparc-sol2-nat.c sparc-sol2-tdep.c \ + sparc-tdep.c sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-linux-nat.c \ + sparc64-linux-tdep.c sparc64-nat.c sparc64-sol2-tdep.c \ + sparc64-tdep.c sparc64fbsd-nat.c sparc64fbsd-tdep.c \ + sparc64nbsd-nat.c sparc64nbsd-tdep.c sparcnbsd-nat.c \ + sparcnbsd-tdep.c \ + sun3-nat.c \ symm-tdep.c symm-nat.c \ vax-tdep.c \ vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \ @@ -2357,32 +2359,55 @@ source.o: source.c $(defs_h) $(symtab_h) $(expression_h) $(language_h) \ $(gdb_string_h) $(gdb_stat_h) $(gdbcore_h) $(gdb_regex_h) \ $(symfile_h) $(objfiles_h) $(annotate_h) $(gdbtypes_h) $(linespec_h) \ $(filenames_h) $(completer_h) $(ui_out_h) -sparc64fbsd-nat.o: sparc64fbsd-nat.c $(defs_h) $(sparc64_tdep_h) \ - $(sparcbsd_nat_h) -sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(gdbcore_h) $(osabi_h) \ - $(regcache_h) $(target_h) $(gdb_string_h) $(sparc64_tdep_h) -sparc64nbsd-nat.o: sparc64nbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ - $(sparc_tdep_h) $(sparcnbsd_tdep_h) +sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \ + $(frame_unwind_h) $(gdbarch_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \ + $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(gdb_assert_h) \ + $(gdb_string_h) $(sparc_tdep_h) +sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ + $(gdb_string_h) $(gdb_wait_h) $(sparc_tdep_h) $(sparc_nat_h) +sparc-sol2-nat.o: sparc-sol2-nat.c $(defs_h) $(regcache_h) $(gregset_h) \ + $(sparc_tdep_h) $(sparc64_tdep_h) +sparc-sol2-tdep.o: sparc-sol2-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \ + $(gdbcore_h) $(symtab_h) $(objfiles_h) $(osabi_h) $(regcache_h) \ + $(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \ + $(sparc_tdep_h) +sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) \ + $(float_format_h) $(frame_h) $(frame_base_h) $(frame_unwind_h) \ + $(gdbcore_h) $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) \ + $(osabi_h) $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) \ + $(gdb_string_h) $(sparc_tdep_h) +sparc64-linux-nat.o: sparc64-linux-nat.c $(defs_h) \ + $(sparc64_tdep_h) $(sparc_nat_h) +sparc64-linux-tdep.o: sparc64-linux-tdep.c $(defs_h) $(gdbarch_h) \ + $(osabi_h) $(solib_svr4_h) $(sparc64_tdep_h) +sparc64-nat.o: sparc-nat.c $(defs_h) $(gdbarch_h) \ + $(sparc64_tdep_h) $(sparc_nat_h) +sparc64-sol2-tdep.o: sparc64-sol2-tdep.c $(defs_h) $(frame_h) \ + $(frame_unwind_h) $(gdbarch_h) $(symtab_h) $(objfiles_h) $(osabi_h) \ + $(trad_frame_h) $(gdb_assert_h) $(sparc64_tdep_h) sparc64-tdep.o: sparc64-tdep.c $(defs_h) $(arch_utils_h) $(floatformat_h) \ $(frame_h) $(frame_base_h) $(frame_unwind_h) $(gdbcore_h) \ - $(gdbtypes_h) $(osabi_h) $(regcache_h) $(target_h) $(value_h) \ - $(gdb_assert_h) $(gdb_string_h) $(sparc64_tdep_h) -sparcbsd-nat.o: sparcbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ - $(sparc64_tdep_h) $(sparcbsd_nat_h) -sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(regcache_h) $(sparc_tdep_h) \ - $(gregset_h) -sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \ - $(regcache_h) $(sparc_tdep_h) $(gdb_wait_h) -sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ - $(sparc_tdep_h) $(sparcnbsd_tdep_h) -sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \ - $(target_h) $(value_h) $(osabi_h) $(gdb_string_h) $(sparc_tdep_h) \ - $(sparcnbsd_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h) + $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) $(osabi_h) \ + $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) $(gdb_string_h) \ + $(sparc64_tdep_h) +sparc64fbsd-nat.o: sparc64fbsd-nat.c $(defs_h) $(sparc64_tdep_h) \ + $(sparc_nat_h) +sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(frame_h) \ + $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(target_h) \ + $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) $(sparc64_tdep_h) +sparc64nbsd-nat.o: sparc64nbsd-nat.c $(defs_h) $(sparc64_tdep_h) \ + $(sparc_nat_h) +sparc64nbsd-tdep.o: sparc64nbsd-tdep.c $(defs_h) $(frame_h) \ + $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \ + $(solib_svr4_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \ + $(sparc64_tdep_h) $(nbsd_tdep_h) +sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(sparc_tdep_h) $(sparc_nat_h) +sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \ + $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \ + $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(gdb_assert_h) \ + $(gdb_string_h) $(sparc_tdep_h) $(nbsd_tdep_h) sparc-stub.o: sparc-stub.c -sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \ - $(inferior_h) $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) \ - $(regcache_h) $(osabi_h) $(dis_asm_h) $(sparc_tdep_h) $(gregset_h) \ - $(gdbcore_h) $(gdb_assert_h) $(symfile_h) + stabsread.o: stabsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(gdb_obstack_h) \ $(symtab_h) $(gdbtypes_h) $(expression_h) $(symfile_h) $(objfiles_h) \ $(aout_stab_gnu_h) $(libaout_h) $(aout_aout64_h) $(gdb_stabs_h) \ diff --git a/gdb/NEWS b/gdb/NEWS index 9b2a28fc2e0..6919ee60141 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -3,6 +3,19 @@ *** Changes since GDB 6.0: +* Changes in AMD64 configurations + +The AMD64 target now includes the %cs and %ss registers. As a result +the AMD64 remote protocol has changed; this affects the floating-point +and SSE registers. If you rely on those registers for your debugging, +you should upgrade gdbserver on the remote side. + +* Revised SPARC target + +The SPARC target has been completely revised, incorporating the +FreeBSD/sparc64 support that was added for GDB 6.0. As a result +support for LynxOS and SunOS 4 has been dropped. + * New C++ demangler GDB has a new C++ demangler which does a better job on the mangled @@ -63,6 +76,8 @@ PMAX (MIPS) running Mach 3.0 mips*-*-mach3* Sequent family i[3456]86-sequent-sysv4* i[3456]86-sequent-sysv* i[3456]86-sequent-bsd* +SPARC running LynxOS sparc-*-lynxos* +SPARC running SunOS 4 sparc-*-sunos4* Tsqware Sparclet sparclet-*-* Fujitsu SPARClite sparclite-fujitsu-none or sparclite diff --git a/gdb/acconfig.h b/gdb/acconfig.h index f3b8bf1351a..3bef7084974 100644 --- a/gdb/acconfig.h +++ b/gdb/acconfig.h @@ -6,6 +6,9 @@ /* Define if your struct reg has r_fs. */ #undef HAVE_STRUCT_REG_R_FS +/* Define if your struct stat has st_blocks. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS + /* Define if your struct reg has r_gs. */ #undef HAVE_STRUCT_REG_R_GS diff --git a/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c index 2354fa361bf..edab8b56709 100644 --- a/gdb/amd64fbsd-nat.c +++ b/gdb/amd64fbsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for FreeBSD/amd64. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -74,6 +74,8 @@ static int reg_offset[] = REG_OFFSET (r_r15), REG_OFFSET (r_rip), REG_OFFSET (r_rflags), + REG_OFFSET (r_cs), + REG_OFFSET (r_ss), -1, -1, -1, diff --git a/gdb/amd64fbsd-tdep.c b/gdb/amd64fbsd-tdep.c index bb44ec032b2..6814dd97e96 100644 --- a/gdb/amd64fbsd-tdep.c +++ b/gdb/amd64fbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for FreeBSD/amd64. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -58,15 +58,30 @@ amd64fbsd_sigcontext_addr (struct frame_info *next_frame) /* From . */ static int amd64fbsd_r_reg_offset[] = { - 14 * 8, 11 * 8, /* %rax, %rbx */ - 13 * 8, 12 * 8, /* %rcx, %rdx */ - 9 * 8, 8 * 8, /* %rsi, %rdi */ - 10 * 8, 20 * 8, /* %rbp, %rsp */ - 7 * 8, 6 * 8, 5 * 8, 4 * 8, /* %r8 ... */ - 3 * 8, 2 * 8, 1 * 8, 0 * 8, /* ... %r15 */ - 17 * 8, 19 * 8, /* %rip, %eflags */ - -1, -1, /* %ds, %es */ - -1, -1 /* %fs, %gs */ + 14 * 8, /* %rax */ + 11 * 8, /* %rbx */ + 13 * 8, /* %rcx */ + 12 * 8, /* %rdx */ + 9 * 8, /* %rsi */ + 8 * 8, /* %rdi */ + 10 * 8, /* %rbp */ + 20 * 8, /* %rsp */ + 7 * 8, /* %r8 ... */ + 6 * 8, + 5 * 8, + 4 * 8, + 3 * 8, + 2 * 8, + 1 * 8, + 0 * 8, /* ... %r15 */ + 17 * 8, /* %rip */ + 19 * 8, /* %eflags */ + 18 * 8, /* %cs */ + 21 * 8, /* %ss */ + -1, /* %ds */ + -1, /* %es */ + -1, /* %fs */ + -1 /* %gs */ }; /* Location of the signal trampoline. */ @@ -74,7 +89,7 @@ CORE_ADDR amd64fbsd_sigtramp_start = 0x7fffffffffc0; CORE_ADDR amd64fbsd_sigtramp_end = 0x7fffffffffe0; /* From . */ -int amd64fbsd_sc_reg_offset[X86_64_NUM_GREGS] = +int amd64fbsd_sc_reg_offset[] = { 24 + 6 * 8, /* %rax */ 24 + 7 * 8, /* %rbx */ @@ -84,16 +99,18 @@ int amd64fbsd_sc_reg_offset[X86_64_NUM_GREGS] = 24 + 0 * 8, /* %rdi */ 24 + 8 * 8, /* %rbp */ 24 + 22 * 8, /* %rsp */ - 24 + 4 * 8, /* %r8 */ - 24 + 5 * 8, /* %r9 */ - 24 + 9 * 8, /* %r10 */ - 24 + 10 * 8, /* %r11 */ - 24 + 11 * 8, /* %r12 */ - 24 + 12 * 8, /* %r13 */ - 24 + 13 * 8, /* %r14 */ - 24 + 14 * 8, /* %r15 */ + 24 + 4 * 8, /* %r8 ... */ + 24 + 5 * 8, + 24 + 9 * 8, + 24 + 10 * 8, + 24 + 11 * 8, + 24 + 12 * 8, + 24 + 13 * 8, + 24 + 14 * 8, /* ... %r15 */ 24 + 19 * 8, /* %rip */ 24 + 21 * 8, /* %eflags */ + 24 + 20 * 8, /* %cs */ + 24 + 23 * 8, /* %ss */ -1, /* %ds */ -1, /* %es */ -1, /* %fs */ diff --git a/gdb/amd64nbsd-nat.c b/gdb/amd64nbsd-nat.c index 4af22feb7f5..da4532e69ee 100644 --- a/gdb/amd64nbsd-nat.c +++ b/gdb/amd64nbsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for NetBSD/amd64. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -47,8 +47,8 @@ static int amd64nbsd32_r_reg_offset[] = 0 * 8, /* %edi */ 21 * 8, /* %eip */ 23 * 8, /* %eflags */ - -1, /* %cs */ - -1, /* %ss */ + 22 * 8, /* %cs */ + 25 * 8, /* %ss */ 18 * 8, /* %ds */ 17 * 8, /* %es */ 16 * 8, /* %fs */ diff --git a/gdb/amd64nbsd-tdep.c b/gdb/amd64nbsd-tdep.c index 5500ed13db8..a39c33e7c11 100644 --- a/gdb/amd64nbsd-tdep.c +++ b/gdb/amd64nbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for NetBSD/amd64. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -72,6 +72,8 @@ int amd64nbsd_r_reg_offset[] = 11 * 8, /* ... %r15 */ 21 * 8, /* %rip */ 23 * 8, /* %eflags */ + 22 * 8, /* %cs */ + 25 * 8, /* %ss */ 18 * 8, /* %ds */ 17 * 8, /* %es */ 16 * 8, /* %fs */ diff --git a/gdb/blockframe.c b/gdb/blockframe.c index cebc10af076..83bc691cd51 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -156,13 +156,10 @@ inside_main_func (CORE_ADDR pc) && symfile_objfile->ei.main_func_highpc > pc); } -/* Test a specified PC value to see if it is in the range of addresses - that correspond to the process entry point function. See comments - in objfiles.h for why we might want to do this. +/* Test whether PC is inside the range of addresses that corresponds + to the process entry point function. - Typically called from DEPRECATED_FRAME_CHAIN_VALID. - - A PC of zero is always considered to be the bottom of the stack. */ + A PC of zero is always considered to be the bottom of the stack. */ int inside_entry_func (CORE_ADDR pc) @@ -171,16 +168,19 @@ inside_entry_func (CORE_ADDR pc) return 1; if (symfile_objfile == 0) return 0; + if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT) { - /* Do not stop backtracing if the pc is in the call dummy - at the entry point. */ - /* FIXME: Won't always work with zeros for the last two arguments */ + /* Do not stop backtracing if the program counter is in the call + dummy at the entry point. */ + /* FIXME: This won't always work with zeros for the last two + arguments. */ if (DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0)) return 0; } - return (symfile_objfile->ei.entry_func_lowpc <= pc && - symfile_objfile->ei.entry_func_highpc > pc); + + return (symfile_objfile->ei.entry_func_lowpc <= pc + && symfile_objfile->ei.entry_func_highpc > pc); } /* Return nonzero if the function for this frame lacks a prologue. Many diff --git a/gdb/config.in b/gdb/config.in index a3edf86a0d7..1a11c7d9aee 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -79,6 +79,9 @@ /* Define if your struct reg has r_fs. */ #undef HAVE_STRUCT_REG_R_FS +/* Define if your struct stat has st_blocks. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS + /* Define if your struct reg has r_gs. */ #undef HAVE_STRUCT_REG_R_GS @@ -287,6 +290,9 @@ /* Define if you have the header file. */ #undef HAVE_LOCALE_H +/* Define if you have the header file. */ +#undef HAVE_MACHINE_REG_H + /* Define if you have the header file. */ #undef HAVE_MALLOC_H @@ -456,6 +462,9 @@ /* Define to 1 if the regex included in libiberty should be used. */ #undef USE_INCLUDED_REGEX +/* Define to 1 if your system has struct reg in . */ +#undef HAVE_STRUCT_REG + /* Define if provides the uintptr_t type. */ #undef HAVE_UINTPTR_T diff --git a/gdb/config/djgpp/config.sed b/gdb/config/djgpp/config.sed index 7cc9d3f3e48..4313bfb0c0c 100644 --- a/gdb/config/djgpp/config.sed +++ b/gdb/config/djgpp/config.sed @@ -3,7 +3,7 @@ s|gdb\.c++|gdb.cxx|g /ac_rel_source/s|ln -s|cp -p| s|\.gdbinit|gdb.ini|g -/ac_given_INSTALL=/,/^CEOF/ { +/^ac_given_INSTALL=/,/^CEOF/ { /^s%@prefix@%/a\ s,\\([yp*]\\)\\.tab,\\1_tab,g\ /^ @rm -f/s,\\$@-\\[0-9\\]\\[0-9\\],& *.i[1-9] *.i[1-9][0-9],\ @@ -12,19 +12,27 @@ s|\.gdbinit|gdb.ini|g s,\\.info\\*,.inf* *.i[1-9] *.i[1-9][0-9],\ s,\\.gdbinit,gdb.ini,g\ /TEXINPUTS=/s,:,';',g\ - /VPATH *=/s,\\([^A-z]\\):,\1;,g\ + /VPATH *=/s,\\([^A-z]\\):,\\1;,g\ /\\$\\$file-\\[0-9\\]/s,echo,& *.i[1-9] *.i[1-9][0-9],\ /\\$\\$file-\\[0-9\\]/s,rm -f \\$\\$file,& \\${PACKAGE}.i[1-9] \\${PACKAGE}.i[1-9][0-9],\ s,config\\.h\\.in,config.h-in,g\ s,po2tbl\\.sed\\.in,po2tblsed.in,g + +} + +/^ac_given_srcdir=/,/^CEOF/ { + /^s%@TOPLEVEL_CONFIGURE_ARGUMENTS@%/a\ + /@test ! -f /s,\\(.\\)\$, export am_cv_exeext=.exe; export lt_cv_sys_max_cmd_len=12288; \\1, + } /^CONFIG_FILES=/,/^EOF/ { - s|po/Makefile.in\([^-:]\)|po/Makefile.in:po/Makefile.in-in\1| + s|po/Makefile.in\([^-:a-z]\)|po/Makefile.in:po/Makefile.in-in\1| } -/^ *CONFIG_HEADERS=/,/^EOF/ { - s|config.h\([^-:]\)|config.h:config.h-in\1| +/^ *# *Handling of arguments/,/^done/ { + s| config.h"| config.h:config.h-in"| + s|config.h\([^-:"a-z]\)|config.h:config.h-in\1| } /^[ ]*\/\*)/s,/\*,/*|[A-z]:/*, @@ -32,3 +40,4 @@ s|\.gdbinit|gdb.ini|g /\$]\*) ac_rel_source=/s,\[/\$\]\*,&|[A-z]:/*, /ac_file_inputs=/s,\( -e "s%\^%\$ac_given_srcdir/%"\)\( -e "s%:% $ac_given_srcdir/%g"\),\2\1, /^[ ]*if test "x`echo /s,sed 's@/,sed -e 's@^[A-z]:@@' -e 's@/, +/^ *ac_config_headers=/s, config.h", config.h:config.h-in", diff --git a/gdb/config/djgpp/djconfig.sh b/gdb/config/djgpp/djconfig.sh index 23be0d5fdad..c79dbfb4e13 100644 --- a/gdb/config/djgpp/djconfig.sh +++ b/gdb/config/djgpp/djconfig.sh @@ -5,7 +5,7 @@ # configuring other GNU programs for DJGPP. # #===================================================================== -# Copyright 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +# Copyright 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc. # # Originally written by Robert Hoehne, revised by Eli Zaretskii. # This file is part of GDB. @@ -52,9 +52,21 @@ fi # Make sure they don't have some file names mangled by untarring. echo -n "Checking the unpacked distribution..." if ( ! test -f ${srcdir}/intl/po2tblsed.in || \ - ! test -d ${srcdir}/gdb/testsuite/gdb.cxx || \ + ! test -f ${srcdir}/gdb/ChangeLog.002 || \ ! test -f ${srcdir}/readline/config.h-in ) ; then + if ( ! test -f ${srcdir}/intl/po2tblsed.in ) ; then + notfound=${srcdir}/intl/po2tblsed.in + else + if ( ! test -d ${srcdir}/gdb/testsuite/cxx) ; then + notfound=${srcdir}/gdb/ChangeLog.002 + else + if ( ! test -f ${srcdir}/readline/config.h-in ) ; then + notfound=${srcdir}/readline/config.h-in + fi + fi + fi echo " FAILED." + echo "(File $notfound was not found.)" echo "" echo "You MUST unpack the sources with the DJTAR command, like this:" echo "" @@ -62,6 +74,7 @@ if ( ! test -f ${srcdir}/intl/po2tblsed.in || \ echo "" echo "where X.YZ is the GDB version, and fnchange.lst can be found" echo "in the gdb/config/djgpp/ directory in the GDB distribution." + echo "" echo "configure FAILED!" exit 1 else diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst index 61d9014245a..b1d9b3e0b5c 100644 --- a/gdb/config/djgpp/fnchange.lst +++ b/gdb/config/djgpp/fnchange.lst @@ -1,8 +1,11 @@ -@V@/bfd/ChangeLog-0001 @V@/bfd/ChangeLog.0001 +@V@/COPYING.LIBGLOSS @V@/COPYING.GLOSS @V@/bfd/ChangeLog-9193 @V@/bfd/ChangeLog.9193 @V@/bfd/ChangeLog-9495 @V@/bfd/ChangeLog.9495 @V@/bfd/ChangeLog-9697 @V@/bfd/ChangeLog.9697 @V@/bfd/ChangeLog-9899 @V@/bfd/ChangeLog.9899 +@V@/bfd/ChangeLog-0001 @V@/bfd/ChangeLog.0001 +@V@/bfd/ChangeLog-0203 @V@/bfd/ChangeLog.0203 +@V@/bfd/doc/ChangeLog-9103 @V@/bfd/ChangeLog.9103 @V@/bfd/coff-tic30.c @V@/bfd/cofftic30.c @V@/bfd/coff-tic4x.c @V@/bfd/cofftic40.c @V@/bfd/coff-tic54x.c @V@/bfd/cofftic54x.c @@ -18,13 +21,13 @@ @V@/bfd/elf32-i386.c @V@/bfd/e32i86.c @V@/bfd/elf32-m68hc11.c @V@/bfd/em68hc11.c @V@/bfd/elf32-m68hc12.c @V@/bfd/em68hc12.c +@V@/bfd/elf32-m68hc1x.c @V@/bfd/em68hc1x.c @V@/bfd/elf32-m68k.c @V@/bfd/em68k.c @V@/bfd/elf32-ppc.c @V@/bfd/e32ppc.c @V@/bfd/elf32-sh.c @V@/bfd/e32sh.c @V@/bfd/elf32-sh64.c @V@/bfd/e32sh64.c @V@/bfd/elf64-alpha.c @V@/bfd/e64alphf.c @V@/bfd/elf64-sh64.c @V@/bfd/e64sh64.c -@V@/bfd/po/.cvsignore @V@/bfd/po/_cvsignore @V@/dejagnu/baseboards/mn10200-cygmon.exp @V@/dejagnu/baseboards/mn10200cygmon.exp @V@/dejagnu/baseboards/mn10200-sim.exp @V@/dejagnu/baseboards/mn10200sim.exp @V@/dejagnu/baseboards/mn10300-cygmon.exp @V@/dejagnu/baseboards/mn10300cygmon.exp @@ -36,7 +39,6 @@ @V@/dejagnu/baseboards/sparclite-sim-le.exp @V@/dejagnu/baseboards/sl-sim-le.exp @V@/dejagnu/baseboards/sparclite-sim.exp @V@/dejagnu/baseboards/sl-sim.exp @V@/dejagnu/contrib/test-g++ @V@/dejagnu/contrib/test-gxx -@V@/dejagnu/doc/.cvsignore @V@/dejagnu/doc/_cvsignore @V@/dejagnu/example/calc/calc.h.in @V@/dejagnu/example/calc/calc.h-in @V@/expect/Dbg_cf.h.in @V@/expect/Dbg_cf.h-in @V@/expect/example/beer.exp.out @V@/expect/example/beer_exp.out @@ -60,6 +62,7 @@ @V@/gdb/ChangeLog-2000 @V@/gdb/ChangeLog.000 @V@/gdb/ChangeLog-2001 @V@/gdb/ChangeLog.001 @V@/gdb/ChangeLog-2002 @V@/gdb/ChangeLog.002 +@V@/gdb/ChangeLog-2003 @V@/gdb/ChangeLog.003 @V@/gdb/ChangeLog-3.x @V@/gdb/ChangeLog.3-x @V@/gdb/ada-exp.tab.c @V@/gdb/ada-exp_tab.c @V@/gdb/amd64fbsd-nat.c @V@/gdb/a64fb-nat.c @@ -79,6 +82,7 @@ @V@/gdb/config/alpha/alpha-osf3.mh @V@/gdb/config/alpha/alphosf3.mh @V@/gdb/config/alpha/tm-alphalinux.h @V@/gdb/config/alpha/tm-alplinux.h @V@/gdb/config/alpha/xm-alphalinux.h @V@/gdb/config/alpha/xm-alplinux.h +@V@/gdb/config/alpha/xm-alphaosf.h @V@/gdb/config/alpha/xm-alposf.h @V@/gdb/config/i386/nm-i386sco4.h @V@/gdb/config/i386/nm-sco4.h @V@/gdb/config/i386/nm-i386sco5.h @V@/gdb/config/i386/nm-sco5.h @V@/gdb/config/i386/nm-i386sol2.h @V@/gdb/config/i386/nm-sol2.h @@ -89,13 +93,18 @@ @V@/gdb/config/m88k/xm-delta88v4.h @V@/gdb/config/m88k/xm-d88v4.h @V@/gdb/config/mips/tm-linux.h @V@/gdb/config/mips/tm-lx.h @V@/gdb/config/pa/nm-hppah11.h @V@/gdb/config/pa/nm-hppa11.h -@V@/gdb/config/powerpc/tm-ppcle-sim.h @V@/gdb/config/powerpc/tm-ppcl-sim.h +@V@/gdb/config/powerpc/tm-ppcle-sim.h @V@/gdb/config/powerpc/tm-ppclsim.h +@V@/gdb/config/powerpc/tm-ppcle-eabi.h @V@/gdb/config/powerpc/tm-ppcleabi.h @V@/gdb/config/rs6000/nm-rs6000ly.h @V@/gdb/config/rs6000/nm-rs6kly.h @V@/gdb/config/rs6000/tm-rs6000.h @V@/gdb/config/rs6000/tm-rs6k.h @V@/gdb/config/rs6000/tm-rs6000ly.h @V@/gdb/config/rs6000/tm-rs6kly.h +@V@/gdb/config/rs6000/tm-rs6000-aix4.h @V@/gdb/config/rs6000/tm-rs6kaix4.h @V@/gdb/config/sparc/tm-sparclynx.h @V@/gdb/config/sparc/tm-splynx.h @V@/gdb/config/vax/xm-vaxult2.h @V@/gdb/config/vax/xm-vaxut2.h @V@/gdb/f-exp.tab.c @V@/gdb/f-exp_tab.c +@V@/gdb/gdbtk/ChangeLog-2001 @V@/gdb/gdbtk/ChangeLog.001 +@V@/gdb/gdbtk/ChangeLog-2002 @V@/gdb/gdbtk/ChangeLog.002 +@V@/gdb/gdbtk/ChangeLog-2003 @V@/gdb/gdbtk/ChangeLog.003 @V@/gdb/gdbtk/generic/ChangeLog-1997 @V@/gdb/gdbtk/generic/ChangeLog.97 @V@/gdb/gdbtk/generic/ChangeLog-1998 @V@/gdb/gdbtk/generic/ChangeLog.98 @V@/gdb/gdbtk/generic/ChangeLog-1999 @V@/gdb/gdbtk/generic/ChangeLog.99 @@ -105,21 +114,25 @@ @V@/gdb/gdbtk/library/ChangeLog-1998 @V@/gdb/gdbtk/library/ChangeLog.98 @V@/gdb/gdbtk/library/ChangeLog-1999 @V@/gdb/gdbtk/library/ChangeLog.99 @V@/gdb/gdbtk/library/ChangeLog-2000 @V@/gdb/gdbtk/library/ChangeLog.000 +@V@/gdb/gdbtk/plugins/intel-pentium/intel-pentium.tcl.in @V@/gdb/gdbtk/plugins/intel-pentium/intel-pentium.t-in +@V@/gdb/gdbtk/plugins/rhabout/rhabout.tcl.in @V@/gdb/gdbtk/plugins/rhabout/rhabout.t-in @V@/gdb/i386-interix-nat.c @V@/gdb/i386ix-nat.c @V@/gdb/i386-interix-tdep.c @V@/gdb/i386ix-tdep.c -@V@/gdb/i386-linux-tdep.c @V@/gdb/i386linux-tdep.c +@V@/gdb/i386-linux-tdep.c @V@/gdb/i386lx-tdep.c +@V@/gdb/i386-linux-nat.c @V@/gdb/i386lx-nat.c @V@/gdb/i386bsd-nat.c @V@/gdb/i3bsd-nat.c @V@/gdb/i386bsd-tdep.c @V@/gdb/i3bsd-tdep.c @V@/gdb/i386fbsd-nat.c @V@/gdb/i3fbsd-nat.c @V@/gdb/i386fbsd-tdep.c @V@/gdb/i3fbsd-tdep.c @V@/gdb/i386gnu-nat.c @V@/gdb/i3gnu-nat.c @V@/gdb/i386gnu-tdep.c @V@/gdb/i3gnu-tdep.c -@V@/gdb/i386nbsd-nat.c @V@/gdb/i3nbsd-nat.c @V@/gdb/i386nbsd-tdep.c @V@/gdb/i3nbsd-tdep.c @V@/gdb/i386obsd-nat.c @V@/gdb/i3obsd-nat.c @V@/gdb/i386obsd-tdep.c @V@/gdb/i3obsd-tdep.c -@V@/gdb/ia64-aix-nat.c @V@/gdb/ia64aix-nat.c -@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64linux-nat.c +@V@/gdb/ia64-aix-nat.c @V@/gdb/ia64ax-nat.c +@V@/gdb/ia64-aix-tdep.c @V@/gdb/ia64ax-tdep.c +@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64lx-nat.c +@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64lx-tdep.c @V@/gdb/jv-exp.tab.c @V@/gdb/jv-exp_tab.c @V@/gdb/m2-exp.tab.c @V@/gdb/m2-exp_tab.c @V@/gdb/m68klinux-nat.c @V@/gdb/m68kl-nat.c @@ -135,7 +148,8 @@ @V@/gdb/objc-exp.tab.c @V@/gdb/objc-exp_tab.c @V@/gdb/osf-share/cma_stack_int.h @V@/gdb/osf-share/cma_stkint.h @V@/gdb/p-exp.tab.c @V@/gdb/p-exp_tab.c -@V@/gdb/ppc-linux-tdep.c @V@/gdb/ppc-linx-tdep.c +@V@/gdb/ppc-linux-tdep.c @V@/gdb/ppc-lx-tdep.c +@V@/gdb/ppc-linux-nat.c @V@/gdb/ppc-lx-nat.c @V@/gdb/ppcnbsd-nat.c @V@/gdb/ppcnb-nat.c @V@/gdb/ppcnbsd-tdep.c @V@/gdb/ppcnb-tdep.c @V@/gdb/regformats/reg-i386-linux.dat @V@/gdb/regformats/r-i386-lnx.dat @@ -154,8 +168,17 @@ @V@/gdb/remote-vxsparc.c @V@/gdb/rmt-vxsparc.c @V@/gdb/sparc64fbsd-nat.c @V@/gdb/sp64fb-nat.c @V@/gdb/sparc64fbsd-tdep.c @V@/gdb/sp64fb-tdep.c +@V@/gdb/sparc64nbsd-nat.c @V@/gdb/sp64nb-nat.c +@V@/gdb/sparc64nbsd-tdep.c @V@/gdb/sp64nb-tdep.c +@V@/gdb/sparc64-linux-nat.c @V@/gdb/sp64lx-nat.c +@V@/gdb/sparc64-linux-tdep.c @V@/gdb/sp64lx-tdep.c +@V@/gdb/sparc64-nat.c @V@/gdb/sp64-nat.c +@V@/gdb/sparc64-tdep.c @V@/gdb/sp64-tdep.c +@V@/gdb/sparc64-sol2-tdep.c @V@/gdb/sp64s2-tdep.c @V@/gdb/sparcnbsd-nat.c @V@/gdb/spnb-nat.c @V@/gdb/sparcnbsd-tdep.c @V@/gdb/spnb-tdep.c +@V@/gdb/sparc-sol2-nat.c @V@/gdb/spsol2-nat.c +@V@/gdb/sparc-sol2-tdep.c @V@/gdb/spsol2-tdep.c @V@/gdb/testsuite/.gdbinit @V@/gdb/testsuite/gdb.ini @V@/gdb/testsuite/gdb.arch/altivec-abi.c @V@/gdb/testsuite/gdb.arch/av-abi.c @V@/gdb/testsuite/gdb.arch/altivec-abi.exp @V@/gdb/testsuite/gdb.arch/av-abi.exp @@ -164,7 +187,37 @@ @V@/gdb/testsuite/gdb.base/coremaker2.c @V@/gdb/testsuite/gdb.base/core2maker.c @V@/gdb/testsuite/gdb.cp/m-static1.cc @V@/gdb/testsuite/gdb.cp/m-stat1.cc @V@/gdb/testsuite/gdb.cp/namespace1.cc @V@/gdb/testsuite/gdb.cp/namesp1.cc +@V@/gdb/testsuite/gdb.gdbtk/ChangeLog @V@/gdb/testsuite/gdb.tk/ChangeLog +@V@/gdb/testsuite/gdb.gdbtk/Makefile.in @V@/gdb/testsuite/gdb.tk/Makefile.in +@V@/gdb/testsuite/gdb.gdbtk/browser.exp @V@/gdb/testsuite/gdb.tk/browser.exp +@V@/gdb/testsuite/gdb.gdbtk/browser.test @V@/gdb/testsuite/gdb.tk/browser.test +@V@/gdb/testsuite/gdb.gdbtk/c_variable.c @V@/gdb/testsuite/gdb.tk/c_variable.c +@V@/gdb/testsuite/gdb.gdbtk/c_variable.exp @V@/gdb/testsuite/gdb.tk/c_variable.exp +@V@/gdb/testsuite/gdb.gdbtk/c_variable.test @V@/gdb/testsuite/gdb.tk/c_variable.test +@V@/gdb/testsuite/gdb.gdbtk/configure @V@/gdb/testsuite/gdb.tk/configure +@V@/gdb/testsuite/gdb.gdbtk/configure.in @V@/gdb/testsuite/gdb.tk/configure.in +@V@/gdb/testsuite/gdb.gdbtk/console.exp @V@/gdb/testsuite/gdb.tk/console.exp +@V@/gdb/testsuite/gdb.gdbtk/console.test @V@/gdb/testsuite/gdb.tk/console.test +@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.cc @V@/gdb/testsuite/gdb.tk/cpp_variable.cc +@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.exp @V@/gdb/testsuite/gdb.tk/cpp_variable.exp +@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.h @V@/gdb/testsuite/gdb.tk/cpp_variable.h +@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.test @V@/gdb/testsuite/gdb.tk/cpp_variable.test +@V@/gdb/testsuite/gdb.gdbtk/defs @V@/gdb/testsuite/gdb.tk/defs +@V@/gdb/testsuite/gdb.gdbtk/list0.c @V@/gdb/testsuite/gdb.tk/list0.c +@V@/gdb/testsuite/gdb.gdbtk/list0.h @V@/gdb/testsuite/gdb.tk/list0.h +@V@/gdb/testsuite/gdb.gdbtk/list1.c @V@/gdb/testsuite/gdb.tk/list1.c +@V@/gdb/testsuite/gdb.gdbtk/README @V@/gdb/testsuite/gdb.tk/README +@V@/gdb/testsuite/gdb.gdbtk/simple.c @V@/gdb/testsuite/gdb.tk/simple.c +@V@/gdb/testsuite/gdb.gdbtk/srcwin.exp @V@/gdb/testsuite/gdb.tk/srcwin.exp +@V@/gdb/testsuite/gdb.gdbtk/srcwin.test @V@/gdb/testsuite/gdb.tk/srcwin.test +@V@/gdb/testsuite/gdb.gdbtk/srcwin2.test @V@/gdb/testsuite/gdb.tk/srcwin2.test +@V@/gdb/testsuite/gdb.gdbtk/srcwin3.test @V@/gdb/testsuite/gdb.tk/srcwin3.test +@V@/gdb/testsuite/gdb.gdbtk/stack1.c @V@/gdb/testsuite/gdb.tk/stack1.c +@V@/gdb/testsuite/gdb.gdbtk/stack2.c @V@/gdb/testsuite/gdb.tk/stack2.c +@V@/gdb/testsuite/gdb.gdbtk/windows.exp @V@/gdb/testsuite/gdb.tk/windows.exp +@V@/gdb/testsuite/gdb.gdbtk/windows.test @V@/gdb/testsuite/gdb.tk/windows.test @V@/gdb/testsuite/gdb.mi/mi-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi-varcmd.exp +@V@/gdb/testsuite/gdb.mi/mi-var-child.exp @V@/gdb/testsuite/gdb.mi/mi-varchild.exp @V@/gdb/testsuite/gdb.mi/mi1-var-block.exp @V@/gdb/testsuite/gdb.mi/mi1varblock.exp @V@/gdb/testsuite/gdb.mi/mi1-var-child.exp @V@/gdb/testsuite/gdb.mi/mi1varchild.exp @V@/gdb/testsuite/gdb.mi/mi1-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi1varcmd.exp @@ -177,6 +230,10 @@ @V@/gdb/tui/tuiSourceWin.h @V@/gdb/tui/tuiWinSource.h @V@/gdb/x86-64-linux-tdep.c @V@/gdb/x8664-ltdep.c @V@/gdb/x86-64-linux-nat.c @V@/gdb/x8664-lnat.c +@V@/include/ChangeLog-9103 @V@/include/ChangeLog.9103 +@V@/include/coff/ChangeLog-9103 @V@/include/coff/ChangeLog.9103 +@V@/include/elf/ChangeLog-9103 @V@/include/elf/ChangeLog.9103 +@V@/include/opcode/ChangeLog-9103 @V@/include/opcode/ChangeLog.9103 @V@/include/xtensa-isa-internal.h @V@/include/xt-internal.h @V@/include/xtensa-isa.h @V@/include/xt-isa.h @V@/intl/intlh.inst.in @V@/intl/intlh_inst.in @@ -193,6 +250,8 @@ @V@/libgui/src/tkWinPrintText.c @V@/libgui/src/tkWPrtText.c @V@/opcodes/ChangeLog-9297 @V@/opcodes/ChangeLog.9297 @V@/opcodes/ChangeLog-9899 @V@/opcodes/ChangeLog.9899 +@V@/opcodes/ChangeLog-0001 @V@/opcodes/ChangeLog.0001 +@V@/opcodes/ChangeLog-0203 @V@/opcodes/ChangeLog.0203 @V@/opcodes/ia64-opc-a.c @V@/opcodes/ia64opca.c @V@/opcodes/ia64-opc-b.c @V@/opcodes/ia64opcb.c @V@/opcodes/ia64-opc-d.c @V@/opcodes/ia64opcd.c @@ -205,19 +264,21 @@ @V@/opcodes/iq2000-dis.c @V@/opcodes/iq2000dis.c @V@/opcodes/m68hc11-dis.c @V@/opcodes/m68hc11dis.c @V@/opcodes/m68hc11-opc.c @V@/opcodes/m68hc11opc.c -@V@/opcodes/openris-dis.c @V@/opcodes/orisc-dis.c @V@/opcodes/openrisc-asm.c @V@/opcodes/orisc-asm.c @V@/opcodes/openrisc-desc.c @V@/opcodes/orisc-desc.c +@V@/opcodes/openrisc-dis.c @V@/opcodes/orisc-dis.c @V@/opcodes/openrisc-ibld.c @V@/opcodes/orisc-ibld.c @V@/opcodes/openrisc-opc.c @V@/opcodes/orisc-opc.c @V@/opcodes/openrisc-opc.h @V@/opcodes/orisc-opc.h -@V@/opcodes/po/.cvsignore @V@/opcodes/po/_cvsignore +@V@/opcodes/openrisc-desc.h @V@/opcodes/orisc-desc.h @V@/readline/config.h.bot @V@/readline/config.h-bot @V@/readline/config.h.in @V@/readline/config.h-in @V@/sim/frv/profile-fr400.c @V@/sim/frv/fr400-profile.c @V@/sim/frv/profile-fr400.h @V@/sim/frv/fr400-profile.h @V@/sim/frv/profile-fr500.c @V@/sim/frv/fr500-profile.c @V@/sim/frv/profile-fr500.h @V@/sim/frv/fr500-profile.h +@V@/sim/frv/profile-fr550.c @V@/sim/frv/fr550-profile.c +@V@/sim/frv/profile-fr550.h @V@/sim/frv/fr550-profile.h @V@/sim/m68hc11/dv-m68hc11eepr.c @V@/sim/m68hc11/dv-eepr.c @V@/sim/m68hc11/dv-m68hc11sio.c @V@/sim/m68hc11/dv-sio.c @V@/sim/m68hc11/dv-m68hc11spi.c @V@/sim/m68hc11/dv-spi.c @@ -237,6 +298,8 @@ @V@/sim/ppc/idecode_expression.h @V@/sim/ppc/idec_expression.h @V@/sim/ppc/idecode_fields.h @V@/sim/ppc/idec_fields.h @V@/sim/ppc/sim-endian-n.h @V@/sim/ppc/sim-endn.h +@V@/sim/sh64/sem-compact-switch.c @V@/sim/sh64/sem-cswitch.c +@V@/sim/sh64/sem-media-switch.c @V@/sim/sh64/sem-mswitch.c @V@/sim/testsuite/d10v-elf/t-ae-ld-d.s @V@/sim/testsuite/d10v-elf/t-ld-d.s @V@/sim/testsuite/d10v-elf/t-ae-ld-i.s @V@/sim/testsuite/d10v-elf/t-ld-i.s @V@/sim/testsuite/d10v-elf/t-ae-ld-id.s @V@/sim/testsuite/d10v-elf/t-ld-id.s @@ -270,6 +333,10 @@ @V@/sim/testsuite/sim/frv/interrupts/data_store_error-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-data_store_error.cgs @V@/sim/testsuite/sim/frv/interrupts/fp_exception-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-fp_exception.cgs @V@/sim/testsuite/sim/frv/interrupts/insn_access_error-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-insn_access_error.cgs +@V@/sim/testsuite/sim/sh64/compact/ldsl-mach.cgs @V@/sim/testsuite/sim/sh64/compact/mach-ldsl.cgs +@V@/sim/testsuite/sim/sh64/compact/ldsl-macl.cgs @V@/sim/testsuite/sim/sh64/compact/macl-ldsl.cgs +@V@/sim/testsuite/sim/sh64/compact/stsl-mach.cgs @V@/sim/testsuite/sim/sh64/compact/mach-stsl.cgs +@V@/sim/testsuite/sim/sh64/compact/stsl-macl.cgs @V@/sim/testsuite/sim/sh64/compact/macl-stsl.cgs @V@/tcl/cygwin/tclConfig.sh.in @V@/tcl/cygwin/tclConfig.sh-in @V@/tcl/doc/ExprLongObj.3 @V@/tcl/doc/ExprLObj.3 @V@/tcl/mac/tclMacBOAAppInit.c @V@/tcl/mac/tclBOAAppInit.c diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h index 01c980748e2..5e9df60021c 100644 --- a/gdb/config/ia64/nm-linux.h +++ b/gdb/config/ia64/nm-linux.h @@ -22,6 +22,8 @@ #ifndef NM_LINUX_H #define NM_LINUX_H +struct target_ops; + #include "config/nm-linux.h" /* Note: It seems likely that we'll have to eventually define diff --git a/gdb/config/pa/tm-hppah.h b/gdb/config/pa/tm-hppah.h index 325af819536..0d0dde3b703 100644 --- a/gdb/config/pa/tm-hppah.h +++ b/gdb/config/pa/tm-hppah.h @@ -1,5 +1,6 @@ /* Parameters for execution on an HP PA-RISC machine, running HPUX, for GDB. - Copyright 1991, 1992, 1995, 1998 Free Software Foundation, Inc. + Copyright 1991, 1992, 1995, 1998, 2002, 2003, 2004 + Free Software Foundation, Inc. Contributed by the Center for Software Science at the University of Utah (pa-gdb-bugs@cs.utah.edu). @@ -35,17 +36,17 @@ struct frame_info; #include "somsolib.h" #endif -extern void hppa_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi, +extern void hppa32_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi, CORE_ADDR *tmp); #define FRAME_SAVED_PC_IN_SIGTRAMP(FRAME, TMP) \ hppa32_hpux_frame_saved_pc_in_sigtramp (FRAME, TMP) -extern void hppa_hpux_frame_base_before_sigtramp (struct frame_info *fi, +extern void hppa32_hpux_frame_base_before_sigtramp (struct frame_info *fi, CORE_ADDR *tmp); #define FRAME_BASE_BEFORE_SIGTRAMP(FRAME, TMP) \ hppa32_hpux_frame_base_before_sigtramp (FRAME, TMP) -extern void hppa_hpux_frame_find_saved_regs_in_sigtramp +extern void hppa32_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi, CORE_ADDR *fsr); #define FRAME_FIND_SAVED_REGS_IN_SIGTRAMP(FRAME, FSR) \ hppa32_hpux_frame_find_saved_regs_in_sigtramp (FRAME, FSR) diff --git a/gdb/config/sparc/fbsd.mh b/gdb/config/sparc/fbsd.mh index 27942f86e6a..fb491a55c47 100644 --- a/gdb/config/sparc/fbsd.mh +++ b/gdb/config/sparc/fbsd.mh @@ -1,5 +1,5 @@ # Host: FreeBSD/sparc64 -NATDEPFILES= sparc64fbsd-nat.o sparcbsd-nat.o \ - corelow.o fork-child.o infptrace.o inftarg.o \ +NATDEPFILES= sparc64fbsd-nat.o sparc64-nat.o sparc-nat.o \ + fork-child.o infptrace.o inftarg.o \ solib.o solib-svr4.o solib-legacy.o NAT_FILE= nm-fbsd.h diff --git a/gdb/config/sparc/fbsd.mt b/gdb/config/sparc/fbsd.mt index 20c7f1ce27a..8e4dead7add 100644 --- a/gdb/config/sparc/fbsd.mt +++ b/gdb/config/sparc/fbsd.mt @@ -1,3 +1,3 @@ # Target: FreeBSD/sparc64 -TDEPFILES= sparc64-tdep.o sparc64fbsd-tdep.o +TDEPFILES= sparc-tdep.o sparc64-tdep.o sparc64fbsd-tdep.o corelow.o TM_FILE= tm-fbsd.h diff --git a/gdb/config/sparc/linux.mh b/gdb/config/sparc/linux.mh index f36dbb1ae34..ed68cc78aea 100644 --- a/gdb/config/sparc/linux.mh +++ b/gdb/config/sparc/linux.mh @@ -1,14 +1,11 @@ -# Host: Sparcstation, running GNU/Linux. - -XM_FILE= xm-linux.h - +# Host: GNU/Linux SPARC NAT_FILE= nm-linux.h -NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o \ - proc-service.o thread-db.o lin-lwp.o sparc-linux-nat.o \ +NATDEPFILES= sparc-nat.o sparc-sol2-nat.o \ + corelow.o core-regset.o fork-child.o \ + infptrace.o inftarg.o \ + proc-service.o thread-db.o lin-lwp.o \ linux-proc.o gcore.o linux-nat.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. LOADLIBES = -ldl -rdynamic - -HOST_IPC=-DBSD_IPC diff --git a/gdb/config/sparc/linux.mt b/gdb/config/sparc/linux.mt index d6cf773a8ee..e053f302c4f 100644 --- a/gdb/config/sparc/linux.mt +++ b/gdb/config/sparc/linux.mt @@ -1,3 +1,4 @@ -# Target: Sparcstation, running Linux -TDEPFILES= sparc-tdep.o solib.o solib-svr4.o solib-legacy.o +# Target: GNU/Linux SPARC +TDEPFILES= sparc-tdep.o sparc-sol2-tdep.o sparc-linux-tdep.o \ + solib.o solib-svr4.o solib-legacy.o TM_FILE= tm-linux.h diff --git a/gdb/config/sparc/nbsd.mt b/gdb/config/sparc/nbsd.mt index b04dd42fabb..25dbefff703 100644 --- a/gdb/config/sparc/nbsd.mt +++ b/gdb/config/sparc/nbsd.mt @@ -1,4 +1,4 @@ -# Target: SPARC running NetBSD -TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o corelow.o solib.o \ - solib-svr4.o +# Target: NetBSD/sparc +TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \ + corelow.o solib.o solib-svr4.o TM_FILE= tm-nbsd.h diff --git a/gdb/config/sparc/nbsd64.mh b/gdb/config/sparc/nbsd64.mh index eb54e489eb8..e8ac58bda2b 100644 --- a/gdb/config/sparc/nbsd64.mh +++ b/gdb/config/sparc/nbsd64.mh @@ -1,3 +1,4 @@ -# Host: UltraSPARC running NetBSD -NATDEPFILES= fork-child.o infptrace.o inftarg.o sparc64nbsd-nat.o +# Host: NetBSD/sparc64 +NATDEPFILES= sparc64nbsd-nat.o sparc-nat.o \ + fork-child.o infptrace.o inftarg.o NAT_FILE= nm-nbsd.h diff --git a/gdb/config/sparc/nbsd64.mt b/gdb/config/sparc/nbsd64.mt index 93b8f7841d4..4a1b13b9bb6 100644 --- a/gdb/config/sparc/nbsd64.mt +++ b/gdb/config/sparc/nbsd64.mt @@ -1,4 +1,5 @@ -# Target: UltraSPARC running NetBSD -TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o corelow.o solib.o \ - solib-svr4.o -TM_FILE= tm-nbsd64.h +# Target: NetBSD/sparc64 +TDEPFILES= sparc64-tdep.o sparc64nbsd-tdep.o \ + sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \ + corelow.o solib.o solib-svr4.o +TM_FILE= tm-nbsd.h diff --git a/gdb/config/sparc/nbsdaout.mh b/gdb/config/sparc/nbsdaout.mh index 45208998124..8944e60e483 100644 --- a/gdb/config/sparc/nbsdaout.mh +++ b/gdb/config/sparc/nbsdaout.mh @@ -1,4 +1,4 @@ -# Host: Sun 4 or Sparcstation, running NetBSD -NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o solib-sunos.o -XM_FILE= xm-nbsd.h +# Host: NetBSD/sparc a.out +NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \ + fork-child.o infptrace.o inftarg.o solib-sunos.o NAT_FILE= nm-nbsdaout.h diff --git a/gdb/config/sparc/nbsdelf.mh b/gdb/config/sparc/nbsdelf.mh index 1042d91b9dd..45309ecaec0 100644 --- a/gdb/config/sparc/nbsdelf.mh +++ b/gdb/config/sparc/nbsdelf.mh @@ -1,4 +1,4 @@ -# Host: Sun 4 or Sparcstation, running NetBSD -NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o -XM_FILE= xm-nbsd.h +# Host: NetBSD/sparc ELF +NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \ + fork-child.o infptrace.o inftarg.o NAT_FILE= nm-nbsd.h diff --git a/gdb/config/sparc/nm-linux.h b/gdb/config/sparc/nm-linux.h index a156eba0707..cfab3893ca5 100644 --- a/gdb/config/sparc/nm-linux.h +++ b/gdb/config/sparc/nm-linux.h @@ -1,7 +1,7 @@ -/* Macro definitions for running gdb on a Sparc running GNU/Linux. +/* Native-dependent definitions for GNU/Linux SPARC. - Copyright 1989, 1992, 1996, 1998, 1999, 2000, 2002 Free Software - Foundation, Inc. + Copyright 1989, 1992, 1996, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of GDB. @@ -20,13 +20,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "config/nm-sysv4.h" +#ifndef NM_LINUX_H +#define NM_LINUX_H + #include "config/nm-linux.h" -#include "solib.h" -#define FETCH_INFERIOR_REGISTERS +/* Type of the third argument to the `ptrace' system call. */ +#define PTRACE_ARG3_TYPE long -/* Return sizeof user struct to callers in less machine dependent routines */ +/* Type of the fourth argument to the `ptrace' system call. */ +#define PTRACE_XFER_TYPE long + +/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */ +#define FETCH_INFERIOR_REGISTERS -#define KERNEL_U_SIZE kernel_u_size() -extern int kernel_u_size (void); +#endif /* nm-linux.h */ diff --git a/gdb/config/sparc/nm-nbsd.h b/gdb/config/sparc/nm-nbsd.h index 7ffd72e9101..089a5acf1dc 100644 --- a/gdb/config/sparc/nm-nbsd.h +++ b/gdb/config/sparc/nm-nbsd.h @@ -1,5 +1,6 @@ -/* Native-dependent definitions for Sparc running NetBSD, for GDB. - Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002 +/* Native-dependent definitions for NetBSD/sparc. + + Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -22,14 +23,7 @@ #ifndef NM_NBSD_H #define NM_NBSD_H -#include "regcache.h" - -/* Get generic NetBSD native definitions. */ - +/* Get generic NetBSD native definitions. */ #include "config/nm-nbsd.h" -/* Before storing, we need to read all the registers. */ - -#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES) - -#endif /* NM_NBSD_H */ +#endif /* nm-nbsd.h */ diff --git a/gdb/config/sparc/nm-nbsdaout.h b/gdb/config/sparc/nm-nbsdaout.h index 730759153e0..9e463f9b503 100644 --- a/gdb/config/sparc/nm-nbsdaout.h +++ b/gdb/config/sparc/nm-nbsdaout.h @@ -1,5 +1,6 @@ -/* Native-dependent definitions for Sparc running NetBSD a.out, for GDB. - Copyright 1999 Free Software Foundation, Inc. +/* Native-dependent definitions for NetBSD/sparc a.out. + + Copyright 1999, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -23,8 +24,7 @@ #include "sparc/nm-nbsd.h" -/* Get generic NetBSD a.out native definitions. */ - +/* Get generic NetBSD a.out native definitions. */ #include "config/nm-nbsdaout.h" -#endif /* NM_NBSDAOUT_H */ +#endif /* nm-nbsdaout.h */ diff --git a/gdb/config/sparc/nm-sparclynx.h b/gdb/config/sparc/nm-sparclynx.h deleted file mode 100644 index a231ba4cce1..00000000000 --- a/gdb/config/sparc/nm-sparclynx.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Native-dependent definitions for Sparc running LynxOS. - Copyright 1993, 1994 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef NM_SPARCLYNX_H -#define NM_SPARCLYNX_H - -#include "config/nm-lynx.h" - -#endif /* NM_SPARCLYNX_H */ diff --git a/gdb/config/sparc/nm-sun4os4.h b/gdb/config/sparc/nm-sun4os4.h deleted file mode 100644 index e77330c51d4..00000000000 --- a/gdb/config/sparc/nm-sun4os4.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Macro definitions for running gdb on a Sun 4 running sunos 4. - Copyright 1989, 1992, 1996, 2000 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "regcache.h" - -/* Do implement the attach and detach commands. */ - -#define ATTACH_DETACH - -/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */ - -#define FETCH_INFERIOR_REGISTERS - -/* Before storing, we need to read all the registers. */ - -#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES) - -/* Return sizeof user struct to callers in less machine dependent routines */ - -#define KERNEL_U_SIZE kernel_u_size() -extern int kernel_u_size (void); - -/* SunOS 4.x uses nonstandard "char *" as type of third argument to ptrace() */ - -#define PTRACE_ARG3_TYPE char* diff --git a/gdb/config/sparc/nm-sun4sol2.h b/gdb/config/sparc/nm-sun4sol2.h deleted file mode 100644 index 6f37162d7a8..00000000000 --- a/gdb/config/sparc/nm-sun4sol2.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Native-dependent definitions for Sparc running SVR4. - Copyright 1994, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "regcache.h" - -/* Include the generic SVR4 definitions. */ - -#include "config/nm-sysv4.h" - -/* Before storing, we need to read all the registers. */ - -#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES) - -/* Solaris PSRVADDR support does not seem to include a place for nPC. */ - -#define PRSVADDR_BROKEN - -/* gdb wants to use the prgregset_t interface rather than - the gregset_t interface, partly because that's what's - used in core-sol2.c */ - -#define GDB_GREGSET_T prgregset_t -#define GDB_FPREGSET_T prfpregset_t - -#ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */ - -#define TARGET_HAS_HARDWARE_WATCHPOINTS - -/* The man page for proc4 on solaris 6 and 7 says that the system - can support "thousands" of hardware watchpoints, but gives no - method for finding out how many. So just tell GDB 'yes'. */ -#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE, CNT, OT) 1 - -/* When a hardware watchpoint fires off the PC will be left at the - instruction following the one which caused the watchpoint. - It will *NOT* be necessary for GDB to step over the watchpoint. */ -#define HAVE_CONTINUABLE_WATCHPOINT 1 - -extern int procfs_stopped_by_watchpoint (ptid_t); -#define STOPPED_BY_WATCHPOINT(W) \ - procfs_stopped_by_watchpoint(inferior_ptid) - -/* Use these macros for watchpoint insertion/deletion. */ -/* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */ - -extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int); -#define target_insert_watchpoint(ADDR, LEN, TYPE) \ - procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 1) -#define target_remove_watchpoint(ADDR, LEN, TYPE) \ - procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0) - -#endif /* NEW_PROC_API */ diff --git a/gdb/config/sparc/sp64.mt b/gdb/config/sparc/sp64.mt deleted file mode 100644 index 943abfc240e..00000000000 --- a/gdb/config/sparc/sp64.mt +++ /dev/null @@ -1,6 +0,0 @@ -# Target: SPARC64 -# solib.o and procfs.o taken out for now. We don't have shared libraries yet, -# and the elf version requires procfs.o but the a.out version doesn't. -# Then again, having procfs.o in a target makefile fragment seems wrong. -TDEPFILES = sparc-tdep.o -TM_FILE= tm-sp64.h diff --git a/gdb/config/sparc/sp64linux.mt b/gdb/config/sparc/sp64linux.mt deleted file mode 100644 index d7d642ead71..00000000000 --- a/gdb/config/sparc/sp64linux.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: UltraSPARC, running Linux 64bit programs -TDEPFILES= sparc-tdep.o solib.o solib-svr4.o solib-legacy.o -TM_FILE= tm-sp64linux.h diff --git a/gdb/config/sparc/sp64sol2.mt b/gdb/config/sparc/sp64sol2.mt deleted file mode 100644 index ce2f0d82df0..00000000000 --- a/gdb/config/sparc/sp64sol2.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: Ultrasparc, running Solaris 2 -TDEPFILES= sparc-tdep.o -TM_FILE= tm-sun4sol2.h diff --git a/gdb/config/sparc/sparc-em.mt b/gdb/config/sparc/sparc-em.mt deleted file mode 100644 index 13b0c6a29e2..00000000000 --- a/gdb/config/sparc/sparc-em.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: SPARC embedded -TDEPFILES= sparc-tdep.o -TM_FILE= tm-spc-em.h diff --git a/gdb/config/sparc/sparclynx.mh b/gdb/config/sparc/sparclynx.mh deleted file mode 100644 index c573604b66a..00000000000 --- a/gdb/config/sparc/sparclynx.mh +++ /dev/null @@ -1,6 +0,0 @@ -# Host: Sparc running LynxOS - -XM_CLIBS= -lbsd - -NAT_FILE= nm-sparclynx.h -NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o lynx-nat.o diff --git a/gdb/config/sparc/sparclynx.mt b/gdb/config/sparc/sparclynx.mt deleted file mode 100644 index 5e61645caaa..00000000000 --- a/gdb/config/sparc/sparclynx.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: Sparc running LynxOS -TDEPFILES= coff-solib.o sparc-tdep.o -TM_FILE= tm-sparclynx.h diff --git a/gdb/config/sparc/sun4os4.mh b/gdb/config/sparc/sun4os4.mh deleted file mode 100644 index 4e664d71ccb..00000000000 --- a/gdb/config/sparc/sun4os4.mh +++ /dev/null @@ -1,9 +0,0 @@ -# Host: Sun 4 or Sparcstation, running SunOS 4 -NAT_FILE= nm-sun4os4.h -NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o -HOST_IPC=-DBSD_IPC - -# Setting XM_CLIBS=-lresolv would let us use the DNS, but that would screw -# anyone who wants to use NIS, which includes at least one Cygnus customer -# (PR 3593). So leave it this way until/unless we find a resolver which can -# get names from either DNS or NIS from the same GDB binary. diff --git a/gdb/config/sparc/sun4os4.mt b/gdb/config/sparc/sun4os4.mt deleted file mode 100644 index 342d6f73537..00000000000 --- a/gdb/config/sparc/sun4os4.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: Sun 4 or Sparcstation, running SunOS 4 -TDEPFILES= sparc-tdep.o solib.o solib-sunos.o -TM_FILE= tm-sun4os4.h diff --git a/gdb/config/sparc/sun4sol2.mh b/gdb/config/sparc/sun4sol2.mh deleted file mode 100644 index 4e77b9234cd..00000000000 --- a/gdb/config/sparc/sun4sol2.mh +++ /dev/null @@ -1,22 +0,0 @@ -# Host: Sun 4 or Sparcstation, running Solaris 2 - -XM_FILE= xm-sun4sol2.h -XM_CLIBS= -lsocket -lnsl - -NAT_FILE= nm-sun4sol2.h -NATDEPFILES= corelow.o core-sol2.o solib.o solib-svr4.o solib-legacy.o \ - fork-child.o procfs.o gcore.o \ - proc-api.o proc-events.o proc-flags.o proc-why.o - -# /usr/include/v9 is needed only by core-sol2.c when including -# v9/sys/privregs.h, or rather the headers it in turn includes. -MH_CFLAGS=-I/usr/include/v9 -# If you are compiling with Sun's compiler, add the -xs option to CC -# (e.g. `make CC="cc -xs"'). -# Sun's compilers require the -xs option to produce debug information -# in the final linked executable. Otherwise they leave it in the .o -# files only, with undocumented pointers to it in the linked executable. -# This is commented out because we don't assume that the Sun compiler -# is in use. -#MH_CFLAGS=-xs -I/usr/include/v9 -HOST_IPC=-DBSD_IPC diff --git a/gdb/config/sparc/sun4sol2.mt b/gdb/config/sparc/sun4sol2.mt deleted file mode 100644 index af70e9f9f9f..00000000000 --- a/gdb/config/sparc/sun4sol2.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: Sun 4 or Sparcstation, running Solaris 2 -TDEPFILES= sparc-tdep.o -TM_FILE= tm-sun4sol2.h diff --git a/gdb/config/sparc/tm-linux.h b/gdb/config/sparc/tm-linux.h index 63be2b885a5..ae853ba0acb 100644 --- a/gdb/config/sparc/tm-linux.h +++ b/gdb/config/sparc/tm-linux.h @@ -1,7 +1,6 @@ -/* Macro definitions for GDB for a Sparc running GNU/Linux. +/* Target-dependent definitions for GNU/Linux SPARC. - Copyright 1989, 1992, 1994, 1995, 1998, 1999, 2002 Free Software - Foundation, Inc. + Copyright 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -17,16 +16,14 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifndef TM_SPARCLINUX_H -#define TM_SPARCLINUX_H +#ifndef TM_LINUX_H +#define TM_LINUX_H -#include "sparc/tm-sparc.h" +#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM -#define SIGCONTEXT_PC_OFFSET 12 +/* Shared library support. */ +#include "solib.h" -#include "config/tm-linux.h" - -#endif /* TM_SPARCLINUX_H */ +#endif /* tm-linux.h */ diff --git a/gdb/config/sparc/tm-nbsd.h b/gdb/config/sparc/tm-nbsd.h index c82c3154088..301136bbead 100644 --- a/gdb/config/sparc/tm-nbsd.h +++ b/gdb/config/sparc/tm-nbsd.h @@ -1,5 +1,6 @@ -/* Macro definitions for Sparc running under NetBSD. - Copyright 1994, 2002 Free Software Foundation, Inc. +/* Target-dependent definitions for NetBSD/sparc. + + Copyright 1994, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -21,7 +22,9 @@ #ifndef TM_NBSD_H #define TM_NBSD_H -#include "sparc/tm-sparc.h" +#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM + +/* Shared library support. */ #include "solib.h" -#endif /* TM_NBSD_H */ +#endif /* tm-nbsd.h */ diff --git a/gdb/config/sparc/tm-sp64.h b/gdb/config/sparc/tm-sp64.h deleted file mode 100644 index 960cc0b9d97..00000000000 --- a/gdb/config/sparc/tm-sp64.h +++ /dev/null @@ -1,107 +0,0 @@ -/* Target machine sub-parameters for SPARC64, for GDB, the GNU debugger. - This is included by other tm-*.h files to define SPARC64 cpu-related info. - Copyright 1994, 1995, 1996, 1998, 1999, 2000 - Free Software Foundation, Inc. - This is (obviously) based on the SPARC Vn (n<9) port. - Contributed by Doug Evans (dje@cygnus.com). - Further modified by Bob Manson (manson@cygnus.com). - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -struct type; - -#ifndef GDB_TARGET_IS_SPARC64 -#define GDB_TARGET_IS_SPARC64 1 -#endif - -#include "sparc/tm-sparc.h" - -/* Eeeew. Ok, we have to assume (for now) that the processor really is - in sparc64 mode. While this is the same instruction sequence as - on the Sparc, the stack frames are offset by +2047 (and the arguments - are 8 bytes instead of 4). */ -/* Instructions are: - std %f10, [ %fp + 0x7a7 ] - std %f8, [ %fp + 0x79f ] - std %f6, [ %fp + 0x797 ] - std %f4, [ %fp + 0x78f ] - std %f2, [ %fp + 0x787 ] - std %f0, [ %fp + 0x77f ] - std %g6, [ %fp + 0x777 ] - std %g4, [ %fp + 0x76f ] - std %g2, [ %fp + 0x767 ] - std %g0, [ %fp + 0x75f ] - std %fp, [ %fp + 0x757 ] - std %i4, [ %fp + 0x74f ] - std %i2, [ %fp + 0x747 ] - std %i0, [ %fp + 0x73f ] - nop - nop - nop - nop - rd %tbr, %o0 - st %o0, [ %fp + 0x72b ] - rd %tpc, %o0 - st %o0, [ %fp + 0x727 ] - rd %psr, %o0 - st %o0, [ %fp + 0x723 ] - rd %y, %o0 - st %o0, [ %fp + 0x71f ] - ldx [ %sp + 0x8a7 ], %o5 - ldx [ %sp + 0x89f ], %o4 - ldx [ %sp + 0x897 ], %o3 - ldx [ %sp + 0x88f ], %o2 - ldx [ %sp + 0x887 ], %o1 - call %g0 - ldx [ %sp + 0x87f ], %o0 - nop - ta 1 - nop - nop - */ - -/* Offsets into jmp_buf. - FIXME: This was borrowed from the v8 stuff and will probably have to change - for v9. */ - -#define JB_ELEMENT_SIZE 8 /* Size of each element in jmp_buf */ - -#define JB_ONSSTACK 0 -#define JB_SIGMASK 1 -#define JB_SP 2 -#define JB_PC 3 -#define JB_NPC 4 -#define JB_PSR 5 -#define JB_G1 6 -#define JB_O0 7 -#define JB_WBCNT 8 - -/* Figure out where the longjmp will land. We expect that we have - just entered longjmp and haven't yet setup the stack frame, so the - args are still in the output regs. %o0 (O0_REGNUM) points at the - jmp_buf structure from which we extract the pc (JB_PC) that we will - land at. The pc is copied into ADDR. This routine returns true on - success */ - -extern int get_longjmp_target (CORE_ADDR *); - -#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) - -#undef TM_PRINT_INSN_MACH -#define TM_PRINT_INSN_MACH bfd_mach_sparc_v9a - diff --git a/gdb/config/sparc/tm-sp64linux.h b/gdb/config/sparc/tm-sp64linux.h deleted file mode 100644 index 81d9db0036d..00000000000 --- a/gdb/config/sparc/tm-sp64linux.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Macro definitions for GDB for a UltraSparc running GNU/Linux. - - Copyright 2001, 2002 Free Software Foundation, Inc. - -This file is part of GDB. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef TM_SPARC_LIN64_H -#define TM_SPARC_LIN64_H - -#include "sparc/tm-sp64.h" - -#define SIGCONTEXT_PC_OFFSET 16 /* See asm-sparc64/sigcontext.h */ - -/* We always want full V9 + Ultra VIS stuff... */ -#undef TM_PRINT_INSN_MACH -#define TM_PRINT_INSN_MACH bfd_mach_sparc_v9a - -#include "config/tm-sysv4.h" - -#endif /* TM_SPARC_LIN64_H */ diff --git a/gdb/config/sparc/tm-sparc.h b/gdb/config/sparc/tm-sparc.h deleted file mode 100644 index af8feccdc2f..00000000000 --- a/gdb/config/sparc/tm-sparc.h +++ /dev/null @@ -1,354 +0,0 @@ -/* Target machine sub-parameters for SPARC, for GDB, the GNU debugger. - This is included by other tm-*.h files to define SPARC cpu-related info. - Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Contributed by Michael Tiemann (tiemann@mcc.com) - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "regcache.h" - -struct type; -struct value; -struct frame_info; - -/* - * The following enums are purely for the convenience of the GDB - * developer, when debugging GDB. - */ - -enum { /* Sparc general registers, for all sparc versions. */ - G0_REGNUM, G1_REGNUM, G2_REGNUM, G3_REGNUM, - G4_REGNUM, G5_REGNUM, G6_REGNUM, G7_REGNUM, - O0_REGNUM, O1_REGNUM, O2_REGNUM, O3_REGNUM, - O4_REGNUM, O5_REGNUM, O6_REGNUM, O7_REGNUM, - L0_REGNUM, L1_REGNUM, L2_REGNUM, L3_REGNUM, - L4_REGNUM, L5_REGNUM, L6_REGNUM, L7_REGNUM, - I0_REGNUM, I1_REGNUM, I2_REGNUM, I3_REGNUM, - I4_REGNUM, I5_REGNUM, I6_REGNUM, I7_REGNUM, - FP0_REGNUM /* Floating point register 0 */ -}; - -enum { /* Sparc general registers, alternate names. */ - R0_REGNUM, R1_REGNUM, R2_REGNUM, R3_REGNUM, - R4_REGNUM, R5_REGNUM, R6_REGNUM, R7_REGNUM, - R8_REGNUM, R9_REGNUM, R10_REGNUM, R11_REGNUM, - R12_REGNUM, R13_REGNUM, R14_REGNUM, R15_REGNUM, - R16_REGNUM, R17_REGNUM, R18_REGNUM, R19_REGNUM, - R20_REGNUM, R21_REGNUM, R22_REGNUM, R23_REGNUM, - R24_REGNUM, R25_REGNUM, R26_REGNUM, R27_REGNUM, - R28_REGNUM, R29_REGNUM, R30_REGNUM, R31_REGNUM -}; - -enum { /* Sparc32 control registers. */ - PS_REGNUM = 65, /* PC, NPC, and Y are omitted because */ - WIM_REGNUM = 66, /* they have different values depending on */ - TBR_REGNUM = 67, /* 32-bit / 64-bit mode. */ - FPS_REGNUM = 70, - CPS_REGNUM = 71 -}; - -/* v9 misc. and priv. regs */ - -/* Note: specifying values explicitly for documentation purposes. */ -enum { /* Sparc64 control registers, excluding Y, PC, and NPC. */ - CCR_REGNUM = 82, /* Condition Code Register (%xcc,%icc) */ - FSR_REGNUM = 83, /* Floating Point State */ - FPRS_REGNUM = 84, /* Floating Point Registers State */ - ASI_REGNUM = 86, /* Alternate Space Identifier */ - VER_REGNUM = 87, /* Version register */ - TICK_REGNUM = 88, /* Tick register */ - PIL_REGNUM = 89, /* Processor Interrupt Level */ - PSTATE_REGNUM = 90, /* Processor State */ - TSTATE_REGNUM = 91, /* Trap State */ - TBA_REGNUM = 92, /* Trap Base Address */ - TL_REGNUM = 93, /* Trap Level */ - TT_REGNUM = 94, /* Trap Type */ - TPC_REGNUM = 95, /* Trap pc */ - TNPC_REGNUM = 96, /* Trap npc */ - WSTATE_REGNUM = 97, /* Window State */ - CWP_REGNUM = 98, /* Current Window Pointer */ - CANSAVE_REGNUM = 99, /* Savable Windows */ - CANRESTORE_REGNUM = 100, /* Restorable Windows */ - CLEANWIN_REGNUM = 101, /* Clean Windows */ - OTHERWIN_REGNUM = 102, /* Other Windows */ - ASR16_REGNUM = 103, /* Ancillary State Registers */ - ASR17_REGNUM = 104, - ASR18_REGNUM = 105, - ASR19_REGNUM = 106, - ASR20_REGNUM = 107, - ASR21_REGNUM = 108, - ASR22_REGNUM = 109, - ASR23_REGNUM = 110, - ASR24_REGNUM = 111, - ASR25_REGNUM = 112, - ASR26_REGNUM = 113, - ASR27_REGNUM = 114, - ASR28_REGNUM = 115, - ASR29_REGNUM = 116, - ASR30_REGNUM = 117, - ASR31_REGNUM = 118, - ICC_REGNUM = 119, /* 32 bit condition codes */ - XCC_REGNUM = 120, /* 64 bit condition codes */ - FCC0_REGNUM = 121, /* fp cc reg 0 */ - FCC1_REGNUM = 122, /* fp cc reg 1 */ - FCC2_REGNUM = 123, /* fp cc reg 2 */ - FCC3_REGNUM = 124 /* fp cc reg 3 */ -}; - -/* - * Make sparc target multi-archable: April 2000 - */ - -/* Multi-arch definition of TARGET_IS_SPARC64, TARGET_ELF64 */ -#undef GDB_TARGET_IS_SPARC64 -#define GDB_TARGET_IS_SPARC64 \ - (sparc_intreg_size () == 8) -#undef TARGET_ELF64 -#define TARGET_ELF64 \ - (sparc_intreg_size () == 8) -extern int sparc_intreg_size (void); - -/* - * The following defines should ONLY appear for MULTI_ARCH. - */ - -/* Multi-arch the nPC and Y registers. */ -#define Y_REGNUM (sparc_y_regnum ()) - -/* On the Sun 4 under SunOS, the compile will leave a fake insn which - encodes the structure size being returned. If we detect such - a fake insn, step past it. */ - -#define PC_ADJUST(PC) sparc_pc_adjust (PC) -extern CORE_ADDR sparc_pc_adjust (CORE_ADDR); - -/* If an argument is declared "register", Sun cc will keep it in a register, - never saving it onto the stack. So we better not believe the "p" symbol - descriptor stab. */ - -#define DEPRECATE_USE_REGISTER_NOT_ARG - -/* For acc, there's no need to correct LBRAC entries by guessing how - they should work. In fact, this is harmful because the LBRAC - entries now all appear at the end of the function, not intermixed - with the SLINE entries. n_opt_found detects acc for Solaris binaries; - function_stab_type detects acc for SunOS4 binaries. - - For binary from SunOS4 /bin/cc, need to correct LBRAC's. - - For gcc, like acc, don't correct. */ - -#define SUN_FIXED_LBRAC_BUG \ - (n_opt_found \ - || function_stab_type == N_STSYM \ - || function_stab_type == N_GSYM \ - || processing_gcc_compilation) - -/* Do variables in the debug stabs occur after the N_LBRAC or before it? - acc: after, gcc: before, SunOS4 /bin/cc: before. */ - -#define VARIABLES_INSIDE_BLOCK(desc, gcc_p) \ - (!(gcc_p) \ - && (n_opt_found \ - || function_stab_type == N_STSYM \ - || function_stab_type == N_GSYM)) - -/* Sequence of bytes for breakpoint instruction (ta 1). */ - -extern const unsigned char *sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len); -#define BREAKPOINT_FROM_PC(PC,LEN) sparc_breakpoint_from_pc ((PC), (LEN)) - -/* Register numbers of various important registers. - Note that some of these values are "real" register numbers, - and correspond to the general registers of the machine, - and some are "phony" register numbers which are too large - to be actual register numbers as far as the user is concerned - but do serve to get the desired values when passed to read_register. */ - -#define G0_REGNUM 0 /* %g0 */ -#define G1_REGNUM 1 /* %g1 */ -#define O0_REGNUM 8 /* %o0 */ -#define RP_REGNUM 15 /* Contains return address value, *before* \ - any windows get switched. */ -#define O7_REGNUM 15 /* Last local reg not saved on stack frame */ -#define L0_REGNUM 16 /* First local reg that's saved on stack frame - rather than in machine registers */ -#define I0_REGNUM 24 /* %i0 */ -#define I7_REGNUM 31 /* Last local reg saved on stack frame */ -#define PS_REGNUM 65 /* Contains processor status */ -#define PS_FLAG_CARRY 0x100000 /* Carry bit in PS */ -#define WIM_REGNUM 66 /* Window Invalid Mask (not really supported) */ -#define TBR_REGNUM 67 /* Trap Base Register (not really supported) */ -#define FPS_REGNUM 70 /* Floating point status register */ -#define CPS_REGNUM 71 /* Coprocessor status register */ - -/* Writing to %g0 is a noop (not an error or exception or anything like - that, however). */ - -#define CANNOT_STORE_REGISTER(regno) ((regno) == G0_REGNUM) - -#define DEPRECATED_PRINT_EXTRA_FRAME_INFO(FI) \ - sparc_print_extra_frame_info (FI) -extern void sparc_print_extra_frame_info (struct frame_info *); - -/* DEPRECATED_INIT_EXTRA_FRAME_INFO needs the PC to detect flat - frames. */ - -#define DEPRECATED_INIT_FRAME_PC_FIRST(FROMLEAF, PREV) \ - ((FROMLEAF) ? DEPRECATED_SAVED_PC_AFTER_CALL ((PREV)->next) : \ - (PREV)->next ? DEPRECATED_FRAME_SAVED_PC ((PREV)->next) : read_pc ()) - -/* Define other aspects of the stack frame. */ - -/* The location of I0 w.r.t SP. This is actually dependent on how the - system's window overflow/underflow routines are written. Most - vendors save the L regs followed by the I regs (at the higher - address). Some vendors get it wrong. */ - -#define FRAME_SAVED_L0 0 -#define FRAME_SAVED_I0 (8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)) - -/* Things needed for making the inferior call functions. */ -/* - * First of all, let me give my opinion of what the DUMMY_FRAME - * actually looks like. - * - * | | - * | | - * + - - - - - - - - - - - - - - - - +<-- fp (level 0) - * | | - * | | - * | | - * | | - * | Frame of innermost program | - * | function | - * | | - * | | - * | | - * | | - * | | - * |---------------------------------|<-- sp (level 0), fp (c) - * | | - * DUMMY | fp0-31 | - * | | - * | ------ |<-- fp - 0x80 - * FRAME | g0-7 |<-- fp - 0xa0 - * | i0-7 |<-- fp - 0xc0 - * | other |<-- fp - 0xe0 - * | ? | - * | ? | - * |---------------------------------|<-- sp' = fp - 0x140 - * | | - * xcution start | | - * sp' + 0x94 -->| CALL_DUMMY (x code) | - * | | - * | | - * |---------------------------------|<-- sp'' = fp - 0x200 - * | align sp to 8 byte boundary | - * | ==> args to fn <== | - * Room for | | - * i & l's + agg | CALL_DUMMY_STACK_ADJUST = 0x0x44| - * |---------------------------------|<-- final sp (variable) - * | | - * | Where function called will | - * | build frame. | - * | | - * | | - * - * I understand everything in this picture except what the space - * between fp - 0xe0 and fp - 0x140 is used for. Oh, and I don't - * understand why there's a large chunk of CALL_DUMMY that never gets - * executed (its function is superceeded by - * DEPRECATED_PUSH_DUMMY_FRAME; they are designed to do the same - * thing). - * - * DEPRECATED_PUSH_DUMMY_FRAME saves the registers above sp' and - * pushes the * register file stack down one. - * - * call_function then writes CALL_DUMMY, pushes the args onto the - * stack, and adjusts the stack pointer. - - call_function_by_hand then starts execution (in the middle of - CALL_DUMMY, as directed by call_function). */ - -#ifndef CALL_DUMMY -/* This sequence of words is the instructions - - 00: bc 10 00 01 mov %g1, %fp - 04: 9d e3 80 00 save %sp, %g0, %sp - 08: bc 10 00 02 mov %g2, %fp - 0c: be 10 00 03 mov %g3, %i7 - 10: da 03 a0 58 ld [ %sp + 0x58 ], %o5 - 14: d8 03 a0 54 ld [ %sp + 0x54 ], %o4 - 18: d6 03 a0 50 ld [ %sp + 0x50 ], %o3 - 1c: d4 03 a0 4c ld [ %sp + 0x4c ], %o2 - 20: d2 03 a0 48 ld [ %sp + 0x48 ], %o1 - 24: 40 00 00 00 call - 28: d0 03 a0 44 ld [ %sp + 0x44 ], %o0 - 2c: 01 00 00 00 nop - 30: 91 d0 20 01 ta 1 - 34: 01 00 00 00 nop - - NOTES: - * the first four instructions are necessary only on the simulator. - * this is a multiple of 8 (not only 4) bytes. - * the `call' insn is a relative, not an absolute call. - * the `nop' at the end is needed to keep the trap from - clobbering things (if NPC pointed to garbage instead). - */ - -#endif /* CALL_DUMMY */ - -/* Sparc has no reliable single step ptrace call */ - -#define SOFTWARE_SINGLE_STEP_P() 1 -extern void sparc_software_single_step (enum target_signal, int); -#define SOFTWARE_SINGLE_STEP(sig,bp_p) sparc_software_single_step (sig,bp_p) - -/* We need more arguments in a frame specification for the - "frame" or "info frame" command. */ - -#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv) -extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *); - -extern void sparc_do_registers_info (int regnum, int all); -#undef DEPRECATED_DO_REGISTERS_INFO -#define DEPRECATED_DO_REGISTERS_INFO(REGNUM,ALL) sparc_do_registers_info (REGNUM, ALL) - -/* Optimization for storing registers to the inferior. The hook - DO_DEFERRED_STORES - actually executes any deferred stores. It is called any time - we are going to proceed the child, or read its registers. - The hook CLEAR_DEFERRED_STORES is called when we want to throw - away the inferior process, e.g. when it dies or we kill it. - FIXME, this does not handle remote debugging cleanly. */ - -extern int deferred_stores; -#define DO_DEFERRED_STORES \ - if (deferred_stores) \ - target_store_registers (-2); -#define CLEAR_DEFERRED_STORES \ - deferred_stores = 0; - -/* Select the sparc disassembler */ - -#define TM_PRINT_INSN_MACH bfd_mach_sparc - -#define DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED 1 diff --git a/gdb/config/sparc/tm-sparclynx.h b/gdb/config/sparc/tm-sparclynx.h deleted file mode 100644 index e4ea4d5223d..00000000000 --- a/gdb/config/sparc/tm-sparclynx.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Macro definitions for Sparc running under LynxOS. - Copyright 1993, 1994 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef TM_SPARCLYNX_H -#define TM_SPARCLYNX_H - -#include "config/tm-lynx.h" - -/* Use generic Sparc definitions. */ -#include "sparc/tm-sparc.h" - -/* Lynx does this backwards from everybody else */ - -#undef FRAME_SAVED_I0 -#undef FRAME_SAVED_L0 - -#define FRAME_SAVED_I0 0 -#define FRAME_SAVED_L0 (8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM)) - -#endif /* TM_SPARCLYNX_H */ diff --git a/gdb/config/sparc/tm-spc-em.h b/gdb/config/sparc/tm-spc-em.h deleted file mode 100644 index 760e7a4258a..00000000000 --- a/gdb/config/sparc/tm-spc-em.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Target machine definitions for GDB for an embedded SPARC. - Copyright 1989, 1992, 1993, 2000 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "sparc/tm-sparc.h" - -/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a - comment in ! */ - -#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */ - -#define JB_ONSSTACK 0 -#define JB_SIGMASK 1 -#define JB_SP 2 -#define JB_PC 3 -#define JB_NPC 4 -#define JB_PSR 5 -#define JB_G1 6 -#define JB_O0 7 -#define JB_WBCNT 8 - -/* Figure out where the longjmp will land. We expect that we have just entered - longjmp and haven't yet setup the stack frame, so the args are still in the - output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we - extract the pc (JB_PC) that we will land at. The pc is copied into ADDR. - This routine returns true on success */ - -extern int get_longjmp_target (CORE_ADDR *); - -#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) diff --git a/gdb/config/sparc/tm-sun4os4.h b/gdb/config/sparc/tm-sun4os4.h deleted file mode 100644 index e080904d927..00000000000 --- a/gdb/config/sparc/tm-sun4os4.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Macro definitions for GDB for a Sun 4 running sunos 4. - Copyright 1989, 1992, 1994, 1995, 1998, 2000 - Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "sparc/tm-sparc.h" -#include "config/tm-sunos.h" - -/* Redefine SKIP_TRAMPOLINE_CODE to handle PIC compiled modules - in main executables. */ - -#undef SKIP_TRAMPOLINE_CODE -#define SKIP_TRAMPOLINE_CODE(pc) sunos4_skip_trampoline_code (pc) -extern CORE_ADDR sunos4_skip_trampoline_code (CORE_ADDR); - -/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a - comment in ! */ - -#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */ - -#define JB_ONSSTACK 0 -#define JB_SIGMASK 1 -#define JB_SP 2 -#define JB_PC 3 -#define JB_NPC 4 -#define JB_PSR 5 -#define JB_G1 6 -#define JB_O0 7 -#define JB_WBCNT 8 - -/* Figure out where the longjmp will land. We expect that we have just entered - longjmp and haven't yet setup the stack frame, so the args are still in the - output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we - extract the pc (JB_PC) that we will land at. The pc is copied into ADDR. - This routine returns true on success */ - -extern int get_longjmp_target (CORE_ADDR *); - -#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) - -extern char *sunpro_static_transform_name (char *); -#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x) -#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$') diff --git a/gdb/config/sparc/tm-sun4sol2.h b/gdb/config/sparc/tm-sun4sol2.h deleted file mode 100644 index 2247914c50d..00000000000 --- a/gdb/config/sparc/tm-sun4sol2.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Macro definitions for GDB for a Sun 4 running Solaris 2 - Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000 - Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "sparc/tm-sparc.h" -#include "config/tm-sysv4.h" - -/* With Sol2 it is no longer necessary to enable software single-step, - since the /proc interface can take care of it for us in hardware. */ -#undef SOFTWARE_SINGLE_STEP -#undef SOFTWARE_SINGLE_STEP_P - -/* There are two different signal handler trampolines in Solaris2. */ -#define IN_SIGTRAMP(pc, name) \ - ((name) \ - && (DEPRECATED_STREQ ("sigacthandler", name) || DEPRECATED_STREQ ("ucbsigvechandler", name))) - -/* The signal handler gets a pointer to an ucontext as third argument - if it is called from sigacthandler. This is the offset to the saved - PC within it. sparc_frame_saved_pc knows how to deal with - ucbsigvechandler. */ -#define SIGCONTEXT_PC_OFFSET 44 - -#if 0 /* FIXME Setjmp/longjmp are not as well doc'd in SunOS 5.x yet */ - -/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a - comment in ! */ - -#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */ - -#define JB_ONSSTACK 0 -#define JB_SIGMASK 1 -#define JB_SP 2 -#define JB_PC 3 -#define JB_NPC 4 -#define JB_PSR 5 -#define JB_G1 6 -#define JB_O0 7 -#define JB_WBCNT 8 - -/* Figure out where the longjmp will land. We expect that we have just entered - longjmp and haven't yet setup the stack frame, so the args are still in the - output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we - extract the pc (JB_PC) that we will land at. The pc is copied into ADDR. - This routine returns true on success */ - -extern int get_longjmp_target (CORE_ADDR *); - -#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) -#endif /* 0 */ - -/* The SunPRO compiler puts out 0 instead of the address in N_SO symbols, - and for SunPRO 3.0, N_FUN symbols too. */ -#define SOFUN_ADDRESS_MAYBE_MISSING - -extern char *sunpro_static_transform_name (char *); -#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x) -#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$') - -/* Enable handling of shared libraries for a.out executables. */ -#define HANDLE_SVR4_EXEC_EMULATORS diff --git a/gdb/config/sparc/tm-vxsparc.h b/gdb/config/sparc/tm-vxsparc.h deleted file mode 100644 index 95861ecf9fb..00000000000 --- a/gdb/config/sparc/tm-vxsparc.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Target machine description for VxWorks sparc's, for GDB, the GNU debugger. - Copyright 1993, 1999 Free Software Foundation, Inc. - Contributed by Cygnus Support. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "sparc/tm-spc-em.h" -#include "config/tm-vxworks.h" - -/* Number of registers in a ptrace_getfpregs call. */ - -/* #define VX_SIZE_FPREGS (don't know how many) */ diff --git a/gdb/config/sparc/vxsparc.mt b/gdb/config/sparc/vxsparc.mt deleted file mode 100644 index 9eadd17451d..00000000000 --- a/gdb/config/sparc/vxsparc.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Target: SPARC running VxWorks -TDEPFILES= sparc-tdep.o remote-vx.o remote-vxsparc.o xdr_ld.o xdr_ptrace.o xdr_rdb.o -TM_FILE= tm-vxsparc.h diff --git a/gdb/config/sparc/xm-linux.h b/gdb/config/sparc/xm-linux.h deleted file mode 100644 index b0518e650e9..00000000000 --- a/gdb/config/sparc/xm-linux.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Macro definitions for running gdb on a Sparc running GNU/Linux. - - Copyright 1989, 1993, 1994, 1995, 1996, 1998, 2001, 2002 Free - Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef XM_SPARCLINUX_H -#define XM_SPARCLINUX_H - -/* This is the amount to subtract from u.u_ar0 - to get the offset in the core file of the register values. */ -#define KERNEL_U_ADDR 0x0 - -#define U_REGS_OFFSET 0 - -/* If you expect to use the mmalloc package to obtain mapped symbol files, - for now you have to specify some parameters that determine how gdb places - the mappings in it's address space. See the comments in map_to_address() - for details. This is expected to only be a short term solution. Yes it - is a kludge. - FIXME: Make this more automatic. */ - -#define MMAP_BASE_ADDRESS 0xE0000000 /* First mapping here */ -#define MMAP_INCREMENT 0x01000000 /* Increment to next mapping */ - -#endif /* _XM_SPARCLINUX_H */ diff --git a/gdb/config/sparc/xm-sun4sol2.h b/gdb/config/sparc/xm-sun4sol2.h deleted file mode 100644 index 490962d4495..00000000000 --- a/gdb/config/sparc/xm-sun4sol2.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Macro definitions for running gdb on a Sun 4 running Solaris 2. - Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1998, 2000 - Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* Pick up more stuff from the generic SVR4 host include file. */ - -#include "config/xm-sysv4.h" - -/* These are not currently used in SVR4 (but should be, FIXME!). */ -#undef DO_DEFERRED_STORES -#undef CLEAR_DEFERRED_STORES - -/* solaris doesn't have siginterrupt, though it has sigaction; however, - in this case siginterrupt would just be setting the default. */ -#define NO_SIGINTERRUPT - -/* On sol2.7, emits a bunch of 'macro redefined' - warnings, which makes autoconf think curses.h doesn't - exist. Compensate for that here. */ -#define HAVE_CURSES_H 1 diff --git a/gdb/configure b/gdb/configure index fbf9f80e36f..da58de1ff36 100755 --- a/gdb/configure +++ b/gdb/configure @@ -4111,8 +4111,7 @@ case $host_os in LIBS="../libtermcap/libtermcap.a $LIBS" ac_cv_search_tgetent="../libtermcap/libtermcap.a" fi ;; - go32*) - # ??? Is this really true? + go32* | *djgpp*) ac_cv_search_tgetent="none required" ;; aix*) @@ -4120,14 +4119,14 @@ case $host_os in # ??? Why? echo $ac_n "checking for library containing tgetent""... $ac_c" 1>&6 -echo "configure:4124: checking for library containing tgetent" >&5 +echo "configure:4123: checking for library containing tgetent" >&5 if eval "test \"`echo '$''{'ac_cv_search_tgetent'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_tgetent="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_tgetent="none required" else @@ -4149,7 +4148,7 @@ rm -f conftest* test "$ac_cv_search_tgetent" = "no" && for i in tinfo ncurses curses termcap; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_tgetent="-l$i" break @@ -4187,14 +4186,14 @@ esac # Readline doesn't, so I think we're safe with leaving them out. echo $ac_n "checking for library containing tgetent""... $ac_c" 1>&6 -echo "configure:4191: checking for library containing tgetent" >&5 +echo "configure:4190: checking for library containing tgetent" >&5 if eval "test \"`echo '$''{'ac_cv_search_tgetent'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_tgetent="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_tgetent="none required" else @@ -4216,7 +4215,7 @@ rm -f conftest* test "$ac_cv_search_tgetent" = "no" && for i in termcap tinfo ncurses Hcurses curses; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_tgetent="-l$i" break @@ -4261,12 +4260,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:4265: checking for $ac_hdr that defines DIR" >&5 +echo "configure:4264: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -4274,7 +4273,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:4278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -4299,7 +4298,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:4303: checking for opendir in -ldir" >&5 +echo "configure:4302: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4307,7 +4306,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4340,7 +4339,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:4344: checking for opendir in -lx" >&5 +echo "configure:4343: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4348,7 +4347,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4382,12 +4381,12 @@ fi fi echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:4386: checking whether stat file-mode macros are broken" >&5 +echo "configure:4385: checking whether stat file-mode macros are broken" >&5 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4438,12 +4437,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:4442: checking for ANSI C header files" >&5 +echo "configure:4441: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4451,7 +4450,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4468,7 +4467,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4486,7 +4485,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4507,7 +4506,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -4518,7 +4517,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:4522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -4545,17 +4544,57 @@ for ac_hdr in link.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4549: checking for $ac_hdr" >&5 +echo "configure:4548: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4559: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +for ac_hdr in machine/reg.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:4588: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4585,17 +4624,17 @@ for ac_hdr in nlist.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4589: checking for $ac_hdr" >&5 +echo "configure:4628: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4625,17 +4664,17 @@ for ac_hdr in poll.h sys/poll.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4629: checking for $ac_hdr" >&5 +echo "configure:4668: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4665,17 +4704,17 @@ for ac_hdr in proc_service.h thread_db.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4669: checking for $ac_hdr" >&5 +echo "configure:4708: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4705,17 +4744,17 @@ for ac_hdr in stddef.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4709: checking for $ac_hdr" >&5 +echo "configure:4748: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4758: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4745,17 +4784,17 @@ for ac_hdr in stdlib.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4749: checking for $ac_hdr" >&5 +echo "configure:4788: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4759: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4785,17 +4824,17 @@ for ac_hdr in stdint.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4789: checking for $ac_hdr" >&5 +echo "configure:4828: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4825,17 +4864,17 @@ for ac_hdr in string.h memory.h strings.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4829: checking for $ac_hdr" >&5 +echo "configure:4868: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4865,17 +4904,17 @@ for ac_hdr in sys/fault.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4869: checking for $ac_hdr" >&5 +echo "configure:4908: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4905,17 +4944,17 @@ for ac_hdr in sys/file.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4909: checking for $ac_hdr" >&5 +echo "configure:4948: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4958: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4945,17 +4984,17 @@ for ac_hdr in sys/filio.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4949: checking for $ac_hdr" >&5 +echo "configure:4988: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4998: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4985,17 +5024,17 @@ for ac_hdr in sys/ioctl.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4989: checking for $ac_hdr" >&5 +echo "configure:5028: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5025,17 +5064,17 @@ for ac_hdr in sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5029: checking for $ac_hdr" >&5 +echo "configure:5068: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5065,17 +5104,17 @@ for ac_hdr in sys/proc.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5069: checking for $ac_hdr" >&5 +echo "configure:5108: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5105,17 +5144,17 @@ for ac_hdr in sys/procfs.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5109: checking for $ac_hdr" >&5 +echo "configure:5148: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5145,17 +5184,17 @@ for ac_hdr in sys/ptrace.h ptrace.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5149: checking for $ac_hdr" >&5 +echo "configure:5188: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5185,17 +5224,17 @@ for ac_hdr in sys/reg.h sys/debugreg.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5189: checking for $ac_hdr" >&5 +echo "configure:5228: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5199: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5225,17 +5264,17 @@ for ac_hdr in sys/select.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5229: checking for $ac_hdr" >&5 +echo "configure:5268: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5265,17 +5304,17 @@ for ac_hdr in sys/syscall.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5269: checking for $ac_hdr" >&5 +echo "configure:5308: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5305,17 +5344,17 @@ for ac_hdr in sys/user.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5309: checking for $ac_hdr" >&5 +echo "configure:5348: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5345,17 +5384,17 @@ for ac_hdr in sys/wait.h wait.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5349: checking for $ac_hdr" >&5 +echo "configure:5388: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5385,17 +5424,17 @@ for ac_hdr in termios.h termio.h sgtty.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5389: checking for $ac_hdr" >&5 +echo "configure:5428: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5425,17 +5464,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5429: checking for $ac_hdr" >&5 +echo "configure:5468: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5478,17 +5517,17 @@ for ac_hdr in curses.h ncurses.h term.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5482: checking for $ac_hdr" >&5 +echo "configure:5521: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5521,17 +5560,17 @@ for ac_hdr in ctype.h time.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5525: checking for $ac_hdr" >&5 +echo "configure:5564: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5558,6 +5597,39 @@ fi done +echo $ac_n "checking for member st_blocks in struct stat""... $ac_c" 1>&6 +echo "configure:5602: checking for member st_blocks in struct stat" >&5 +if eval "test \"`echo '$''{'gdb_cv_have_struct_stat_with_st_blocks_member'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { +struct stat st; (void) st.st_blocks; +; return 0; } +EOF +if { (eval echo configure:5615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + gdb_cv_have_struct_stat_with_st_blocks_member=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gdb_cv_have_struct_stat_with_st_blocks_member=no +fi +rm -f conftest* +fi + +echo "$ac_t""$gdb_cv_have_struct_stat_with_st_blocks_member" 1>&6 +if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +EOF + +fi # ------------------------- # # Checks for declarations. # # ------------------------- # @@ -5566,12 +5638,12 @@ for ac_func in getopt do ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6 -echo "configure:5570: checking whether $ac_func is declared" >&5 +echo "configure:5642: checking whether $ac_func is declared" >&5 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "gcc_cv_have_decl_$ac_func=yes" else @@ -5620,12 +5692,12 @@ fi # ------------------ # echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:5624: checking return type of signal handlers" >&5 +echo "configure:5696: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5642,7 +5714,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:5646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -5666,12 +5738,12 @@ EOF # ------------------------------------- # echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:5670: checking for working const" >&5 +echo "configure:5742: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -5741,21 +5813,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5745: checking for inline" >&5 +echo "configure:5817: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5788,19 +5860,19 @@ esac # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:5792: checking for working alloca.h" >&5 +echo "configure:5864: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:5804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -5821,12 +5893,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:5825: checking for alloca" >&5 +echo "configure:5897: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -5886,12 +5958,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:5890: checking whether alloca needs Cray hooks" >&5 +echo "configure:5962: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5920: checking for $ac_func" >&5 +echo "configure:5992: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5971,7 +6043,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:5975: checking stack direction for C alloca" >&5 +echo "configure:6047: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5979,7 +6051,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -6023,17 +6095,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6027: checking for $ac_hdr" >&5 +echo "configure:6099: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6062,12 +6134,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6066: checking for $ac_func" >&5 +echo "configure:6138: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6115,7 +6187,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6119: checking for working mmap" >&5 +echo "configure:6191: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6123,7 +6195,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -6286,12 +6358,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6290: checking for pid_t" >&5 +echo "configure:6362: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6320,17 +6392,17 @@ fi ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:6324: checking for vfork.h" >&5 +echo "configure:6396: checking for vfork.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6355,18 +6427,18 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:6359: checking for working vfork" >&5 +echo "configure:6431: checking for working vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then echo $ac_n "checking for vfork""... $ac_c" 1>&6 -echo "configure:6365: checking for vfork" >&5 +echo "configure:6437: checking for vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vfork=yes" else @@ -6411,7 +6483,7 @@ fi ac_cv_func_vfork_works=$ac_cv_func_vfork else cat > conftest.$ac_ext < @@ -6506,7 +6578,7 @@ main() { } } EOF -if { (eval echo configure:6510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_vfork_works=yes else @@ -6531,12 +6603,12 @@ fi for ac_func in canonicalize_file_name realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6535: checking for $ac_func" >&5 +echo "configure:6607: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6586,12 +6658,12 @@ done for ac_func in poll do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6590: checking for $ac_func" >&5 +echo "configure:6662: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6641,12 +6713,12 @@ done for ac_func in pread64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6645: checking for $ac_func" >&5 +echo "configure:6717: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6696,12 +6768,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6700: checking for $ac_func" >&5 +echo "configure:6772: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6751,12 +6823,12 @@ done for ac_func in setpgid setpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6755: checking for $ac_func" >&5 +echo "configure:6827: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6806,12 +6878,12 @@ done for ac_func in sigaction sigprocmask sigsetmask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6810: checking for $ac_func" >&5 +echo "configure:6882: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6861,12 +6933,12 @@ done for ac_func in socketpair do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6865: checking for $ac_func" >&5 +echo "configure:6937: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6916,12 +6988,12 @@ done for ac_func in syscall do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6920: checking for $ac_func" >&5 +echo "configure:6992: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6971,7 +7043,7 @@ done if test "$cross_compiling" = no; then echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:6975: checking whether setpgrp takes no argument" >&5 +echo "configure:7047: checking whether setpgrp takes no argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6979,7 +7051,7 @@ else { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_setpgrp_void=no else @@ -7024,12 +7096,12 @@ fi else echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:7028: checking whether setpgrp takes no argument" >&5 +echo "configure:7100: checking whether setpgrp takes no argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7043,7 +7115,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:7047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_func_setpgrp_void=no else @@ -7067,12 +7139,12 @@ fi # Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't do # since sigsetjmp might only be defined as a macro. echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:7071: checking for sigsetjmp" >&5 +echo "configure:7143: checking for sigsetjmp" >&5 if eval "test \"`echo '$''{'gdb_cv_func_sigsetjmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7081,7 +7153,7 @@ int main() { sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1); ; return 0; } EOF -if { (eval echo configure:7085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_func_sigsetjmp=yes else @@ -7107,12 +7179,12 @@ gdb_use_included_regex=yes # However, if the system regex is GNU regex, then default to *not* # using the included regex. echo $ac_n "checking for GNU regex""... $ac_c" 1>&6 -echo "configure:7111: checking for GNU regex" >&5 +echo "configure:7183: checking for GNU regex" >&5 if eval "test \"`echo '$''{'gdb_cv_have_gnu_regex'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -7122,7 +7194,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:7126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_gnu_regex=yes else @@ -7154,22 +7226,57 @@ EOF fi +# See if degines `struct reg'. +echo $ac_n "checking for struct reg in machine/reg.h""... $ac_c" 1>&6 +echo "configure:7232: checking for struct reg in machine/reg.h" >&5 +if eval "test \"`echo '$''{'gdb_cv_struct_reg'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { +struct reg r; +; return 0; } +EOF +if { (eval echo configure:7245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + gdb_cv_struct_reg=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gdb_cv_struct_reg=no +fi +rm -f conftest* +fi + +echo "$ac_t""$gdb_cv_struct_reg" 1>&6 +if test $gdb_cv_struct_reg = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_REG 1 +EOF + +fi + # See if supports the %fs and %gs i386 segment registers. # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'. echo $ac_n "checking for r_fs in struct reg""... $ac_c" 1>&6 -echo "configure:7161: checking for r_fs in struct reg" >&5 +echo "configure:7268: checking for r_fs in struct reg" >&5 if eval "test \"`echo '$''{'gdb_cv_struct_reg_r_fs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct reg r; r.r_fs; ; return 0; } EOF -if { (eval echo configure:7173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_struct_reg_r_fs=yes else @@ -7189,19 +7296,19 @@ EOF fi echo $ac_n "checking for r_gs in struct reg""... $ac_c" 1>&6 -echo "configure:7193: checking for r_gs in struct reg" >&5 +echo "configure:7300: checking for r_gs in struct reg" >&5 if eval "test \"`echo '$''{'gdb_cv_struct_reg_r_gs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct reg r; r.r_gs; ; return 0; } EOF -if { (eval echo configure:7205: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_struct_reg_r_gs=yes else @@ -7223,19 +7330,19 @@ fi # See if provides the PTRACE_GETREGS request. echo $ac_n "checking for PTRACE_GETREGS""... $ac_c" 1>&6 -echo "configure:7227: checking for PTRACE_GETREGS" >&5 +echo "configure:7334: checking for PTRACE_GETREGS" >&5 if eval "test \"`echo '$''{'gdb_cv_have_ptrace_getregs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { PTRACE_GETREGS; ; return 0; } EOF -if { (eval echo configure:7239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_ptrace_getregs=yes else @@ -7257,19 +7364,19 @@ fi # See if provides the PTRACE_GETFPXREGS request. echo $ac_n "checking for PTRACE_GETFPXREGS""... $ac_c" 1>&6 -echo "configure:7261: checking for PTRACE_GETFPXREGS" >&5 +echo "configure:7368: checking for PTRACE_GETFPXREGS" >&5 if eval "test \"`echo '$''{'gdb_cv_have_ptrace_getfpxregs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { PTRACE_GETFPXREGS; ; return 0; } EOF -if { (eval echo configure:7273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_ptrace_getfpxregs=yes else @@ -7291,12 +7398,12 @@ fi # See if provides the PT_GETDBREGS request. echo $ac_n "checking for PT_GETDBREGS""... $ac_c" 1>&6 -echo "configure:7295: checking for PT_GETDBREGS" >&5 +echo "configure:7402: checking for PT_GETDBREGS" >&5 if eval "test \"`echo '$''{'gdb_cv_have_pt_getdbregs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7304,7 +7411,7 @@ int main() { PT_GETDBREGS; ; return 0; } EOF -if { (eval echo configure:7308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_pt_getdbregs=yes else @@ -7326,12 +7433,12 @@ fi # See if provides the PT_GETXMMREGS request. echo $ac_n "checking for PT_GETXMMREGS""... $ac_c" 1>&6 -echo "configure:7330: checking for PT_GETXMMREGS" >&5 +echo "configure:7437: checking for PT_GETXMMREGS" >&5 if eval "test \"`echo '$''{'gdb_cv_have_pt_getxmmregs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7339,7 +7446,7 @@ int main() { PT_GETXMMREGS; ; return 0; } EOF -if { (eval echo configure:7343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_pt_getxmmregs=yes else @@ -7362,19 +7469,19 @@ fi # See if stdint.h provides the uintptr_t type. # Autoconf 2.5X has an improved AC_CHECK_TYPE which will simplify this. echo $ac_n "checking for uintptr_t in stdint.h""... $ac_c" 1>&6 -echo "configure:7366: checking for uintptr_t in stdint.h" >&5 +echo "configure:7473: checking for uintptr_t in stdint.h" >&5 if eval "test \"`echo '$''{'gdb_cv_have_uintptr_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { uintptr_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7485: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_uintptr_t=yes else @@ -7395,12 +7502,12 @@ EOF fi echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6 -echo "configure:7399: checking whether malloc must be declared" >&5 +echo "configure:7506: checking whether malloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7421,7 +7528,7 @@ int main() { char *(*pfn) = (char *(*)) malloc ; return 0; } EOF -if { (eval echo configure:7425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_malloc=no else @@ -7442,12 +7549,12 @@ EOF fi echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6 -echo "configure:7446: checking whether realloc must be declared" >&5 +echo "configure:7553: checking whether realloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7468,7 +7575,7 @@ int main() { char *(*pfn) = (char *(*)) realloc ; return 0; } EOF -if { (eval echo configure:7472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_realloc=no else @@ -7489,12 +7596,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:7493: checking whether free must be declared" >&5 +echo "configure:7600: checking whether free must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7515,7 +7622,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:7519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -7536,12 +7643,12 @@ EOF fi echo $ac_n "checking whether strerror must be declared""... $ac_c" 1>&6 -echo "configure:7540: checking whether strerror must be declared" >&5 +echo "configure:7647: checking whether strerror must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7562,7 +7669,7 @@ int main() { char *(*pfn) = (char *(*)) strerror ; return 0; } EOF -if { (eval echo configure:7566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strerror=no else @@ -7583,12 +7690,12 @@ EOF fi echo $ac_n "checking whether strdup must be declared""... $ac_c" 1>&6 -echo "configure:7587: checking whether strdup must be declared" >&5 +echo "configure:7694: checking whether strdup must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strdup'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7609,7 +7716,7 @@ int main() { char *(*pfn) = (char *(*)) strdup ; return 0; } EOF -if { (eval echo configure:7613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strdup=no else @@ -7630,12 +7737,12 @@ EOF fi echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:7634: checking whether strstr must be declared" >&5 +echo "configure:7741: checking whether strstr must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7656,7 +7763,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:7660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -7677,12 +7784,12 @@ EOF fi echo $ac_n "checking whether canonicalize_file_name must be declared""... $ac_c" 1>&6 -echo "configure:7681: checking whether canonicalize_file_name must be declared" >&5 +echo "configure:7788: checking whether canonicalize_file_name must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_canonicalize_file_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7703,7 +7810,7 @@ int main() { char *(*pfn) = (char *(*)) canonicalize_file_name ; return 0; } EOF -if { (eval echo configure:7707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_canonicalize_file_name=no else @@ -7729,9 +7836,9 @@ fi # could be expunged. --jsm 1999-03-22 echo $ac_n "checking for HPUX save_state structure""... $ac_c" 1>&6 -echo "configure:7733: checking for HPUX save_state structure" >&5 +echo "configure:7840: checking for HPUX save_state structure" >&5 cat > conftest.$ac_ext < EOF @@ -7746,7 +7853,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -7816,12 +7923,12 @@ fi if test "$ac_cv_header_sys_procfs_h" = yes; then echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:7820: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:7927: checking for pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -7852,12 +7959,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6 echo $ac_n "checking for prrun_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:7856: checking for prrun_t in sys/procfs.h" >&5 +echo "configure:7963: checking for prrun_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prrun_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prrun_t=yes else @@ -7888,12 +7995,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prrun_t" 1>&6 echo $ac_n "checking for gregset_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:7892: checking for gregset_t in sys/procfs.h" >&5 +echo "configure:7999: checking for gregset_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_gregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_gregset_t=yes else @@ -7924,12 +8031,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_gregset_t" 1>&6 echo $ac_n "checking for fpregset_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:7928: checking for fpregset_t in sys/procfs.h" >&5 +echo "configure:8035: checking for fpregset_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_fpregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_fpregset_t=yes else @@ -7960,12 +8067,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_fpregset_t" 1>&6 echo $ac_n "checking for prgregset_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:7964: checking for prgregset_t in sys/procfs.h" >&5 +echo "configure:8071: checking for prgregset_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prgregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prgregset_t=yes else @@ -7996,12 +8103,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset_t" 1>&6 echo $ac_n "checking for prfpregset_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8000: checking for prfpregset_t in sys/procfs.h" >&5 +echo "configure:8107: checking for prfpregset_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prfpregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prfpregset_t=yes else @@ -8032,12 +8139,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prfpregset_t" 1>&6 echo $ac_n "checking for prgregset32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8036: checking for prgregset32_t in sys/procfs.h" >&5 +echo "configure:8143: checking for prgregset32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prgregset32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prgregset32_t=yes else @@ -8068,12 +8175,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset32_t" 1>&6 echo $ac_n "checking for prfpregset32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8072: checking for prfpregset32_t in sys/procfs.h" >&5 +echo "configure:8179: checking for prfpregset32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prfpregset32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prfpregset32_t=yes else @@ -8104,12 +8211,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prfpregset32_t" 1>&6 echo $ac_n "checking for lwpid_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8108: checking for lwpid_t in sys/procfs.h" >&5 +echo "configure:8215: checking for lwpid_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpid_t=yes else @@ -8140,12 +8247,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpid_t" 1>&6 echo $ac_n "checking for psaddr_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8144: checking for psaddr_t in sys/procfs.h" >&5 +echo "configure:8251: checking for psaddr_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psaddr_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psaddr_t=yes else @@ -8176,12 +8283,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psaddr_t" 1>&6 echo $ac_n "checking for prsysent_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8180: checking for prsysent_t in sys/procfs.h" >&5 +echo "configure:8287: checking for prsysent_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prsysent_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prsysent_t=yes else @@ -8212,12 +8319,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prsysent_t" 1>&6 echo $ac_n "checking for pr_sigset_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8216: checking for pr_sigset_t in sys/procfs.h" >&5 +echo "configure:8323: checking for pr_sigset_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_sigset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pr_sigset_t=yes else @@ -8248,12 +8355,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pr_sigset_t" 1>&6 echo $ac_n "checking for pr_sigaction64_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8252: checking for pr_sigaction64_t in sys/procfs.h" >&5 +echo "configure:8359: checking for pr_sigaction64_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_sigaction64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pr_sigaction64_t=yes else @@ -8284,12 +8391,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pr_sigaction64_t" 1>&6 echo $ac_n "checking for pr_siginfo64_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8288: checking for pr_siginfo64_t in sys/procfs.h" >&5 +echo "configure:8395: checking for pr_siginfo64_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_siginfo64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pr_siginfo64_t=yes else @@ -8325,7 +8432,7 @@ EOF if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then echo $ac_n "checking whether prfpregset_t type is broken""... $ac_c" 1>&6 -echo "configure:8329: checking whether prfpregset_t type is broken" >&5 +echo "configure:8436: checking whether prfpregset_t type is broken" >&5 if eval "test \"`echo '$''{'gdb_cv_prfpregset_t_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8333,7 +8440,7 @@ else gdb_cv_prfpregset_t_broken=yes else cat > conftest.$ac_ext < int main () @@ -8343,7 +8450,7 @@ else return 0; } EOF -if { (eval echo configure:8347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gdb_cv_prfpregset_t_broken=no else @@ -8368,12 +8475,12 @@ EOF echo $ac_n "checking for PIOCSET ioctl entry in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:8372: checking for PIOCSET ioctl entry in sys/procfs.h" >&5 +echo "configure:8479: checking for PIOCSET ioctl entry in sys/procfs.h" >&5 if eval "test \"`echo '$''{'gdb_cv_have_procfs_piocset'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8386,7 +8493,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_procfs_piocset=yes else @@ -8410,19 +8517,19 @@ fi if test ${host} = ${target} ; then echo $ac_n "checking for member l_addr in struct link_map""... $ac_c" 1>&6 -echo "configure:8414: checking for member l_addr in struct link_map" >&5 +echo "configure:8521: checking for member l_addr in struct link_map" >&5 if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map_with_l_members'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct link_map lm; (void) lm.l_addr; ; return 0; } EOF -if { (eval echo configure:8426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_struct_link_map_with_l_members=yes else @@ -8444,12 +8551,12 @@ EOF echo $ac_n "checking for member lm_addr in struct link_map""... $ac_c" 1>&6 -echo "configure:8448: checking for member lm_addr in struct link_map" >&5 +echo "configure:8555: checking for member lm_addr in struct link_map" >&5 if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map_with_lm_members'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8457,7 +8564,7 @@ int main() { struct link_map lm; (void) lm.lm_addr; ; return 0; } EOF -if { (eval echo configure:8461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_struct_link_map_with_lm_members=yes else @@ -8479,12 +8586,12 @@ EOF echo $ac_n "checking for member som_addr in struct so_map""... $ac_c" 1>&6 -echo "configure:8483: checking for member som_addr in struct so_map" >&5 +echo "configure:8590: checking for member som_addr in struct so_map" >&5 if eval "test \"`echo '$''{'gdb_cv_have_struct_so_map_with_som_members'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef HAVE_NLIST_H @@ -8495,7 +8602,7 @@ int main() { struct so_map lm; (void) lm.som_addr; ; return 0; } EOF -if { (eval echo configure:8499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_struct_so_map_with_som_members=yes else @@ -8517,12 +8624,12 @@ EOF echo $ac_n "checking for struct link_map32 in sys/link.h""... $ac_c" 1>&6 -echo "configure:8521: checking for struct link_map32 in sys/link.h" >&5 +echo "configure:8628: checking for struct link_map32 in sys/link.h" >&5 if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8530,7 +8637,7 @@ int main() { struct link_map32 l; ; return 0; } EOF -if { (eval echo configure:8534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_struct_link_map32=yes else @@ -8557,12 +8664,12 @@ fi echo $ac_n "checking for long long support in compiler""... $ac_c" 1>&6 -echo "configure:8561: checking for long long support in compiler" >&5 +echo "configure:8668: checking for long long support in compiler" >&5 if eval "test \"`echo '$''{'gdb_cv_c_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_c_long_long=yes else @@ -8594,7 +8701,7 @@ fi echo $ac_n "checking for long long support in printf""... $ac_c" 1>&6 -echo "configure:8598: checking for long long support in printf" >&5 +echo "configure:8705: checking for long long support in printf" >&5 if eval "test \"`echo '$''{'gdb_cv_printf_has_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8602,7 +8709,7 @@ else gdb_cv_printf_has_long_long=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gdb_cv_printf_has_long_long=yes else @@ -8640,19 +8747,19 @@ echo "$ac_t""$gdb_cv_printf_has_long_long" 1>&6 echo $ac_n "checking for long double support in compiler""... $ac_c" 1>&6 -echo "configure:8644: checking for long double support in compiler" >&5 +echo "configure:8751: checking for long double support in compiler" >&5 if eval "test \"`echo '$''{'ac_cv_c_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_long_double=yes else @@ -8674,7 +8781,7 @@ fi echo $ac_n "checking for long double support in printf""... $ac_c" 1>&6 -echo "configure:8678: checking for long double support in printf" >&5 +echo "configure:8785: checking for long double support in printf" >&5 if eval "test \"`echo '$''{'gdb_cv_printf_has_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8682,7 +8789,7 @@ else gdb_cv_printf_has_long_double=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gdb_cv_printf_has_long_double=yes else @@ -8716,7 +8823,7 @@ echo "$ac_t""$gdb_cv_printf_has_long_double" 1>&6 echo $ac_n "checking for long double support in scanf""... $ac_c" 1>&6 -echo "configure:8720: checking for long double support in scanf" >&5 +echo "configure:8827: checking for long double support in scanf" >&5 if eval "test \"`echo '$''{'gdb_cv_scanf_has_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8724,7 +8831,7 @@ else gdb_cv_scanf_has_long_double=no else cat > conftest.$ac_ext < 3.14159 && f < 3.14160); } EOF -if { (eval echo configure:8738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gdb_cv_scanf_has_long_double=yes else @@ -8759,7 +8866,7 @@ echo "$ac_t""$gdb_cv_scanf_has_long_double" 1>&6 case ${host_os} in aix*) echo $ac_n "checking for -bbigtoc option""... $ac_c" 1>&6 -echo "configure:8763: checking for -bbigtoc option" >&5 +echo "configure:8870: checking for -bbigtoc option" >&5 if eval "test \"`echo '$''{'gdb_cv_bigtoc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8773,14 +8880,14 @@ else LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then : else echo "configure: failed program was:" >&5 @@ -8803,7 +8910,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then case ${host_os} in hpux*) echo $ac_n "checking for HPUX/OSF thread support""... $ac_c" 1>&6 -echo "configure:8807: checking for HPUX/OSF thread support" >&5 +echo "configure:8914: checking for HPUX/OSF thread support" >&5 if test -f /usr/include/dce/cma_config.h ; then if test "$GCC" = "yes" ; then echo "$ac_t""yes" 1>&6 @@ -8826,7 +8933,7 @@ EOF # because version 0 (present on Solaris 2.4 or earlier) doesn't have # the same API. echo $ac_n "checking for Solaris thread debugging library""... $ac_c" 1>&6 -echo "configure:8830: checking for Solaris thread debugging library" >&5 +echo "configure:8937: checking for Solaris thread debugging library" >&5 if test -f /usr/lib/libthread_db.so.1 ; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF @@ -8836,7 +8943,7 @@ EOF CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o" CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c" echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:8840: checking for dlopen in -ldl" >&5 +echo "configure:8947: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8844,7 +8951,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8887,17 +8994,17 @@ fi # all symbols visible in the dynamic symbol table. hold_ldflags=$LDFLAGS echo $ac_n "checking for the ld -export-dynamic flag""... $ac_c" 1>&6 -echo "configure:8891: checking for the ld -export-dynamic flag" >&5 +echo "configure:8998: checking for the ld -export-dynamic flag" >&5 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -8916,13 +9023,13 @@ rm -f conftest* # Sun randomly tweaked the prototypes in # at one point. echo $ac_n "checking if is old""... $ac_c" 1>&6 -echo "configure:8920: checking if is old" >&5 +echo "configure:9027: checking if is old" >&5 if eval "test \"`echo '$''{'gdb_cv_proc_service_is_old'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8933,7 +9040,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_proc_service_is_old=no else @@ -8959,12 +9066,12 @@ EOF ;; aix*) echo $ac_n "checking for AiX thread debugging library""... $ac_c" 1>&6 -echo "configure:8963: checking for AiX thread debugging library" >&5 +echo "configure:9070: checking for AiX thread debugging library" >&5 if eval "test \"`echo '$''{'gdb_cv_have_aix_thread_debug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -8973,7 +9080,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:8977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9084: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_have_aix_thread_debug=yes else @@ -8998,19 +9105,19 @@ fi if test "x$ac_cv_header_thread_db_h" = "xyes"; then echo $ac_n "checking whether has TD_NOTALLOC""... $ac_c" 1>&6 -echo "configure:9002: checking whether has TD_NOTALLOC" >&5 +echo "configure:9109: checking whether has TD_NOTALLOC" >&5 if eval "test \"`echo '$''{'gdb_cv_thread_db_h_has_td_notalloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { int i = TD_NOTALLOC; ; return 0; } EOF -if { (eval echo configure:9014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_thread_db_h_has_td_notalloc=yes else @@ -9035,19 +9142,19 @@ fi if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then echo $ac_n "checking whether has __NR_tkill""... $ac_c" 1>&6 -echo "configure:9039: checking whether has __NR_tkill" >&5 +echo "configure:9146: checking whether has __NR_tkill" >&5 if eval "test \"`echo '$''{'gdb_cv_sys_syscall_h_has_tkill'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { int i = __NR_tkill; ; return 0; } EOF -if { (eval echo configure:9051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_sys_syscall_h_has_tkill=yes else @@ -9158,7 +9265,7 @@ WERROR_CFLAGS="" if test "x${build_warnings}" != x -a "x$GCC" = xyes then echo $ac_n "checking compiler warning flags""... $ac_c" 1>&6 -echo "configure:9162: checking compiler warning flags" >&5 +echo "configure:9269: checking compiler warning flags" >&5 # Separate out the -Werror flag as some files just cannot be # compiled with it enabled. for w in ${build_warnings}; do @@ -9168,14 +9275,14 @@ echo "configure:9162: checking compiler warning flags" >&5 saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $w" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9286: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* WARN_CFLAGS="${WARN_CFLAGS} $w" else @@ -9223,12 +9330,12 @@ fi # In the Cygwin environment, we need some additional flags. echo $ac_n "checking for cygwin""... $ac_c" 1>&6 -echo "configure:9227: checking for cygwin" >&5 +echo "configure:9334: checking for cygwin" >&5 if eval "test \"`echo '$''{'gdb_cv_os_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:9310: checking for Tcl configuration" >&5 +echo "configure:9417: checking for Tcl configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9415,7 +9522,7 @@ if test "${with_tkconfig+set}" = set; then fi echo $ac_n "checking for Tk configuration""... $ac_c" 1>&6 -echo "configure:9419: checking for Tk configuration" >&5 +echo "configure:9526: checking for Tk configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_tkconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9524,7 +9631,7 @@ fi no_tcl=true echo $ac_n "checking for Tcl private headers. dir=${configdir}""... $ac_c" 1>&6 -echo "configure:9528: checking for Tcl private headers. dir=${configdir}" >&5 +echo "configure:9635: checking for Tcl private headers. dir=${configdir}" >&5 # Check whether --with-tclinclude or --without-tclinclude was given. if test "${with_tclinclude+set}" = set; then withval="$with_tclinclude" @@ -9590,17 +9697,17 @@ fi if test x"${ac_cv_c_tclh}" = x ; then ac_safe=`echo "tclInt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6 -echo "configure:9594: checking for tclInt.h" >&5 +echo "configure:9701: checking for tclInt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9660,7 +9767,7 @@ fi # no_tk=true echo $ac_n "checking for Tk private headers""... $ac_c" 1>&6 -echo "configure:9664: checking for Tk private headers" >&5 +echo "configure:9771: checking for Tk private headers" >&5 # Check whether --with-tkinclude or --without-tkinclude was given. if test "${with_tkinclude+set}" = set; then withval="$with_tkinclude" @@ -9726,17 +9833,17 @@ fi if test x"${ac_cv_c_tkh}" = x ; then ac_safe=`echo "tk.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tk.h""... $ac_c" 1>&6 -echo "configure:9730: checking for tk.h" >&5 +echo "configure:9837: checking for tk.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9847: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9782,7 +9889,7 @@ fi echo $ac_n "checking for Itcl private headers. srcdir=${srcdir}""... $ac_c" 1>&6 -echo "configure:9786: checking for Itcl private headers. srcdir=${srcdir}" >&5 +echo "configure:9893: checking for Itcl private headers. srcdir=${srcdir}" >&5 if test x"${ac_cv_c_itclh}" = x ; then for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itcl; do if test -f $i/generic/itcl.h ; then @@ -9805,7 +9912,7 @@ fi echo $ac_n "checking for Itk private headers. srcdir=${srcdir}""... $ac_c" 1>&6 -echo "configure:9809: checking for Itk private headers. srcdir=${srcdir}" >&5 +echo "configure:9916: checking for Itk private headers. srcdir=${srcdir}" >&5 if test x"${ac_cv_c_itkh}" = x ; then for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itk; do if test -f $i/generic/itk.h ; then @@ -9860,7 +9967,7 @@ if test "${with_itclconfig+set}" = set; then fi echo $ac_n "checking for Itcl configuration""... $ac_c" 1>&6 -echo "configure:9864: checking for Itcl configuration" >&5 +echo "configure:9971: checking for Itcl configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_itclconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9963,7 +10070,7 @@ if test "${with_itkconfig+set}" = set; then fi echo $ac_n "checking for Itk configuration""... $ac_c" 1>&6 -echo "configure:9967: checking for Itk configuration" >&5 +echo "configure:10074: checking for Itk configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_itkconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10106,7 +10213,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:10110: checking for X" >&5 +echo "configure:10217: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -10168,12 +10275,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10242,14 +10349,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -10463,7 +10570,7 @@ fi # We only build gdbserver automatically if host and target are the same. if test "x$target" = "x$host"; then echo $ac_n "checking whether gdbserver is supported on this host""... $ac_c" 1>&6 -echo "configure:10467: checking whether gdbserver is supported on this host" >&5 +echo "configure:10574: checking whether gdbserver is supported on this host" >&5 if test "x$build_gdbserver" = xyes; then configdirs="$configdirs gdbserver" echo "$ac_t""yes" 1>&6 @@ -10527,12 +10634,12 @@ fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:10531: checking for Cygwin environment" >&5 +echo "configure:10638: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -10560,19 +10667,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6 CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:10564: checking for mingw32 environment" >&5 +echo "configure:10671: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -10591,7 +10698,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:10595: checking for executable suffix" >&5 +echo "configure:10702: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10601,10 +10708,10 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:10605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:10712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.C | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -10643,7 +10750,7 @@ fi echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:10647: checking for iconv" >&5 +echo "configure:10754: checking for iconv" >&5 if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10651,7 +10758,7 @@ else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat > conftest.$ac_ext < #include @@ -10661,7 +10768,7 @@ iconv_t cd = iconv_open("",""); iconv_close(cd); ; return 0; } EOF -if { (eval echo configure:10665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_func_iconv=yes else @@ -10673,7 +10780,7 @@ rm -f conftest* am_save_LIBS="$LIBS" LIBS="$LIBS -liconv" cat > conftest.$ac_ext < #include @@ -10683,7 +10790,7 @@ iconv_t cd = iconv_open("",""); iconv_close(cd); ; return 0; } EOF -if { (eval echo configure:10687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_lib_iconv=yes am_cv_func_iconv=yes @@ -10704,13 +10811,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6 EOF echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6 -echo "configure:10708: checking for iconv declaration" >&5 +echo "configure:10815: checking for iconv declaration" >&5 if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -10729,7 +10836,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:10733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_proto_iconv_arg1="" else diff --git a/gdb/configure.host b/gdb/configure.host index 723d87c601e..6f284821015 100644 --- a/gdb/configure.host +++ b/gdb/configure.host @@ -22,6 +22,7 @@ s390*) gdb_host_cpu=s390 ;; sh*) gdb_host_cpu=sh ;; x86_64*) gdb_host_cpu=i386 ;; xscale*) gdb_host_cpu=arm ;; +m32r*) gdb_host_cpu=m32r ;; *) gdb_host_cpu=$host_cpu ;; esac @@ -124,20 +125,16 @@ s390*-*-*) gdb_host=s390 ;; sh*-*-netbsdelf*) gdb_host=nbsd ;; +sparc64-*-freebsd*) gdb_host=fbsd ;; sparc-*-linux*) gdb_host=linux ;; -sparc-*-lynxos*) gdb_host=sparclynx ;; +sparc64-*-linux*) gdb_host=linux64 ;; sparc-*-netbsdelf*) gdb_host=nbsdelf ;; sparc-*-netbsdaout*) gdb_host=nbsdaout ;; sparc-*-netbsd*) gdb_host=nbsdaout ;; -sparc-*-solaris2*) gdb_host=sun4sol2 ;; -sparc-*-sunos4*) gdb_host=sun4os4 ;; -sparc-*-sunos5*) gdb_host=sun4sol2 ;; -sparc-*-*) gdb_host=sun4os4 ;; -sparc64-*-freebsd*|ultrasparc-*-freebsd*|sparcv9-*-freebsd*) - gdb_host=fbsd ;; -sparc64-*-linux*) gdb_host=linux ;; sparc64-*-netbsd*) gdb_host=nbsd64 ;; -sparcv9-*-* | sparc64-*-*) gdb_host=sun4sol2 ;; +sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*) + gdb_host=sol2 + ;; vax-*-bsd*) gdb_host=vaxbsd ;; vax-*-ultrix2*) gdb_host=vaxult2 ;; @@ -147,4 +144,6 @@ x86_64-*-linux*) gdb_host=x86-64linux ;; x86_64-*-freebsd*) gdb_host=fbsd64 ;; x86_64-*-netbsd*) gdb_host=nbsd64 ;; +m32r*-*-linux*) gdb_host=linux ;; + esac diff --git a/gdb/configure.in b/gdb/configure.in index 128c744a46c..2ab32fee7e8 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -317,8 +317,7 @@ case $host_os in LIBS="../libtermcap/libtermcap.a $LIBS" ac_cv_search_tgetent="../libtermcap/libtermcap.a" fi ;; - go32*) - # ??? Is this really true? + go32* | *djgpp*) ac_cv_search_tgetent="none required" ;; aix*) @@ -344,6 +343,7 @@ AC_HEADER_DIRENT AC_HEADER_STAT AC_HEADER_STDC AC_CHECK_HEADERS(link.h) +AC_CHECK_HEADERS(machine/reg.h) AC_CHECK_HEADERS(nlist.h) AC_CHECK_HEADERS(poll.h sys/poll.h) AC_CHECK_HEADERS(proc_service.h thread_db.h) @@ -384,6 +384,18 @@ AC_CHECK_HEADERS(curses.h ncurses.h term.h) # unconditionally, so what's the point in checking these? AC_CHECK_HEADERS(ctype.h time.h) +dnl Check for struct stat with an st_blocks member +AC_MSG_CHECKING(for member st_blocks in struct stat) +AC_CACHE_VAL(gdb_cv_have_struct_stat_with_st_blocks_member, + [AC_TRY_COMPILE([#include +#include ], + [struct stat st; (void) st.st_blocks;], + gdb_cv_have_struct_stat_with_st_blocks_member=yes, + gdb_cv_have_struct_stat_with_st_blocks_member=no)]) +AC_MSG_RESULT($gdb_cv_have_struct_stat_with_st_blocks_member) +if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then + AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) +fi # ------------------------- # # Checks for declarations. # # ------------------------- # @@ -480,6 +492,16 @@ if test "$gdb_with_regex" = yes; then [Define to 1 if the regex included in libiberty should be used.]) fi +# See if degines `struct reg'. +AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg, +[AC_TRY_COMPILE([#include +#include ], [struct reg r;], +gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)]) +if test $gdb_cv_struct_reg = yes; then + AC_DEFINE(HAVE_STRUCT_REG, 1, + [Define to 1 if your system has struct reg in .]) +fi + # See if supports the %fs and %gs i386 segment registers. # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'. AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs, diff --git a/gdb/configure.tgt b/gdb/configure.tgt index d150ccfb3b9..f974631569c 100644 --- a/gdb/configure.tgt +++ b/gdb/configure.tgt @@ -129,6 +129,7 @@ m68*-*-os68k*) gdb_target=os68k ;; # OBSOLETE m68*-*-sunos3*) gdb_target=sun3os3 ;; # OBSOLETE m68*-*-sunos4*) gdb_target=sun3os4 ;; # OBSOLETE m68*-*-sysv4*) gdb_target=m68kv4 ;; +m68*-*-uclinux*) gdb_target=monitor ;; m68*-*-vxworks*) gdb_target=vxworks68 ;; mcore*-*-*) gdb_target=mcore ;; @@ -185,26 +186,19 @@ sh*-*-netbsdelf*) gdb_target=nbsd ;; sh-*-nto*) gdb_target=nto ;; sh*) gdb_target=embed ;; -sparc-*-aout*) gdb_target=sparc-em ;; -sparc-*-coff*) gdb_target=sparc-em ;; -sparc-*-elf*) gdb_target=sparc-em ;; sparc-*-linux*) gdb_target=linux ;; -sparc-*-lynxos*) gdb_target=sparclynx ;; +sparc64-*-linux*) gdb_target=linux64 ;; sparc-*-netbsd*) gdb_target=nbsd ;; -sparc-*-solaris2*) gdb_target=sun4sol2 ;; -sparc-*-sunos4*) gdb_target=sun4os4 ;; -sparc-*-sunos5*) gdb_target=sun4sol2 ;; -sparc-*-vxworks*) gdb_target=vxsparc ;; -sparc-*-*) gdb_target=sun4os4 ;; -# It's not clear what the right solution for "v8plus" systems is yet. -# For now, stick with sparc-sun-solaris2 since that's what config.guess -# should return. Work is still needed to get gdb to print the 64 bit -# regs (some of which are usable in v8plus) so sp64sol.mt hasn't been -# deleted though presumably it should be eventually. -#sparc64-*-solaris2*) gdb_target=sp64sol2 ;; -sparc64-*-linux*) gdb_target=sp64linux ;; sparc64-*-netbsd*) gdb_target=nbsd64 ;; -sparcv9-*-* | sparc64-*-*) gdb_target=sp64 ;; +sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*) + gdb_target=sol2 + ;; +sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*) + gdb_target=sol2-64 + ;; +sparc-*-vxworks*) gdb_target=vxworks ;; +sparc-*-*) gdb_target=sparc ;; +sparc64-*-*) gdb_target=sparc64 ;; xstormy16-*-*) gdb_target=xstormy16 ;; diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 044b4737d50..a766acb470a 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -1,5 +1,5 @@ /* Helper routines for C++ support in GDB. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. Contributed by David Carlton and by Kealia, Inc. @@ -38,14 +38,22 @@ unsigned char processing_has_namespace_info; -/* If processing_has_namespace_info is nonzero, this string should - contain the name of the current namespace. The string is - temporary; copy it if you need it. */ +/* This contains our best guess as to the name of the current + enclosing namespace(s)/class(es), if any. For example, if we're + within the method foo() in the following code: -/* FIXME: carlton/2003-06-12: This isn't entirely reliable: currently, - we get mislead by DW_AT_specification. */ + namespace N { + class C { + void foo () { + } + }; + } + + then processing_current_prefix should be set to "N::C". If + processing_has_namespace_info is false, then this variable might + not be reliable. */ -const char *processing_current_namespace; +const char *processing_current_prefix; /* List of using directives that are active in the current file. */ @@ -223,8 +231,8 @@ cp_set_block_scope (const struct symbol *symbol, if (processing_has_namespace_info) { block_set_scope - (block, obsavestring (processing_current_namespace, - strlen (processing_current_namespace), + (block, obsavestring (processing_current_prefix, + strlen (processing_current_prefix), obstack), obstack); } diff --git a/gdb/cp-support.h b/gdb/cp-support.h index 0e33c14c940..deebb1df28c 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -73,7 +73,7 @@ extern struct type *cp_lookup_rtti_type (const char *name, extern unsigned char processing_has_namespace_info; -extern const char *processing_current_namespace; +extern const char *processing_current_prefix; extern int cp_is_anonymous (const char *namespace); diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 9bcb50eda32..62a583f0fff 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -2087,6 +2087,7 @@ read_dbx_symtab (struct objfile *objfile) case N_OBJ: /* useless types from Solaris */ case N_OPT: + case N_PATCH: /* These symbols aren't interesting; don't worry about them */ continue; @@ -3253,6 +3254,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name, /* The following symbol types can be ignored. */ case N_OBJ: /* Solaris 2: Object file dir and name */ + case N_PATCH: /* Solaris2: Patch Run Time Checker. */ /* N_UNDF: Solaris 2: file separator mark */ /* N_UNDF: -- we will never encounter it, since we only process one file's symbols at once. */ diff --git a/gdb/defs.h b/gdb/defs.h index 9db0af2cdc2..443ad6b0937 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -355,7 +355,6 @@ extern void request_quit (int); extern void do_cleanups (struct cleanup *); extern void do_final_cleanups (struct cleanup *); -extern void do_my_cleanups (struct cleanup **, struct cleanup *); extern void do_run_cleanups (struct cleanup *); extern void do_exec_cleanups (struct cleanup *); extern void do_exec_error_cleanups (struct cleanup *); diff --git a/gdb/disasm.c b/gdb/disasm.c index 20d0ab3404b..3cde2ea9040 100644 --- a/gdb/disasm.c +++ b/gdb/disasm.c @@ -1,6 +1,6 @@ /* Disassemble support for GDB. - Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -164,6 +164,8 @@ do_mixed_source_and_assembly (struct ui_out *uiout, CORE_ADDR pc; int num_displayed = 0; struct cleanup *ui_out_chain; + struct cleanup *ui_out_tuple_chain = make_cleanup (null_cleanup, 0); + struct cleanup *ui_out_list_chain = make_cleanup (null_cleanup, 0); mle = (struct dis_line_entry *) alloca (nlines * sizeof (struct dis_line_entry)); @@ -221,10 +223,6 @@ do_mixed_source_and_assembly (struct ui_out *uiout, for (i = 0; i < newlines; i++) { - struct cleanup *ui_out_tuple_chain = NULL; - struct cleanup *ui_out_list_chain = NULL; - int close_list = 1; - /* Print out everything from next_line to the current line. */ if (mle[i].line >= next_line) { @@ -275,23 +273,23 @@ do_mixed_source_and_assembly (struct ui_out *uiout, next_line = mle[i].line + 1; ui_out_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "line_asm_insn"); - /* Don't close the list if the lines are not in order. */ - if (i < (newlines - 1) && mle[i + 1].line <= mle[i].line) - close_list = 0; } num_displayed += dump_insns (uiout, di, mle[i].start_pc, mle[i].end_pc, how_many, stb); - if (close_list) + + /* When we've reached the end of the mle array, or we've seen the last + assembly range for this source line, close out the list/tuple. */ + if (i == (newlines - 1) || mle[i + 1].line > mle[i].line) { do_cleanups (ui_out_list_chain); do_cleanups (ui_out_tuple_chain); + ui_out_tuple_chain = make_cleanup (null_cleanup, 0); + ui_out_list_chain = make_cleanup (null_cleanup, 0); ui_out_text (uiout, "\n"); - close_list = 0; } - if (how_many >= 0) - if (num_displayed >= how_many) - break; + if (how_many >= 0 && num_displayed >= how_many) + break; } do_cleanups (ui_out_chain); } diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 1bd740159dc..6d8fedaec65 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,13 @@ +2004-01-08 Jason Molenda + Eli Zaretskii + + * gdb.texinfo: Update copyright. + (Objective-C): "methodName" typeo fixed. Add @code/@var markup + around names, as appropriate. Minor syntax cleanup of + _NSPrintForDebugger explanation. Two spaces after periods. + GDBN used instead of lit. "gdb". Index entries added for + print-object and _NSPrintForDebugger. @noindent added in one spot. + 2003-11-11 Elena Zannoni * stabs.texinfo: Add dircategory and direntry commands. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index f470800cdce..bc231b4db3d 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, -@c 1999, 2000, 2001, 2002, 2003 +@c 1999, 2000, 2001, 2002, 2003, 2004 @c Free Software Foundation, Inc. @c @c %**start of header @@ -52,7 +52,7 @@ This is the @value{EDITION} Edition, of @cite{Debugging with Version @value{GDBVN}. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@* - 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or @@ -115,7 +115,7 @@ This file describes @value{GDBN}, the @sc{gnu} symbolic debugger. This is the @value{EDITION} Edition, for @value{GDBN} Version @value{GDBVN}. -Copyright (C) 1988-2003 Free Software Foundation, Inc. +Copyright (C) 1988-2004 Free Software Foundation, Inc. @menu * Summary:: Summary of @value{GDBN} @@ -8482,12 +8482,13 @@ A fully qualified Objective-C method name is specified as -[@var{Class} @var{methodName}] @end smallexample -where the minus sign is used to indicate an instance method and a plus -sign (not shown) is used to indicate a class method. The -class name @var{Class} and method name @var{methoName} are enclosed in -brackets, similar to the way messages are specified in Objective-C source -code. For example, to set a breakpoint at the @code{create} instance method of -class @code{Fruit} in the program currently being debugged, enter: +where the minus sign is used to indicate an instance method and a +plus sign (not shown) is used to indicate a class method. The class +name @var{Class} and method name @var{methodName} are enclosed in +brackets, similar to the way messages are specified in Objective-C +source code. For example, to set a breakpoint at the @code{create} +instance method of class @code{Fruit} in the program currently being +debugged, enter: @smallexample break -[Fruit create] @@ -8500,10 +8501,10 @@ enter: list +[NSText initialize] @end smallexample -In the current version of GDB, the plus or minus sign is required. In -future versions of GDB, the plus or minus sign will be optional, but you -can use it to narrow the search. It is also possible to specify just a -method name: +In the current version of @value{GDBN}, the plus or minus sign is +required. In future versions of @value{GDBN}, the plus or minus +sign will be optional, but you can use it to narrow the search. It +is also possible to specify just a method name: @smallexample break create @@ -8524,20 +8525,24 @@ clear -[NSWindow makeKeyAndOrderFront:] @node The Print Command with Objective-C @subsubsection The Print Command With Objective-C +@kindex print-object +@kindex po @r{(@code{print-object})} -The print command has also been extended to accept methods. For example: +The print command has also been extended to accept methods. For example: @smallexample -print -[object hash] +print -[@var{object} hash] @end smallexample @cindex print an Objective-C object description -will tell gdb to send the -hash message to object and print the -result. Also an additional command has been added, @code{print-object} -or @code{po} for short, which is meant to print the description of an -object. However, this command may only work with certain Objective-C -libraries that have a particular hook function, called -@code{_NSPrintForDebugger} defined. +@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects +@noindent +will tell @value{GDBN} to send the @code{hash} message to @var{object} +and print the result. Also, an additional command has been added, +@code{print-object} or @code{po} for short, which is meant to print +the description of an object. However, this command may only work +with certain Objective-C libraries that have a particular hook +function, @code{_NSPrintForDebugger}, defined. @node Modula-2, , Objective-C, Support @subsection Modula-2 diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index aed3f3a10d6..84bc1c2d50c 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -105,6 +105,7 @@ enum dwarf2_reg_rule about a register, leaving how to obtain its value totally unspecified. */ REG_UNSPECIFIED = 0, + /* The term "undefined" comes from the DWARF2 CFI spec which this code is moddeling; it indicates that the register's value is "undefined". GCC uses the less formal term "unsaved". Its @@ -115,7 +116,12 @@ enum dwarf2_reg_rule REG_SAVED_OFFSET, REG_SAVED_REG, REG_SAVED_EXP, - REG_SAME_VALUE + REG_SAME_VALUE, + + /* These aren't defined by the DWARF2 CFI specification, but are + used internally by GDB. */ + REG_RA, /* Return Address. */ + REG_CFA /* Call Frame Address. */ }; struct dwarf2_frame_state @@ -547,13 +553,43 @@ dwarf2_frame_cache (struct frame_info *next_frame, void **this_cache) internal_error (__FILE__, __LINE__, "Unknown CFA rule."); } - /* Initialize things so that all registers are marked as - unspecified. */ + /* Initialize the register rules. If we have a register that acts + as a program counter, mark it as a destination for the return + address. If we have a register that serves as the stack pointer, + arrange for it to be filled with the call frame address (CFA). + The other registers are marked as unspecified. + + We copy the return address to the program counter, since many + parts in GDB assume that it is possible to get the return address + by unwind the program counter register. However, on ISA's with a + dedicated return address register, the CFI usually only contains + information to unwind that return address register. + + The reason we're treating the stack pointer special here is + because in many cases GCC doesn't emit CFI for the stack pointer + and implicitly assumes that it is equal to the CFA. This makes + some sense since the DWARF specification (version 3, draft 8, + p. 102) says that: + + "Typically, the CFA is defined to be the value of the stack + pointer at the call site in the previous frame (which may be + different from its value on entry to the current frame)." + + However, this isn't true for all platforms supported by GCC + (e.g. IBM S/390 and zSeries). For those targets we should + override the defaults given here. */ { int regnum; for (regnum = 0; regnum < num_regs; regnum++) - cache->reg[regnum].how = REG_UNSPECIFIED; + { + if (regnum == PC_REGNUM) + cache->reg[regnum].how = REG_RA; + else if (regnum == SP_REGNUM) + cache->reg[regnum].how = REG_CFA; + else + cache->reg[regnum].how = REG_UNSPECIFIED; + } } /* Go through the DWARF2 CFI generated table and save its register @@ -590,35 +626,33 @@ dwarf2_frame_cache (struct frame_info *next_frame, void **this_cache) complaint (&symfile_complaints, "Incomplete CFI data; unspecified registers at 0x%s", paddr (fs->pc)); - - cache->reg[regnum] = fs->regs.reg[column]; + else + cache->reg[regnum] = fs->regs.reg[column]; } } - /* Store the location of the return addess. If the return address - column (adjusted) is not the same as GDB's PC_REGNUM, then this - implies a copy from the return address column register. */ - if (fs->retaddr_column < fs->regs.num_regs - && fs->regs.reg[fs->retaddr_column].how != REG_UNDEFINED) - { - /* See comment above about a possibly negative PC_REGNUM. If - this assertion fails, it's a problem with this code and not - the architecture. */ - gdb_assert (PC_REGNUM >= 0); - cache->reg[PC_REGNUM] = fs->regs.reg[fs->retaddr_column]; - } - else - { - if (DWARF2_REG_TO_REGNUM (fs->retaddr_column) != PC_REGNUM) - { - /* See comment above about PC_REGNUM being negative. If - this assertion fails, it's a problem with this code and - not the architecture. */ - gdb_assert (PC_REGNUM >= 0); - cache->reg[PC_REGNUM].loc.reg = fs->retaddr_column; - cache->reg[PC_REGNUM].how = REG_SAVED_REG; - } - } + /* Eliminate any REG_RA rules. */ + { + int regnum; + + for (regnum = 0; regnum < num_regs; regnum++) + { + if (cache->reg[regnum].how == REG_RA) + { + if (fs->retaddr_column < fs->regs.num_regs) + cache->reg[regnum] = fs->regs.reg[fs->retaddr_column]; + else + { + /* It turns out that GCC assumes that if the return + address column is "empty" the return address can be + found in the register corresponding to the return + address column. */ + cache->reg[regnum].loc.reg = fs->retaddr_column; + cache->reg[regnum].how = REG_SAVED_REG; + } + } + } + } do_cleanups (old_chain); @@ -654,42 +688,7 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache, *lvalp = not_lval; *addrp = 0; *realnump = -1; - if (regnum == SP_REGNUM) - { - /* GCC defines the CFA as the value of the stack pointer - just before the call instruction is executed. Do other - compilers use the same definition? */ - /* DWARF V3 Draft 7 p102: Typically, the CFA is defined to - be the value of the stack pointer at the call site in the - previous frame (which may be different from its value on - entry to the current frame). */ - /* DWARF V3 Draft 7 p103: The first column of the rules - defines the rule which computes the CFA value; it may be - either a register and a signed offset that are added - together or a DWARF expression that is evaluated. */ - /* FIXME: cagney/2003-07-07: I don't understand this. The - CFI info should have provided unwind information for the - SP register and then pointed ->cfa_reg at it, not the - reverse. Assuming that SP_REGNUM isn't negative, there - is a very real posibility that CFA is an offset from some - other register, having nothing to do with the unwound SP - value. */ - /* FIXME: cagney/2003-09-05: I think I understand. GDB was - lumping the two states "unspecified" and "undefined" - together. Here SP_REGNUM was "unspecified", GCC assuming - that in such a case CFA would be used. This branch of - the if statement should be deleted - the problem of - SP_REGNUM is now handed by the case REG_UNSPECIFIED - below. */ - *optimizedp = 0; - if (valuep) - { - /* Store the value. */ - store_typed_address (valuep, builtin_type_void_data_ptr, - cache->cfa); - } - } - else if (valuep) + if (valuep) { /* In some cases, for example %eflags on the i386, we have to provide a sane value, even though this register wasn't @@ -740,48 +739,8 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache, "undefined"). Code above issues a complaint about this. Here just fudge the books, assume GCC, and that the value is more inner on the stack. */ - if (SP_REGNUM >= 0 && regnum == SP_REGNUM) - { - /* Can things get worse? Yep! One of the registers GCC - forgot to provide unwind information for was the stack - pointer. Outch! GCC appears to assumes that the CFA - address can be used - after all it points to the inner - most address of the previous frame before the function - call and that's always the same as the stack pointer on - return, right? Wrong. See GCC's i386 STDCALL option for - an ABI that has a different entry and return stack - pointer. */ - /* DWARF V3 Draft 7 p102: Typically, the CFA is defined to - be the value of the stack pointer at the call site in the - previous frame (which may be different from its value on - entry to the current frame). */ - /* DWARF V3 Draft 7 p103: The first column of the rules - defines the rule which computes the CFA value; it may be - either a register and a signed offset that are added - together or a DWARF expression that is evaluated. */ - /* NOTE: cagney/2003-09-05: Should issue a complaint. - Unfortunately it turns out that DWARF2 CFI has a problem. - Since CFI specifies the location at which a register was - saved (not its value) it isn't possible to specify - something like "unwound(REG) == REG + constant" using CFI - as will almost always occure with the stack pointer. I - guess CFI should be point SP at CFA. Ref: danielj, - "Describing unsaved stack pointers", posted to dwarf2 - list 2003-08-15. */ - *optimizedp = 0; - *lvalp = not_lval; - *addrp = 0; - *realnump = -1; - if (valuep) - /* Store the value. */ - store_typed_address (valuep, builtin_type_void_data_ptr, - cache->cfa); - } - else - /* Assume that the register can be found in the next inner - most frame. */ - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + frame_register_unwind (next_frame, regnum, + optimizedp, lvalp, addrp, realnump, valuep); break; case REG_SAME_VALUE: @@ -789,6 +748,18 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache, optimizedp, lvalp, addrp, realnump, valuep); break; + case REG_CFA: + *optimizedp = 0; + *lvalp = not_lval; + *addrp = 0; + *realnump = -1; + if (valuep) + { + /* Store the value. */ + store_typed_address (valuep, builtin_type_void_data_ptr, cache->cfa); + } + break; + default: internal_error (__FILE__, __LINE__, "Unknown register rule."); } diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 94951cbaa3d..b3c2be923e1 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1,5 +1,6 @@ /* DWARF 2 debugging format support for GDB. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + 2004 Free Software Foundation, Inc. Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology, @@ -808,6 +809,9 @@ static void read_common_block (struct die_info *, struct dwarf2_cu *); static void read_namespace (struct die_info *die, struct dwarf2_cu *); +static const char *namespace_name (struct die_info *die, + int *is_anonymous); + static void read_enumeration (struct die_info *, struct dwarf2_cu *); static struct type *dwarf_base_type (int, int, struct dwarf2_cu *); @@ -1423,6 +1427,7 @@ add_partial_symbol (struct partial_die_info *pdi, { struct objfile *objfile = cu->objfile; CORE_ADDR addr = 0; + char *actual_name = pdi->name; const struct partial_symbol *psym = NULL; switch (pdi->tag) @@ -1430,9 +1435,9 @@ add_partial_symbol (struct partial_die_info *pdi, case DW_TAG_subprogram: if (pdi->is_external) { - /*prim_record_minimal_symbol (pdi->name, pdi->lowpc + baseaddr, + /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr, mst_text, objfile); */ - psym = add_psymbol_to_list (pdi->name, strlen (pdi->name), + psym = add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_BLOCK, &objfile->global_psymbols, 0, pdi->lowpc + baseaddr, @@ -1440,9 +1445,9 @@ add_partial_symbol (struct partial_die_info *pdi, } else { - /*prim_record_minimal_symbol (pdi->name, pdi->lowpc + baseaddr, + /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr, mst_file_text, objfile); */ - psym = add_psymbol_to_list (pdi->name, strlen (pdi->name), + psym = add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_BLOCK, &objfile->static_psymbols, 0, pdi->lowpc + baseaddr, @@ -1468,7 +1473,7 @@ add_partial_symbol (struct partial_die_info *pdi, if (pdi->locdesc) addr = decode_locdesc (pdi->locdesc, cu); if (pdi->locdesc || pdi->has_type) - psym = add_psymbol_to_list (pdi->name, strlen (pdi->name), + psym = add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_STATIC, &objfile->global_psymbols, 0, addr + baseaddr, @@ -1480,9 +1485,9 @@ add_partial_symbol (struct partial_die_info *pdi, if (pdi->locdesc == NULL) return; addr = decode_locdesc (pdi->locdesc, cu); - /*prim_record_minimal_symbol (pdi->name, addr + baseaddr, + /*prim_record_minimal_symbol (actual_name, addr + baseaddr, mst_file_data, objfile); */ - psym = add_psymbol_to_list (pdi->name, strlen (pdi->name), + psym = add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_STATIC, &objfile->static_psymbols, 0, addr + baseaddr, @@ -1491,7 +1496,7 @@ add_partial_symbol (struct partial_die_info *pdi, break; case DW_TAG_typedef: case DW_TAG_base_type: - add_psymbol_to_list (pdi->name, strlen (pdi->name), + add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, 0, (CORE_ADDR) 0, cu_language, objfile); @@ -1504,7 +1509,7 @@ add_partial_symbol (struct partial_die_info *pdi, references. */ if (pdi->has_children == 0) return; - add_psymbol_to_list (pdi->name, strlen (pdi->name), + add_psymbol_to_list (actual_name, strlen (actual_name), STRUCT_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, 0, (CORE_ADDR) 0, cu_language, objfile); @@ -1512,14 +1517,14 @@ add_partial_symbol (struct partial_die_info *pdi, if (cu_language == language_cplus) { /* For C++, these implicitly act as typedefs as well. */ - add_psymbol_to_list (pdi->name, strlen (pdi->name), + add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, 0, (CORE_ADDR) 0, cu_language, objfile); } break; case DW_TAG_enumerator: - add_psymbol_to_list (pdi->name, strlen (pdi->name), + add_psymbol_to_list (actual_name, strlen (actual_name), VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, 0, (CORE_ADDR) 0, cu_language, objfile); @@ -1862,7 +1867,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) if (!processing_has_namespace_info) { processing_has_namespace_info = 1; - processing_current_namespace = ""; + processing_current_prefix = ""; } read_namespace (die, cu); break; @@ -1877,7 +1882,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) if (!processing_has_namespace_info) { processing_has_namespace_info = 1; - processing_current_namespace = ""; + processing_current_prefix = ""; } gdb_assert (die->child == NULL); break; @@ -3094,12 +3099,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) { dwarf2_non_const_array_bound_ignored_complaint (dwarf_form_name (attr->form)); -#ifdef FORTRAN_HACK - die->type = lookup_pointer_type (element_type); - return; -#else low = 0; -#endif } } attr = dwarf_attr (child_die, DW_AT_upper_bound); @@ -3136,12 +3136,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) { dwarf2_non_const_array_bound_ignored_complaint (dwarf_form_name (attr->form)); -#ifdef FORTRAN_HACK - die->type = lookup_pointer_type (element_type); - return; -#else high = 1; -#endif } } @@ -3233,45 +3228,30 @@ static void read_namespace (struct die_info *die, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; - const char *previous_namespace = processing_current_namespace; + const char *previous_prefix = processing_current_prefix; const char *name = NULL; int is_anonymous; struct die_info *current_die; - /* Loop through the extensions until we find a name. */ - - for (current_die = die; - current_die != NULL; - current_die = dwarf2_extension (die)) - { - name = dwarf2_name (current_die); - if (name != NULL) - break; - } - - /* Is it an anonymous namespace? */ - - is_anonymous = (name == NULL); - if (is_anonymous) - name = "(anonymous namespace)"; + name = namespace_name (die, &is_anonymous); /* Now build the name of the current namespace. */ - if (previous_namespace[0] == '\0') + if (previous_prefix[0] == '\0') { - processing_current_namespace = name; + processing_current_prefix = name; } else { - /* We need temp_name around because processing_current_namespace + /* We need temp_name around because processing_current_prefix is a const char *. */ - char *temp_name = alloca (strlen (previous_namespace) + char *temp_name = alloca (strlen (previous_prefix) + 2 + strlen(name) + 1); - strcpy (temp_name, previous_namespace); + strcpy (temp_name, previous_prefix); strcat (temp_name, "::"); strcat (temp_name, name); - processing_current_namespace = temp_name; + processing_current_prefix = temp_name; } /* Add a symbol associated to this if we haven't seen the namespace @@ -3285,16 +3265,16 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) /* FIXME: carlton/2003-06-27: Once GDB is more const-correct, this cast will hopefully become unnecessary. */ type = init_type (TYPE_CODE_NAMESPACE, 0, 0, - (char *) processing_current_namespace, + (char *) processing_current_prefix, objfile); TYPE_TAG_NAME (type) = TYPE_NAME (type); new_symbol (die, type, cu); if (is_anonymous) - cp_add_using_directive (processing_current_namespace, - strlen (previous_namespace), - strlen (processing_current_namespace)); + cp_add_using_directive (processing_current_prefix, + strlen (previous_prefix), + strlen (processing_current_prefix)); } if (die->child != NULL) @@ -3308,7 +3288,37 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) } } - processing_current_namespace = previous_namespace; + processing_current_prefix = previous_prefix; +} + +/* Return the name of the namespace represented by DIE. Set + *IS_ANONYMOUS to tell whether or not the namespace is an anonymous + namespace. */ + +static const char * +namespace_name (struct die_info *die, int *is_anonymous) +{ + struct die_info *current_die; + const char *name = NULL; + + /* Loop through the extensions until we find a name. */ + + for (current_die = die; + current_die != NULL; + current_die = dwarf2_extension (die)) + { + name = dwarf2_name (current_die); + if (name != NULL) + break; + } + + /* Is it an anonymous namespace? */ + + *is_anonymous = (name == NULL); + if (*is_anonymous) + name = "(anonymous namespace)"; + + return name; } /* Extract all information from a DW_TAG_pointer_type DIE and add to diff --git a/gdb/exec.h b/gdb/exec.h index e9c2d17bf7a..d0862516c97 100644 --- a/gdb/exec.h +++ b/gdb/exec.h @@ -28,7 +28,7 @@ struct section_table; struct target_ops; struct bfd; -struct target_ops exec_ops; +extern struct target_ops exec_ops; /* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR. Returns 0 if OK, 1 on error. */ diff --git a/gdb/frame.c b/gdb/frame.c index 1d378913fb4..a7da9196b0f 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1,7 +1,7 @@ /* Cache and manage frames for GDB, the GNU debugger. Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, - 2001, 2002, 2003 Free Software Foundation, Inc. + 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -1726,7 +1726,12 @@ legacy_get_prev_frame (struct frame_info *this_frame) /* Return a structure containing various interesting information about the frame that called THIS_FRAME. Returns NULL - if there is no such frame. */ + if there is no such frame. + + This function tests some target-independent conditions that should + terminate the frame chain, such as unwinding past main(). It + should not contain any target-dependent tests, such as checking + whether the program-counter is zero. */ struct frame_info * get_prev_frame (struct frame_info *this_frame) @@ -1943,37 +1948,6 @@ get_prev_frame (struct frame_info *this_frame) prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info); prev_frame->level = this_frame->level + 1; - /* Try to unwind the PC. If that doesn't work, assume we've reached - the oldest frame and simply return. Is there a better sentinal - value? The unwound PC value is then used to initialize the new - previous frame's type. - - Note that the pc-unwind is intentionally performed before the - frame chain. This is ok since, for old targets, both - frame_pc_unwind (nee, FRAME_SAVED_PC) and - DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures - have already been initialized (using - DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order - doesn't matter. - - By unwinding the PC first, it becomes possible to, in the case of - a dummy frame, avoid also unwinding the frame ID. This is - because (well ignoring the PPC) a dummy frame can be located - using THIS_FRAME's frame ID. */ - - if (frame_pc_unwind (this_frame) == 0) - { - /* The allocated PREV_FRAME will be reclaimed when the frame - obstack is next purged. */ - if (frame_debug) - { - fprintf_unfiltered (gdb_stdlog, "-> "); - fprint_frame (gdb_stdlog, NULL); - fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n"); - } - return NULL; - } - /* Don't yet compute ->unwind (and hence ->type). It is computed on-demand in get_frame_type, frame_register_unwind, and get_frame_id. */ diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c index fc4df5d65f4..0932ddb541c 100644 --- a/gdb/go32-nat.c +++ b/gdb/go32-nat.c @@ -1515,7 +1515,7 @@ go32_sldt (char *arg, int from_tty) if (ldt_entry < 0 || (ldt_entry & 4) == 0 || (ldt_entry & 3) != (cpl & 3)) - error ("Invalid LDT entry 0x%03x.", ldt_entry); + error ("Invalid LDT entry 0x%03lx.", (unsigned long)ldt_entry); } } @@ -1553,8 +1553,8 @@ go32_sldt (char *arg, int from_tty) if (ldt_entry >= 0) { if (ldt_entry > limit) - error ("Invalid LDT entry %#x: outside valid limits [0..%#x]", - ldt_entry, limit); + error ("Invalid LDT entry %#lx: outside valid limits [0..%#x]", + (unsigned long)ldt_entry, limit); display_descriptor (ldt_descr.stype, base, ldt_entry / 8, 1); } @@ -1584,8 +1584,8 @@ go32_sgdt (char *arg, int from_tty) { gdt_entry = parse_and_eval_long (arg); if (gdt_entry < 0 || (gdt_entry & 7) != 0) - error ("Invalid GDT entry 0x%03x: not an integral multiple of 8.", - gdt_entry); + error ("Invalid GDT entry 0x%03lx: not an integral multiple of 8.", + (unsigned long)gdt_entry); } } @@ -1595,8 +1595,8 @@ go32_sgdt (char *arg, int from_tty) if (gdt_entry >= 0) { if (gdt_entry > gdtr.limit) - error ("Invalid GDT entry %#x: outside valid limits [0..%#x]", - gdt_entry, gdtr.limit); + error ("Invalid GDT entry %#lx: outside valid limits [0..%#x]", + (unsigned long)gdt_entry, gdtr.limit); display_descriptor (0, gdtr.base, gdt_entry / 8, 1); } @@ -1625,7 +1625,7 @@ go32_sidt (char *arg, int from_tty) { idt_entry = parse_and_eval_long (arg); if (idt_entry < 0) - error ("Invalid (negative) IDT entry %d.", idt_entry); + error ("Invalid (negative) IDT entry %ld.", idt_entry); } } @@ -1637,8 +1637,8 @@ go32_sidt (char *arg, int from_tty) if (idt_entry >= 0) { if (idt_entry > idtr.limit) - error ("Invalid IDT entry %#x: outside valid limits [0..%#x]", - idt_entry, idtr.limit); + error ("Invalid IDT entry %#lx: outside valid limits [0..%#x]", + (unsigned long)idt_entry, idtr.limit); display_descriptor (1, idtr.base, idt_entry, 1); } @@ -1834,7 +1834,7 @@ display_page_table (long n, int force) static void go32_pte (char *arg, int from_tty) { - long pde_idx = -1, i; + long pde_idx = -1L, i; if (arg && *arg) { @@ -1845,7 +1845,7 @@ go32_pte (char *arg, int from_tty) { pde_idx = parse_and_eval_long (arg); if (pde_idx < 0 || pde_idx >= 1024) - error ("Entry %d is outside valid limits [0..1023].", pde_idx); + error ("Entry %ld is outside valid limits [0..1023].", pde_idx); } } diff --git a/gdb/hpread.c b/gdb/hpread.c index 40875f79377..246f77ec0c5 100644 --- a/gdb/hpread.c +++ b/gdb/hpread.c @@ -1,6 +1,6 @@ /* Read hp debug symbols and convert to internal format, for GDB. - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -4160,16 +4160,19 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp, list->field.name = VT (objfile) + fieldp->dfield.name; - /* A FIELD by itself (without a GENFIELD) can also be a static member */ - FIELD_STATIC_KIND (list->field) = 0; + /* A FIELD by itself (without a GENFIELD) can also be a static + member. Mark it as static with a physname of NULL. + fix_static_member_physnames will assign the physname later. */ if (fieldp->dfield.staticmem) { - FIELD_BITPOS (list->field) = -1; + SET_FIELD_PHYSNAME (list->field, NULL); + FIELD_BITPOS (list->field) = 0; FIELD_BITSIZE (list->field) = 0; } else /* Non-static data member */ { + FIELD_STATIC_KIND (list->field) = 0; FIELD_BITPOS (list->field) = fieldp->dfield.bitoffset; if (fieldp->dfield.bitlength % 8) FIELD_BITSIZE (list->field) = fieldp->dfield.bitlength; diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c index bb161438690..16436615883 100644 --- a/gdb/i386-linux-nat.c +++ b/gdb/i386-linux-nat.c @@ -641,6 +641,8 @@ store_inferior_registers (int regno) } +/* Support for debug registers. */ + static unsigned long i386_linux_dr_get (int regnum) { diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c index 2aa964e8acf..0da32d5c0e2 100644 --- a/gdb/i386-sol2-tdep.c +++ b/gdb/i386-sol2-tdep.c @@ -53,6 +53,20 @@ i386_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name) return (pc == 0xffffffff); } +/* Solaris doesn't have a `struct sigcontext', but it does have a + `mcontext_t' that contains the saved set of machine registers. */ + +static CORE_ADDR +i386_sol2_mcontext_addr (struct frame_info *next_frame) +{ + CORE_ADDR sp, ucontext_addr; + + sp = frame_unwind_register_unsigned (next_frame, I386_ESP_REGNUM); + ucontext_addr = get_frame_memory_unsigned (next_frame, sp + 8, 4); + + return ucontext_addr + 36; +} + /* Solaris 2. */ static void @@ -71,6 +85,10 @@ i386_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) tdep->sizeof_gregset = 19 * 4; tdep->sizeof_fpregset = 380; + tdep->sigcontext_addr = i386_sol2_mcontext_addr; + tdep->sc_reg_offset = tdep->gregset_reg_offset; + tdep->sc_num_regs = tdep->gregset_num_regs; + /* Signal trampolines are slightly different from SVR4. */ set_gdbarch_pc_in_sigtramp (gdbarch, i386_sol2_pc_in_sigtramp); } diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index c261e38c61c..70f6b8fec24 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -27,6 +27,7 @@ struct frame_info; struct gdbarch; struct reggroup; struct regset; +struct regcache; /* GDB's i386 target supports both the 32-bit Intel Architecture (IA-32) and the 64-bit AMD x86-64 architecture. Internally it uses @@ -164,6 +165,8 @@ enum i386_regnum I386_EDI_REGNUM, /* %edi */ I386_EIP_REGNUM, /* %eip */ I386_EFLAGS_REGNUM, /* %eflags */ + I386_CS_REGNUM, /* %cs */ + I386_SS_REGNUM, /* %ss */ I386_ST0_REGNUM = 16, /* %st(0) */ }; diff --git a/gdb/i386bsd-tdep.c b/gdb/i386bsd-tdep.c index 80739cf572d..67d09ee14d7 100644 --- a/gdb/i386bsd-tdep.c +++ b/gdb/i386bsd-tdep.c @@ -144,6 +144,15 @@ i386bsd_aout_osabi_sniffer (bfd *abfd) return GDB_OSABI_UNKNOWN; } +static enum gdb_osabi +i386bsd_core_osabi_sniffer (bfd *abfd) +{ + if (strcmp (bfd_get_target (abfd), "netbsd-core") == 0) + return GDB_OSABI_NETBSD_AOUT; + + return GDB_OSABI_UNKNOWN; +} + /* Provide a prototype to silence -Wmissing-prototypes. */ void _initialize_i386bsd_tdep (void); @@ -153,4 +162,9 @@ _initialize_i386bsd_tdep (void) { gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_aout_flavour, i386bsd_aout_osabi_sniffer); + + /* BFD doesn't set the architecture for NetBSD style a.out core + files. */ + gdbarch_register_osabi_sniffer (bfd_arch_unknown, bfd_target_unknown_flavour, + i386bsd_core_osabi_sniffer); } diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c index a7e944150df..ed7a771a900 100644 --- a/gdb/i386obsd-tdep.c +++ b/gdb/i386obsd-tdep.c @@ -1,4 +1,5 @@ /* Target-dependent code for OpenBSD/i386. + Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. @@ -23,60 +24,74 @@ #include "arch-utils.h" #include "gdbcore.h" #include "regcache.h" +#include "regset.h" #include "osabi.h" +#include "gdb_assert.h" +#include "gdb_string.h" + #include "i386-tdep.h" #include "i387-tdep.h" -/* Provide a prototype to silence -Wmissing-prototypes. */ -void _initialize_i386obsd_tdep (void); - -#define SIZEOF_STRUCT_REG (16 * 4) +/* From . */ +static int i386obsd_r_reg_offset[] = +{ + 0 * 4, /* %eax */ + 1 * 4, /* %ecx */ + 2 * 4, /* %edx */ + 3 * 4, /* %ebx */ + 4 * 4, /* %esp */ + 5 * 4, /* %ebp */ + 6 * 4, /* %esi */ + 7 * 4, /* %edi */ + 8 * 4, /* %eip */ + 9 * 4, /* %eflags */ + 10 * 4, /* %cs */ + 11 * 4, /* %ss */ + 12 * 4, /* %ds */ + 13 * 4, /* %es */ + 14 * 4, /* %fs */ + 15 * 4 /* %gs */ +}; static void -i386obsd_supply_reg (char *regs, int regno) +i386obsd_aout_supply_regset (const struct regset *regset, + struct regcache *regcache, int regnum, + const void *regs, size_t len) { - int i; + const struct gdbarch_tdep *tdep = regset->descr; + + gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE); - for (i = 0; i <= 15; i++) - if (regno == i || regno == -1) - supply_register (i, regs + i * 4); + i386_supply_gregset (regset, regcache, regnum, regs, tdep->sizeof_gregset); + i387_supply_fsave (regcache, regnum, (char *) regs + tdep->sizeof_gregset); } -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +const struct regset * +i386obsd_aout_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, + size_t sect_size) { - char *regs, *fsave; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - /* We get everything from one section. */ - if (which != 0) - return; + /* OpenBSD a.out core dumps don't use seperate register sets for the + general-purpose and floating-point registers. */ - if (core_reg_size < (SIZEOF_STRUCT_REG + 108)) + if (strcmp (sect_name, ".reg") == 0 + && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE) { - warning ("Wrong size register set in core file."); - return; + if (tdep->gregset == NULL) + { + tdep->gregset = XMALLOC (struct regset); + tdep->gregset->descr = tdep; + tdep->gregset->supply_regset = i386obsd_aout_supply_regset; + } + return tdep->gregset; } - regs = core_reg_sect; - fsave = core_reg_sect + SIZEOF_STRUCT_REG; - - /* Integer registers. */ - i386obsd_supply_reg (regs, -1); - - /* Floating point registers. */ - i387_supply_fsave (current_regcache, -1, fsave); + return NULL; } -static struct core_fns i386obsd_core_fns = -{ - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL /* next */ -}; CORE_ADDR i386obsd_sigtramp_start = 0xbfbfdf20; @@ -111,6 +126,15 @@ i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* Obviously OpenBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); + /* OpenBSD has a different `struct reg'. */ + tdep->gregset_reg_offset = i386obsd_r_reg_offset; + tdep->gregset_num_regs = ARRAY_SIZE (i386obsd_r_reg_offset); + tdep->sizeof_gregset = 16 * 4; + + /* OpenBSD has a single register set. */ + set_gdbarch_regset_from_core_section + (gdbarch, i386obsd_aout_regset_from_core_section); + /* OpenBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; @@ -121,14 +145,16 @@ i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* OpenBSD has a `struct sigcontext' that's different from the origional 4.3 BSD. */ tdep->sc_reg_offset = i386obsd_sc_reg_offset; - tdep->sc_num_regs = I386_NUM_GREGS; + tdep->sc_num_regs = ARRAY_SIZE (i386obsd_sc_reg_offset); } + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_i386obsd_tdep (void); void _initialize_i386obsd_tdep (void) { - add_core_fns (&i386obsd_core_fns); - /* FIXME: kettenis/20021020: Since OpenBSD/i386 binaries are indistingushable from NetBSD/i386 a.out binaries, building a GDB that should support both these targets will probably not work as diff --git a/gdb/ia64-linux-tdep.c b/gdb/ia64-linux-tdep.c index 25902c57000..e465c3249aa 100644 --- a/gdb/ia64-linux-tdep.c +++ b/gdb/ia64-linux-tdep.c @@ -1,5 +1,5 @@ /* Target-dependent code for the IA-64 for GDB, the GNU debugger. - Copyright 2000 + Copyright 2000, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -29,7 +29,7 @@ overly generous to allow for different pages sizes. */ #define GATE_AREA_START 0xa000000000000100LL -#define GATE_AREA_END 0xa000000000010000LL +#define GATE_AREA_END 0xa000000000020000LL /* Offset to sigcontext structure from frame of handler */ #define IA64_LINUX_SIGCONTEXT_OFFSET 192 diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 88e0e20c072..760a17d1a4f 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -2480,9 +2480,9 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, return -UNW_ENOINFO; if (gdbarch_debug >= 1) - fprintf_unfiltered (gdb_stdlog, "%s: %lx -> " + fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %lx -> " "(name=`%s',segbase=%lx,start=%lx,end=%lx,gp=%lx," - "length=%lu,data=%p)\n", __FUNCTION__, + "length=%lu,data=%p)\n", ip, (char *)di.u.ti.name_ptr, di.u.ti.segbase, di.start_ip, di.end_ip, di.gp, di.u.ti.table_len, di.u.ti.table_data); @@ -2494,9 +2494,9 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, return ret; if (gdbarch_debug >= 1) - fprintf_unfiltered (gdb_stdlog, "%s: %lx -> " + fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %lx -> " "(name=`%s',segbase=%lx,start=%lx,end=%lx,gp=%lx," - "length=%lu,data=%lx)\n", __FUNCTION__, + "length=%lu,data=%lx)\n", ip, (char *)di.u.rti.name_ptr, di.u.rti.segbase, di.start_ip, di.end_ip, di.gp, di.u.rti.table_len, di.u.rti.table_data); @@ -3356,12 +3356,14 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) 0, "builtin_type_ia64_ext", NULL); TYPE_FLOATFORMAT (builtin_type_ia64_ext) = &floatformat_ia64_ext; - /* According to the ia64 specs, instructions that store long double floats - in memory use a long-double format different than that used in the floating - registers. The memory format matches the x86 extended float format which is - 80 bits. An OS may choose to use this format (e.g. Linux) or choose to use - a different format for storing long doubles (e.g. HPUX). In the latter case, - the setting of the format may be moved/overridden in an OS-specific tdep file. */ + /* According to the ia64 specs, instructions that store long double + floats in memory use a long-double format different than that + used in the floating registers. The memory format matches the + x86 extended float format which is 80 bits. An OS may choose to + use this format (e.g. GNU/Linux) or choose to use a different + format for storing long doubles (e.g. HPUX). In the latter case, + the setting of the format may be moved/overridden in an + OS-specific tdep file. */ set_gdbarch_long_double_format (gdbarch, &floatformat_i387_ext); set_gdbarch_short_bit (gdbarch, 16); diff --git a/gdb/infrun.c b/gdb/infrun.c index b16cc62091f..4e615d519e0 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -987,6 +987,7 @@ struct execution_control_state void init_execution_control_state (struct execution_control_state *ecs); +static void handle_step_into_function (struct execution_control_state *ecs); void handle_inferior_event (struct execution_control_state *ecs); static void check_sigtramp2 (struct execution_control_state *ecs); @@ -1236,6 +1237,95 @@ pc_in_sigtramp (CORE_ADDR pc) return PC_IN_SIGTRAMP (pc, name); } +/* Handle the inferior event in the cases when we just stepped + into a function. */ + +static void +handle_step_into_function (struct execution_control_state *ecs) +{ + CORE_ADDR real_stop_pc; + + if ((step_over_calls == STEP_OVER_NONE) + || ((step_range_end == 1) + && in_prologue (prev_pc, ecs->stop_func_start))) + { + /* I presume that step_over_calls is only 0 when we're + supposed to be stepping at the assembly language level + ("stepi"). Just stop. */ + /* Also, maybe we just did a "nexti" inside a prolog, + so we thought it was a subroutine call but it was not. + Stop as well. FENN */ + stop_step = 1; + print_stop_reason (END_STEPPING_RANGE, 0); + stop_stepping (ecs); + return; + } + + if (step_over_calls == STEP_OVER_ALL || IGNORE_HELPER_CALL (stop_pc)) + { + /* We're doing a "next". */ + + if (pc_in_sigtramp (stop_pc) + && frame_id_inner (step_frame_id, + frame_id_build (read_sp (), 0))) + /* We stepped out of a signal handler, and into its + calling trampoline. This is misdetected as a + subroutine call, but stepping over the signal + trampoline isn't such a bad idea. In order to do that, + we have to ignore the value in step_frame_id, since + that doesn't represent the frame that'll reach when we + return from the signal trampoline. Otherwise we'll + probably continue to the end of the program. */ + step_frame_id = null_frame_id; + + step_over_function (ecs); + keep_going (ecs); + return; + } + + /* If we are in a function call trampoline (a stub between + the calling routine and the real function), locate the real + function. That's what tells us (a) whether we want to step + into it at all, and (b) what prologue we want to run to + the end of, if we do step into it. */ + real_stop_pc = skip_language_trampoline (stop_pc); + if (real_stop_pc == 0) + real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc); + if (real_stop_pc != 0) + ecs->stop_func_start = real_stop_pc; + + /* If we have line number information for the function we + are thinking of stepping into, step into it. + + If there are several symtabs at that PC (e.g. with include + files), just want to know whether *any* of them have line + numbers. find_pc_line handles this. */ + { + struct symtab_and_line tmp_sal; + + tmp_sal = find_pc_line (ecs->stop_func_start, 0); + if (tmp_sal.line != 0) + { + step_into_function (ecs); + return; + } + } + + /* If we have no line number and the step-stop-if-no-debug + is set, we stop the step so that the user has a chance to + switch in assembly mode. */ + if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug) + { + stop_step = 1; + print_stop_reason (END_STEPPING_RANGE, 0); + stop_stepping (ecs); + return; + } + + step_over_function (ecs); + keep_going (ecs); + return; +} /* Given an execution control state that has been freshly filled in by an event from the inferior, figure out what it means and take @@ -1244,7 +1334,6 @@ pc_in_sigtramp (CORE_ADDR pc) void handle_inferior_event (struct execution_control_state *ecs) { - CORE_ADDR real_stop_pc; /* NOTE: cagney/2003-03-28: If you're looking at this code and thinking that the variable stepped_after_stopped_by_watchpoint isn't used, then you're wrong! The macro STOPPED_BY_WATCHPOINT, @@ -2479,88 +2568,8 @@ process_event_stop_test: || ecs->stop_func_name == 0) { /* It's a subroutine call. */ - - if ((step_over_calls == STEP_OVER_NONE) - || ((step_range_end == 1) - && in_prologue (prev_pc, ecs->stop_func_start))) - { - /* I presume that step_over_calls is only 0 when we're - supposed to be stepping at the assembly language level - ("stepi"). Just stop. */ - /* Also, maybe we just did a "nexti" inside a prolog, - so we thought it was a subroutine call but it was not. - Stop as well. FENN */ - stop_step = 1; - print_stop_reason (END_STEPPING_RANGE, 0); - stop_stepping (ecs); - return; - } - - if (step_over_calls == STEP_OVER_ALL || IGNORE_HELPER_CALL (stop_pc)) - { - /* We're doing a "next". */ - - if (pc_in_sigtramp (stop_pc) - && frame_id_inner (step_frame_id, - frame_id_build (read_sp (), 0))) - /* We stepped out of a signal handler, and into its - calling trampoline. This is misdetected as a - subroutine call, but stepping over the signal - trampoline isn't such a bad idea. In order to do that, - we have to ignore the value in step_frame_id, since - that doesn't represent the frame that'll reach when we - return from the signal trampoline. Otherwise we'll - probably continue to the end of the program. */ - step_frame_id = null_frame_id; - - step_over_function (ecs); - keep_going (ecs); - return; - } - - /* If we are in a function call trampoline (a stub between - the calling routine and the real function), locate the real - function. That's what tells us (a) whether we want to step - into it at all, and (b) what prologue we want to run to - the end of, if we do step into it. */ - real_stop_pc = skip_language_trampoline (stop_pc); - if (real_stop_pc == 0) - real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc); - if (real_stop_pc != 0) - ecs->stop_func_start = real_stop_pc; - - /* If we have line number information for the function we - are thinking of stepping into, step into it. - - If there are several symtabs at that PC (e.g. with include - files), just want to know whether *any* of them have line - numbers. find_pc_line handles this. */ - { - struct symtab_and_line tmp_sal; - - tmp_sal = find_pc_line (ecs->stop_func_start, 0); - if (tmp_sal.line != 0) - { - step_into_function (ecs); - return; - } - } - - /* If we have no line number and the step-stop-if-no-debug - is set, we stop the step so that the user has a chance to - switch in assembly mode. */ - if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug) - { - stop_step = 1; - print_stop_reason (END_STEPPING_RANGE, 0); - stop_stepping (ecs); - return; - } - - step_over_function (ecs); - keep_going (ecs); + handle_step_into_function (ecs); return; - } /* We've wandered out of the step range. */ @@ -2582,7 +2591,7 @@ process_event_stop_test: if (IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name)) { /* Determine where this trampoline returns. */ - real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc); + CORE_ADDR real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc); /* Only proceed through if we know where it's going. */ if (real_stop_pc) diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c index 1875eefb495..87152576141 100644 --- a/gdb/jv-valprint.c +++ b/gdb/jv-valprint.c @@ -1,5 +1,7 @@ /* Support for printing Java values for GDB, the GNU debugger. - Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + + Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free + Software Foundation, Inc. This file is part of GDB. @@ -298,9 +300,6 @@ java_print_value_fields (struct type *type, char *valaddr, CORE_ADDR address, java_print_value_fields (baseclass, base_valaddr, address + boffset, stream, format, recurse + 1, pretty); fputs_filtered (", ", stream); - - flush_it: - ; } } diff --git a/gdb/libunwind-frame.h b/gdb/libunwind-frame.h index bacdf87a49a..e47a792cc98 100644 --- a/gdb/libunwind-frame.h +++ b/gdb/libunwind-frame.h @@ -23,13 +23,14 @@ #ifdef HAVE_LIBUNWIND_H +struct frame_info; +struct frame_id; + #ifndef LIBUNWIND_FRAME_H #define LIBUNWIND_FRAME_H 1 #include "libunwind.h" -struct frame_info; - struct libunwind_descr { int (*gdb2uw) (int); diff --git a/gdb/mi/ChangeLog b/gdb/mi/ChangeLog deleted file mode 100644 index 4821597f8d6..00000000000 --- a/gdb/mi/ChangeLog +++ /dev/null @@ -1,2180 +0,0 @@ -2003-11-06 Andrew Cagney - - * mi-cmd-var.c (mi_cmd_var_set_format): Replace STREQN with - strncmp. - -2003-10-24 Andrew Cagney - - * tui-out.c: Fix "fortunatly"[sic]. - -2003-10-02 Andrew Cagney - - * mi-main.c: Rename REGISTER_RAW_SIZE to - DEPRECATED_REGISTER_RAW_SIZE. - -2003-09-30 Andrew Cagney - - * mi-main.c: Rename REGISTER_VIRTUAL_SIZE to - DEPRECATED_REGISTER_VIRTUAL_SIZE. - -2003-09-17 Andrew Cagney - - * mi-main.c: Rename REGISTER_BYTE to DEPRECATED_REGISTER_BYTE. - -2003-09-10 Elena Zannoni - - * mi-main.c (mi_setup_architecture_data): Don't use - DEPRECATED_REGISTER_BYTES because some architecture don't set it - and its default is 0. - -2003-08-08 Andrew Cagney - - * mi-main.c (captured_mi_execute_command): Add "mi2" and "mi3" to - interpreters that hack around CLI. - * mi-interp.c (mi3_command_loop): New function. - (mi_interpreter_resume): Check for "mi3", default to "mi2". - -2003-08-07 Andrew Cagney - - * mi-interp.c (_initialize_mi_interp): Register "mi2" and "mi3". - Make "mi" select "mi2". - -2003-08-05 Andrew Cagney - - * mi-cmd-env.c (env_execute_cli_command): Use an explicit "%s %s" - when constructing the run command. - (mi_cmd_env_cd, mi_cmd_env_path, mi_cmd_env_dir): Simplify command - string removing the "%s". - -2003-08-04 Andrew Cagney - - * mi-cmds.h (struct mi_cli): Define. - (struct mi_cmd): Change type of "cli" to "struct mi_cli". - * mi-cmds.c (mi_cmds): Update table. - * mi-parse.c (mi_parse): Update. - * mi-main.c (mi_execute_cli_command): Add "args_p" parameter, make - others constant. - (mi_cmd_execute): Update call. - (captured_mi_execute_command): Ditto. - -2003-08-04 David Carlton - - * mi-main.c (mi_error_last_message): Add "%s" second argument to - xasprintf call. - -2003-06-28 Daniel Jacobowitz - - * mi-out.c (mi_ui_out_impl): Add NULL for redirect member. - -2003-06-17 Daniel Jacobowitz - - * mi-cmds.c (mi_cmds): Add "-target-disconnect". - -2003-06-11 David Carlton - - * mi-cmd-stack.c: Include dictionary.h. - (list_args_or_locals): Update use of ALL_BLOCK_SYMBOLS. - -2003-06-11 Andrew Cagney - - * mi-main.c (get_register): Replace REGISTER_CONVERTIBLE with - DEPRECATED_REGISTER_CONVERTIBLE. - -2003-06-08 Andrew Cagney - - * mi-parse.c (_initialize_mi_parse): Delete function. - * mi-main.c: Include "mi-main.h". - * mi-interp.c (_initialize_mi_interp): Add declaration. - * mi-cmd-stack.c: Include "stack.h". - (select_frame_command_wrapper): Delete extern declaration. - (mi_cmd_stack_select_frame): Replace select_frame_command_wrapper - with select_frame_command. - -2003-05-16 Andrew Cagney - - * mi-main.c (mi_setup_architecture_data): - -2003-05-12 Elena Zannoni - - * mi-mi-cmd-stack.c (list_args_or_locals): Rename VAR_NAMESPACE to - VAR_DOMAIN. - -2003-05-11 Andrew Cagney - - * mi-symbol-cmds.c: Rename "mi-cmd-symbol.c", avoid 8.3 problem. - -2003-05-08 Andrew Cagney - - * mi-main.c (register_changed_p): Use MAX_REGISTER_SIZE instead of - MAX_REGISTER_RAW_SIZE. - -2003-05-08 Andrew Cagney - - * mi-main.c (get_register): Use MAX_REGISTER_SIZE. - -2003-05-05 Andrew Cagney - - * mi-main.c (mi_cmd_data_write_register_values): Replace - REGISTER_SIZE with DEPRECATED_REGISTER_SIZE. - -2003-05-03 J. Brobecker - - From Thierry Schneider : - * mi-cmds.h (mi_cmd_symbol_list_lines): Add declaration. - * mi-cmds.c (mi_cmds): Add entry for new MI command. - * mi-cmd-symbol.c (mi_cmd_symbol_list_lines): New source file - for all symbol-related commands. - -2003-04-02 Bob Rossi - - * mi-cmd-file.c: New file to implement mi file commands. - * mi-getopt.c (mi_valid_noargs): Added mi_valid_noargs to verify - if a set of parameters passed to an MI function has no arguments - * mi-getopt.h (mi_valid_noargs): Declare. - * mi-cmds.c (mi_cmds): Added -file-list-exec-source-file command. - * mi-cmds.h (mi_cmd_file_list_exec_source_file): Declare. - -2003-03-27 Andrew Cagney - - * gdbmi.texinfo: Delete file. Contents moved to - ../doc/gdb.texinfo. - -2003-03-12 Andrew Cagney - - * mi-main.c (get_register): Use frame_register instead of - get_saved_register. - -2003-03-08 Andrew Cagney - - * mi-out.c: Update copyright. - (mi_out_data): Define typedef. Use instead of ui_out_data. - -2003-03-01 Andrew Cagney - - * mi-main.c (get_register): Use register_type instead of - REGISTER_VIRTUAL_TYPE. - -2003-02-25 David Carlton - - * mi-cmd-stack.c: Replace all instances of SYMBOL_NAME with - DEPRECATED_SYMBOL_NAME. Update copyright. - -2003-02-21 Daniel Jacobowitz - - * mi-cmd-stack.c (list_args_or_locals): Handle LOC_COMPUTED and - LOC_COMPUTED_ARG. - -2003-02-19 David Carlton - - * mi-cmd-stack.c: #include "block.h" - -2003-02-09 Andrew Cagney - - * mi-interp.c (mi_remove_notify_hooks): Convert function - definition to ISO C. - -2003-02-06 Andrew Cagney - - * mi-cmd-env.c: Include "gdb_stat.h" instead of . - -2003-02-04 Jim Ingham - Keith Seitz - Elena Zannoni - Andrew Cagney - - * mi-main.h: New file. - * mi-interp.c: New file. - * mi-main.c: Include "interps.h". - (mi_error_message): Make global. - (mi_input): Delete static function, moved to "mi-interp.c". - (mi_execute_command, mi_execute_command_wrapper): Ditto. - (mi_command_loop, mi1_command_loop, mi2_command_loop): Ditto. - (mi_load_progress): Make non-static. - (mi_error_last_message): New function. - (captured_mi_execute_command): If the interpreter changed, don't - print anything. - (mi_load_progress): Use current_interp_named_p. - (mi_init_ui): Delete function. - (_initialize_mi_main): Don't install the mi interpreter, handled - by "mi-interp.c". - (mi_exec_async_cli_cmd_continuation): Make static. - * mi-console.h (mi_console_file_new): Add `quote' parameter. - * mi-console.c (struct mi_console_file): Add `quote'. - (mi_console_file_new): Add `quote' parameter. Initialize `quote'. - (mi_console_raw_packet): Only quote the output when `quote'. - * mi-cmds.h (mi_cmd_interpreter_exec): Declare. - (mi_error_message, mi_error_last_message): Declare. - (mi_execute_command): Declare. - * mi-cmds.c: Add `interpreter-exec' command. - -2003-02-04 Andrew Cagney - - From Keith Seitz : - * gdbmi.texinfo (GDB/MI Miscellaneous Commands): Document the - interpreter-exec command. - -2003-02-02 Andrew Cagney - - From 2002-11-10 Jason Molenda (jason-cl@molenda.com): - * mi-cmd-var.c (mi_cmd_var_list_children): CHILDREN field is - now a list; still a tuple when in mi1. - * gdbmi.texinfo: Update var-list-children example. - -2003-01-13 Andrew Cagney - - * mi-cmd-env.c: Update copyright. - -2003-01-13 Elena Zannoni - - * mi-main.c (mi_cmd_exec_return): Use print_stack_frame instead of - show_and_print_stack_frame. - -2003-01-09 Andrew Cagney - - * mi-cmd-env.c: Include "gdb_string.h" instead of . - Move all includes to after "defs.h". - -2002-12-13 Jeff Johnston - - * mi-cmds.c (-environment-directory) Change to use mi_cmd_env_dir, - (-environment-cd): Change to use mi_cmd_env_cd,. - (-environment-pwd): Change to use mi_cmd_env_pwd. - (-environment-path): Change to use mi_cmd_env_path. - * mi-cmds.h (mi_cmd_env_cd, mi_cmd_env_dir): New prototypes. - (mi_cmd_env_path, mi_cmd_env_pwd): Ditto. - * mi-cmd-env.c: New file. Part of fix for PR gdb/741. - * gdbmi.texinfo (environment-cd): Update output and example. - (environment-pwd): Ditto. - (environment-dir): Update output, description, and examples. - (environment-path): Ditto. - -2002-11-29 Andrew Cagney - - * mi/mi-cmd-stack.c, mi/mi-main.c: Update to use - deprecated_selected_frame. - -2002-11-13 Andrew Cagney - - * mi-main.c (mi_cmd_data_write_register_values): Use - deprecated_write_register_bytes instead of write_register_bytes. - -2002-11-11 Jeff Johnston - - * gdbmi.texinfo (-var-assign): Add comments about interaction - with -var-update and add an example. Part of fix for gdb/702. - -2002-11-08 Jeff Johnston - - * mi-main.c (mi_command_loop): Initialize raw_stdout and gdb_stdout - only if mi version is <= 1. - (mi_init_ui): Initialize raw_stdout and gdb_stdout if mi version - is > 1 so startup message is treated as console output. This is - part of fix for PR gdb/604. - -2002-11-06 Jeff Johnston - - * mi-cmd-var.c (mi_cmd_var_create): Change the function used to - parse the frame addr from parse_and_eval_address() to - string_to_core_addr(). This is a fix for PR gdb/494. - -2002-10-23 Jeff Johnston - - * mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin - to make_cleanup_ui_out_tuple_begin_end. Change all remaining - occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end. - Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end. This - is a fix for PR gdb/680. - * mi-cmd-stack.c: Ditto. - * mi-main.c: Ditto. - -2002-10-22 Keith Seitz - - * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR - when we really did catch an error(). If we got GDB_RC_FAIL, return - MI_CMD_ERROR instead. - -2002-10-03 Jeff Johnston - - * gdbmi.texinfo: Fix examples that show frames to remove - extraneous blank in level field. Part of fix for PR gdb/192. - -2002-10-03 Jeff Johnston - - * mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672. For m2, - output list begin and end for "changelist" rather than tuple begin/end. - (varobj_update_one): For m2, add tuple begin and end for varobj - update output. - -2002-10-02 Elena Zannoni - - * mi-main.c (mi_cmd_exec_return): Don't use - return_command_wrapper, use return_command instead. - (mi_cmd_exec_interrupt): Don't use - interrupt_target_command_wrapper, use interrupt_target_command - instead. - (return_command_wrapper, interrupt_target_command_wrapper): - Delete. - Include frame.h. - -2002-10-01 Andrew Cagney - - * mi-main.c (mi2_command_loop): New function. - (mi0_command_loop): Delete function. - (_initialize_mi_main): Recognize, and default to, "mi2". Do not - recognize "mi0". - * mi-out.c (mi_table_begin): Remove mi0 code. - (mi_table_body, mi_table_end): Ditto. - (mi_table_header, mi_open, mi_close): Ditto. - -2002-09-29 Andrew Cagney - - * mi-out.c (mi_version): New function. - * mi-out.h (mi_version): Declare. - -2002-09-27 Andrew Cagney - - From 2002-07-12 Mo DeJong - * gdbmi.texinfo (var-evaluate-expression): Note that - var-list-children must be invoked before child variable - values can be evaluated. - -2002-09-26 Elena Zannoni - - * mi-cmd-disas.c (dump_insns): Add text only output for CLI. - (do_mixed_source_and_assembly): Ditto. - -2002-09-11 Keith Seitz - - * mi-main.c (mi_cmd_data_list_register_names): Use cleanups - for the uiout list. Do the cleanups when returning an error. - (mi_cmd_data_list_changed_registers): Ditto. - (mi_cmd_data_list_register_values): Use cleanups for the uiout list - and tuples. Do the cleanups when returning errors. - -2002-07-29 Andrew Cagney - - * mi-cmd-var.c: Include "gdb_string.h". - * mi-cmd-disas.c: Ditto. - -2002-06-17 Keith Seitz - - * gdbmi.texinfo: Update command examples with real MI behavior. - -2002-05-20 Keith Seitz - - * mi-main.c (captured_mi_execute_command): Add uiout parameter. - "data" is now a structure which is used to pass data to/from this - function to mi_execute_command. - Modify function to comply with requirements from catch_exceptions. - Store real return result and command's return result in data. - (mi_execute_command): Use catch_exceptions. - Use enum to handle actions to be performed instead of overloading - catch_errors return result and the mi return result. - -2002-04-14 Andrew Cagney - - * mi-main.c (mi_cmd_exec_return): - -2002-04-09 Andrew Cagney - - * mi-main.c (register_changed_p): Use frame_register_read instead - of read_relative_register_raw_bytes. - (get_register): Delete out-of-date comment. - -2002-04-07 Elena Zannoni - - * mi-cmd-disas.c: Run through indent. - -2002-04-07 Elena Zannoni - - * mi-cmd-disas.c (dump_insns): New function. - (do_mixed_source_and_assembly): New function. - (do_assembly_only): New function. - (do_disassembly): New function. - (mi_cmd_disassemble): Rewrite using smaller, more modular - functions. - -2002-04-05 Jim Blandy - - * mi-cmd-stack.c (list_args_or_locals): Pass new arg to - get_frame_block. (See entry in gdb/ChangeLog.) - -2002-04-05 Elena Zannoni - - * mi-cmd-disas.c (mi_cmd_disassemble): Use TARGET_PRINT_INSN - instead of tm_print_insn. - Update copyright year. - -2002-04-04 Daniel Jacobowitz - - * mi-cmd-disas.c (mi_cmd_disassemble): Skip end-of-function - markers in the line table. - -2002-03-15 Andrew Cagney - - * mi-main.c (XMALLOC): Delete macro. - * mi-out.c (XMALLOC): Ditto. - * mi-parse.c (XMALLOC): Ditto. - * mi-console.c (XMALLOC): Ditto. - * mi-cmd-var.c (XMALLOC): Ditto. - * mi-cmd-break.c (XMALLOC): Ditto. - - * mi/mi-cmd-var.c, mi/mi-console.c, mi/mi-out.c: Update copyright - * mi/mi-parse.c: Ditto. - -2002-02-24 Andrew Cagney - - From wiz at danbala: - * gdbmi.texinfo: Fix grammar and typos. - Fix PR gdb/287. - -2002-02-03 Jim Blandy - - * mi-cmd-stack.c (list_args_or_locals): Move declaration of - print_me inside the loop body, so it gets re-initialized every - iteration. The cases for the different symbol kinds leave - print_me unchanged if they don't want the symbol printed. - -2002-01-22 Andrew Cagney - - * gdbmi.texinfo: Remove makeinfo 3.12 hacks. - -2002-01-21 Andrew Cagney - - * mi-cmd-stack.c: Remove #else clause of #ifdef UI_OUT. - * mi-cmd-break.c: Ditto. - * mi-main.c: Ditto. - -2001-12-30 Eli Zaretskii - - * gdbmi.texinfo: Fix the application of GFDL in the Copyright notice. - -2001-10-12 Daniel Jacobowitz - - * mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS. - -2001-09-18 Andrew Cagney - - * mi-main.c (mi_cmd_thread_select): Pass uiout to - gdb_thread_select. - (mi_cmd_thread_list_ids): Pass uiout to gdb_list_thread_ids. - - * mi-cmd-break.c (breakpoint_notify): Pass uiout to - gdb_breakpoint_query. - -2001-08-17 Keith Seitz - - * mi-cmd-var.c (varobj_update_one): Update call to - varobj_update to reflect recent api change. - -2001-07-26 Andrew Cagney - - * mi-main.c: Include "gdb.h". - * mi-cmd-break.c: Include "gdb.h". - -2001-07-12 Andrew Cagney - - * mi-main.c (mi_execute_command): Flush output after ``(gdb)'' - prompt. Bug reported by David Whedon. - (mi_execute_async_cli_command): Ditto. - (mi_exec_async_cli_cmd_continuation): Ditto. - (mi_command_loop): Ditto. - -2001-07-10 Mark Kettenis - - * mi-out.c (mi_out_new): Initialize suppress_ouput field of newly - created `struct ui_out_data'. - -2001-07-09 Kevin Buettner - - * mi-main.c (register_changed_p, get_register): Use alloca() - to allocate space previously allocated via gcc's - variable-length array extension. - (mi_cmd_data_write_register_values, mi_cmd_data_write_memory): - Change type of ``buffer'' to ``void *''. Don't cast return value - from xmalloc(). Add a cleanup to free the xmalloc'd buffer. - -2001-07-07 Andrew Cagney - - * mi-main.c (mi_cmd_data_evaluate_expression): Replace value_ptr - with `struct value *'. - -2001-07-08 Kevin Buettner - - * mi-out.c (mi_table_header, mi_field_int, mi_field_skip) - (mi_field_string) Make function declarators match earlier - declarations. - -2001-07-04 Andrew Cagney - - * mi-out.c (mi_ui_out_impl): Initialize is_mi_like_p to one. - -2001-06-27 Andrew Cagney - - * mi-out.c (mi_table_begin): Include nr_cols and nr_rows in mi1 - table output. - * mi-out.c (mi_table_begin): Only suppress output when mi0. Change - the header to a list. - (mi_table_body): For mi1, close the header list and open a table - body list. - (mi_table_end): For mi1, close the body list. - (mi_table_header): For mi1, output a tuple containing all the - header information. - (mi_open, mi_close): Reverse logic of mi_version test. - * gdbmi.texinfo (GDB/MI Breakpoint Table Commands): Update. - -2001-06-26 Andrew Cagney - - * gdbmi.texinfo (GDB/MI Output Syntax): Delete reference to query - packet. - -2001-06-26 Andrew Cagney - - * mi-cmd-stack.c (list_args_or_locals): Output a list of "args" or - "locals" entries. - * gdbmi.texinfo (stack-list-locals, stack-list-arguments) - (exec-interrupt, target-select, thread-select): Update - documentation. - -2001-06-26 Andrew Cagney - - * mi-cmd-stack.c (mi_cmd_stack_list_frames): Output a list of - "stack" entries. - (mi_cmd_stack_list_args): Ditto for "stack-args". - * gdbmi.texinfo (stack-list-frames, stack-list-arguments): Update - documentation. - (GDB/MI Stack Manipulation Commands): Fix section title. Was - Stack Manipulation Commands in GDB/MI. - -2001-06-25 Andrew Cagney - - * gdbmi.texinfo: Update output examples that contain stop reason - output, change the args=.... to a list. - (exec-return): Ditto. - -2001-06-25 Andrew Cagney - - * mi-main.c (mi_cmd_data_read_memory): Output the memory contents - - memory and data - as a list. - * gdbmi.texinfo (data-read-memory): Update documentation. - -2001-06-25 Andrew Cagney - - * mi-main.c (mi_cmd_data_list_register_values): Output a list of - register values. - * gdbmi.texinfo (data-list-register-values): Update documentation. - -2001-06-25 Andrew Cagney - - * mi-main.c (mi_cmd_data_list_register_names): Output a list of - register names. - (mi_cmd_data_list_register_names): Include the pseudo registers. - (mi_cmd_data_list_register_names): Don't leave holes in the list, - output "" for NULL registers. - * gdbmi.texinfo (data-list-register-names): Update documentation. - -2001-06-23 Andrew Cagney - - * mi-main.c (mi_cmd_data_list_changed_registers): Output a list of - register numbers. - * gdbmi.texinfo (data-list-changed-registers): Update - documentation. - -2001-06-23 Andrew Cagney - - * gdbmi.texinfo (data-disassemble): Update documentation of - output. Produces a list of instructions and a list of source - lines. - -2001-06-22 Andrew Cagney - - * mi-cmd-disas.c (mi_cmd_disassemble): For "-data-disassemble", - output a list instead of a tupple. - -2001-06-21 Andrew Cagney - - * mi-out.c (struct ui_out_data): Replace field first_header with - suppress_output. - (mi_begin, mi_end): Check suppress_header. - (mi_field_int, mi_field_skip): Ditto. - (mi_field_string, mi_field_fmt): Ditto. - (mi_table_begin): When nr_rows is zero, set suppress_header else, - output the start of the header. - (mi_table_body): Clear suppress header. - -2001-06-21 Andrew Cagney - - * mi-out.c (mi_open): For lists, when mi_version > 0, use ``[''. - (mi_close): Ditto for ``]''. - -2001-06-20 Andrew Cagney - - * mi-out.c (mi_table_header): Add parameter ``col_name''. - -2001-06-18 Andrew Cagney - - * mi-out.c: Include "gdb_assert.h". - (mi_table_begin): Add parameter ``nr_rows''. - -2001-06-18 Andrew Cagney - - * mi-main.c: Use strncmp as the "mi" test. Allow "mi", "mi0" and - "mi1". - (mi_command_loop): Add parameter mi_version, pass to mi_out_new. - (mi1_command_loop, mi0_command_loop): New functions. - (_initialize_mi_main): Recognize "mi", "mi0" and "mi1". - * mi-out.c (mi_out_new): Add parameter mi_version. - (struct ui_out_data): Add field mi_version. - * mi-out.h (mi_out_new): Update. - -2001-06-07 Andrew Cagney - - * gdbmi.texinfo (GDB/MI Output Syntax): Add tuples and lists to - syntax. - (GDB/MI Draft Changes to Output Syntax): Delete section. - -Mon Jun 11 17:22:25 2001 Andrew Cagney - - * mi-out.c: Fix typo. s/supress/suppress/. - -2001-06-09 Andrew Cagney - - * mi-out.c (mi_table_end, mi_table_begin, mi_begin, mi_end): Move - supress_field_separator updates from here. - (mi_open, mi_close): To here. - (mi_open): Add parameter name. Output a field_separator. - (mi_table_begin): Update. - (mi_table_header): Update. - (mi_begin): Update. - -2001-06-09 Andrew Cagney - - * mi-out.c (mi_table_begin): Make char* parameters constant. - (mi_table_header): Ditto. - (mi_field_int): Ditto. - (mi_field_skip): Ditto. - (mi_field_string): Ditto. - (mi_field_fmt): Ditto. - (mi_text): Ditto. - (mi_message): Ditto. - -2001-05-12 Andrew Cagney - - * mi-out.c (mi_close, mi_open): Output ``[]'' when a list. - -Fri May 11 13:55:07 2001 Andrew Cagney - - * mi-cmd-var.c: Replace ui_out_list_begin, ui_out_list_end and - make_cleanup_ui_out_list_end with ui_out_tupple_begin, - ui_out_tupple_end and make_cleanup_ui_out_tupple_begin_end. - * mi-cmd-stack.c: Ditto. - * mi-cmd-disas.c: Ditto. - * mi-main.c: Ditto. - -2001-05-10 Andrew Cagney - - * mi-out.c (mi_open, mi_close): Replace list_open and list_close. - (mi_table_begin): Update. - (mi_table_header): Update. - (mi_begin): Update. - (mi_table_body): Update. - (mi_table_end): Update. - (mi_end): Update. - -Thu May 10 16:28:13 2001 Andrew Cagney - - * mi-main.c (mi_execute_async_cli_command): Always initialize - old_cleanups. - -2001-05-08 Andrew Cagney - - * mi-out.c (mi_begin, mi_end): Replace mi_list_begin and - mi_list_end. - (mi_ui_out_impl): Update. - -2001-03-28 Andrew Cagney - - * mi-main.c (mi_cmd_data_read_memory): Use xcalloc. - -2001-03-26 Eli Zaretskii - - * gdbmi.texinfo: Update copyright. Change Permissions to GFDL. - -2001-03-20 Andrew Cagney - - * mi-cmd-disas.c (mi_cmd_disassemble): Initialize ``file_string'' - and ``line_num''. Consolidate declaration of argument variables. - -2001-03-19 Andrew Cagney - - * mi-out.h: Remove #ifdef __STDC__. - -2001-03-08 Andrew Cagney - - * mi-main.c (mi_cmd_data_list_register_names): Use NUM_REGS, not - ARCH_NUM_REGS. - (mi_cmd_data_list_changed_registers): Ditto. - (mi_cmd_data_list_register_values): Ditto. - (mi_cmd_data_write_register_values): Ditto. - -2001-03-06 Kevin Buettner - - * gdbmi.texinfo, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, - mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c, - mi-getopt.h, mi-out.c, mi-out.h, mi-parse.c, mi-parse.h: - Update/correct copyright notices. - -Wed Feb 7 19:50:37 2001 Andrew Cagney - - * mi-getopt.c: Add __FILE__ and __LINE__ parameter to calls to - internal_error. - * mi-console.c: Ditto. - * mi-cmds.c: Ditto. - * mi-cmd-break.c: Ditto. - -2001-01-27 Fernando Nasser - - From Momchil Velikov - * mi-cmd-disas.c (gdb_dis_asm_read_memory): Add missing memory - attributes argument in the call to `xfer_memory'. - -2000-12-14 Kevin Buettner - - * mi-cmd-disas.c, mi-cmd-var.c, mi-console.c, mi-main.c, - mi-parse.c: Replace occurrences of free() with xfree(). - -Fri Nov 17 16:07:23 2000 Andrew Cagney - - * mi-main.c: Replace asprintf with xasprintf. - * mi-cmd-var.c (mi_cmd_var_create): Ditto. - -2000-10-16 Eli Zaretskii - - * gdbmi.texinfo (GDB/MI Variable Objects): Dimensions of - multitable changed to "@columnfractions .4 .6". Suggested by - Dmitry Sivachenko . - -2000-08-23 Eli Zaretskii - - * gdbmi.texinfo: Change flathead -> @sc{gdb/mi}. - Fix typos and markup mistakes (from Dmitry S. - Sivachenko ). - -2000-07-24 Eli Zaretskii - - * gdbmi.texinfo: Change GDB -> @value{GDBN}, and - (gdb) -> (@value{GDBP}). Fix a few typos and some markup. From - Dmitry S. Sivachenko . - -Tue May 16 14:13:41 2000 Andrew Cagney - - * mi-main.c (mi_cmd_execute): Use free_current_contents. - (free_and_reset): Delete. - -Mon May 15 16:17:56 2000 Andrew Cagney - - * mi-main.c (mi_cmd_data_assign, mi_cmd_data_evaluate_expression), - mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete): Delete - make_cleanup_func casts. Not needed. - -2000-05-07 Eli Zaretskii - - * gdbmi.texinfo: Lots of typos and grammar fixes from Brian - Youmans <3diff@flib.gnu.ai.mit.edu>. - -Wed Apr 26 18:35:19 2000 Andrew Cagney - - * gdbmi.texinfo (GDB/MI Output Syntax v2.0): Convert Draft 2.0 - Output Syntax into a new section. Cross reference. - (menu): Fix tipo. GDB/MI Compatibility with CLI. - -2000-04-23 Eli Zaretskii - - * gdbmi.texinfo: Lots of changes, to include this document as part - of the GDB manual. - -2000-03-13 James Ingham - - * mi-cmd-var.c (mi_cmd_var_create): Add special frame cookie "@" - to indicate an "USE_CURRENT_FRAME" variable. - (varobj_update_one): Add "in_scope" and "type_changed" to the - result. - -2000-03-06 Elena Zannoni - - * mi-cmds.h: Export mi_cmd_data_write_register_values. - - * mi-cmds.c (mi_cmds): Implement data-write-register-values with - mi_cmd_data_write_register_values. - - * mi-main.c (mi_cmd_data_write_register_values): New - function. Write a value into a register. - -2000-03-06 Elena Zannoni - - * gdbmi.texinfo: Update data-disassemble documentation. - -2000-03-01 Elena Zannoni - - * mi-cmd-disas.c (mi_cmd_disassemble): Use - ui_out_field_core_addr() instead of print_address_numeric(), to - maintain consistency throughout MI. - -Wed Feb 23 17:09:39 2000 Andrew Cagney - - * mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, - mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c, - mi-getopt.h, mi-main.c, mi-out.c, mi-out.h, mi-parse.c, - mi-parse.h: Update copyright information. - -Wed Feb 23 13:31:16 2000 Andrew Cagney - - * mi-cmd-disas.c (gdb_dis_asm_read_memory): Change LEN to unsigned - long. Match ../include/dis-asm.h change. - -Wed Feb 23 10:30:55 2000 Andrew Cagney - - * gdbmi.texinfo: Update copyright - FSF. Update version - information. - - mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, - mi-cmds.h, mi-main.c, mi-parse.c, mi-parse.h: Re-format using GNU - indent. - -2000-02-21 Elena Zannoni - - * mi-main.c: Add include of gdbcore.h for write_memory() - prototype. - -2000-02-18 Elena Zannoni - - * mi-cmd-disas.c (mi_cmd_disassemble): Change syntax of - command. Now use options. - Instead of printing the symbolic address of instructions via - print_address_symbolic(), use build_address_symbolic() and format - properly for output. - (gdb_do_disassmble): Delete. - -2000-02-18 Elena Zannoni - - * mi-cmd-disas.c (mi_cmd_disassemble): - -2000-02-17 Elena Zannoni - - * mi-main.c (mi_cmd_data_write_memory): New function. Write a - value into target memory. - - * mi-cmds.h (mi_cmd_data_write_memory): Export. - - * mi-cmds.c (mi_cmds): Hook up data-write-memory to - mi_cmd_data_write_memory(). - -2000-02-17 Elena Zannoni - - * mi-main.c (mi_cmd_target_download): Correct error message to - report right function name. - (mi_cmd_target_select): Add doing exec cleanups at end. - (mi_cmd_data_read_memory): Correct typo. - (mi_cmd_execute): Do not simply free last_async_command, but reset - it to NULL as well. - (free_and_reset): New function, free the argument and set it to - NULL. - (mi_cmd_target_select_continuation): Delete prototype. - -Tue Feb 1 00:17:12 2000 Andrew Cagney - - * mi-cmd-disas.c, mi-cmds.h, mi-console.c, mi-console.h, - mi-main.c, mi-out.c, mi-out.h: Update to reflect rename of - gdb-file / GDB_FILE to ui-file / ``struct ui_file''. - -Mon Jan 31 18:33:28 2000 Andrew Cagney - - * mi-main.c (mi_command_loop): Delete reference to - fputs_unfiltered_hook. - -2000-01-27 Elena Zannoni - - * mi-cmds.c (mi_cmds): Update entries for - mi_cmd_data_list_register_names, - mi_cmd_data_list_changed_registers, - mi_cmd_data_list_register_values. - - * mi-cmds.h (mi_cmd_data_list_register_names, - mi_cmd_data_list_changed_registers, - mi_cmd_data_list_register_values): Update to mi_cmd_argv_ftype. - - * mi-main.c (mi_cmd_data_list_register_names, - mi_cmd_data_list_changed_registers, - mi_cmd_data_list_register_values): Update to use argc, argv - parameters. - -2000-01-27 Elena Zannoni - - * mi-main.c (mi_cmd_data_read_memory): Correct the computation of - next-row. - -2000-01-27 Fernando Nasser - - * mi-cmd-var.c (mi_cmd_var_create): Test for NULL type. - (mi_cmd_var_set_format, mi_cmd_var_show_format, - mi_cmd_var_info_num_children, mi_cmd_var_list_children, - mi_cmd_var_info_type, mi_cmd_var_info_expression, - mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, - mi_cmd_var_assign, mi_cmd_var_update): Prevent possibility of memory - leak on error. - -2000-01-27 Fernando Nasser - - * mi-out.c (mi_field_string): Test for NULL string pointer. - -2000-01-17 Elena Zannoni - - * mi-cmd-stack.c (mi_cmd_stack_list_frames): Call - print_frmae_info() with the correct arguments. - - * mi-main.c (mi_cmd_exec_return): Call - show_and_print_stack_frame() with LOC_AND_ADDRESS, so it does the - right thing. Update Copyright. - -2000-01-13 Elena Zannoni - - * mi-main.c: Move disassemble commands from here. - - * mi-cmd-disas.c: To here. New file. - -2000-01-13 Elena Zannoni - - * mi-cmd-stack.c: Remove include of mi-out.h. - - * mi-main.c (mi_cmd_disassemble): Update function to use argc/argv - interface. - - * mi-cmds.h: Ditto. - - * mi-cmds.c: Ditto. - -2000-01-12 Elena Zannoni - - * gdbmi.texinfo: Update stack commands descriptions. - Add thread commands descriptions and examples. - - * mi-main.c (mi_cmd_thread_list_ids): Fix typo. - -2000-01-12 Elena Zannoni - - * mi-main.c (mi_cmd_thread_list_ids): New function, print a list - of currently known threads ids, and the total number of threads. - (mi_cmd_thread_select): New function. Switch current thread. - - * mi-cmds.c (mi_cmds): Implement thread-list-ids by - mi_cmd_thread_list_ids, and thread-select by mi_cmd_thread_select. - - * mi-cmds.h (mi_cmd_thread_select, mi_cmd_thread_list_ids): Export. - -2000-01-11 Elena Zannoni - - * mi-main.c: Move stack commands from here. - - * mi-cmd-stack.c: To here. New file. - -2000-01-07 Elena Zannoni - - * mi-main.c (list_args_or_locals): Add a new paramter, the frame - for which to display args or locals. Don't use selected_frame - anymore, use the new parameter instead. Return void instead of - mi_cmd_result, let callers do so. - (mi_cmd_stack_list_args): Change interface. Now accept low and - high frame numbers to display args for a range of frames. Without - these two, display args for the whole stack. - (mi_cmd_stack_list_locals): Adapt to new interface for - list_args_or_locals. - -2000-01-06 Elena Zannoni - - * mi-main.c (mi_cmd_stack_info_depth, mi_cmd_stack_list_args, - mi_cmd_stack_list_frames, mi_cmd_stack_list_locals, - mi_cmd_stack_select_frame): Change to use argv type of parameters. - - * mi-cmds.c (mi_cmds): Change stack-info-depth, - stack-list-arguments, stack-list-frames, stack-list-locals, - stack-select-frame to use argv parameters. - - * mi-cmds.h (mi_cmd_stack_info_depth, mi_cmd_stack_list_args, - mi_cmd_stack_list_frames, mi_cmd_stack_list_locals, - mi_cmd_stack_select_frame): Update definitions. - -Tue Jan 4 12:38:54 2000 Andrew Cagney - - * mi-main.c (mi_command_loop): Force the MI interface to use seven - bit strings. - * gdbmi.texinfo: Make it clear that a quoted C string is seven - bit. - -Thu Dec 30 14:15:22 1999 Andrew Cagney - - * mi-getopt.c (mi_getopt): Rewrite. Allow long options. - * mi-getopt.h (struct mi_opt): Declare. - (mi_getopt): Update. - - * mi-main.c (mi_cmd_data_read_memory), mi-cmd-break.c - (mi_cmd_break_insert, mi_cmd_break_watch): Update. - -Wed Dec 29 23:38:35 1999 Andrew Cagney - - * mi-cmd-break.c (mi_cmd_break_insert): Add support for -c - , -i and -p . - (breakpoint_notify): New function. - (mi_cmd_break_insert): Wrap GDB call with callback hooks so that - MI is notified when ever a breakpoint is created. - - * gdbmi.texinfo: Update. - -Fri Dec 24 11:23:22 1999 Andrew Cagney - - * mi-main.c (gdb_do_disassemble): Strip out more useless #ifdef - UI_OUTs. - -1999-12-23 Elena Zannoni - - * mi-main.c (gdb_do_disassemble): Fix output. Lines that have no - assembly instructions must still be outputted, to keep the source - line numbering correct. - Remove #ifdef UI_OUT's, they are useless. - -1999-12-17 Elena Zannoni - - * mi-main.c (gdb_do_disassemble): Don't print a new list in mixed - mode, every time. Just do it when we actually encounter a new - source line. - -1999-12-17 Fernando Nasser - - * mi-cmd-var.c (mi_cmd_var_list_children): Add test for C++ pseudo - variable objects (private, public, protected) as these do not have - a type and the -var-list-children operation was dumping core. - -Fri Dec 17 20:23:33 1999 Andrew Cagney - - * gdbmi.texinfo: Document recommended syntax for options. - - * mi-main.c (mi_cmd_data_read_memory): Add support for ``-o - ''. - * gdbmi.texinfo: Document. - -Wed Dec 15 17:43:08 1999 Andrew Cagney - - * mi-getopt.h (mi_getopt): Change optarg to a char pointer. Check - optind. - * mi-cmd-break.c (mi_cmd_break_insert): Update. - - * mi-main.c (mi_cmd_data_read_memory): Add fields "next-row-addr", - "prev-row-addr", "next-page-addr", "prev-page-addr" and a per row - "addr". - * gdbmi.texinfo: Update. - -Wed Dec 15 01:05:40 1999 Andrew Cagney - - * mi-cmds.h (mi_cmd_result): Add MI_CMD_CAUGHT_ERROR for when the - error is caught. - - * mi-main.c (captured_mi_execute_command): When - MI_CMD_CAUGHT_ERROR return 0 rethrowing the eror. - -1999-12-13 Elena Zannoni - - * mi-cmd-break.c (mi_cmd_break_insert): Remove unused var. - - * mi-cmd-var.c (mi_cmd_var_update): Remove unused variables. - -Mon Dec 13 18:43:36 1999 Andrew Cagney - - * mi-parse.c (mi_parse): Quote the command when printing it. - (mi_parse_argv): Fix handling of quoted strings. Was not - de-quoting them. - (mi_parse_argv): Make static. - -Mon Dec 13 18:30:03 1999 Andrew Cagney - - * mi-cmds.h (mi_cmd_break_insert, mi_cmd_break_watch): Change type - to mi_cmd_argv_ftype. - * mi-cmds.c (mi_cmds): Update. - * mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Change - to new style of arguments with argc and argv. Parse arguments - using mi_getopt. - - * mi-cmd-break.c (mi_cmd_break_insert): Wrap body in #ifdef UI_OUT - to avoid non-ui compile problems. - -Mon Dec 13 15:08:36 1999 Andrew Cagney - - * mi-getopt.h, mi-getopt.c: New files. Similar to getopt but with - well defined semantics. - -Mon Dec 13 14:22:21 1999 Andrew Cagney - - * mi-main.c (mi_cmd_break_insert, mi_cmd_break_watch, enum - wp_type, enum bp_type): Move from here. - * mi-cmd-break.c: To here. New file. - (mi_cmd_break_insert, mi_cmd_break_insert, mi_cmd_break_watch): - Use error to report problems. - -1999-12-09 Elena Zannoni - - * gdbmi.texinfo: Update description of exec-interrupt. - - * mi-main.c (mi_cmd_exec_interrupt): If the program is not - executing, don't try to interrupt it, but error out instead. Make - sure previous_async_command is not null before duplicating it into - last_async_command. - - * gdbmi.texinfo: Add examples for data-evaluate-expression. - -1999-12-08 Elena Zannoni - - * mi-cmd-var.c (mi_cmd_var_assign, mi_cmd_var_create, - mi_cmd_var_delete, mi_cmd_var_evaluate_expression, - mi_cmd_var_info_expression, mi_cmd_var_info_num_children, - mi_cmd_var_info_type, mi_cmd_var_list_children, - mi_cmd_var_set_format, mi_cmd_var_show_attributes, - mi_cmd_var_show_format, mi_cmd_var_update): Change to use new - style of arguments with argc and argv. - (next_arg): Delete. - (which_var): Delete. - - * mi-cmds.c (mi_cmds): Update entries for mi_cmd_var_assign, - mi_cmd_var_create, mi_cmd_var_delete, - mi_cmd_var_evaluate_expression, mi_cmd_var_info_expression, - mi_cmd_var_info_num_children, mi_cmd_var_info_type, - mi_cmd_var_list_children, mi_cmd_var_set_format, - mi_cmd_var_show_attributes, mi_cmd_var_show_format, - mi_cmd_var_update. - - * mi-cmds.h (mi_cmd_var_assign, mi_cmd_var_create, - mi_cmd_var_delete, mi_cmd_var_evaluate_expression, - mi_cmd_var_info_expression, mi_cmd_var_info_num_children, - mi_cmd_var_info_type, mi_cmd_var_list_children, - mi_cmd_var_set_format, mi_cmd_var_show_attributes, - mi_cmd_var_show_format, mi_cmd_var_update): Update declarations. - -1999-12-08 Elena Zannoni - - * gdbmi.texinfo: Comment out -data-assign command. * mi-main.c - (mi_cmd_data_assign): Do not use, comment out. * mi-cmds.h - (mi_cmd_data_assign): Remove. * mi-cmds.c: Remove -data-assign - command from MI interface. - -1999-12-07 Elena Zannoni - - * mi-parse.c (mi_parse): Add '\n' at end of error messages, so - that prompt comes out on new line. - - * gdbmi.texinfo: Update disassembly command output. - -1999-12-06 Elena Zannoni - - * mi-main.c (gdb_do_disassemble): Update output for UI_OUT case. - -1999-12-02 Elena Zannoni - - * gdbmi.texinfo: Update exec-until output, including the reason - for stopping. - -Thu Dec 2 17:17:22 1999 Andrew Cagney - - * mi-cmds.c: Include for memset. - -1999-12-01 Elena Zannoni - - * mi-main.c (mi_cmd_exec_return): ifdef the references to - return_command_wrapper(). - -1999-12-01 Elena Zannoni - - * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_interrupt, - mi_cmd_target_select, mi_execute_async_cli_command, - mi_exec_async_cli_cmd_continuation, mi_load_progress): Don't print - last_async_command if it is NULL. - (mi_cmd_exec_return): - -1999-12-01 Elena Zannoni - - * mi-main.c (mi_cmd_exec_return): Reimplement using - return_command() instead of mi_execute_async_cli_command(). - -1999-12-01 Elena Zannoni - - * mi-cmds.h: Export mi_cmd_data_assign and - mi_cmd_data_evaluate_expression. - - * mi-cmds.c (mi_cmds): Hook data-assign to mi_cmd_data_assign and - data-evaluate-expression to mi_cmd_data_evaluate_expression. - - * mi-main.c (mi_cmd_data_assign): New function. Implement - data-assign command. - (mi_cmd_data_evaluate_expression): New function. Implement - data-evaluate-expression command. - -1999-12-01 Elena Zannoni - - * gdbmi.texinfo: Fix some texinfo formatting errors. - -1999-12-01 Elena Zannoni - - * gdbmi.texinfo: Update data-list-register-values description. - - * mi-cmds.h: Export mi_cmd_data_list_register_values. - - * mi-cmds.c (mi_cmds): Hook data-list-register-values to - mi_cmd_data_list_register_values. - - * mi-main.c (mi_cmd_data_list_register_values): New - function. Implements the -data-list-register-values command. - (get_register): New function. Output the contents of a given - register. - -Wed Dec 1 20:27:22 1999 Andrew Cagney - - * mi-main.c (mi_execute_async_cli_command): Append missing "\n" - for synchronous stopped message. - -1999-11-30 James Ingham - - * gdbmi.texinfo: Fix obvious typo in @end statement. - -Wed Dec 1 12:36:27 1999 Andrew Cagney - - * mi-cmd-var.c: Include "value.h". - * mi-console.c: Include . - -Wed Dec 1 00:21:03 1999 Andrew Cagney - - * mi-main.c (captured_mi_execute_command): For a CLI command, pass - "%s" to mi_execute_cli_command to stop core dumps. - (captured_mi_execute_command): Echo CLI commands on gdb_stdlog. - -Wed Dec 1 00:10:07 1999 Andrew Cagney - - * gdbmi.texinfo: Explain NR-BYTES and ADDR. - -Tue Nov 30 23:31:57 1999 Andrew Cagney - - * mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete, - mi_cmd_var_set_format, mi_cmd_var_show_format, - mi_cmd_var_info_num_children, mi_cmd_var_list_children, - mi_cmd_var_info_type, mi_cmd_var_info_expression, - mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, - mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, next_arg, - which_var): New file. Move varobj commands to here from - mi-main.c. - - * mi-console.h, mi-console.c (mi_console_file_new, - mi_console_file_delete, mi_console_file_fputs, - mi_console_raw_packet, mi_console_file_flush): New files. Move - mi_console_file to here from mi-main.c. - -Tue Nov 30 19:37:25 1999 Andrew Cagney - - * mi-main.c (captured_mi_execute_command): Use fputstr_unfiltered - when printing error messages. - (mi_cmd_execute): Ditto. - -1999-11-29 Elena Zannoni - - * gdbmi.texinfo: Describe -data-list-changed-registers, - -data-list-register-names. Add examples for - -exec-next-instruction, exec-step-instruction, -exec-run, - -exec-until. Format examples for -data-read-memory. - update example for -target-download. - -1999-11-29 Elena Zannoni - - * gdbmi.texinfo: Remove mentioning of inaccurate watchpoint hit - count. - -Mon Nov 29 19:28:55 1999 Andrew Cagney - - * mi-main.c (mi_execute_async_cli_command): Return ``enum - mi_cmd_cmd_result''. mi_cmd_exec_run, mi_cmd_exec_next, - mi_cmd_exec_step, mi_cmd_exec_step_instruction, - mi_cmd_exec_finish, mi_cmd_exec_until, mi_cmd_exec_return, - mi_cmd_exec_continue): Update call. - (mi_execute_async_cli_command): When target is synchronous, fake - asynchronous behavour (ulgh). Allows tests to be run on built-in - simulator and native targets. - -Mon Nov 29 15:15:16 1999 Andrew Cagney - - * mi-cmds.h (mi_cmd_gdb_exit), mi-cmds.c (mi_cmds), mi-main.c - (mi_cmd_gdb_exit): Change function signature to mi_cmd_argv_ftype. - -1999-11-28 Andew Cagney - - * mi-parse.c: Include and - -1999-11-26 Elena Zannoni - - * gdbmi.texinfo: Added watchpoint command descriptions and - examples. - - * mi-main.c (mi_load_progress): Add parameter for total sent so far. - Print it as well. - -Fri Nov 26 10:17:49 1999 Andrew Cagney - - * gdbmi.texinfo (section Output Syntax): For lists, the - part of a is optional. Clarify syntax. - (appendix Proposed v2.0 Output Syntax): New section. Provide - record of discussion of possible changes to syntax. - -Wed Nov 24 19:41:35 1999 Andrew Cagney - - * mi-main.c (mi_cmd_data_read_memory): Simplify. Fix coredump - when arguments were bad. - (mi_cmd_execute): Change parameter to ``struct mi_parse''. Handle - case of argv_func as well as args_func. - (captured_mi_execute_command): Update. - - * mi-cmds.c (struct mi_cmd): Add field for mi_cmd_argv_ftype. - (mi_cmds): Update mi_cmd_data_read_memory. - (mi_lookup): Return - - * mi-cmds.h (mi_cmd_args_ftype): Rename mi_cmd_ftype. Make all - functions of type this type. - (mi_cmd_argv_ftype): Declare. - (mi_cmd_data_read_memory): Change type to mi_cmd_argv_fytpe. - (struct mi_cmd): Move declaration to here from mi-cmds.c. - (mi_lookup): Return a pointer to ``struct mi_cmd''. - -Wed Nov 24 15:03:34 1999 Andrew Cagney - - * mi-parse.c (mi_parse): Initialize TOKEN when a CLI command. - - * gdbmi.texinfo: Allow a before a CLI command. - - * mi-parse.h (struct mi_parse): Declare. - (mi_parse): Change to return a ``struct mi_parse''. - (enum mi_command_type): Delete PARSE_ERROR. - - * mi-main.c (struct mi_execute_command_context): Delete. - (captured_mi_execute_command): Update - (mi_execute_command): Update. Check for mi_parse returning NULL. - -Wed Nov 24 12:57:14 1999 Andrew Cagney - - * mi-parse.h: Remove const, from cmd parameter. Causes cascading - warnings. - -Wed Nov 24 15:03:34 1999 Andrew Cagney - - * mi-parse.c (mi_parse): New function. Move parse code to here. - * mi-main.c (parse): From here. Delete. - -Wed Nov 24 12:57:14 1999 Andrew Cagney - - * mi-parse.c, mi-parse.h: New files. Implement mi_parse_env. - -Wed Nov 24 11:24:05 1999 Andrew Cagney - - * mi-out.c (mi_field_string): Make string parameter constant. - -1999-11-23 Elena Zannoni - - * mi-cmds.h (mi_cmd_target_download): Export. - - * mi-cmds.c (mi_cmds): Add mi_cmd_target_download. - - * mi-main.c: Include . - (mi_cmd_target_download): New function, implement the - target-download command. - (mi_load_progress): New function. Called via the - show_load_progress hook. Prints updates every 0.5 secs. - (mi_command_loop): Initialize the show_load_progress hook. - -1999-11-22 Elena Zannoni - - * mi-main.c (mi_cmd_exec_until): New function. Implement until - command. - (mi_cmd_exec_step_instruction): New function. Implement stepi - command. - (mi_cmd_exec_next_instruction): New function. Implement nexti - command. - - * mi-cmds.c (mi_cmds): Add mi_cmd_exec_step_instruction, - mi_cmd_exec_next_instruction, mi_cmd_exec_until. - - * mi-cmds.h (mi_cmd_exec_step_instruction, - mi_cmd_exec_next_instruction, mi_cmd_exec_until): Export. - -Tue Nov 23 00:30:37 1999 Andrew Cagney - - * mi/gdbmi.texinfo: Document -data-read-memory. - - * mi-main.c (mi_cmd_data_read_memory): Fix off-by-one check of - argc. - (mi_cmd_data_read_memory): Label the output table with "memory". - -Thu Nov 18 18:15:53 1999 Andrew Cagney - - * mi-main.c (mi_cmd_exec_interrupt, mi_cmd_break_insert, - mi_cmd_break_watch, mi_cmd_disassemble, mi_cmd_execute): Replace - strdup with xstrdup. - -Thu Nov 18 20:50:09 1999 Andrew Cagney - - * mi-main.c (mi_cmd_data_read_memory): New function. Implement - data-read-memory. - - * mi-cmds.h, mi-cmds.c: Add mi_cmd_data_read_memory. - * mi-cmds.c (mi_cmds): Ditto. - -1999-11-11 Elena Zannoni - - * mi-cmds.h (mi_cmd_break_watch): Export. - - * mi-cmds.c (mi_cmds): Hook up break-watch to function - mi_cmd_break_watch. - - * mi-main.c (wp_type): New enumeration for the possible types of - watchpoints. - (mi_cmd_break_watch): New function, implements the break-watch - command. - -1999-11-11 Elena Zannoni - - * mi-main.c (mi_cmd_break_insert): Handle case in which the command is - just a -break-insert w/o args. - -Fri Nov 12 00:01:52 1999 Andrew Cagney - - * mi-out.c (mi_field_string): Always quote the string. - -1999-11-10 Elena Zannoni - - * mi-cmds.h(mi_cmd_data_list_changed_registers, - mi_cmd_data_list_register_names): Export. - - * mi-cmds.c (mi_cmds): Hook up data-list-changed-registers to - mi_cmd_data_list_changed_registers and data-list-register-names to - mi_cmd_data_list_register_names. - - * mi-main.c (mi_cmd_data_list_changed_registers): New function, - implements the data-list-changed-registers command. - (mi_cmd_data_list_register_names): New function, implements the - data-list-register-names command. - (register_changed_p): New function. Decide whether the register - contents have changed. - (setup_architecture_data): New function. Initialize registers - memory. - (_initialize_mi_main): Call setup_architecture_data(), and - register_gdbarch_swap(). - -Wed Nov 10 18:35:08 1999 Andrew Cagney - - * mi-main.c (mi_execute_command): Correctly quote error messages. - -Wed Nov 10 11:05:14 1999 Andrew Cagney - - * mi/gdbmi.texinfo: Delete . Replaced by - . - - * mi-main.c (mi_console_raw_packet): Always quote console output. - -Tue Nov 9 17:53:05 1999 Andrew Cagney - - * mi-main.c (mi_console_file_new), mi-out.c (mi_out_new): Replace - the tui_file with a mem_file. Ya! - - * mi-out.c (do_write): New function, wrapper to gdb_file_write. - (mi_out_put): Pass do_write to gdb_file_put. - - * mi-main.c (mi_console_file_flush): Rewrite. Use - mi_console_raw_packet to send data to the console. - (mi_console_raw_packet): New function. Correctly - create quoted C string packets. - -1999-11-08 Elena Zannoni - - * mi-cmds.c (mi_cmds): Break-insert is now implemented by - mi_cmd_break_insert. - * mi-cmds.h (mi_cmd_break_insert): Export. - * mi-main.c (bp_type): New enumeration. - (mi_cmd_break_insert): New function. Implements all flavors of - breakpoint insertion. - -Mon Nov 8 17:49:17 1999 Andrew Cagney - - * mi-main.c (mi_console_file_flush): Replace gdb_file_get_strbuf - with tui_file_get_strbuf. - -Fri Nov 5 17:06:07 1999 Andrew Cagney - - * mi-main.c (mi_console_file_delete, mi_console_file_fputs, - mi_console_file_flush): Call internal_error instead of error. - -Thu Nov 4 19:53:32 1999 Andrew Cagney - - * mi-main.c (captured_mi_execute_command): New function. - (mi_execute_command): Rewrite. Replace SET_TOP_LEVEL() with call - to captured_mi_execute_command via catch_errors. - -Thu Nov 4 20:33:58 1999 Andrew Cagney - - * mi-main.c (clean): Delete. - (mi_command_loop): Delete extern declaration of - mi_execute_command. - -1999-10-28 Elena Zannoni - - * mi-main.c (mi_cmd_stack_select_frame): Conditionalize the body - on UI_OUT, because select_frame_command_wrapper is only defined if - UI_OUT is. - (mi_cmd_exec_interrupt): Conditionalize the body on UI_OUT, - because interrupt_target_command_wrapper is only defined if UI_OUT is. - - * mi-cmds.c (mi_cmds): Implement command exec-interrupt by - mi_cmd_exec_interrupt. - - * mi-main.c (mi_cmd_exec_interrupt): New function. Implements - exec-interrupt command. - (mi_cmd_execute): If the target is running save execution command - token in previous_async_command. If the command is not 'interrupt' - and the target is running, reject it. - (clean): New function. Free the arg and reset it to NULL. - - * mi-cmds.h (mi_cmd_exec_interrupt):Export. - -1999-10-28 Elena Zannoni - - * mi-cmds.c (mi_cmds): Implement command stack-select-frame by - mi_cmd_stack_select_frame. - - * mi-main.c (mi_cmd_stack_select_frame): New function. Implements - stack-select-frame command. - - * mi-cmds.h (mi_cmd_select_frame):Export. - -1999-10-26 Elena Zannoni - - * mi-cmds.c (mi_cmds): Implement commands stack-list-locals and - stack-list-arguments by mi_cmd_stack_list_locals and - mi_cmd_stack_list_args. - - * mi-main.c (mi_cmd_stack_list_locals): New function. Implements - stack-list-locals command. - (mi_cmd_stack_list_args): New function. Implements - stack-list-arguments command. - (list_args_or_locals): New function. Do all the work for the - listing of locals or arguments. - - * mi-cmds.h (mi_cmd_stack_list_args,mi_cmd_stack_list_locals) : - Export. - -1999-10-25 Elena Zannoni - - * mi-cmds.c (mi_cmds): Add new command stack-info-depth. - - * mi-main.c (mi_cmd_stack_info_depth): New function. Implements - the stack-info-depth command. - * mi-cmds.h (mi_cmd_stack_info_depth): Export. - - -1999-10-22 Elena Zannoni - - * mi-main.c (mi_execute_command): Handle MI_CMD_ERROR case - properly, for command that return error code and don't set - mi_error_message. - - * mi-cmds.c (mi_cmds): Hook stack-list-frames command to - mi_cmd_stack_list_frames function. - * mi-cmds.h (mi_cmd_stack_list_frames): Export. - - * mi-main.c (mi_execute_command): Deal with a return code of - MI_CMD_ERROR from the execution of mi commands. - (mi_error_message): Static string variable, to contain the error - message from mi commands. - (mi_cmd_stack_list_frames): New function. Prints a backtrace. - -1999-10-18 Elena Zannoni - - * mi-main.c (mi_cmd_disassemble): Handle the new command line - parameter that specifies the number of disassembly lines to be - displayed. - (gdb_do_disassemble): Add new parameter. Count the number of lines - that have been displayed, and stop when limit is reached. - -Wed Oct 13 18:04:13 1999 Andrew Cagney - - * mi-main.c (mi_command_loop): Don't initialize ``flush_hook''. - -1999-10-13 Elena Zannoni - - * mi/gdbmi.texinfo: More reformatting of the grammars. - -1999-10-12 Elena Zannoni - - * mi/gdbmi.texinfo: More TeX formatting. - -1999-10-11 Elena Zannoni - - * mi/gdbmi.texinfo: First pass completed. All commands should have - some comments/info. - Escape '@' output special char. - Reformat for TeX. - -1999-10-08 Elena Zannoni - - * mi/gdbmi.texinfo: Filled in part of file command section, and - stack section. - -1999-10-07 Elena Zannoni - - * mi/gdbmi.texinfo: Filled in some sections about execution - commands. - -Tue Oct 5 15:27:28 1999 Andrew Cagney - - * mi-cmds.h: Sort table - * mi-cmds.c: Ditto. - (MI_TABLE_SIZE): Increase to 251. - -1999-10-04 Fernando Nasser - - * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete): Add missing - cleanups. - -1999-10-04 Fernando Nasser - - * mi-main.c (next_arg): Returns lenght as well. - (which_var, mi_cmd_var_create, mi_cmd_var_delete, - mi_cmd_var_set_format, mi_cmd_var_update): Do not modify the input - string, use allocated storage instead. - (mi_cmd_var_assign): Adjust call to next_arg() to include new - argument. - -1999-10-04 Fernando Nasser - - * mi-main.c (mi_execute_command): Fix handling of errors. - -1999-10-04 Fernando Nasser - - * mi-out.c (mi_out_new): Call tui_sfileopen() instead of - deprecated gdb_file_init_astream(). - * mi-main.c (mi_console_file_new): Ditto. - -Mon Oct 4 15:17:29 1999 Andrew Cagney - - * mi-cmds.h: Sort function declarations. - (mi_lookup): Add extern. - - * mi-cmds.c (mi_lookup): Delete dead code. - (build_table): Call internal_error instead of error. - (build_table): Send trace output to gdb_stdlog. - -1999-10-01 Elena Zannoni - - * mi-main.c (mi_execute_async_cli_command): Don't do the cleanups - if target_executing is null. - -1999-09-28 Elena Zannoni - - * mi-main.c (async_p): Change var name to event_loop_p. - -Mon Sep 27 15:11:00 1999 Andrew Cagney - - * mi-main.c (mi_execute_async_cli_command, mi_execute_command): - Replace target_has_async with function target_can_async_p. - -Sun Sep 26 00:12:52 1999 Andrew Cagney - - * mi-main.c (mi_cmd_target_select_continuation): Delete function. - (mi_cmd_target_select): Simplify. target-connect is guarenteed to - be synchronous. - -Sun Sep 26 00:12:52 1999 Andrew Cagney - - * mi-cmds.h (mi_cmd_ftype): Replace mi_impl_ftype. - (enum mi_cmd_result): Define. - * mi-cmds.c (struct mi_cmd): Update. - (mi_lookup): Update. - * mi-main.c (mi_cmd_execute): Update. - - * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_run, mi_cmd_exec_next, - mi_cmd_exec_step, mi_cmd_target_select, mi_cmd_exec_continue, - mi_cmd_exec_return, mi_cmd_exec_finish, mi_cmd_disassemble, - mi_cmd_var_create, mi_cmd_var_delete, mi_cmd_var_set_format, - mi_cmd_var_show_format, mi_cmd_var_info_num_children, - mi_cmd_var_list_children, mi_cmd_var_info_type, - mi_cmd_var_info_expression, mi_cmd_var_show_attributes, - mi_cmd_var_evaluate_expression, mi_cmd_var_update): Update. - Return MI_CMD_DONE. - -1999-09-22 Fernando Nasser - - * mi-main.c (mi_cmd_var_create): Use paddr() to format address - on trace output. - -1999-09-21 Fernando Nasser - - * mi-main.c (mi_cmd_var_create): Test for varobjdebug before - printing trace and send it to gdb_stdlog. - -Mon Sep 20 13:41:04 1999 Andrew Cagney - - * Makefile.in (mi-out.o): Add dependency list. - * mi-out.c: Include "mi-out.h". - -1999-09-18 Elena Zannoni - - * mi-main.c (_initialize_mi_main): Events on stadin are now - handled by stdin_event_handler. - -1999-09-17 Fernando Nasser - - * mi-cmds.c (mi_cmds): Add var-* commands. - -1999-09-17 Fernando Nasser - - * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete, - mi_cmd_var_set_format, mi_cmd_var_show_format, - mi_cmd_var_info_num_children, mi_cmd_var_list_children, - mi_cmd_var_info_type, mi_cmd_var_info_expression, - mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, - mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, - which_var, next_arg): New functions. Implement the -var-* - commands. - * mi-cmds.h: Add prototypes for the above. - -1999-09-14 Fernando Nasser - - * mi-cmds.c (mi_cmds): Add detach command. - -1999-09-09 Fernando Nasser - - * mi-cmds.c (lookup_table): Fix typo. - -1999-09-09 Fernando Nasser - - * mi-cmds.c (mi_cmds): Fix typo and missing command. - -1999-09-09 Fernando Nasser - - * mi-main.c: Properly align function prototypes. - (mi_cmd_target_select): Proper check for NULL value. - -1999-09-09 Fernando Nasser - - * mi-main.c (mi_execute_async_cli_command): Fix for native targets - that do not have async yet. - -1999-09-01 Elena Zannoni - - * mi-main.c (mi_cmd_disassemble): Remove unused var. - (gdb_do_disassemble): Ditto. - -1999-08-30 Elena Zannoni - - * mi-main.c: Replace all the occurrences of 'asynch' in variable - or function names with 'async' to make it consistent with the rest - of gdb. - -Mon Aug 30 18:16:39 1999 Andrew Cagney - - * mi-main.c: #include for isspace(). - -1999-08-27 Elena Zannoni - - * mi-main.c (gdb_do_disassemble): This function returns void, not - int. - -1999-08-26 Elena Zannoni - - * mi-main.c (mi_cmd_disassemble): Don't use atoi() on the high - address string, just treat it same as address low. - (gdb_do_disassemble): Parse high_address string before seeing if - it is zero. - -1999-08-25 Elena Zannoni - - * mi-main.c (mi_cmd_disassemble): New function to produce - disassembly output for mi. - (gdb_dis_asm_read_memory): New function. Read the disassembly from - the executable file, instead of target memory. - (compare_lines): New function. Compare order of disassembly lines. - (gdb_do_disassemble): New function. Do the real job of getting the - assembly code out. - - * mi-cmds.c (mi_cmds): Do data-disassemble mi command via the - mi_cmd_disassemble function. - - * mi-cmds.h: Export new function mi_cmd_disassemble. - -Wed Aug 25 15:58:31 1999 Andrew Cagney - - * mi-main.c (mi_command_loop): Remove references to ui-hooks. - -1999-08-21 Elena Zannoni - - * mi-main.c (mi_execute_asynch_cli_command): Fix the incorrect - usage of strcat(): allocate enough space for the string. - -1999-08-13 Elena Zannoni - - From Christopher Faylor - * mi-main.c (mi_execute_command): Make sure we flush all the - output after each command. - -1999-08-10 Elena Zannoni - - * mi-main.c (_initialize_mi_main): Remove casting in call to - add_file_handler. - -Sun Aug 8 17:20:57 1999 Andrew Cagney - - * mi-main.c (mi_cmd_target_select, mi_execute_asynch_cli_command): - Replace call to fatal with call to internal_error. - -1999-07-26 Fernando Nasser - - * mi-main.c (mi_cmd_execute): Add return code. - (mi_execute_command): Make appropriate changes when calling the - function mentioned above. - (mi_cmd_gdb_exit, mi_cmd_target_select, - mi_cmd_target_select_continuation, mi_execute_command, - mi_exec_asynch_cli_cmd, mi_exec_asynch_cli_cmd_continuation): - Print token, prefix, class and output (if any) in one single group - of statements. - (mi_execute_command, mi_cmd_execute): Fix error prefix. - (mi_cmd_execute): Use exec cleanup for token. - * mi-out.c (mi_out_rewind): New function. - * mi-out.h: Prototype for the above. - -1999-07-16 Fernando Nasser - - * mi-main.c (mi_cmd_gdb_exit): Use buffer for exit message. - (mi_cmd_execute): Route error messages to correct file. - (mi_execute_asynch_cli_command): Insert line feed after running - message. - -1999-07-16 Fernando Nasser - - * mi-out.h (mi_out_buffered): Add extern declaration. - * mi-out.c (mi_out_buffered): New function. Insert a string at the - current buffer position. - * mi-main.c (mi_cmd_target_select, mi_execute_command, - mi_cmd_execute, mi_execute_asynch_cli_command): Use the above - function instead of printing to raw_stdout. - (mi_cmd_target_select, mi_cmd_target_select_continuation, - mi_execute_command, mi_cmd_execute, mi_execute_cli_command, - mi_exec_asynch_cli_cmd_continuation): Fix handling of token and - prefix. - (mi_execute_cli_command): Remove parameter no longer needed. - -1999-07-15 Elena Zannoni - - * mi-main.c (mi_cmd_target_select_continuation): Print the numeric - token when we are connected. - (mi_execute_command): Don't print the token now, do it later. - (mi_execute_cli_command): Add a new parameter for the numeric - token. Print the token, the prefix and the class after the - command has executed, not before. - (mi_execute_asynch_cli_command): Don't print an extra blank line. - -1999-07-15 Fernando Nasser - - * mi-main.c (mi_gdb_exit): Add \n at the end. - -1999-07-15 Fernando Nasser - - * mi-main.c (mi_cmd_execute): New function. Dispatch a mi operation. - (mi_execute_command): Use the above. - -1999-07-15 Fernando Nasser - - * mi-main.c: Fix identation. - -1999-07-15 Elena Zannoni - - * mi-main.c: Include target.h and inferior.h. - (mi_cmd_target_select): New function to execute the target-select - mi operation. - (mi_cmd_target_select_continuation): New function. Continuation - for the target-select operation. - (mi_execute_command): In case of an MI command which requires - asynchronous execution, do not try to display the result now. If - the execution has to look synchronous don't display the "(gdb)" - prompt. - (mi_execute_asynch_cli_command): Invoke real asynchronous - commands, set up exec_cleanups, and continuations. - (mi_exec_asynch_cli_cmd_continuation): New function. Continuation - for all the MI execution commands except 'target-select'. - (mi_execute_command): Handle null commands by exiting gdb, instead - of core dumping. - - * mi-cmds.c (mi_cmds): Hook up -target-select operation to new mi - function. - - * mi-cmds.h (mi_cmd_target_select): Add extern declaration. - -Thu Jul 15 10:31:39 1999 Andrew Cagney - - * mi-main.c (struct mi_console_file): Add field ``prefix''. - (mi_console_file_new): Add argument prefix. Initialize prefix - field. - (mi_console_file_flush): Use ``prefix'' instead of "~" as the - prefix string. - (mi_command_loop): Update stream output prefixes. gdb_stdout == - "~", gdb_stderr / gdb_stdlog == "&", gdb_stdtarg == "@". - -1999-07-13 Fernando Nasser - - * mi-main.c (ui_out_data): New field first_header. Fix output when - no breakpoints are found. - (mi_table_begin, mi_table_body, mi_table_header): Test for - first_header. - (mi_table_end): Test for supress_field_separator. - (mi_message): Remove messages from MI output. - -1999-06-30 Fernando Nasser - - * mi-cmds.c (mi_cmds[]): Delete gdb-cli operation. - * mi-main.c (parse): Remove ifdefs for cli commands parsing. - (mi-execute-command): Ditto. - -Mon Jun 28 13:06:52 1999 Andrew Cagney - - * mi-out.h: New file. - (mi_out_new, mi_out_put): Move mi specific delcarations to here. - * ui-out.h: From here. - - * mi-main.c: Include "mi-out.h". - -1999-06-25 Fernando Nasser - - * top.c (print_gdb_version): Add the word HEADLESS when output - follows headless format. - (print_command_lines): Fix typo. - -1999-06-25 Elena Zannoni - - * event-loop.h: Export input_fd. - * mi-main.c (mi_command_loop): Use the event loop if running - asynchronously. - (mi_execute_command_wrapper): New function. - (_initialize_mi-main): Set things up for running asynchronously. - -1999-06-18 Fernando Nasser - - * mi-cmds.c (mi_lookup): Deleted. - (lookup_table): New function. Replaces old mi_lookup() for local - use. - (mi_lookup): New function. External interface for command table - searchs. - (build_table): New definition. - (mi_cmds[]): Add several command implementations and the gdb-cli - special operation. - (mi_cmd_execute): Deleted. - * mi-cmds.h: Add type definition for command implementation - function pointers, add declaration for new implementation - functions and a declaration for mi_lookup(). - * mi-main.c (mi_execute_asynch_cli_command): New - function. Captures code that was repeated for all asynch - operations. - (mi_cmd_exec_*): Use the above new function. - (mi_gdb_cmd_exit): Fix the output, printing something appropriate. - (mi_cmd_exec_finish): New operation implementation function. - (mi_cmd_exec_return): Ditto. - (parse): Prepare to remove cli commands. - (mi_execute_command): Fix the output and change the way mi-cmds is - used. - -1999-06-18 Fernando Nasser - - * mi-out.c (mi_table_begin): Add missing field separator call. - -Thu Jun 17 21:05:40 1999 Fernando Nasser - - * breakpoint.c (breakpoint_1): Remove space in breakpoint table - id. - (mention): Use ui_out for last new line (forgotten). - -1999-06-16 Fernando Nasser - - * mi-main.c (mi_console_file_flush): Prevent prefix printing when - buffer empty; change prefix to '~'. - (mi_cmd_exec_*): Prefix normal output with '^' instead of - ','; remove unwanted new lines before "stopped". - -1999-06-16 Fernando Nasser - - * mi-cmds.c (struct mi_cmds): Updated entries for -exec-continue - and exec-next operations. - (mi_cmd_execute): New text for error messages. - * mi-cmds.h: Add declaration for mi_cmd_exec_next and - mi_cmd_exec_continue. - * mi-main.c (mi_cmd_exec_next): New function. Implements exec-next - operation. - (mi_cmd_exec_continue): New function. Implements exec-continue - operation. - (mi_execute_comand): Add missing space to prompt. - (mi_cmd_exec_run): Ditto. - (mi_cmd_exec_step): Ditto. - * mi-out.c (mi_out_new): Add flags argument to ui_out_new call. - (ui_list_end): Reset supress_field_separator flag. - -Sat Jun 12 11:49:10 1999 Andrew Cagney - - * mi-cmds.h. mi-cmds.c (exec step): Command implemented by - mi_cmd_exec_step instead of cli call. - * mi-main.c (mi_cmd_exec_step): New function. - - * mi-cmds.h. mi-cmds.c (exec run): Command implemented by - mi_cmd_exec_run instead of cli call. - * mi-main.c (mi_cmd_exec_run): New function. - - * mi-cmds.h. mi-cmds.c (gdb exit): Command implemented by - mi_cmd_gdb_exit instead of quit_force. - * mi-main.c (mi_cmd_gdb_exit): New function. - -Sat Jun 12 11:33:23 1999 Andrew Cagney - - * mi-main.c (mi_command_loop): Pass mi_input to - simplified_command_loop. - (mi_input): New function. Calls gdb_readline with no prompt. - -Sat Jun 12 11:19:02 1999 Andrew Cagney - - * mi-main.c (mi_console_file_fputs): Re-implement. Use a buffer - to accumulate output. - - * mi-main.c (struct mi_console_file): Add a buffer. - (mi_console_file_new): Create a buffer. - (mi_console_file_flush): New function. - -Sat Jun 12 10:59:39 1999 Andrew Cagney - - * mi-cmds.h (raw_stdout): Declare. Will be moved later. - * mi-cmds.c (mi_cmd_execute): Send error messages to RAW stdout. - (mi_cmds): Sort by class. - - * mi-main.c (raw_stdout): Make global. - * mi-main.c: Remove #ifdef UI_OUT. File assumes UI_OUT is - present. - * mi-main.c: Include "gdb_string.h". - (mi_out_put): Delete declaration. - -1999-06-11 Fernando Nasser - - * mi-main.c: Add pre-processor test for UI_OUT. - (mi_execute_command): Add pre-processor test for UI_OUT. - -Fri Jun 11 23:11:41 1999 Andrew Cagney - - * mi-main.c (raw_stdout): New variable. - (mi_execute_command): Write mi-out direct to raw_stdout. - (mi_command_loop): Create raw_stdout. Attach gdb_stdout to the - console. - (mi_console_file_fputs, mi_console_file_delete, - mi_console_file_new): New functions. - (struct mi_console_file): Declare. - -Fri Jun 11 18:34:33 1999 Andrew Cagney - - * mi-main.c (mi_execute_command): Call mi_out_put to display the - result. - * mi-out.c (mi_out_put): New function. - * ui-out.h (mi_out_put): Add declare. Will move later. - * Makefile.in (mi-cmds.o, mi-main.o): Add dependency on ui-out.h. - - * mi-out.c (mi_field_string, mi_field_fmt, mi_message, mi_flush, - out_field_fmt, list_open, list_close): Replace gdb_stdout with - data->buffer. - (field_separator, list_open, list_close): Add uiout parameter. - (mi_table_begin, mi_table_body, mi_table_end, mi_list_begin, - mi_list_end, mi_field_string, mi_field_fmt, out_field_fmt, - out_field_fmt): Update. - - * mi-out.c (mi_out_new): Initialize supress_field_separator. - (supress_field_separator): Move into mi-out local data object. - (mi_table_begin, mi_list_begin, field_separator): Update. - -Fri Jun 11 16:08:37 1999 Andrew Cagney - - * mi-out.c (mi_out_new): New function, replace init_mi_out. - * mi-main.c (mi_command_loop): Call mi_out_new(). - - * ui-out.h (mi_out_new): Add declaration. Will move later. - (mi_ui_out_impl): Delete. - -Wed Jun 9 16:42:16 1999 Andrew Cagney - - * mi-main.c: Include "ui-hooks.h". - (mi_init_ui, mi_command_loop): New functions. - (_initialize_mi_main): Install ``mi'' as the interpreter when - selected. - -Mon Jun 7 18:43:43 1999 Andrew Cagney - - From Fernando Nasser - * mi-cmds.c (build_table): Clean up error message. - * mi-cmds.c (mi_cmd_execute), mi-main.c (mi_execute_command): Only - print debug information when mi_debug_p. - * mi-cmds.h (mi_debug_p), mi-main.c: Global, control debug messages. - -Thu Jun 3 00:44:52 1999 Andrew Cagney - - From Fernando Nasser : - * mi-cmds.c: Add CLI definitions for "exec-arguments", - "exec-next", "gdb-exit", "break-list", "break-info", "exec-step" - and "stack-list-frames" to mi_cmds. - (struct mi_command): Add ``from_tty'' argument to func. - * mi-cmds.h (quit_force): Declare. - -1999-05-31 Fernando Nasser - - * mi-out.c (mi_table_end): Remove unwanted "\n". - -Thu May 27 14:59:06 1999 Andrew Cagney - - * top.c: Include "ui-hooks.h". - (call_interp_loop): Tempoary. Pass mi_execute_command to - simplified_command_loop. Initialize gdb_stdout & gdb_stderr to - stdio gdb_file streams. Force all hooks to null. - - * mi-cmds.h, mi-main.c, mi-cmds.c: New files. - * Makefile.in (SFILES): Add mi-main.c, mi-cmds.c - (COMMON_OBS): Add mi-main.o, mi-cmds.o. - (mi_cmds_h): Define. - -Wed May 26 12:39:49 1999 Andrew Cagney - - * top.c (call_interp_loop): Hack. Add extern declaration for - mi_ui_out_impl. - -1999-05-25 Fernando Nasser - - * mi-out.c: New table syntax. - -Mon May 24 16:16:29 1999 Andrew Cagney - - mi-out.c (_initialize_mi_out): Add external declaration. - -1999-05-21 Fernando Nasser - - * mi-out.c (mi_table_begin): Added missing parameter. - -1999-05-21 Fernando Nasser - - * mi-out.c: Changed table markers and added table id. - -1999-05-21 Fernando Nasser - - * mi-out.c: New file. Implements low-level ui-out primitives for - CLI-based interaction. - - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 2c3e8c27090..fafac66be9d 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -1,7 +1,8 @@ /* Target-dependent code for the MIPS architecture, for GDB, the GNU Debugger. Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin. @@ -167,14 +168,6 @@ mips_fpa0_regnum (struct gdbarch *gdbarch) #define MIPS_FPU_TYPE (gdbarch_tdep (current_gdbarch)->mips_fpu_type) -/* Return the currently configured (or set) saved register size. */ - -#define MIPS_DEFAULT_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_saved_regsize) - -static const char *mips_saved_regsize_string = size_auto; - -#define MIPS_SAVED_REGSIZE (mips_saved_regsize()) - /* MIPS16 function addresses are odd (bit 0 is set). Here are some functions to test, set, or clear bit 0 of addresses. */ @@ -240,11 +233,15 @@ mips_regsize (struct gdbarch *gdbarch) / gdbarch_bfd_arch_info (gdbarch)->bits_per_byte); } +/* Return the currently configured (or set) saved register size. */ + +static const char *mips_saved_regsize_string = size_auto; + static unsigned int -mips_saved_regsize (void) +mips_saved_regsize (struct gdbarch_tdep *tdep) { if (mips_saved_regsize_string == size_auto) - return MIPS_DEFAULT_SAVED_REGSIZE; + return tdep->mips_default_saved_regsize; else if (mips_saved_regsize_string == size_64) return 8; else /* if (mips_saved_regsize_string == size_32) */ @@ -367,25 +364,19 @@ mips2_fp_compat (void) different to MIPS_SAVED_REGSIZE as it determines the alignment of data allocated after the registers have run out. */ -#define MIPS_DEFAULT_STACK_ARGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_stack_argsize) - -#define MIPS_STACK_ARGSIZE (mips_stack_argsize ()) - static const char *mips_stack_argsize_string = size_auto; static unsigned int -mips_stack_argsize (void) +mips_stack_argsize (struct gdbarch_tdep *tdep) { if (mips_stack_argsize_string == size_auto) - return MIPS_DEFAULT_STACK_ARGSIZE; + return tdep->mips_default_stack_argsize; else if (mips_stack_argsize_string == size_64) return 8; else /* if (mips_stack_argsize_string == size_32) */ return 4; } -#define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p) - #define VM_MIN_ADDRESS (CORE_ADDR)0x400000 static mips_extra_func_info_t heuristic_proc_desc (CORE_ADDR, CORE_ADDR, @@ -565,7 +556,7 @@ mips_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int rawnum = cookednum % NUM_REGS; gdb_assert (cookednum >= NUM_REGS && cookednum < 2 * NUM_REGS); if (register_size (gdbarch, rawnum) == register_size (gdbarch, cookednum)) - return regcache_raw_read (regcache, rawnum, buf); + regcache_raw_read (regcache, rawnum, buf); else if (register_size (gdbarch, rawnum) > register_size (gdbarch, cookednum)) { if (gdbarch_tdep (gdbarch)->mips64_transfers_32bit_regs_p @@ -585,7 +576,7 @@ mips_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int rawnum = cookednum % NUM_REGS; gdb_assert (cookednum >= NUM_REGS && cookednum < 2 * NUM_REGS); if (register_size (gdbarch, rawnum) == register_size (gdbarch, cookednum)) - return regcache_raw_write (regcache, rawnum, buf); + regcache_raw_write (regcache, rawnum, buf); else if (register_size (gdbarch, rawnum) > register_size (gdbarch, cookednum)) { if (gdbarch_tdep (gdbarch)->mips64_transfers_32bit_regs_p @@ -742,7 +733,7 @@ mips_read_sp (void) enum auto_boolean mask_address_var = AUTO_BOOLEAN_AUTO; static int -mips_mask_address_p (void) +mips_mask_address_p (struct gdbarch_tdep *tdep) { switch (mask_address_var) { @@ -752,7 +743,7 @@ mips_mask_address_p (void) return 0; break; case AUTO_BOOLEAN_AUTO: - return MIPS_DEFAULT_MASK_ADDRESS_P; + return tdep->default_mask_address_p; default: internal_error (__FILE__, __LINE__, "mips_mask_address_p: bad switch"); @@ -763,6 +754,7 @@ mips_mask_address_p (void) static void show_mask_address (char *cmd, int from_tty, struct cmd_list_element *c) { + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); switch (mask_address_var) { case AUTO_BOOLEAN_TRUE: @@ -773,7 +765,7 @@ show_mask_address (char *cmd, int from_tty, struct cmd_list_element *c) break; case AUTO_BOOLEAN_AUTO: printf_filtered ("The 32 bit address mask is set automatically. Currently %s\n", - mips_mask_address_p () ? "enabled" : "disabled"); + mips_mask_address_p (tdep) ? "enabled" : "disabled"); break; default: internal_error (__FILE__, __LINE__, @@ -787,7 +779,8 @@ show_mask_address (char *cmd, int from_tty, struct cmd_list_element *c) static int mips_eabi_use_struct_convention (int gcc_p, struct type *type) { - return (TYPE_LENGTH (type) > 2 * MIPS_SAVED_REGSIZE); + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + return (TYPE_LENGTH (type) > 2 * mips_saved_regsize (tdep)); } /* Should call_function pass struct by reference? @@ -799,25 +792,14 @@ mips_eabi_reg_struct_has_addr (int gcc_p, struct type *type) { enum type_code typecode = TYPE_CODE (check_typedef (type)); int len = TYPE_LENGTH (check_typedef (type)); + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION) - return (len > MIPS_SAVED_REGSIZE); + return (len > mips_saved_regsize (tdep)); return 0; } -static int -mips_n32n64_reg_struct_has_addr (int gcc_p, struct type *type) -{ - return 0; /* Assumption: N32/N64 never passes struct by ref. */ -} - -static int -mips_o32_reg_struct_has_addr (int gcc_p, struct type *type) -{ - return 0; /* Assumption: O32/O64 never passes struct by ref. */ -} - /* Tell if the program counter value in MEMADDR is in a MIPS16 function. */ static int @@ -1083,7 +1065,6 @@ mips32_next_pc (CORE_ADDR pc) case 3: /* BGEZL */ case 17: /* BGEZAL */ case 19: /* BGEZALL */ - greater_equal_branch: if (read_signed_register (itype_rs (inst)) >= 0) pc += mips32_relative_offset (inst) + 4; else @@ -1129,7 +1110,6 @@ mips32_next_pc (CORE_ADDR pc) pc += 8; break; case 6: /* BLEZ, BLEZL */ - less_zero_branch: if (read_signed_register (itype_rs (inst) <= 0)) pc += mips32_relative_offset (inst) + 4; else @@ -1481,6 +1461,7 @@ mips_find_saved_regs (struct frame_info *fci) mips_extra_func_info_t proc_desc; t_inst inst; CORE_ADDR *saved_regs; + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (deprecated_get_frame_saved_regs (fci) != NULL) return; @@ -1592,7 +1573,7 @@ mips_find_saved_regs (struct frame_info *fci) if (gen_mask & 0x80000000) { set_reg_offset (saved_regs, ireg, reg_position); - reg_position -= MIPS_SAVED_REGSIZE; + reg_position -= mips_saved_regsize (tdep); } } @@ -1613,14 +1594,14 @@ mips_find_saved_regs (struct frame_info *fci) CORE_ADDR reg_position = (get_frame_base (fci) + PROC_REG_OFFSET (proc_desc)); if (inst & 0x20) - reg_position -= MIPS_SAVED_REGSIZE; + reg_position -= mips_saved_regsize (tdep); /* Check if the s0 and s1 registers were pushed on the stack. */ for (reg = 16; reg < sreg_count + 16; reg++) { set_reg_offset (saved_regs, reg, reg_position); - reg_position -= MIPS_SAVED_REGSIZE; + reg_position -= mips_saved_regsize (tdep); } } } @@ -1636,7 +1617,8 @@ mips_find_saved_regs (struct frame_info *fci) for (ireg = MIPS_NUMREGS - 1; float_mask; --ireg, float_mask <<= 1) if (float_mask & 0x80000000) { - if (MIPS_SAVED_REGSIZE == 4 && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) + if (mips_saved_regsize (tdep) == 4 + && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) { /* On a big endian 32 bit ABI, floating point registers are paired to form doubles such that the most @@ -1662,14 +1644,14 @@ mips_find_saved_regs (struct frame_info *fci) loop). */ if ((ireg & 1)) set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg, - reg_position - MIPS_SAVED_REGSIZE); + reg_position - mips_saved_regsize (tdep)); else set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg, - reg_position + MIPS_SAVED_REGSIZE); + reg_position + mips_saved_regsize (tdep)); } else set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg, reg_position); - reg_position -= MIPS_SAVED_REGSIZE; + reg_position -= mips_saved_regsize (tdep); } set_reg_offset (saved_regs, PC_REGNUM, saved_regs[RA_REGNUM]); @@ -1706,7 +1688,8 @@ read_next_frame_reg (struct frame_info *fi, int regno) static CORE_ADDR mips_addr_bits_remove (CORE_ADDR addr) { - if (mips_mask_address_p () + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + if (mips_mask_address_p (tdep) && (((ULONGEST) addr) >> 32 == 0xffffffffUL)) /* This hack is a work-around for existing boards using PMON, the simulator, and any other 64-bit targets that doesn't have true @@ -1774,6 +1757,7 @@ static CORE_ADDR mips_frame_saved_pc (struct frame_info *frame) { CORE_ADDR saved_pc; + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), 0, 0)) { @@ -1785,7 +1769,9 @@ mips_frame_saved_pc (struct frame_info *frame) mips_extra_func_info_t proc_desc = get_frame_extra_info (frame)->proc_desc; if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc)) - saved_pc = read_memory_integer (get_frame_base (frame) - MIPS_SAVED_REGSIZE, MIPS_SAVED_REGSIZE); + saved_pc = read_memory_integer ((get_frame_base (frame) + - mips_saved_regsize (tdep)) + , mips_saved_regsize (tdep)); else { /* We have to get the saved pc from the sigcontext if it is @@ -1992,6 +1978,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc, unsigned inst = 0; /* current instruction */ unsigned entry_inst = 0; /* the entry instruction */ int reg, offset; + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); PROC_FRAME_OFFSET (&temp_proc_desc) = 0; /* size of stack frame */ PROC_FRAME_ADJUST (&temp_proc_desc) = 0; /* offset of FP from SP */ @@ -2097,7 +2084,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc, { PROC_REG_MASK (&temp_proc_desc) |= 1 << reg; set_reg_offset (temp_saved_regs, reg, sp + offset); - offset += MIPS_SAVED_REGSIZE; + offset += mips_saved_regsize (tdep); } /* Check if the ra register was pushed on the stack. */ @@ -2106,7 +2093,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc, { PROC_REG_MASK (&temp_proc_desc) |= 1 << RA_REGNUM; set_reg_offset (temp_saved_regs, RA_REGNUM, sp + offset); - offset -= MIPS_SAVED_REGSIZE; + offset -= mips_saved_regsize (tdep); } /* Check if the s0 and s1 registers were pushed on the stack. */ @@ -2114,7 +2101,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc, { PROC_REG_MASK (&temp_proc_desc) |= 1 << reg; set_reg_offset (temp_saved_regs, reg, sp + offset); - offset -= MIPS_SAVED_REGSIZE; + offset -= mips_saved_regsize (tdep); } } } @@ -2729,6 +2716,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, int argnum; int len = 0; int stack_offset = 0; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* For shared libraries, "t9" needs to point at the function address. */ @@ -2752,7 +2740,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, passed in registers, but that's OK. */ for (argnum = 0; argnum < nargs; argnum++) len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])), - MIPS_STACK_ARGSIZE); + mips_stack_argsize (tdep)); sp -= align_up (len, 16); if (mips_debug) @@ -2793,12 +2781,13 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, /* The EABI passes structures that do not fit in a register by reference. */ - if (len > MIPS_SAVED_REGSIZE + if (len > mips_saved_regsize (tdep) && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)) { - store_unsigned_integer (valbuf, MIPS_SAVED_REGSIZE, VALUE_ADDRESS (arg)); + store_unsigned_integer (valbuf, mips_saved_regsize (tdep), + VALUE_ADDRESS (arg)); typecode = TYPE_CODE_PTR; - len = MIPS_SAVED_REGSIZE; + len = mips_saved_regsize (tdep); val = valbuf; if (mips_debug) fprintf_unfiltered (gdb_stdlog, " push"); @@ -2875,8 +2864,8 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, in registers where gcc sometimes puts them on the stack. For maximum compatibility, we will put them in both places. */ - int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) && - (len % MIPS_SAVED_REGSIZE != 0)); + int odd_sized_struct = ((len > mips_saved_regsize (tdep)) + && (len % mips_saved_regsize (tdep) != 0)); /* Note: Floating-point values that didn't fit into an FP register are only written to memory. */ @@ -2884,8 +2873,8 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, { /* Remember if the argument was written to the stack. */ int stack_used_p = 0; - int partial_len = - len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE; + int partial_len = (len < mips_saved_regsize (tdep) + ? len : mips_saved_regsize (tdep)); if (mips_debug) fprintf_unfiltered (gdb_stdlog, " -- partial=%d", @@ -2903,15 +2892,17 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, stack_used_p = 1; if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) { - if (MIPS_STACK_ARGSIZE == 8 && - (typecode == TYPE_CODE_INT || - typecode == TYPE_CODE_PTR || - typecode == TYPE_CODE_FLT) && len <= 4) - longword_offset = MIPS_STACK_ARGSIZE - len; - else if ((typecode == TYPE_CODE_STRUCT || - typecode == TYPE_CODE_UNION) && - TYPE_LENGTH (arg_type) < MIPS_STACK_ARGSIZE) - longword_offset = MIPS_STACK_ARGSIZE - len; + if (mips_stack_argsize (tdep) == 8 + && (typecode == TYPE_CODE_INT + || typecode == TYPE_CODE_PTR + || typecode == TYPE_CODE_FLT) + && len <= 4) + longword_offset = mips_stack_argsize (tdep) - len; + else if ((typecode == TYPE_CODE_STRUCT + || typecode == TYPE_CODE_UNION) + && (TYPE_LENGTH (arg_type) + < mips_stack_argsize (tdep))) + longword_offset = mips_stack_argsize (tdep) - len; } if (mips_debug) @@ -2951,7 +2942,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, if (mips_debug) fprintf_filtered (gdb_stdlog, " - reg=%d val=%s", argreg, - phex (regval, MIPS_SAVED_REGSIZE)); + phex (regval, mips_saved_regsize (tdep))); write_register (argreg, regval); argreg++; } @@ -2966,7 +2957,8 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, only needs to be adjusted when it has been used. */ if (stack_used_p) - stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (partial_len, + mips_stack_argsize (tdep)); } } if (mips_debug) @@ -2992,6 +2984,7 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, int argnum; int len = 0; int stack_offset = 0; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* For shared libraries, "t9" needs to point at the function address. */ @@ -3013,7 +3006,7 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, /* Now make space on the stack for the args. */ for (argnum = 0; argnum < nargs; argnum++) len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])), - MIPS_STACK_ARGSIZE); + mips_stack_argsize (tdep)); sp -= align_up (len, 16); if (mips_debug) @@ -3083,16 +3076,16 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, in registers where gcc sometimes puts them on the stack. For maximum compatibility, we will put them in both places. */ - int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) && - (len % MIPS_SAVED_REGSIZE != 0)); + int odd_sized_struct = ((len > mips_saved_regsize (tdep)) + && (len % mips_saved_regsize (tdep) != 0)); /* Note: Floating-point values that didn't fit into an FP register are only written to memory. */ while (len > 0) { /* Rememer if the argument was written to the stack. */ int stack_used_p = 0; - int partial_len = len < MIPS_SAVED_REGSIZE ? - len : MIPS_SAVED_REGSIZE; + int partial_len = (len < mips_saved_regsize (tdep) + ? len : mips_saved_regsize (tdep)); if (mips_debug) fprintf_unfiltered (gdb_stdlog, " -- partial=%d", @@ -3110,11 +3103,12 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, stack_used_p = 1; if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) { - if (MIPS_STACK_ARGSIZE == 8 && - (typecode == TYPE_CODE_INT || - typecode == TYPE_CODE_PTR || - typecode == TYPE_CODE_FLT) && len <= 4) - longword_offset = MIPS_STACK_ARGSIZE - len; + if (mips_stack_argsize (tdep) == 8 + && (typecode == TYPE_CODE_INT + || typecode == TYPE_CODE_PTR + || typecode == TYPE_CODE_FLT) + && len <= 4) + longword_offset = mips_stack_argsize (tdep) - len; } if (mips_debug) @@ -3162,28 +3156,29 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, cagney/2001-07-23: gdb/179: Also, GCC, when outputting LE O32 with sizeof (struct) < - MIPS_SAVED_REGSIZE, generates a left shift as + mips_saved_regsize(), generates a left shift as part of storing the argument in a register a register (the left shift isn't generated when - sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it - is quite possible that this is GCC contradicting - the LE/O32 ABI, GDB has not been adjusted to - accommodate this. Either someone needs to - demonstrate that the LE/O32 ABI specifies such a - left shift OR this new ABI gets identified as - such and GDB gets tweaked accordingly. */ + sizeof (struct) >= mips_saved_regsize()). Since + it is quite possible that this is GCC + contradicting the LE/O32 ABI, GDB has not been + adjusted to accommodate this. Either someone + needs to demonstrate that the LE/O32 ABI + specifies such a left shift OR this new ABI gets + identified as such and GDB gets tweaked + accordingly. */ if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG - && partial_len < MIPS_SAVED_REGSIZE + && partial_len < mips_saved_regsize (tdep) && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)) - regval <<= ((MIPS_SAVED_REGSIZE - partial_len) * + regval <<= ((mips_saved_regsize (tdep) - partial_len) * TARGET_CHAR_BIT); if (mips_debug) fprintf_filtered (gdb_stdlog, " - reg=%d val=%s", argreg, - phex (regval, MIPS_SAVED_REGSIZE)); + phex (regval, mips_saved_regsize (tdep))); write_register (argreg, regval); argreg++; } @@ -3198,7 +3193,8 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, adjusted when it has been used. */ if (stack_used_p) - stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (partial_len, + mips_stack_argsize (tdep)); } } if (mips_debug) @@ -3224,6 +3220,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, int argnum; int len = 0; int stack_offset = 0; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* For shared libraries, "t9" needs to point at the function address. */ @@ -3245,7 +3242,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, /* Now make space on the stack for the args. */ for (argnum = 0; argnum < nargs; argnum++) len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])), - MIPS_STACK_ARGSIZE); + mips_stack_argsize (tdep)); sp -= align_up (len, 16); if (mips_debug) @@ -3265,7 +3262,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, "mips_o32_push_dummy_call: struct_return reg=%d 0x%s\n", argreg, paddr_nz (struct_addr)); write_register (argreg++, struct_addr); - stack_offset += MIPS_STACK_ARGSIZE; + stack_offset += mips_stack_argsize (tdep); } /* Now load as many as possible of the first arguments into @@ -3362,7 +3359,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, argreg += FP_REGISTER_DOUBLE ? 1 : 2; } /* Reserve space for the FP register. */ - stack_offset += align_up (len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (len, mips_stack_argsize (tdep)); } else { @@ -3374,11 +3371,11 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, in registers where gcc sometimes puts them on the stack. For maximum compatibility, we will put them in both places. */ - int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) && - (len % MIPS_SAVED_REGSIZE != 0)); + int odd_sized_struct = ((len > mips_saved_regsize (tdep)) + && (len % mips_saved_regsize (tdep) != 0)); /* Structures should be aligned to eight bytes (even arg registers) on MIPS_ABI_O32, if their first member has double precision. */ - if (MIPS_SAVED_REGSIZE < 8 + if (mips_saved_regsize (tdep) < 8 && mips_type_needs_double_align (arg_type)) { if ((argreg & 1)) @@ -3390,8 +3387,8 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, { /* Remember if the argument was written to the stack. */ int stack_used_p = 0; - int partial_len = - len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE; + int partial_len = (len < mips_saved_regsize (tdep) + ? len : mips_saved_regsize (tdep)); if (mips_debug) fprintf_unfiltered (gdb_stdlog, " -- partial=%d", @@ -3409,11 +3406,12 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, stack_used_p = 1; if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) { - if (MIPS_STACK_ARGSIZE == 8 && - (typecode == TYPE_CODE_INT || - typecode == TYPE_CODE_PTR || - typecode == TYPE_CODE_FLT) && len <= 4) - longword_offset = MIPS_STACK_ARGSIZE - len; + if (mips_stack_argsize (tdep) == 8 + && (typecode == TYPE_CODE_INT + || typecode == TYPE_CODE_PTR + || typecode == TYPE_CODE_FLT) + && len <= 4) + longword_offset = mips_stack_argsize (tdep) - len; } if (mips_debug) @@ -3450,7 +3448,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, { LONGEST regval = extract_signed_integer (val, partial_len); /* Value may need to be sign extended, because - mips_regsize() != MIPS_SAVED_REGSIZE. */ + mips_regsize() != mips_saved_regsize(). */ /* A non-floating-point argument being passed in a general register. If a struct or union, and if @@ -3465,29 +3463,30 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, cagney/2001-07-23: gdb/179: Also, GCC, when outputting LE O32 with sizeof (struct) < - MIPS_SAVED_REGSIZE, generates a left shift as + mips_saved_regsize(), generates a left shift as part of storing the argument in a register a register (the left shift isn't generated when - sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it - is quite possible that this is GCC contradicting - the LE/O32 ABI, GDB has not been adjusted to - accommodate this. Either someone needs to - demonstrate that the LE/O32 ABI specifies such a - left shift OR this new ABI gets identified as - such and GDB gets tweaked accordingly. */ - - if (MIPS_SAVED_REGSIZE < 8 + sizeof (struct) >= mips_saved_regsize()). Since + it is quite possible that this is GCC + contradicting the LE/O32 ABI, GDB has not been + adjusted to accommodate this. Either someone + needs to demonstrate that the LE/O32 ABI + specifies such a left shift OR this new ABI gets + identified as such and GDB gets tweaked + accordingly. */ + + if (mips_saved_regsize (tdep) < 8 && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG - && partial_len < MIPS_SAVED_REGSIZE + && partial_len < mips_saved_regsize (tdep) && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)) - regval <<= ((MIPS_SAVED_REGSIZE - partial_len) * + regval <<= ((mips_saved_regsize (tdep) - partial_len) * TARGET_CHAR_BIT); if (mips_debug) fprintf_filtered (gdb_stdlog, " - reg=%d val=%s", argreg, - phex (regval, MIPS_SAVED_REGSIZE)); + phex (regval, mips_saved_regsize (tdep))); write_register (argreg, regval); argreg++; @@ -3507,7 +3506,8 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, refered to as their "home". Consequently, space is always allocated. */ - stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (partial_len, + mips_stack_argsize (tdep)); } } if (mips_debug) @@ -3533,6 +3533,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, int argnum; int len = 0; int stack_offset = 0; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* For shared libraries, "t9" needs to point at the function address. */ @@ -3554,7 +3555,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, /* Now make space on the stack for the args. */ for (argnum = 0; argnum < nargs; argnum++) len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])), - MIPS_STACK_ARGSIZE); + mips_stack_argsize (tdep)); sp -= align_up (len, 16); if (mips_debug) @@ -3574,7 +3575,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, "mips_o64_push_dummy_call: struct_return reg=%d 0x%s\n", argreg, paddr_nz (struct_addr)); write_register (argreg++, struct_addr); - stack_offset += MIPS_STACK_ARGSIZE; + stack_offset += mips_stack_argsize (tdep); } /* Now load as many as possible of the first arguments into @@ -3671,7 +3672,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, argreg += FP_REGISTER_DOUBLE ? 1 : 2; } /* Reserve space for the FP register. */ - stack_offset += align_up (len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (len, mips_stack_argsize (tdep)); } else { @@ -3683,11 +3684,11 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, in registers where gcc sometimes puts them on the stack. For maximum compatibility, we will put them in both places. */ - int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) && - (len % MIPS_SAVED_REGSIZE != 0)); + int odd_sized_struct = ((len > mips_saved_regsize (tdep)) + && (len % mips_saved_regsize (tdep) != 0)); /* Structures should be aligned to eight bytes (even arg registers) on MIPS_ABI_O32, if their first member has double precision. */ - if (MIPS_SAVED_REGSIZE < 8 + if (mips_saved_regsize (tdep) < 8 && mips_type_needs_double_align (arg_type)) { if ((argreg & 1)) @@ -3699,8 +3700,8 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, { /* Remember if the argument was written to the stack. */ int stack_used_p = 0; - int partial_len = - len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE; + int partial_len = (len < mips_saved_regsize (tdep) + ? len : mips_saved_regsize (tdep)); if (mips_debug) fprintf_unfiltered (gdb_stdlog, " -- partial=%d", @@ -3718,11 +3719,12 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, stack_used_p = 1; if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) { - if (MIPS_STACK_ARGSIZE == 8 && - (typecode == TYPE_CODE_INT || - typecode == TYPE_CODE_PTR || - typecode == TYPE_CODE_FLT) && len <= 4) - longword_offset = MIPS_STACK_ARGSIZE - len; + if (mips_stack_argsize (tdep) == 8 + && (typecode == TYPE_CODE_INT + || typecode == TYPE_CODE_PTR + || typecode == TYPE_CODE_FLT) + && len <= 4) + longword_offset = mips_stack_argsize (tdep) - len; } if (mips_debug) @@ -3759,7 +3761,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, { LONGEST regval = extract_signed_integer (val, partial_len); /* Value may need to be sign extended, because - mips_regsize() != MIPS_SAVED_REGSIZE. */ + mips_regsize() != mips_saved_regsize(). */ /* A non-floating-point argument being passed in a general register. If a struct or union, and if @@ -3774,29 +3776,30 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, cagney/2001-07-23: gdb/179: Also, GCC, when outputting LE O32 with sizeof (struct) < - MIPS_SAVED_REGSIZE, generates a left shift as + mips_saved_regsize(), generates a left shift as part of storing the argument in a register a register (the left shift isn't generated when - sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it - is quite possible that this is GCC contradicting - the LE/O32 ABI, GDB has not been adjusted to - accommodate this. Either someone needs to - demonstrate that the LE/O32 ABI specifies such a - left shift OR this new ABI gets identified as - such and GDB gets tweaked accordingly. */ - - if (MIPS_SAVED_REGSIZE < 8 + sizeof (struct) >= mips_saved_regsize()). Since + it is quite possible that this is GCC + contradicting the LE/O32 ABI, GDB has not been + adjusted to accommodate this. Either someone + needs to demonstrate that the LE/O32 ABI + specifies such a left shift OR this new ABI gets + identified as such and GDB gets tweaked + accordingly. */ + + if (mips_saved_regsize (tdep) < 8 && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG - && partial_len < MIPS_SAVED_REGSIZE + && partial_len < mips_saved_regsize (tdep) && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)) - regval <<= ((MIPS_SAVED_REGSIZE - partial_len) * + regval <<= ((mips_saved_regsize (tdep) - partial_len) * TARGET_CHAR_BIT); if (mips_debug) fprintf_filtered (gdb_stdlog, " - reg=%d val=%s", argreg, - phex (regval, MIPS_SAVED_REGSIZE)); + phex (regval, mips_saved_regsize (tdep))); write_register (argreg, regval); argreg++; @@ -3816,7 +3819,8 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, refered to as their "home". Consequently, space is always allocated. */ - stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE); + stack_offset += align_up (partial_len, + mips_stack_argsize (tdep)); } } if (mips_debug) @@ -3836,6 +3840,7 @@ mips_pop_frame (void) struct frame_info *frame = get_current_frame (); CORE_ADDR new_sp = get_frame_base (frame); mips_extra_func_info_t proc_desc; + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), 0, 0)) { @@ -3851,17 +3856,17 @@ mips_pop_frame (void) if (regnum != SP_REGNUM && regnum != PC_REGNUM && deprecated_get_frame_saved_regs (frame)[regnum]) { - /* Floating point registers must not be sign extended, - in case MIPS_SAVED_REGSIZE = 4 but sizeof (FP0_REGNUM) == 8. */ + /* Floating point registers must not be sign extended, in case + mips_saved_regsize() = 4 but sizeof (FP0_REGNUM) == 8. */ if (mips_regnum (current_gdbarch)->fp0 <= regnum && regnum < mips_regnum (current_gdbarch)->fp0 + 32) write_register (regnum, read_memory_unsigned_integer (deprecated_get_frame_saved_regs (frame)[regnum], - MIPS_SAVED_REGSIZE)); + mips_saved_regsize (tdep))); else write_register (regnum, read_memory_integer (deprecated_get_frame_saved_regs (frame)[regnum], - MIPS_SAVED_REGSIZE)); + mips_saved_regsize (tdep))); } write_register (SP_REGNUM, new_sp); @@ -3890,15 +3895,18 @@ mips_pop_frame (void) xfree (pi_ptr); write_register (mips_regnum (current_gdbarch)->hi, - read_memory_integer (new_sp - 2 * MIPS_SAVED_REGSIZE, - MIPS_SAVED_REGSIZE)); + read_memory_integer ((new_sp + - 2 * mips_saved_regsize (tdep)), + mips_saved_regsize (tdep))); write_register (mips_regnum (current_gdbarch)->lo, - read_memory_integer (new_sp - 3 * MIPS_SAVED_REGSIZE, - MIPS_SAVED_REGSIZE)); + read_memory_integer ((new_sp + - 3 * mips_saved_regsize (tdep)), + mips_saved_regsize (tdep))); if (MIPS_FPU_TYPE != MIPS_FPU_NONE) write_register (mips_regnum (current_gdbarch)->fp_control_status, - read_memory_integer (new_sp - 4 * MIPS_SAVED_REGSIZE, - MIPS_SAVED_REGSIZE)); + read_memory_integer ((new_sp + - 4 * mips_saved_regsize (tdep)), + mips_saved_regsize (tdep))); } } @@ -4589,6 +4597,7 @@ return_value_location (struct type *valtype, struct return_value_word *lo) { int len = TYPE_LENGTH (valtype); + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (TYPE_CODE (valtype) == TYPE_CODE_FLT && ((MIPS_FPU_TYPE == MIPS_FPU_DOUBLE && (len == 4 || len == 8)) @@ -4633,23 +4642,23 @@ return_value_location (struct type *valtype, lo->reg = regnum + 0; hi->reg = regnum + 1; if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG - && len < MIPS_SAVED_REGSIZE) + && len < mips_saved_regsize (tdep)) { /* "un-left-justify" the value in the low register */ - lo->reg_offset = MIPS_SAVED_REGSIZE - len; + lo->reg_offset = mips_saved_regsize (tdep) - len; lo->len = len; hi->reg_offset = 0; hi->len = 0; } else if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG - && len > MIPS_SAVED_REGSIZE /* odd-size structs */ - && len < MIPS_SAVED_REGSIZE * 2 + && len > mips_saved_regsize (tdep) /* odd-size structs */ + && len < mips_saved_regsize (tdep) * 2 && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT || TYPE_CODE (valtype) == TYPE_CODE_UNION)) { /* "un-left-justify" the value spread across two registers. */ - lo->reg_offset = 2 * MIPS_SAVED_REGSIZE - len; - lo->len = MIPS_SAVED_REGSIZE - lo->reg_offset; + lo->reg_offset = 2 * mips_saved_regsize (tdep) - len; + lo->len = mips_saved_regsize (tdep) - lo->reg_offset; hi->reg_offset = 0; hi->len = len - lo->len; } @@ -4658,10 +4667,10 @@ return_value_location (struct type *valtype, /* Only perform a partial copy of the second register. */ lo->reg_offset = 0; hi->reg_offset = 0; - if (len > MIPS_SAVED_REGSIZE) + if (len > mips_saved_regsize (tdep)) { - lo->len = MIPS_SAVED_REGSIZE; - hi->len = len - MIPS_SAVED_REGSIZE; + lo->len = mips_saved_regsize (tdep); + hi->len = len - mips_saved_regsize (tdep); } else { @@ -4671,7 +4680,7 @@ return_value_location (struct type *valtype, } if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG && register_size (current_gdbarch, regnum) == 8 - && MIPS_SAVED_REGSIZE == 4) + && mips_saved_regsize (tdep) == 4) { /* Account for the fact that only the least-signficant part of the register is being used */ @@ -4899,9 +4908,9 @@ mips_o32_return_value (struct gdbarch *gdbarch, struct type *type, int regnum; for (offset = 0, regnum = V0_REGNUM; offset < TYPE_LENGTH (type); - offset += mips_stack_argsize (), regnum++) + offset += mips_stack_argsize (tdep), regnum++) { - int xfer = mips_stack_argsize (); + int xfer = mips_stack_argsize (tdep); int pos = 0; if (offset + xfer > TYPE_LENGTH (type)) xfer = TYPE_LENGTH (type) - offset; @@ -4926,7 +4935,7 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, if (TYPE_CODE (type)== TYPE_CODE_STRUCT || TYPE_CODE (type)== TYPE_CODE_UNION || TYPE_CODE (type)== TYPE_CODE_ARRAY - || TYPE_LENGTH (type) > 2 * MIPS_SAVED_REGSIZE) + || TYPE_LENGTH (type) > 2 * mips_saved_regsize (tdep)) return RETURN_VALUE_STRUCT_CONVENTION; else if (TYPE_CODE (type) == TYPE_CODE_FLT && tdep->mips_fpu_type != MIPS_FPU_NONE) @@ -5021,18 +5030,6 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, } } -static CORE_ADDR -mips_extract_struct_value_address (struct regcache *regcache) -{ - /* FIXME: This will only work at random. The caller passes the - struct_return address in V0, but it is not preserved. It may - still be there, or this may be a random value. */ - LONGEST val; - - regcache_cooked_read_signed (regcache, V0_REGNUM, &val); - return val; -} - /* Exported procedure: Is PC in the signal trampoline code */ static int @@ -5098,25 +5095,43 @@ set_mipsfpu_command (char *args, int from_tty) static void set_mipsfpu_single_command (char *args, int from_tty) { + struct gdbarch_info info; + gdbarch_info_init (&info); mips_fpu_type = MIPS_FPU_SINGLE; mips_fpu_type_auto = 0; - gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_SINGLE; + /* FIXME: cagney/2003-11-15: Should be setting a field in "info" + instead of relying on globals. Doing that would let generic code + handle the search for this specific architecture. */ + if (!gdbarch_update_p (info)) + internal_error (__FILE__, __LINE__, "set mipsfpu failed"); } static void set_mipsfpu_double_command (char *args, int from_tty) { + struct gdbarch_info info; + gdbarch_info_init (&info); mips_fpu_type = MIPS_FPU_DOUBLE; mips_fpu_type_auto = 0; - gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_DOUBLE; + /* FIXME: cagney/2003-11-15: Should be setting a field in "info" + instead of relying on globals. Doing that would let generic code + handle the search for this specific architecture. */ + if (!gdbarch_update_p (info)) + internal_error (__FILE__, __LINE__, "set mipsfpu failed"); } static void set_mipsfpu_none_command (char *args, int from_tty) { + struct gdbarch_info info; + gdbarch_info_init (&info); mips_fpu_type = MIPS_FPU_NONE; mips_fpu_type_auto = 0; - gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_NONE; + /* FIXME: cagney/2003-11-15: Should be setting a field in "info" + instead of relying on globals. Doing that would let generic code + handle the search for this specific architecture. */ + if (!gdbarch_update_p (info)) + internal_error (__FILE__, __LINE__, "set mipsfpu failed"); } static void @@ -5644,61 +5659,65 @@ mips_gdbarch_init (struct gdbarch_info info, int elf_flags; enum mips_abi mips_abi, found_abi, wanted_abi; int num_regs; + enum mips_fpu_type fpu_type; - elf_flags = 0; - - if (info.abfd) - { - /* First of all, extract the elf_flags, if available. */ - if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour) - elf_flags = elf_elfheader (info.abfd)->e_flags; - } + /* First of all, extract the elf_flags, if available. */ + if (info.abfd && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour) + elf_flags = elf_elfheader (info.abfd)->e_flags; + else if (arches != NULL) + elf_flags = gdbarch_tdep (arches->gdbarch)->elf_flags; + else + elf_flags = 0; + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, + "mips_gdbarch_init: elf_flags = 0x%08x\n", + elf_flags); /* Check ELF_FLAGS to see if it specifies the ABI being used. */ switch ((elf_flags & EF_MIPS_ABI)) { case E_MIPS_ABI_O32: - mips_abi = MIPS_ABI_O32; + found_abi = MIPS_ABI_O32; break; case E_MIPS_ABI_O64: - mips_abi = MIPS_ABI_O64; + found_abi = MIPS_ABI_O64; break; case E_MIPS_ABI_EABI32: - mips_abi = MIPS_ABI_EABI32; + found_abi = MIPS_ABI_EABI32; break; case E_MIPS_ABI_EABI64: - mips_abi = MIPS_ABI_EABI64; + found_abi = MIPS_ABI_EABI64; break; default: if ((elf_flags & EF_MIPS_ABI2)) - mips_abi = MIPS_ABI_N32; + found_abi = MIPS_ABI_N32; else - mips_abi = MIPS_ABI_UNKNOWN; + found_abi = MIPS_ABI_UNKNOWN; break; } /* GCC creates a pseudo-section whose name describes the ABI. */ - if (mips_abi == MIPS_ABI_UNKNOWN && info.abfd != NULL) - bfd_map_over_sections (info.abfd, mips_find_abi_section, &mips_abi); + if (found_abi == MIPS_ABI_UNKNOWN && info.abfd != NULL) + bfd_map_over_sections (info.abfd, mips_find_abi_section, &found_abi); - /* If we have no bfd, then mips_abi will still be MIPS_ABI_UNKNOWN. - Use the ABI from the last architecture if there is one. */ - if (info.abfd == NULL && arches != NULL) - mips_abi = gdbarch_tdep (arches->gdbarch)->found_abi; + /* If we have no usefu BFD information, use the ABI from the last + MIPS architecture (if there is one). */ + if (found_abi == MIPS_ABI_UNKNOWN && info.abfd == NULL && arches != NULL) + found_abi = gdbarch_tdep (arches->gdbarch)->found_abi; /* Try the architecture for any hint of the correct ABI. */ - if (mips_abi == MIPS_ABI_UNKNOWN + if (found_abi == MIPS_ABI_UNKNOWN && info.bfd_arch_info != NULL && info.bfd_arch_info->arch == bfd_arch_mips) { switch (info.bfd_arch_info->mach) { case bfd_mach_mips3900: - mips_abi = MIPS_ABI_EABI32; + found_abi = MIPS_ABI_EABI32; break; case bfd_mach_mips4100: case bfd_mach_mips5000: - mips_abi = MIPS_ABI_EABI64; + found_abi = MIPS_ABI_EABI64; break; case bfd_mach_mips8000: case bfd_mach_mips10000: @@ -5707,35 +5726,68 @@ mips_gdbarch_init (struct gdbarch_info info, on IRIX. (Even for executables created by gcc.) */ if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour && elf_elfheader (info.abfd)->e_ident[EI_CLASS] == ELFCLASS64) - mips_abi = MIPS_ABI_N64; + found_abi = MIPS_ABI_N64; else - mips_abi = MIPS_ABI_N32; + found_abi = MIPS_ABI_N32; break; } } - if (mips_abi == MIPS_ABI_UNKNOWN) - mips_abi = MIPS_ABI_O32; + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: found_abi = %d\n", + found_abi); + + /* What has the user specified from the command line? */ + wanted_abi = global_mips_abi (); + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: wanted_abi = %d\n", + wanted_abi); /* Now that we have found what the ABI for this binary would be, check whether the user is overriding it. */ - found_abi = mips_abi; - wanted_abi = global_mips_abi (); if (wanted_abi != MIPS_ABI_UNKNOWN) mips_abi = wanted_abi; + else if (found_abi != MIPS_ABI_UNKNOWN) + mips_abi = found_abi; + else + mips_abi = MIPS_ABI_O32; + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: mips_abi = %d\n", + mips_abi); + /* Also used when doing an architecture lookup. */ if (gdbarch_debug) - { - fprintf_unfiltered (gdb_stdlog, - "mips_gdbarch_init: elf_flags = 0x%08x\n", - elf_flags); - fprintf_unfiltered (gdb_stdlog, - "mips_gdbarch_init: mips_abi = %d\n", - mips_abi); - fprintf_unfiltered (gdb_stdlog, - "mips_gdbarch_init: found_mips_abi = %d\n", - found_abi); - } + fprintf_unfiltered (gdb_stdlog, + "mips_gdbarch_init: mips64_transfers_32bit_regs_p = %d\n", + mips64_transfers_32bit_regs_p); + + /* Determine the MIPS FPU type. */ + if (!mips_fpu_type_auto) + fpu_type = mips_fpu_type; + else if (info.bfd_arch_info != NULL + && info.bfd_arch_info->arch == bfd_arch_mips) + switch (info.bfd_arch_info->mach) + { + case bfd_mach_mips3900: + case bfd_mach_mips4100: + case bfd_mach_mips4111: + fpu_type = MIPS_FPU_NONE; + break; + case bfd_mach_mips4650: + fpu_type = MIPS_FPU_SINGLE; + break; + default: + fpu_type = MIPS_FPU_DOUBLE; + break; + } + else if (arches != NULL) + fpu_type = gdbarch_tdep (arches->gdbarch)->mips_fpu_type; + else + fpu_type = MIPS_FPU_DOUBLE; + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, + "mips_gdbarch_init: fpu_type = %d\n", + fpu_type); /* try to find a pre-existing architecture */ for (arches = gdbarch_list_lookup_by_info (arches, &info); @@ -5753,6 +5805,9 @@ mips_gdbarch_init (struct gdbarch_info info, if (gdbarch_tdep (arches->gdbarch)->mips64_transfers_32bit_regs_p != mips64_transfers_32bit_regs_p) continue; + /* Be pedantic about which FPU is selected. */ + if (gdbarch_tdep (arches->gdbarch)->mips_fpu_type != fpu_type) + continue; return arches->gdbarch; } @@ -5761,6 +5816,9 @@ mips_gdbarch_init (struct gdbarch_info info, gdbarch = gdbarch_alloc (&info, tdep); tdep->elf_flags = elf_flags; tdep->mips64_transfers_32bit_regs_p = mips64_transfers_32bit_regs_p; + tdep->found_abi = found_abi; + tdep->mips_abi = mips_abi; + tdep->mips_fpu_type = fpu_type; /* Initially set everything according to the default ABI/ISA. */ set_gdbarch_short_bit (gdbarch, 16); @@ -5771,17 +5829,15 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_register_reggroup_p (gdbarch, mips_register_reggroup_p); set_gdbarch_pseudo_register_read (gdbarch, mips_pseudo_register_read); set_gdbarch_pseudo_register_write (gdbarch, mips_pseudo_register_write); - tdep->found_abi = found_abi; - tdep->mips_abi = mips_abi; set_gdbarch_elf_make_msymbol_special (gdbarch, mips_elf_make_msymbol_special); - /* Fill in the OS dependant register numbers. */ + /* Fill in the OS dependant register numbers and names. */ { + const char **reg_names; struct mips_regnum *regnum = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct mips_regnum); - tdep->regnum = regnum; if (info.osabi == GDB_OSABI_IRIX) { regnum->fp0 = 32; @@ -5793,6 +5849,7 @@ mips_gdbarch_init (struct gdbarch_info info, regnum->fp_control_status = 69; regnum->fp_implementation_revision = 70; num_regs = 71; + reg_names = mips_irix_reg_names; } else { @@ -5805,6 +5862,11 @@ mips_gdbarch_init (struct gdbarch_info info, regnum->fp_control_status = 70; regnum->fp_implementation_revision = 71; num_regs = 90; + if (info.bfd_arch_info != NULL + && info.bfd_arch_info->mach == bfd_mach_mips3900) + reg_names = mips_tx39_reg_names; + else + reg_names = mips_generic_reg_names; } /* FIXME: cagney/2003-11-15: For MIPS, hasn't PC_REGNUM been replaced by read_pc? */ @@ -5812,6 +5874,9 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_fp0_regnum (gdbarch, regnum->fp0); set_gdbarch_num_regs (gdbarch, num_regs); set_gdbarch_num_pseudo_regs (gdbarch, num_regs); + set_gdbarch_register_name (gdbarch, mips_register_name); + tdep->mips_processor_reg_names = reg_names; + tdep->regnum = regnum; } switch (mips_abi) @@ -5828,8 +5893,6 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_long_bit (gdbarch, 32); set_gdbarch_ptr_bit (gdbarch, 32); set_gdbarch_long_long_bit (gdbarch, 64); - set_gdbarch_deprecated_reg_struct_has_addr - (gdbarch, mips_o32_reg_struct_has_addr); break; case MIPS_ABI_O64: set_gdbarch_push_dummy_call (gdbarch, mips_o64_push_dummy_call); @@ -5844,8 +5907,6 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_long_bit (gdbarch, 32); set_gdbarch_ptr_bit (gdbarch, 32); set_gdbarch_long_long_bit (gdbarch, 64); - set_gdbarch_deprecated_reg_struct_has_addr - (gdbarch, mips_o32_reg_struct_has_addr); set_gdbarch_use_struct_convention (gdbarch, always_use_struct_convention); break; case MIPS_ABI_EABI32: @@ -5896,8 +5957,6 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_long_bit (gdbarch, 32); set_gdbarch_ptr_bit (gdbarch, 32); set_gdbarch_long_long_bit (gdbarch, 64); - set_gdbarch_deprecated_reg_struct_has_addr - (gdbarch, mips_n32n64_reg_struct_has_addr); break; case MIPS_ABI_N64: set_gdbarch_push_dummy_call (gdbarch, mips_n32n64_push_dummy_call); @@ -5911,8 +5970,6 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_long_bit (gdbarch, 64); set_gdbarch_ptr_bit (gdbarch, 64); set_gdbarch_long_long_bit (gdbarch, 64); - set_gdbarch_deprecated_reg_struct_has_addr - (gdbarch, mips_n32n64_reg_struct_has_addr); break; default: internal_error (__FILE__, __LINE__, @@ -5940,36 +5997,6 @@ mips_gdbarch_init (struct gdbarch_info info, the current gcc - it would make GDB treat these 64-bit programs as 32-bit programs by default. */ - /* enable/disable the MIPS FPU */ - if (!mips_fpu_type_auto) - tdep->mips_fpu_type = mips_fpu_type; - else if (info.bfd_arch_info != NULL - && info.bfd_arch_info->arch == bfd_arch_mips) - switch (info.bfd_arch_info->mach) - { - case bfd_mach_mips3900: - case bfd_mach_mips4100: - case bfd_mach_mips4111: - tdep->mips_fpu_type = MIPS_FPU_NONE; - break; - case bfd_mach_mips4650: - tdep->mips_fpu_type = MIPS_FPU_SINGLE; - break; - default: - tdep->mips_fpu_type = MIPS_FPU_DOUBLE; - break; - } - else - tdep->mips_fpu_type = MIPS_FPU_DOUBLE; - - /* MIPS version of register names. */ - set_gdbarch_register_name (gdbarch, mips_register_name); - if (info.osabi == GDB_OSABI_IRIX) - tdep->mips_processor_reg_names = mips_irix_reg_names; - else if (info.bfd_arch_info != NULL && info.bfd_arch_info->mach == bfd_mach_mips3900) - tdep->mips_processor_reg_names = mips_tx39_reg_names; - else - tdep->mips_processor_reg_names = mips_generic_reg_names; set_gdbarch_read_pc (gdbarch, mips_read_pc); set_gdbarch_write_pc (gdbarch, generic_target_write_pc); set_gdbarch_deprecated_target_read_fp (gdbarch, mips_read_sp); /* Draft FRAME base. */ @@ -6043,9 +6070,6 @@ mips_gdbarch_init (struct gdbarch_info info, /* Hook in OS ABI-specific overrides, if they have been registered. */ gdbarch_init_osabi (info, gdbarch); - set_gdbarch_extract_struct_value_address (gdbarch, - mips_extract_struct_value_address); - set_gdbarch_skip_trampoline_code (gdbarch, mips_skip_stub); set_gdbarch_in_solib_call_trampoline (gdbarch, mips_in_call_stub); @@ -6142,7 +6166,7 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file) mips_abi_strings[tdep->mips_abi]); fprintf_unfiltered (file, "mips_dump_tdep: mips_mask_address_p() %d (default %d)\n", - mips_mask_address_p (), + mips_mask_address_p (tdep), tdep->default_mask_address_p); } fprintf_unfiltered (file, @@ -6165,18 +6189,12 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file) : MIPS_FPU_TYPE == MIPS_FPU_SINGLE ? "single" : MIPS_FPU_TYPE == MIPS_FPU_DOUBLE ? "double" : "???")); - fprintf_unfiltered (file, - "mips_dump_tdep: MIPS_DEFAULT_SAVED_REGSIZE = %d\n", - MIPS_DEFAULT_SAVED_REGSIZE); fprintf_unfiltered (file, "mips_dump_tdep: FP_REGISTER_DOUBLE = %d\n", FP_REGISTER_DOUBLE); fprintf_unfiltered (file, - "mips_dump_tdep: MIPS_DEFAULT_STACK_ARGSIZE = %d\n", - MIPS_DEFAULT_STACK_ARGSIZE); - fprintf_unfiltered (file, - "mips_dump_tdep: MIPS_STACK_ARGSIZE = %d\n", - MIPS_STACK_ARGSIZE); + "mips_dump_tdep: mips_stack_argsize() = %d\n", + mips_stack_argsize (tdep)); fprintf_unfiltered (file, "mips_dump_tdep: A0_REGNUM = %d\n", A0_REGNUM); @@ -6240,8 +6258,8 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file) "mips_dump_tdep: MIPS_NUMREGS = %d\n", MIPS_NUMREGS); fprintf_unfiltered (file, - "mips_dump_tdep: MIPS_SAVED_REGSIZE = %d\n", - MIPS_SAVED_REGSIZE); + "mips_dump_tdep: mips_saved_regsize() = %d\n", + mips_saved_regsize (tdep)); fprintf_unfiltered (file, "mips_dump_tdep: PRID_REGNUM = %d\n", PRID_REGNUM); diff --git a/gdb/op50-rom.c b/gdb/op50-rom.c deleted file mode 100644 index a256c91455b..00000000000 --- a/gdb/op50-rom.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Remote target glue for the Oki op50n based eval board. - - Copyright 1995, 1998, 1999, 2000 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "gdbcore.h" -#include "target.h" -#include "monitor.h" -#include "serial.h" - -static void op50n_open (char *args, int from_tty); - -/* - * this array of registers need to match the indexes used by GDB. The - * whole reason this exists is cause the various ROM monitors use - * different strings than GDB does, and doesn't support all the - * registers either. So, typing "info reg sp" becomes a "r30". - */ - -static char *op50n_regnames[NUM_REGS] = -{ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", - "cr11", "p", NULL, NULL, NULL, "cr15", "cr19", "cr20", - "cr21", "cr22", NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, "cr0", "cr8", "cr9", "cr10", "cr12", - "cr13", "cr24", "cr25", "cr26", -}; - -/* - * Define the monitor command strings. Since these are passed directly - * through to a printf style function, we need can include formatting - * strings. We also need a CR or LF on the end. - */ - -static struct target_ops op50n_ops; - -static char *op50n_inits[] = -{".\r", NULL}; - -static struct monitor_ops op50n_cmds; - -static void -init_op50n_cmds (void) -{ - op50n_cmds.flags = MO_CLR_BREAK_USES_ADDR /*| MO_GETMEM_READ_SINGLE */ ; /* flags */ - op50n_cmds.init = op50n_inits; /* Init strings */ - op50n_cmds.cont = "g\r"; /* continue command */ - op50n_cmds.step = "t\r"; /* single step */ - op50n_cmds.stop = "\003.\r"; /* Interrupt char */ - op50n_cmds.set_break = "b %x\r"; /* set a breakpoint */ - op50n_cmds.clr_break = "b %x;0\r"; /* clear breakpoint at addr */ - op50n_cmds.clr_all_break = "bx\r"; /* clear all breakpoints */ - op50n_cmds.fill = "fx %x s%x %x\r"; /* memory fill cmd (addr, len, val) */ - op50n_cmds.setmem.cmdb = "sx %x %x\r"; /* setmem.cmdb (addr, value) */ - op50n_cmds.setmem.cmdw = "sh %x %x\r"; /* setmem.cmdw (addr, value) */ - op50n_cmds.setmem.cmdl = "s %x %x\r"; /* setmem.cmdl (addr, value) */ - op50n_cmds.setmem.cmdll = NULL; /* setmem.cmdll (addr, value) */ - op50n_cmds.setmem.resp_delim = NULL; /* setmem.resp_delim */ - op50n_cmds.setmem.term = NULL; /* setmem.term */ - op50n_cmds.setmem.term_cmd = NULL; /* setmem.term_cmd */ -#if 0 - { - "sx %x\r", /* getmem.cmdb (addr, len) */ - "sh %x\r", /* getmem.cmdw (addr, len) */ - "s %x\r", /* getmem.cmdl (addr, len) */ - NULL, /* getmem.cmdll (addr, len) */ - " : ", /* getmem.resp_delim */ - " ", /* getmem.term */ - ".\r", /* getmem.term_cmd */ - }; -#else - op50n_cmds.getmem.cmdb = "dx %x s%x\r"; /* getmem.cmdb (addr, len) */ - op50n_cmds.getmem.cmdw = NULL; /* getmem.cmdw (addr, len) */ - op50n_cmds.getmem.cmdl = NULL; /* getmem.cmdl (addr, len) */ - op50n_cmds.getmem.cmdll = NULL; /* getmem.cmdll (addr, len) */ - op50n_cmds.getmem.resp_delim = " : "; /* getmem.resp_delim */ - op50n_cmds.getmem.term = NULL; /* getmem.term */ - op50n_cmds.getmem.term_cmd = NULL; /* getmem.term_cmd */ -#endif - op50n_cmds.setreg.cmd = "x %s %x\r"; /* setreg.cmd (name, value) */ - op50n_cmds.setreg.resp_delim = NULL; /* setreg.resp_delim */ - op50n_cmds.setreg.term = NULL; /* setreg.term */ - op50n_cmds.setreg.term_cmd = NULL; /* setreg.term_cmd */ - op50n_cmds.getreg.cmd = "x %s\r"; /* getreg.cmd (name) */ - op50n_cmds.getreg.resp_delim = "="; /* getreg.resp_delim */ - op50n_cmds.getreg.term = " "; /* getreg.term */ - op50n_cmds.getreg.term_cmd = ".\r"; /* getreg.term_cmd */ - op50n_cmds.dump_registers = NULL; /* dump_registers */ - op50n_cmds.register_pattern = NULL; /* register_pattern */ - op50n_cmds.supply_register = NULL; /* supply_register */ - op50n_cmds.load_routine = NULL; /* load routine */ - op50n_cmds.load = "r 0\r"; /* download command */ - op50n_cmds.loadresp = NULL; /* load response */ - op50n_cmds.prompt = "\n#"; /* monitor command prompt */ - op50n_cmds.line_term = "\r"; /* end-of-command delimitor */ - op50n_cmds.cmd_end = NULL; /* optional command terminator */ - op50n_cmds.target = &op50n_ops; /* target operations */ - op50n_cmds.stopbits = SERIAL_1_STOPBITS; /* number of stop bits */ - op50n_cmds.regnames = op50n_regnames; /* register names */ - op50n_cmds.magic = MONITOR_OPS_MAGIC; /* magic */ -}; - -static void -op50n_open (char *args, int from_tty) -{ - monitor_open (args, &op50n_cmds, from_tty); -} - -void -_initialize_op50n (void) -{ - init_op50n_cmds (); - init_monitor_ops (&op50n_ops); - - op50n_ops.to_shortname = "op50n"; - op50n_ops.to_longname = "Oki's debug monitor for the Op50n Eval board"; - op50n_ops.to_doc = "Debug on a Oki OP50N eval board.\n\ -Specify the serial device it is connected to (e.g. /dev/ttya)."; - op50n_ops.to_open = op50n_open; - - add_target (&op50n_ops); -} diff --git a/gdb/regformats/reg-x86-64.dat b/gdb/regformats/reg-x86-64.dat index 59ebbf5267e..dd1f78fa71b 100644 --- a/gdb/regformats/reg-x86-64.dat +++ b/gdb/regformats/reg-x86-64.dat @@ -18,6 +18,8 @@ expedite:rbp,rsp,rip 64:r15 64:rip 32:eflags +32:cs +32:ss 32:ds 32:es 32:fs diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c index fd57617acd5..ead40f04783 100644 --- a/gdb/remote-fileio.c +++ b/gdb/remote-fileio.c @@ -411,7 +411,16 @@ remote_fileio_to_fio_stat (struct stat *st, struct fio_stat *fst) remote_fileio_to_fio_uint ((long) st->st_rdev, fst->fst_rdev); remote_fileio_to_fio_ulong ((LONGEST) st->st_size, fst->fst_size); remote_fileio_to_fio_ulong ((LONGEST) st->st_blksize, fst->fst_blksize); +#if HAVE_STRUCT_STAT_ST_BLOCKS remote_fileio_to_fio_ulong ((LONGEST) st->st_blocks, fst->fst_blocks); +#else + /* FIXME: This is correct for DJGPP, but other systems that don't + have st_blocks, if any, might prefer 512 instead of st_blksize. + (eliz, 30-12-2003) */ + remote_fileio_to_fio_ulong (((LONGEST) st->st_size + st->st_blksize - 1) + / (LONGEST) st->st_blksize, + fst->fst_blocks); +#endif remote_fileio_to_fio_time (st->st_atime, fst->fst_atime); remote_fileio_to_fio_time (st->st_mtime, fst->fst_mtime); remote_fileio_to_fio_time (st->st_ctime, fst->fst_ctime); @@ -1131,7 +1140,9 @@ remote_fileio_func_fstat (char *buf) st.st_rdev = 0; st.st_size = 0; st.st_blksize = 512; +#if HAVE_STRUCT_STAT_ST_BLOCKS st.st_blocks = 0; +#endif if (!gettimeofday (&tv, NULL)) st.st_atime = st.st_mtime = st.st_ctime = tv.tv_sec; else diff --git a/gdb/remote-vxsparc.c b/gdb/remote-vxsparc.c index d313c8f133b..118e5173e13 100644 --- a/gdb/remote-vxsparc.c +++ b/gdb/remote-vxsparc.c @@ -1,5 +1,4 @@ -/* sparc-dependent portions of the RPC protocol - used with a VxWorks target +/* SPARC-specific portions of the RPC protocol for VxWorks. Contributed by Wind River Systems. @@ -20,179 +19,110 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include #include "defs.h" - -#include "vx-share/regPacket.h" -#include "frame.h" -#include "inferior.h" -#include "target.h" -#include "gdbcore.h" -#include "command.h" -#include "symtab.h" -#include "symfile.h" #include "regcache.h" #include "gdb_string.h" -#include -#include -#include -#include -#include - -#ifdef _AIX /* IBM claims "void *malloc()" not char * */ -#define malloc bogon_malloc -#endif - -#include -#include /* UTek's doesn't #incl this */ -#include -#include "vx-share/ptrace.h" -#include "vx-share/xdr_ptrace.h" -#include "vx-share/xdr_ld.h" -#include "vx-share/xdr_rdb.h" -#include "vx-share/dbgRpcLib.h" -/* get rid of value.h if possible */ -#include -#include +#include "sparc-tdep.h" -/* Flag set if target has fpu */ +#include "vx-share/ptrace.h" +#include "vx-share/regPacket.h" -extern int target_has_fp; +#define SPARC_R_G1 (SPARC_R_G0 + SPARC_GREG_SIZE) -/* sparc floating point format descriptor, from "sparc-tdep.c." */ +const struct sparc_gregset vxsparc_gregset = +{ + SPARC_R_PSR, /* %psr */ + SPARC_R_PC, /* %pc */ + SPARC_R_NPC, /* %npc */ + SPARC_R_Y, /* %y */ + SPARC_R_WIM, /* %wim */ + SPARC_R_TBR, /* %tbr */ + SPARC_R_G1, /* %g1 */ + SPARC_R_I0 /* %l0 */ +}; + +/* Flag set if target has an FPU. */ -extern struct ext_format ext_format_sparc; +extern int target_has_fp; /* Generic register read/write routines in remote-vx.c. */ extern void net_read_registers (); extern void net_write_registers (); -/* Read a register or registers from the VxWorks target. - REGNO is the register to read, or -1 for all; currently, - it is ignored. FIXME look at regno to improve efficiency. */ +/* Read a register or registers from the VxWorks target. REGNUM is + the register to read, or -1 for all; currently, it is ignored. + FIXME: Look at REGNUM to improve efficiency. */ void -vx_read_register (int regno) +vx_read_register (int regnum) { - char sparc_greg_packet[SPARC_GREG_PLEN]; - char sparc_fpreg_packet[SPARC_FPREG_PLEN]; + struct regcache *regcache = current_regcache; + char gregs[SPARC_GREG_PLEN]; + char fpregs[SPARC_FPREG_PLEN]; CORE_ADDR sp; - /* Get general-purpose registers. When copying values into - registers [], don't assume that a location in registers [] - is properly aligned for the target data type. */ - - net_read_registers (sparc_greg_packet, SPARC_GREG_PLEN, PTRACE_GETREGS); - - /* Now copy the register values into registers[]. - Note that this code depends on the ordering of the REGNUMs - as defined in "tm-sparc.h". */ - - bcopy (&sparc_greg_packet[SPARC_R_G0], - &deprecated_registers[DEPRECATED_REGISTER_BYTE (G0_REGNUM)], - 32 * SPARC_GREG_SIZE); - bcopy (&sparc_greg_packet[SPARC_R_Y], - &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)], 6 * SPARC_GREG_SIZE); - - /* Now write the local and in registers to the register window spill - area in the frame. VxWorks does not do this for the active frame - automatically; it greatly simplifies debugging. */ - - sp = extract_unsigned_integer (&deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)], - DEPRECATED_REGISTER_RAW_SIZE (SP_REGNUM)); - write_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); - - /* If the target has floating point registers, fetch them. - Otherwise, zero the floating point register values in - registers[] for good measure, even though we might not - need to. */ + /* Get the general-purpose registers. */ + net_read_registers (gregs, SPARC_GREG_PLEN, PTRACE_GETREGS); + sparc32_supply_gregset (&vxsparc_gregset, regcache, -1, gregs); + /* If the target has floating-point registers, fetch them. + Otherwise, zero the floating-point register values in GDB's + register cache for good measure, even though we might not need + to. */ if (target_has_fp) - { - net_read_registers (sparc_fpreg_packet, SPARC_FPREG_PLEN, - PTRACE_GETFPREGS); - bcopy (&sparc_fpreg_packet[SPARC_R_FP0], - &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - 32 * SPARC_FPREG_SIZE); - bcopy (&sparc_fpreg_packet[SPARC_R_FSR], - &deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - 1 * SPARC_FPREG_SIZE); - } + net_read_registers (fpregs, SPARC_FPREG_PLEN, PTRACE_GETFPREGS); else - { - memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - 0, 32 * SPARC_FPREG_SIZE); - memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - 0, 1 * SPARC_FPREG_SIZE); - } - - /* Mark the register cache valid. */ - - deprecated_registers_fetched (); + memset (fpregs, 0, SPARC_FPREG_PLEN); + sparc32_supply_fpregset (regcache, -1, fpregs); } -/* Store a register or registers into the VxWorks target. - REGNO is the register to store, or -1 for all; currently, - it is ignored. FIXME look at regno to improve efficiency. */ +/* Store a register or registers into the VxWorks target. REGNUM is + the register to store, or -1 for all; currently, it is ignored. + FIXME: Look at REGNUM to improve efficiency. */ void -vx_write_register (int regno) +vx_write_register (int regnum) { - char sparc_greg_packet[SPARC_GREG_PLEN]; - char sparc_fpreg_packet[SPARC_FPREG_PLEN]; - int in_gp_regs; - int in_fp_regs; + struct regcache *regcache = current_regcache; + char gregs[SPARC_GREG_PLEN]; + char fpregs[SPARC_FPREG_PLEN]; + int gregs_p = 1; + int fpregs_p = 1; CORE_ADDR sp; - /* Store general purpose registers. When copying values from - registers [], don't assume that a location in registers [] - is properly aligned for the target data type. */ - - in_gp_regs = 1; - in_fp_regs = 1; - if (regno >= 0) + if (regnum != -1) { - if ((G0_REGNUM <= regno && regno <= I7_REGNUM) - || (Y_REGNUM <= regno && regno <= DEPRECATED_NPC_REGNUM)) - in_fp_regs = 0; + if ((SPARC_G0_REGNUM <= regnum && regnum <= SPARC_I7_REGNUM) + || (SPARC32_Y_REGNUM <= regnum && regnum <= SPARC32_NPC_REGNUM)) + fpregs_p = 0; else - in_gp_regs = 0; + gregs_p = 0; } - if (in_gp_regs) - { - bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G0_REGNUM)], - &sparc_greg_packet[SPARC_R_G0], 32 * SPARC_GREG_SIZE); - bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)], - &sparc_greg_packet[SPARC_R_Y], 6 * SPARC_GREG_SIZE); - - net_write_registers (sparc_greg_packet, SPARC_GREG_PLEN, PTRACE_SETREGS); - /* If this is a local or in register, or we're storing all - registers, update the register window spill area. */ + /* Store the general-purpose registers. */ + if (gregs_p) + { + sparc32_collect_gregset (&vxsparc_gregset, regcache, -1, gregs); + net_write_registers (gregs, SPARC_GREG_PLEN, PTRACE_SETREGS); - if (regno < 0 || (L0_REGNUM <= regno && regno <= I7_REGNUM)) + /* Deal with the stack regs. */ + if (regnum == -1 || regnum == SPARC_SP_REGNUM + || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM)) { - sp = extract_unsigned_integer (&deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)], - DEPRECATED_REGISTER_RAW_SIZE (SP_REGNUM)); - write_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); + ULONGEST sp; + + regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp); + sparc_collect_rwindow (regcache, sp, regnum); } } - /* Store floating point registers if the target has them. */ - - if (in_fp_regs && target_has_fp) + /* Store the floating-point registers if the target has them. */ + if (fpregs_p && target_has_fp) { - bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - &sparc_fpreg_packet[SPARC_R_FP0], 32 * SPARC_FPREG_SIZE); - bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - &sparc_fpreg_packet[SPARC_R_FSR], 1 * SPARC_FPREG_SIZE); - - net_write_registers (sparc_fpreg_packet, SPARC_FPREG_PLEN, - PTRACE_SETFPREGS); + sparc32_collect_fpregset (regcache, -1, fpregs); + net_write_registers (fpregs, SPARC_FPREG_PLEN, PTRACE_SETFPREGS); } } diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c index e7a5d93cef5..38b6716d2ee 100644 --- a/gdb/ser-unix.c +++ b/gdb/ser-unix.c @@ -1,6 +1,7 @@ /* Serial interface for local (hardwired) serial ports on Un*x like systems - Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + + Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, + 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -1324,7 +1325,7 @@ ser_unix_async (struct serial *scb, case FD_SCHEDULED: delete_file_handler (scb->fd); break; - NOTHING_SCHEDULED: + case NOTHING_SCHEDULED: break; default: /* TIMER SCHEDULED */ delete_timer (scb->async_state); diff --git a/gdb/sparc-linux-nat.c b/gdb/sparc-linux-nat.c deleted file mode 100644 index f43cb593b20..00000000000 --- a/gdb/sparc-linux-nat.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Native-dependent code for GNU/Linux SPARC. - - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "regcache.h" -#include "sparc-tdep.h" - -#include - -/* Prototypes for supply_gregset etc. */ -#include "gregset.h" - -void -supply_gregset (elf_gregset_t *gregsetp) -{ - elf_greg_t *regp = (elf_greg_t *) gregsetp; - int i; - - for (i = G0_REGNUM; i <= I7_REGNUM; i++) - supply_register (i, (char *) (regp + (i - G0_REGNUM))); - - supply_register (PS_REGNUM, (char *) (regp + 32)); - - supply_register (PC_REGNUM, (char *) (regp + 33)); - supply_register (DEPRECATED_NPC_REGNUM, (char *) (regp + 34)); - supply_register (Y_REGNUM, (char *) (regp + 35)); - - supply_register (WIM_REGNUM, (char *) (regp + 36)); - supply_register (TBR_REGNUM, (char *) (regp + 37)); - - /* Fill inaccessible registers with zero. */ - supply_register (CPS_REGNUM, NULL); -} - -void -fill_gregset (elf_gregset_t *gregsetp, int regno) -{ - elf_greg_t *regp = (elf_greg_t *) gregsetp; - int i; - - for (i = G0_REGNUM; i <= I7_REGNUM; i++) - if (regno == -1 || regno == i) - regcache_collect (i, regp + (i - G0_REGNUM)); - - if (regno == -1 || regno == PS_REGNUM) - regcache_collect (PS_REGNUM, regp + 32); - - if (regno == -1 || regno == PC_REGNUM) - regcache_collect (PC_REGNUM, regp + 33); - if (regno == -1 || regno == DEPRECATED_NPC_REGNUM) - regcache_collect (DEPRECATED_NPC_REGNUM, regp + 34); - if (regno == -1 || regno == Y_REGNUM) - regcache_collect (Y_REGNUM, regp + 35); - - if (regno == -1 || regno == WIM_REGNUM) - regcache_collect (WIM_REGNUM, regp + 36); - if (regno == -1 || regno == TBR_REGNUM) - regcache_collect (TBR_REGNUM, regp + 37); -} - -void -supply_fpregset (elf_fpregset_t *fpregsetp) -{ - int i; - - for (i = FP0_REGNUM; i < FP0_REGNUM + 32; i++) - supply_register (i, (char *) &fpregsetp->pr_fr.pr_regs[i - FP0_REGNUM]); - - supply_register (FPS_REGNUM, (char *) &fpregsetp->pr_fsr); -} - -void -fill_fpregset (elf_fpregset_t *fpregsetp, int regno) -{ - int i; - - for (i = FP0_REGNUM; i < FP0_REGNUM + 32; i++) - if (regno == -1 || regno == i) - regcache_collect (i, &fpregsetp->pr_fr.pr_regs[i - FP0_REGNUM]); - - if (regno == -1 || regno == FPS_REGNUM) - regcache_collect (FPS_REGNUM, &fpregsetp->pr_fsr); -} diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c index a76d0e546ee..3ab21f0e160 100644 --- a/gdb/sparc-nat.c +++ b/gdb/sparc-nat.c @@ -1,7 +1,6 @@ -/* Functions specific to running gdb native on a SPARC running SunOS4. +/* Native-dependent code for SPARC. - Copyright 1989, 1992, 1993, 1994, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -22,46 +21,121 @@ #include "defs.h" #include "inferior.h" -#include "target.h" -#include "gdbcore.h" #include "regcache.h" -#include "sparc-tdep.h" - -#ifdef HAVE_SYS_PARAM_H -#include -#endif #include +#include "gdb_string.h" #include #include "gdb_wait.h" -#ifdef __linux__ -#include -#else +#ifdef HAVE_MACHINE_REG_H #include #endif -#include -/* We don't store all registers immediately when requested, since they - get sent over in large chunks anyway. Instead, we accumulate most - of the changes and send them over once. "deferred_stores" keeps - track of which sets of registers we have locally-changed copies of, - so we only need send the groups that have changed. */ +#include "sparc-tdep.h" +#include "sparc-nat.h" + +/* With some trickery we can use the code in this file for most (if + not all) ptrace(2) based SPARC systems, which includes SunOS 4, + GNU/Linux and the various SPARC BSD's. + + First, we need a data structure for use with ptrace(2). SunOS has + `struct regs' and `struct fp_status' in . BSD's + have `struct reg' and `struct fpreg' in . GNU/Linux + has the same structures as SunOS 4, but they're in , + which is a kernel header. As a general rule we avoid including + GNU/Linux kernel headers. Fortunately GNU/Linux has a `gregset_t' + and a `fpregset_t' that are equivalent to `struct regs' and `struct + fp_status' in , which is automatically included by + . Settling on using the `gregset_t' and `fpregset_t' + typedefs, providing them for the other systems, therefore solves + the puzzle. */ + +#ifdef HAVE_MACHINE_REG_H +#ifdef HAVE_STRUCT_REG +typedef struct reg gregset_t; +typedef struct fpreg fpregset_t; +#else +typedef struct regs gregset_t; +typedef struct fp_status fpregset_t; +#endif +#endif + +/* Second, we need to remap the BSD ptrace(2) requests to their SunOS + equivalents. GNU/Linux already follows SunOS here. */ -#define INT_REGS 1 -#define STACK_REGS 2 -#define FP_REGS 4 +#ifndef PTRACE_GETREGS +#define PTRACE_GETREGS PT_GETREGS +#endif + +#ifndef PTRACE_SETREGS +#define PTRACE_SETREGS PT_SETREGS +#endif -/* Fetch one or more registers from the inferior. REGNO == -1 to get - them all. We actually fetch more than requested, when convenient, - marking them as valid so we won't fetch them again. */ +#ifndef PTRACE_GETFPREGS +#define PTRACE_GETFPREGS PT_GETFPREGS +#endif + +#ifndef PTRACE_SETFPREGS +#define PTRACE_SETFPREGS PT_SETFPREGS +#endif + +/* Register set description. */ +const struct sparc_gregset *sparc_gregset; +void (*sparc_supply_gregset) (const struct sparc_gregset *, + struct regcache *, int , const void *); +void (*sparc_collect_gregset) (const struct sparc_gregset *, + const struct regcache *, int, void *); +void (*sparc_supply_fpregset) (struct regcache *, int , const void *); +void (*sparc_collect_fpregset) (const struct regcache *, int , void *); +int (*sparc_gregset_supplies_p) (int); +int (*sparc_fpregset_supplies_p) (int); + +/* Determine whether `gregset_t' contains register REGNUM. */ + +int +sparc32_gregset_supplies_p (int regnum) +{ + /* Integer registers. */ + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM) + || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) + || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM) + || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM)) + return 1; + + /* Control registers. */ + if (regnum == SPARC32_PC_REGNUM + || regnum == SPARC32_NPC_REGNUM + || regnum == SPARC32_PSR_REGNUM + || regnum == SPARC32_Y_REGNUM) + return 1; + + return 0; +} + +/* Determine whether `fpregset_t' contains register REGNUM. */ + +int +sparc32_fpregset_supplies_p (int regnum) +{ + /* Floating-point registers. */ + if (regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) + return 1; + + /* Control registers. */ + if (regnum == SPARC32_FSR_REGNUM) + return 1; + + return 0; +} + +/* Fetch register REGNUM from the inferior. If REGNUM is -1, do this + for all registers (including the floating-point registers). */ void -fetch_inferior_registers (int regno) +fetch_inferior_registers (int regnum) { - struct regs inferior_registers; - struct fp_status inferior_fp_registers; - int i; - int fetch_pid; + struct regcache *regcache = current_regcache; + int pid; /* NOTE: cagney/2002-12-03: This code assumes that the currently selected light weight processes' registers can be written @@ -76,309 +150,123 @@ fetch_inferior_registers (int regno) These functions should instead be paramaterized with an explicit object (struct regcache, struct thread_info?) into which the LWPs registers can be written. */ + pid = TIDGET (inferior_ptid); + if (pid == 0) + pid = PIDGET (inferior_ptid); - fetch_pid = TIDGET (inferior_ptid); - if (fetch_pid == 0) - fetch_pid = PIDGET (inferior_ptid); - - /* We should never be called with deferred stores, because a prerequisite - for writing regs is to have fetched them all (PREPARE_TO_STORE), sigh. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - - DO_DEFERRED_STORES; - - /* Global and Out regs are fetched directly, as well as the control - registers. If we're getting one of the in or local regs, - and the stack pointer has not yet been fetched, - we have to do that first, since they're found in memory relative - to the stack pointer. */ - if (regno < O7_REGNUM /* including -1 */ - || regno >= Y_REGNUM - || (!deprecated_register_valid[SP_REGNUM] && regno < I7_REGNUM)) + if (regnum == SPARC_G0_REGNUM) { - if (0 != ptrace (PTRACE_GETREGS, fetch_pid, - (PTRACE_ARG3_TYPE) & inferior_registers, 0)) - perror ("ptrace_getregs"); - - deprecated_registers[DEPRECATED_REGISTER_BYTE (0)] = 0; - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (1)], - &inferior_registers.r_g1, 15 * DEPRECATED_REGISTER_RAW_SIZE (G0_REGNUM)); - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)] - = inferior_registers.r_ps; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)] - = inferior_registers.r_pc; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)] - = inferior_registers.r_npc; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)] = inferior_registers.r_y; - - for (i = G0_REGNUM; i <= O7_REGNUM; i++) - deprecated_register_valid[i] = 1; - deprecated_register_valid[Y_REGNUM] = 1; - deprecated_register_valid[PS_REGNUM] = 1; - deprecated_register_valid[PC_REGNUM] = 1; - deprecated_register_valid[DEPRECATED_NPC_REGNUM] = 1; - /* If we don't set these valid, read_register_bytes() rereads - all the regs every time it is called! FIXME. */ - deprecated_register_valid[WIM_REGNUM] = 1; /* Not true yet, FIXME */ - deprecated_register_valid[TBR_REGNUM] = 1; /* Not true yet, FIXME */ - deprecated_register_valid[CPS_REGNUM] = 1; /* Not true yet, FIXME */ + regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL); + return; } - /* Floating point registers */ - if (regno == -1 || - regno == FPS_REGNUM || - (regno >= FP0_REGNUM && regno <= FP0_REGNUM + 31)) + if (regnum == -1 || sparc_gregset_supplies_p (regnum)) { - if (0 != ptrace (PTRACE_GETFPREGS, fetch_pid, - (PTRACE_ARG3_TYPE) & inferior_fp_registers, - 0)) - perror ("ptrace_getfpregs"); - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - &inferior_fp_registers, sizeof inferior_fp_registers.fpu_fr); - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - &inferior_fp_registers.Fpu_fsr, sizeof (FPU_FSR_TYPE)); - for (i = FP0_REGNUM; i <= FP0_REGNUM + 31; i++) - deprecated_register_valid[i] = 1; - deprecated_register_valid[FPS_REGNUM] = 1; - } + gregset_t regs; - /* These regs are saved on the stack by the kernel. Only read them - all (16 ptrace calls!) if we really need them. */ - if (regno == -1) - { - CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)]; - target_read_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - deprecated_register_valid[i] = 1; + if (ptrace (PTRACE_GETREGS, pid, (PTRACE_ARG3_TYPE) ®s, 0) == -1) + perror_with_name ("Couldn't get registers"); + + sparc_supply_gregset (sparc_gregset, regcache, -1, ®s); + if (regnum != -1) + return; } - else if (regno >= L0_REGNUM && regno <= I7_REGNUM) + + if (regnum == -1 || sparc_fpregset_supplies_p (regnum)) { - CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)]; - i = DEPRECATED_REGISTER_BYTE (regno); - if (deprecated_register_valid[regno]) - printf_unfiltered ("register %d valid and read\n", regno); - target_read_memory (sp + i - DEPRECATED_REGISTER_BYTE (L0_REGNUM), - &deprecated_registers[i], DEPRECATED_REGISTER_RAW_SIZE (regno)); - deprecated_register_valid[regno] = 1; + fpregset_t fpregs; + + if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) + perror_with_name ("Couldn't get floating point status"); + + sparc_supply_fpregset (regcache, -1, &fpregs); } } -/* Store our register values back into the inferior. - If REGNO is -1, do this for all registers. - Otherwise, REGNO specifies which register (so we can save time). */ - void -store_inferior_registers (int regno) +store_inferior_registers (int regnum) { - struct regs inferior_registers; - struct fp_status inferior_fp_registers; - int wanna_store = INT_REGS + STACK_REGS + FP_REGS; - int store_pid; + struct regcache *regcache = current_regcache; + int pid; /* NOTE: cagney/2002-12-02: See comment in fetch_inferior_registers about threaded assumptions. */ - store_pid = TIDGET (inferior_ptid); - if (store_pid == 0) - store_pid = PIDGET (inferior_ptid); + pid = TIDGET (inferior_ptid); + if (pid == 0) + pid = PIDGET (inferior_ptid); - /* First decide which pieces of machine-state we need to modify. - Default for regno == -1 case is all pieces. */ - if (regno >= 0) + if (regnum == -1 || sparc_gregset_supplies_p (regnum)) { - if (FP0_REGNUM <= regno && regno < FP0_REGNUM + 32) - { - wanna_store = FP_REGS; - } - else - { - if (regno == SP_REGNUM) - wanna_store = INT_REGS + STACK_REGS; - else if (regno < L0_REGNUM || regno > I7_REGNUM) - wanna_store = INT_REGS; - else if (regno == FPS_REGNUM) - wanna_store = FP_REGS; - else - wanna_store = STACK_REGS; - } - } + gregset_t regs; - /* See if we're forcing the stores to happen now, or deferring. */ - if (regno == -2) - { - wanna_store = deferred_stores; - deferred_stores = 0; - } - else - { - if (wanna_store == STACK_REGS) - { - /* Fall through and just store one stack reg. If we deferred - it, we'd have to store them all, or remember more info. */ - } - else - { - deferred_stores |= wanna_store; - return; - } - } + if (ptrace (PTRACE_GETREGS, pid, (PTRACE_ARG3_TYPE) ®s, 0) == -1) + perror_with_name ("Couldn't get registers"); - if (wanna_store & STACK_REGS) - { - CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)]; + sparc_collect_gregset (sparc_gregset, regcache, regnum, ®s); - if (regno < 0 || regno == SP_REGNUM) - { - if (!deprecated_register_valid[L0_REGNUM + 5]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - target_write_memory (sp, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); - } - else - { - if (!deprecated_register_valid[regno]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - target_write_memory (sp + DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (L0_REGNUM), - &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)], - DEPRECATED_REGISTER_RAW_SIZE (regno)); - } + if (ptrace (PTRACE_SETREGS, pid, (PTRACE_ARG3_TYPE) ®s, 0) == -1) + perror_with_name ("Couldn't write registers"); - } + /* Deal with the stack regs. */ + if (regnum == -1 || regnum == SPARC_SP_REGNUM + || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM)) + { + ULONGEST sp; - if (wanna_store & INT_REGS) - { - if (!deprecated_register_valid[G1_REGNUM]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - - memcpy (&inferior_registers.r_g1, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], - 15 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM)); - - inferior_registers.r_ps = - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)]; - inferior_registers.r_pc = - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)]; - inferior_registers.r_npc = - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)]; - inferior_registers.r_y = - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)]; - - if (0 != ptrace (PTRACE_SETREGS, store_pid, - (PTRACE_ARG3_TYPE) & inferior_registers, 0)) - perror ("ptrace_setregs"); - } + regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp); + sparc_collect_rwindow (regcache, sp, regnum); + } - if (wanna_store & FP_REGS) - { - if (!deprecated_register_valid[FP0_REGNUM + 9]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - memcpy (&inferior_fp_registers, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - sizeof inferior_fp_registers.fpu_fr); - memcpy (&inferior_fp_registers.Fpu_fsr, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - sizeof (FPU_FSR_TYPE)); - if (0 != - ptrace (PTRACE_SETFPREGS, store_pid, - (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0)) - perror ("ptrace_setfpregs"); + if (regnum != -1) + return; } -} - -/* Provide registers to GDB from a core file. - - CORE_REG_SECT points to an array of bytes, which are the contents - of a `note' from a core file which BFD thinks might contain - register contents. CORE_REG_SIZE is its size. - - WHICH says which register set corelow suspects this is: - 0 --- the general-purpose register set - 2 --- the floating-point register set - - IGNORE is unused. */ - -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, - int which, CORE_ADDR ignore) -{ - if (which == 0) + if (regnum == -1 || sparc_fpregset_supplies_p (regnum)) { + fpregset_t fpregs, saved_fpregs; - /* Integer registers */ - -#define gregs ((struct regs *)core_reg_sect) - /* G0 *always* holds 0. */ - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (0)] = 0; - - /* The globals and output registers. */ - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], &gregs->r_g1, - 15 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM)); - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)] = gregs->r_ps; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)] = gregs->r_pc; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)] = gregs->r_npc; - *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)] = gregs->r_y; - - /* My best guess at where to get the locals and input - registers is exactly where they usually are, right above - the stack pointer. If the core dump was caused by a bus error - from blowing away the stack pointer (as is possible) then this - won't work, but it's worth the try. */ - { - int sp; - - sp = *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)]; - if (0 != target_read_memory (sp, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM))) - { - /* fprintf_unfiltered so user can still use gdb */ - fprintf_unfiltered (gdb_stderr, - "Couldn't read input and local registers from core file\n"); - } - } - } - else if (which == 2) - { + if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) + perror_with_name ("Couldn't get floating-point registers"); - /* Floating point registers */ + memcpy (&saved_fpregs, &fpregs, sizeof (fpregs)); + sparc_collect_fpregset (regcache, regnum, &fpregs); -#define fpuregs ((struct fpu *) core_reg_sect) - if (core_reg_size >= sizeof (struct fpu)) + /* Writing the floating-point registers will fail on NetBSD with + EINVAL if the inferior process doesn't have an FPU state + (i.e. if it didn't use the FPU yet). Therefore we don't try + to write the registers if nothing changed. */ + if (memcmp (&saved_fpregs, &fpregs, sizeof (fpregs)) != 0) { - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - fpuregs->fpu_regs, sizeof (fpuregs->fpu_regs)); - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)], - &fpuregs->fpu_fsr, sizeof (FPU_FSR_TYPE)); + if (ptrace (PTRACE_SETFPREGS, pid, + (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) + perror_with_name ("Couldn't write floating-point registers"); } - else - fprintf_unfiltered (gdb_stderr, "Couldn't read float regs from core file\n"); - } -} -int -kernel_u_size (void) -{ - return (sizeof (struct user)); + if (regnum != -1) + return; + } } -/* Register that we are able to handle sparc core file formats. - FIXME: is this really bfd_target_unknown_flavour? */ - -static struct core_fns sparc_core_fns = -{ - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL /* next */ -}; +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc_nat (void); void -_initialize_core_sparc (void) +_initialize_sparc_nat (void) { - add_core_fns (&sparc_core_fns); + /* Deafult to using SunOS 4 register sets. */ + if (sparc_gregset == NULL) + sparc_gregset = &sparc32_sunos4_gregset; + if (sparc_supply_gregset == NULL) + sparc_supply_gregset = sparc32_supply_gregset; + if (sparc_collect_gregset == NULL) + sparc_collect_gregset = sparc32_collect_gregset; + if (sparc_supply_fpregset == NULL) + sparc_supply_fpregset = sparc32_supply_fpregset; + if (sparc_collect_fpregset == NULL) + sparc_collect_fpregset = sparc32_collect_fpregset; + if (sparc_gregset_supplies_p == NULL) + sparc_gregset_supplies_p = sparc32_gregset_supplies_p; + if (sparc_fpregset_supplies_p == NULL) + sparc_fpregset_supplies_p = sparc32_fpregset_supplies_p; } diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index d3b24186769..e79f038429f 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -1,8 +1,6 @@ -/* Target-dependent code for the SPARC for GDB, the GNU debugger. +/* Target-dependent code for SPARC. - Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, - Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -21,108 +19,61 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* ??? Support for calling functions from gdb in sparc64 is unfinished. */ - #include "defs.h" #include "arch-utils.h" +#include "dis-asm.h" +#include "floatformat.h" #include "frame.h" +#include "frame-base.h" +#include "frame-unwind.h" +#include "gdbcore.h" +#include "gdbtypes.h" #include "inferior.h" +#include "symtab.h" +#include "objfiles.h" +#include "osabi.h" +#include "regcache.h" #include "target.h" #include "value.h" -#include "bfd.h" -#include "gdb_string.h" -#include "regcache.h" -#include "osabi.h" -#include "dis-asm.h" - -#include "sparc-tdep.h" - -#ifdef USE_PROC_FS -#include -/* Prototypes for supply_gregset etc. */ -#include "gregset.h" -#endif -#include "gdbcore.h" #include "gdb_assert.h" +#include "gdb_string.h" -#include "symfile.h" /* for 'entry_point_address' */ - -/* - * Some local macros that have multi-arch and non-multi-arch versions: - */ - -#define SPARC_HAS_FPU 1 -/* Number of bytes devoted to Floating Point registers: */ -#define FP_REGISTER_BYTES (gdbarch_tdep (current_gdbarch)->fp_register_bytes) -/* Highest numbered Floating Point register. */ -#define FP_MAX_REGNUM (gdbarch_tdep (current_gdbarch)->fp_max_regnum) -/* Size of a general (integer) register: */ -#define SPARC_INTREG_SIZE (gdbarch_tdep (current_gdbarch)->intreg_size) -/* Offset within the call dummy stack of the saved registers. */ -#define DUMMY_REG_SAVE_OFFSET (gdbarch_tdep (current_gdbarch)->reg_save_offset) - -struct gdbarch_tdep - { - int fp_register_bytes; - int y_regnum; - int fp_max_regnum; - int intreg_size; - int reg_save_offset; - int call_dummy_call_offset; - int print_insn_mach; - }; - -/* Now make GDB_TARGET_IS_SPARC64 a runtime test. */ -/* FIXME MVS: or try testing bfd_arch_info.arch and bfd_arch_info.mach ... - * define GDB_TARGET_IS_SPARC64 \ - * (TARGET_ARCHITECTURE->arch == bfd_arch_sparc && \ - * (TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9 || \ - * TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9a)) - */ - -/* We don't store all registers immediately when requested, since they - get sent over in large chunks anyway. Instead, we accumulate most - of the changes and send them over once. "deferred_stores" keeps - track of which sets of registers we have locally-changed copies of, - so we only need send the groups that have changed. */ - -int deferred_stores = 0; /* Accumulated stores we want to do eventually. */ - - -const unsigned char * -sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len) -{ - static const char breakpoint[] = {0x91, 0xd0, 0x20, 0x01}; - (*len) = sizeof (breakpoint); - return breakpoint; -} - -/* Fetch a single instruction. Even on bi-endian machines - such as sparc86x, instructions are always big-endian. */ - -static unsigned long -fetch_instruction (CORE_ADDR pc) -{ - unsigned long retval; - int i; - unsigned char buf[4]; - - read_memory (pc, buf, sizeof (buf)); - - /* Start at the most significant end of the integer, and work towards - the least significant. */ - retval = 0; - for (i = 0; i < sizeof (buf); ++i) - retval = (retval << 8) | buf[i]; - return retval; -} - - -/* Branches with prediction are treated like their non-predicting cousins. */ -/* FIXME: What about floating point branches? */ +#include "sparc-tdep.h" -/* Macros to extract fields from sparc instructions. */ +struct regset; + +/* This file implements the The SPARC 32-bit ABI as defined by the + section "Low-Level System Information" of the SPARC Compliance + Definition (SCD) 2.4.1, which is the 32-bit System V psABI for + SPARC. The SCD lists changes with respect to the origional 32-bit + psABI as defined in the "System V ABI, SPARC Processor + Supplement". + + Note that if we talk about SunOS, we mean SunOS 4.x, which was + BSD-based, which is sometimes (retroactively?) referred to as + Solaris 1.x. If we talk about Solaris we mean Solaris 2.x and + above (Solaris 7, 8 and 9 are nothing but Solaris 2.7, 2.8 and 2.9 + suffering from severe version number inflation). Solaris 2.x is + also known as SunOS 5.x, since that's what uname(1) says. Solaris + 2.x is SVR4-based. */ + +/* Please use the sparc32_-prefix for 32-bit specific code, the + sparc64_-prefix for 64-bit specific code and the sparc_-prefix for + code that can handle both. The 64-bit specific code lives in + sparc64-tdep.c; don't add any here. */ + +/* The SPARC Floating-Point Quad-Precision format is similar to + big-endian IA-64 Quad-recision format. */ +#define floatformat_sparc_quad floatformat_ia64_quad_big + +/* The stack pointer is offset from the stack frame by a BIAS of 2047 + (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC + hosts, so undefine it first. */ +#undef BIAS +#define BIAS 2047 + +/* Macros to extract fields from SPARC instructions. */ #define X_OP(i) (((i) >> 30) & 0x3) #define X_RD(i) (((i) >> 25) & 0x1f) #define X_A(i) (((i) >> 29) & 1) @@ -130,535 +81,460 @@ fetch_instruction (CORE_ADDR pc) #define X_OP2(i) (((i) >> 22) & 0x7) #define X_IMM22(i) ((i) & 0x3fffff) #define X_OP3(i) (((i) >> 19) & 0x3f) -#define X_RS1(i) (((i) >> 14) & 0x1f) #define X_I(i) (((i) >> 13) & 1) -#define X_IMM13(i) ((i) & 0x1fff) /* Sign extension macros. */ -#define X_SIMM13(i) ((X_IMM13 (i) ^ 0x1000) - 0x1000) #define X_DISP22(i) ((X_IMM22 (i) ^ 0x200000) - 0x200000) -#define X_CC(i) (((i) >> 20) & 3) -#define X_P(i) (((i) >> 19) & 1) #define X_DISP19(i) ((((i) & 0x7ffff) ^ 0x40000) - 0x40000) -#define X_RCOND(i) (((i) >> 25) & 7) -#define X_DISP16(i) ((((((i) >> 6) && 0xc000) | ((i) & 0x3fff)) ^ 0x8000) - 0x8000) -#define X_FCN(i) (((i) >> 25) & 31) -typedef enum +/* Fetch the instruction at PC. Instructions are always big-endian + even if the processor operates in little-endian mode. */ + +unsigned long +sparc_fetch_instruction (CORE_ADDR pc) { - Error, not_branch, bicc, bicca, ba, baa, ticc, ta, done_retry -} branch_type; + unsigned char buf[4]; + unsigned long insn; + int i; + + read_memory (pc, buf, sizeof (buf)); -/* Simulate single-step ptrace call for sun4. Code written by Gary - Beihl (beihl@mcc.com). */ + insn = 0; + for (i = 0; i < sizeof (buf); i++) + insn = (insn << 8) | buf[i]; + return insn; +} + +/* Return the contents if register REGNUM as an address. */ -/* npc4 and next_pc describe the situation at the time that the - step-breakpoint was set, not necessary the current value of DEPRECATED_NPC_REGNUM. */ -static CORE_ADDR next_pc, npc4, target; -static int brknpc4, brktrg; -typedef char binsn_quantum[BREAKPOINT_MAX]; -static binsn_quantum break_mem[3]; +static CORE_ADDR +sparc_address_from_register (int regnum) +{ + ULONGEST addr; -static branch_type isbranch (long, CORE_ADDR, CORE_ADDR *); + regcache_cooked_read_unsigned (current_regcache, regnum, &addr); + return addr; +} + -/* single_step() is called just before we want to resume the inferior, - if we want to single-step it but there is no hardware or kernel single-step - support (as on all SPARCs). We find all the possible targets of the - coming instruction and breakpoint them. +/* The functions on this page are intended to be used to classify + function arguments. */ - single_step is also called just after the inferior stops. If we had - set up a simulated single-step, we undo our damage. */ +/* Check whether TYPE is "Integral or Pointer". */ -void -sparc_software_single_step (enum target_signal ignore, /* pid, but we don't need it */ - int insert_breakpoints_p) +static int +sparc_integral_or_pointer_p (const struct type *type) { - branch_type br; - CORE_ADDR pc; - long pc_instruction; - - if (insert_breakpoints_p) + switch (TYPE_CODE (type)) { - /* Always set breakpoint for NPC. */ - next_pc = read_register (DEPRECATED_NPC_REGNUM); - npc4 = next_pc + 4; /* branch not taken */ + case TYPE_CODE_INT: + case TYPE_CODE_BOOL: + case TYPE_CODE_CHAR: + case TYPE_CODE_ENUM: + case TYPE_CODE_RANGE: + { + /* We have byte, half-word, word and extended-word/doubleword + integral types. The doubleword is an extension to the + origional 32-bit ABI by the SCD 2.4.x. */ + int len = TYPE_LENGTH (type); + return (len == 1 || len == 2 || len == 4 || len == 8); + } + return 1; + case TYPE_CODE_PTR: + case TYPE_CODE_REF: + { + /* Allow either 32-bit or 64-bit pointers. */ + int len = TYPE_LENGTH (type); + return (len == 4 || len == 8); + } + return 1; + default: + break; + } - target_insert_breakpoint (next_pc, break_mem[0]); - /* printf_unfiltered ("set break at %x\n",next_pc); */ + return 0; +} - pc = read_register (PC_REGNUM); - pc_instruction = fetch_instruction (pc); - br = isbranch (pc_instruction, pc, &target); - brknpc4 = brktrg = 0; +/* Check whether TYPE is "Floating". */ - if (br == bicca) - { - /* Conditional annulled branch will either end up at - npc (if taken) or at npc+4 (if not taken). - Trap npc+4. */ - brknpc4 = 1; - target_insert_breakpoint (npc4, break_mem[1]); - } - else if (br == baa && target != next_pc) - { - /* Unconditional annulled branch will always end up at - the target. */ - brktrg = 1; - target_insert_breakpoint (target, break_mem[2]); - } - else if (GDB_TARGET_IS_SPARC64 && br == done_retry) - { - brktrg = 1; - target_insert_breakpoint (target, break_mem[2]); - } - } - else +static int +sparc_floating_p (const struct type *type) +{ + switch (TYPE_CODE (type)) { - /* Remove breakpoints */ - target_remove_breakpoint (next_pc, break_mem[0]); + case TYPE_CODE_FLT: + { + int len = TYPE_LENGTH (type); + return (len == 4 || len == 8 || len == 16); + } + default: + break; + } + + return 0; +} - if (brknpc4) - target_remove_breakpoint (npc4, break_mem[1]); +/* Check whether TYPE is "Structure or Union". */ - if (brktrg) - target_remove_breakpoint (target, break_mem[2]); +static int +sparc_structure_or_union_p (const struct type *type) +{ + switch (TYPE_CODE (type)) + { + case TYPE_CODE_STRUCT: + case TYPE_CODE_UNION: + return 1; + default: + break; } + + return 0; } - -struct frame_extra_info + +/* Register information. */ + +static const char *sparc32_register_names[] = { - CORE_ADDR bottom; - int in_prologue; - int flat; - /* Following fields only relevant for flat frames. */ - CORE_ADDR pc_addr; - CORE_ADDR fp_addr; - /* Add this to ->frame to get the value of the stack pointer at the - time of the register saves. */ - int sp_offset; + "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", + "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7", + "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7", + "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7", + + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", + "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", + "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", + "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", + + "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr" }; -/* Call this for each newly created frame. For SPARC, we need to - calculate the bottom of the frame, and do some extra work if the - prologue has been generated via the -mflat option to GCC. In - particular, we need to know where the previous fp and the pc have - been stashed, since their exact position within the frame may vary. */ +/* Total number of registers. */ +#define SPARC32_NUM_REGS ARRAY_SIZE (sparc32_register_names) -void -sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi) +/* We provide the aliases %d0..%d30 for the floating registers as + "psuedo" registers. */ + +static const char *sparc32_pseudo_register_names[] = +{ + "d0", "d2", "d4", "d6", "d8", "d10", "d12", "d14", + "d16", "d18", "d20", "d22", "d24", "d26", "d28", "d30" +}; + +/* Total number of pseudo registers. */ +#define SPARC32_NUM_PSEUDO_REGS ARRAY_SIZE (sparc32_pseudo_register_names) + +/* Return the name of register REGNUM. */ + +static const char * +sparc32_register_name (int regnum) +{ + if (regnum >= 0 && regnum < SPARC32_NUM_REGS) + return sparc32_register_names[regnum]; + + if (regnum < SPARC32_NUM_REGS + SPARC32_NUM_PSEUDO_REGS) + return sparc32_pseudo_register_names[regnum - SPARC32_NUM_REGS]; + + return NULL; +} + +/* Return the GDB type object for the "standard" data type of data in + register REGNUM. */ + +static struct type * +sparc32_register_type (struct gdbarch *gdbarch, int regnum) +{ + if (regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) + return builtin_type_float; + + if (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM) + return builtin_type_double; + + if (regnum == SPARC_SP_REGNUM || regnum == SPARC_FP_REGNUM) + return builtin_type_void_data_ptr; + + if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM) + return builtin_type_void_func_ptr; + + return builtin_type_int32; +} + +static void +sparc32_pseudo_register_read (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, void *buf) +{ + gdb_assert (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM); + + regnum = SPARC_F0_REGNUM + 2 * (regnum - SPARC32_D0_REGNUM); + regcache_raw_read (regcache, regnum, buf); + regcache_raw_read (regcache, regnum + 1, ((char *)buf) + 4); +} + +static void +sparc32_pseudo_register_write (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, const void *buf) +{ + gdb_assert (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM); + + regnum = SPARC_F0_REGNUM + 2 * (regnum - SPARC32_D0_REGNUM); + regcache_raw_write (regcache, regnum, buf); + regcache_raw_write (regcache, regnum + 1, ((const char *)buf) + 4); +} + + +static CORE_ADDR +sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, + CORE_ADDR funcaddr, int using_gcc, + struct value **args, int nargs, + struct type *value_type, + CORE_ADDR *real_pc, CORE_ADDR *bp_addr) { - char *name; - CORE_ADDR prologue_start, prologue_end; - int insn; - - frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); - frame_saved_regs_zalloc (fi); - - get_frame_extra_info (fi)->bottom = - (get_next_frame (fi) - ? (get_frame_base (fi) == get_frame_base (get_next_frame (fi)) - ? get_frame_extra_info (get_next_frame (fi))->bottom - : get_frame_base (get_next_frame (fi))) - : read_sp ()); - - /* If fi->next is NULL, then we already set ->frame by passing - deprecated_read_fp() to create_new_frame. */ - if (get_next_frame (fi)) + *bp_addr = sp - 4; + *real_pc = funcaddr; + + if (using_struct_return (value_type, using_gcc)) { - char buf[MAX_REGISTER_SIZE]; - - /* Compute ->frame as if not flat. If it is flat, we'll change - it later. */ - if (get_next_frame (get_next_frame (fi)) != NULL - && ((get_frame_type (get_next_frame (get_next_frame (fi))) == SIGTRAMP_FRAME) - || deprecated_frame_in_dummy (get_next_frame (get_next_frame (fi)))) - && frameless_look_for_prologue (get_next_frame (fi))) - { - /* A frameless function interrupted by a signal did not change - the frame pointer, fix up frame pointer accordingly. */ - deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi))); - get_frame_extra_info (fi)->bottom = - get_frame_extra_info (get_next_frame (fi))->bottom; - } - else - { - /* Should we adjust for stack bias here? */ - ULONGEST tmp; - tmp = get_frame_register_unsigned (fi, DEPRECATED_FP_REGNUM); - deprecated_update_frame_base_hack (fi, tmp); - if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1)) - deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047); - } + char buf[4]; + + /* This is an UNIMP instruction. */ + store_unsigned_integer (buf, 4, TYPE_LENGTH (value_type) & 0x1fff); + write_memory (sp - 8, buf, 4); + return sp - 8; } - /* Decide whether this is a function with a ``flat register window'' - frame. For such functions, the frame pointer is actually in %i7. */ - get_frame_extra_info (fi)->flat = 0; - get_frame_extra_info (fi)->in_prologue = 0; - if (find_pc_partial_function (get_frame_pc (fi), &name, &prologue_start, &prologue_end)) + return sp - 4; +} + +static CORE_ADDR +sparc32_store_arguments (struct regcache *regcache, int nargs, + struct value **args, CORE_ADDR sp, + int struct_return, CORE_ADDR struct_addr) +{ + /* Number of words in the "parameter array". */ + int num_elements = 0; + int element = 0; + int i; + + for (i = 0; i < nargs; i++) { - /* See if the function starts with an add (which will be of a - negative number if a flat frame) to the sp. FIXME: Does not - handle large frames which will need more than one instruction - to adjust the sp. */ - insn = fetch_instruction (prologue_start); - if (X_OP (insn) == 2 && X_RD (insn) == 14 && X_OP3 (insn) == 0 - && X_I (insn) && X_SIMM13 (insn) < 0) + struct type *type = VALUE_TYPE (args[i]); + int len = TYPE_LENGTH (type); + + if (sparc_structure_or_union_p (type) + || (sparc_floating_p (type) && len == 16)) { - int offset = X_SIMM13 (insn); - - /* Then look for a save of %i7 into the frame. */ - insn = fetch_instruction (prologue_start + 4); - if (X_OP (insn) == 3 - && X_RD (insn) == 31 - && X_OP3 (insn) == 4 - && X_RS1 (insn) == 14) - { - char buf[MAX_REGISTER_SIZE]; - - /* We definitely have a flat frame now. */ - get_frame_extra_info (fi)->flat = 1; - - get_frame_extra_info (fi)->sp_offset = offset; - - /* Overwrite the frame's address with the value in %i7. */ - { - ULONGEST tmp; - tmp = get_frame_register_unsigned (fi, I7_REGNUM); - deprecated_update_frame_base_hack (fi, tmp); - } - - if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1)) - deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047); - - /* Record where the fp got saved. */ - get_frame_extra_info (fi)->fp_addr = - get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn); - - /* Also try to collect where the pc got saved to. */ - get_frame_extra_info (fi)->pc_addr = 0; - insn = fetch_instruction (prologue_start + 12); - if (X_OP (insn) == 3 - && X_RD (insn) == 15 - && X_OP3 (insn) == 4 - && X_RS1 (insn) == 14) - get_frame_extra_info (fi)->pc_addr = - get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn); - } + /* Structure, Union and Quad-Precision Arguments. */ + sp -= len; + + /* Use doubleword alignment for these values. That's always + correct, and wasting a few bytes shouldn't be a problem. */ + sp &= ~0x7; + + write_memory (sp, VALUE_CONTENTS (args[i]), len); + args[i] = value_from_pointer (lookup_pointer_type (type), sp); + num_elements++; + } + else if (sparc_floating_p (type)) + { + /* Floating arguments. */ + gdb_assert (len == 4 || len == 8); + num_elements += (len / 4); } else { - /* Check if the PC is in the function prologue before a SAVE - instruction has been executed yet. If so, set the frame - to the current value of the stack pointer and set - the in_prologue flag. */ - CORE_ADDR addr; - struct symtab_and_line sal; - - sal = find_pc_line (prologue_start, 0); - if (sal.line == 0) /* no line info, use PC */ - prologue_end = get_frame_pc (fi); - else if (sal.end < prologue_end) - prologue_end = sal.end; - if (get_frame_pc (fi) < prologue_end) - { - for (addr = prologue_start; addr < get_frame_pc (fi); addr += 4) - { - insn = read_memory_integer (addr, 4); - if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c) - break; /* SAVE seen, stop searching */ - } - if (addr >= get_frame_pc (fi)) - { - get_frame_extra_info (fi)->in_prologue = 1; - deprecated_update_frame_base_hack (fi, read_register (SP_REGNUM)); - } - } + /* Integral and pointer arguments. */ + gdb_assert (sparc_integral_or_pointer_p (type)); + + if (len < 4) + args[i] = value_cast (builtin_type_int32, args[i]); + num_elements += ((len + 3) / 4); } } - if (get_next_frame (fi) && get_frame_base (fi) == 0) - { - /* Kludge to cause init_prev_frame_info to destroy the new frame. */ - deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi))); - deprecated_update_frame_pc_hack (fi, get_frame_pc (get_next_frame (fi))); - } -} -CORE_ADDR -sparc_frame_chain (struct frame_info *frame) -{ - /* Value that will cause DEPRECATED_FRAME_CHAIN_VALID to not worry - about the chain value. If it really is zero, we detect it later - in sparc_init_prev_frame. - - Note: kevinb/2003-02-18: The constant 1 used to be returned here, - but, after some recent changes to legacy_frame_chain_valid(), - this value is no longer suitable for causing - legacy_frame_chain_valid() to "not worry about the chain value." - The constant ~0 (i.e, 0xfff...) causes the failing test in - legacy_frame_chain_valid() to succeed thus preserving the "not - worry" property. I had considered using something like - ``get_frame_base (frame) + 1''. However, I think a constant - value is better, because when debugging this problem, I knew that - something funny was going on as soon as I saw the constant 1 - being used as the frame chain elsewhere in GDB. */ - - return ~ (CORE_ADDR) 0; -} + /* Always allocate at least six words. */ + sp -= max (6, num_elements) * 4; -/* Find the pc saved in frame FRAME. */ + /* The psABI says that "Software convention requires space for the + struct/union return value pointer, even if the word is unused." */ + sp -= 4; -CORE_ADDR -sparc_frame_saved_pc (struct frame_info *frame) -{ - char buf[MAX_REGISTER_SIZE]; - CORE_ADDR addr; + /* The psABI says that "Although software convention and the + operating system require every stack frame to be doubleword + aligned." */ + sp &= ~0x7; - if ((get_frame_type (frame) == SIGTRAMP_FRAME)) + for (i = 0; i < nargs; i++) { - /* This is the signal trampoline frame. - Get the saved PC from the sigcontext structure. */ + char *valbuf = VALUE_CONTENTS (args[i]); + struct type *type = VALUE_TYPE (args[i]); + int len = TYPE_LENGTH (type); -#ifndef SIGCONTEXT_PC_OFFSET -#define SIGCONTEXT_PC_OFFSET 12 -#endif + gdb_assert (len == 4 || len == 8); - CORE_ADDR sigcontext_addr; - char *scbuf; - int saved_pc_offset = SIGCONTEXT_PC_OFFSET; - char *name = NULL; + if (element < 6) + { + int regnum = SPARC_O0_REGNUM + element; - scbuf = alloca (TARGET_PTR_BIT / HOST_CHAR_BIT); + regcache_cooked_write (regcache, regnum, valbuf); + if (len > 4 && element < 5) + regcache_cooked_write (regcache, regnum + 1, valbuf + 4); + } - /* Solaris2 ucbsigvechandler passes a pointer to a sigcontext - as the third parameter. The offset to the saved pc is 12. */ - find_pc_partial_function (get_frame_pc (frame), &name, - (CORE_ADDR *) NULL, (CORE_ADDR *) NULL); - if (name && DEPRECATED_STREQ (name, "ucbsigvechandler")) - saved_pc_offset = 12; + /* Always store the argument in memory. */ + write_memory (sp + 4 + element * 4, valbuf, len); + element += len / 4; + } - /* The sigcontext address is contained in register O2. */ - { - ULONGEST tmp; - tmp = get_frame_register_unsigned (frame, O0_REGNUM + 2); - sigcontext_addr = tmp; - } + gdb_assert (element == num_elements); - /* Don't cause a memory_error when accessing sigcontext in case the - stack layout has changed or the stack is corrupt. */ - target_read_memory (sigcontext_addr + saved_pc_offset, - scbuf, sizeof (scbuf)); - return extract_unsigned_integer (scbuf, sizeof (scbuf)); - } - else if (get_frame_extra_info (frame)->in_prologue || - (get_next_frame (frame) != NULL && - ((get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME) || - deprecated_frame_in_dummy (get_next_frame (frame))) && - frameless_look_for_prologue (frame))) + if (struct_return) { - /* A frameless function interrupted by a signal did not save - the PC, it is still in %o7. */ - ULONGEST tmp; - tmp = get_frame_register_unsigned (frame, O7_REGNUM); - return PC_ADJUST (tmp); - } - if (get_frame_extra_info (frame)->flat) - addr = get_frame_extra_info (frame)->pc_addr; - else - addr = get_frame_extra_info (frame)->bottom + FRAME_SAVED_I0 + - SPARC_INTREG_SIZE * (I7_REGNUM - I0_REGNUM); + char buf[4]; - if (addr == 0) - /* A flat frame leaf function might not save the PC anywhere, - just leave it in %o7. */ - return PC_ADJUST (read_register (O7_REGNUM)); + store_unsigned_integer (buf, 4, struct_addr); + write_memory (sp, buf, 4); + } - read_memory (addr, buf, SPARC_INTREG_SIZE); - return PC_ADJUST (extract_unsigned_integer (buf, SPARC_INTREG_SIZE)); + return sp; } -/* Since an individual frame in the frame cache is defined by two - arguments (a frame pointer and a stack pointer), we need two - arguments to get info for an arbitrary stack frame. This routine - takes two arguments and makes the cached frames look as if these - two arguments defined a frame on the cache. This allows the rest - of info frame to extract the important arguments without - difficulty. */ - -struct frame_info * -setup_arbitrary_frame (int argc, CORE_ADDR *argv) +static CORE_ADDR +sparc32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, + struct regcache *regcache, CORE_ADDR bp_addr, + int nargs, struct value **args, CORE_ADDR sp, + int struct_return, CORE_ADDR struct_addr) { - struct frame_info *frame; + CORE_ADDR call_pc = (struct_return ? (bp_addr - 12) : (bp_addr - 8)); + + /* Set return address. */ + regcache_cooked_write_unsigned (regcache, SPARC_O7_REGNUM, call_pc); + + /* Set up function arguments. */ + sp = sparc32_store_arguments (regcache, nargs, args, sp, + struct_return, struct_addr); + + /* Allocate the 16-word window save area. */ + sp -= 16 * 4; - if (argc != 2) - error ("Sparc frame specifications require two arguments: fp and sp"); + /* Stack should be doubleword aligned at this point. */ + gdb_assert (sp % 8 == 0); - frame = create_new_frame (argv[0], 0); + /* Finally, update the stack pointer. */ + regcache_cooked_write_unsigned (regcache, SPARC_SP_REGNUM, sp); + + return sp; +} + - if (!frame) - internal_error (__FILE__, __LINE__, - "create_new_frame returned invalid frame"); +/* Use the program counter to determine the contents and size of a + breakpoint instruction. Return a pointer to a string of bytes that + encode a breakpoint instruction, store the length of the string in + *LEN and optionally adjust *PC to point to the correct memory + location for inserting the breakpoint. */ + +static const unsigned char * +sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len) +{ + static unsigned char break_insn[] = { 0x91, 0xd0, 0x20, 0x01 }; - get_frame_extra_info (frame)->bottom = argv[1]; - deprecated_update_frame_pc_hack (frame, DEPRECATED_FRAME_SAVED_PC (frame)); - return frame; + *len = sizeof (break_insn); + return break_insn; } + -/* Given a pc value, skip it forward past the function prologue by - disassembling instructions that appear to be a prologue. +/* Allocate and initialize a frame cache. */ - If FRAMELESS_P is set, we are only testing to see if the function - is frameless. This allows a quicker answer. +static struct sparc_frame_cache * +sparc_alloc_frame_cache (void) +{ + struct sparc_frame_cache *cache; + int i; - This routine should be more specific in its actions; making sure - that it uses the same register in the initial prologue section. */ + cache = FRAME_OBSTACK_ZALLOC (struct sparc_frame_cache); -static CORE_ADDR examine_prologue (CORE_ADDR, int, struct frame_info *, - CORE_ADDR *); + /* Base address. */ + cache->base = 0; + cache->pc = 0; -static CORE_ADDR -examine_prologue (CORE_ADDR start_pc, int frameless_p, struct frame_info *fi, - CORE_ADDR *saved_regs) + /* Frameless until proven otherwise. */ + cache->frameless_p = 1; + + cache->struct_return_p = 0; + + return cache; +} + +CORE_ADDR +sparc_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, + struct sparc_frame_cache *cache) { - int insn; + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + unsigned long insn; + int offset = 0; int dest = -1; - CORE_ADDR pc = start_pc; - int is_flat = 0; - insn = fetch_instruction (pc); + if (current_pc <= pc) + return current_pc; + + /* We have to handle to "Procedure Linkage Table" (PLT) special. On + SPARC the linker usually defines a symbol (typically + _PROCEDURE_LINKAGE_TABLE_) at the start of the .plt section. + This symbol makes us end up here with PC pointing at the start of + the PLT and CURRENT_PC probably pointing at a PLT entry. If we + would do our normal prologue analysis, we would probably conclude + that we've got a frame when in reality we don't, since the + dynamic linker patches up the first PLT with some code that + starts with a SAVE instruction. Patch up PC such that it points + at the start of our PLT entry. */ + if (tdep->plt_entry_size > 0 && in_plt_section (current_pc, NULL)) + pc = current_pc - ((current_pc - pc) % tdep->plt_entry_size); - /* Recognize the `sethi' insn and record its destination. */ - if (X_OP (insn) == 0 && X_OP2 (insn) == 4) + insn = sparc_fetch_instruction (pc); + + /* Recognize a SETHI insn and record its destination. */ + if (X_OP (insn) == 0 && X_OP2 (insn) == 0x04) { dest = X_RD (insn); - pc += 4; - insn = fetch_instruction (pc); + offset += 4; + + insn = sparc_fetch_instruction (pc + 4); } - /* Recognize an add immediate value to register to either %g1 or - the destination register recorded above. Actually, this might - well recognize several different arithmetic operations. - It doesn't check that rs1 == rd because in theory "sub %g0, 5, %g1" - followed by "save %sp, %g1, %sp" is a valid prologue (Not that - I imagine any compiler really does that, however). */ - if (X_OP (insn) == 2 - && X_I (insn) + /* Allow for an arithmetic operation on DEST or %g1. */ + if (X_OP (insn) == 2 && X_I (insn) && (X_RD (insn) == 1 || X_RD (insn) == dest)) { - pc += 4; - insn = fetch_instruction (pc); - } + offset += 4; - /* Recognize any SAVE insn. */ - if (X_OP (insn) == 2 && X_OP3 (insn) == 60) - { - pc += 4; - if (frameless_p) /* If the save is all we care about, */ - return pc; /* return before doing more work */ - insn = fetch_instruction (pc); + insn = sparc_fetch_instruction (pc + 8); } - /* Recognize add to %sp. */ - else if (X_OP (insn) == 2 && X_RD (insn) == 14 && X_OP3 (insn) == 0) - { - pc += 4; - if (frameless_p) /* If the add is all we care about, */ - return pc; /* return before doing more work */ - is_flat = 1; - insn = fetch_instruction (pc); - /* Recognize store of frame pointer (i7). */ - if (X_OP (insn) == 3 - && X_RD (insn) == 31 - && X_OP3 (insn) == 4 - && X_RS1 (insn) == 14) - { - pc += 4; - insn = fetch_instruction (pc); - - /* Recognize sub %sp, , %i7. */ - if (X_OP (insn) == 2 - && X_OP3 (insn) == 4 - && X_RS1 (insn) == 14 - && X_RD (insn) == 31) - { - pc += 4; - insn = fetch_instruction (pc); - } - else - return pc; - } - else - return pc; - } - else - /* Without a save or add instruction, it's not a prologue. */ - return start_pc; - while (1) + /* Check for the SAVE instruction that sets up the frame. */ + if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c) { - /* Recognize stores into the frame from the input registers. - This recognizes all non alternate stores of an input register, - into a location offset from the frame pointer between - +68 and +92. */ - - /* The above will fail for arguments that are promoted - (eg. shorts to ints or floats to doubles), because the compiler - will pass them in positive-offset frame space, but the prologue - will save them (after conversion) in negative frame space at an - unpredictable offset. Therefore I am going to remove the - restriction on the target-address of the save, on the theory - that any unbroken sequence of saves from input registers must - be part of the prologue. In un-optimized code (at least), I'm - fairly sure that the compiler would emit SOME other instruction - (eg. a move or add) before emitting another save that is actually - a part of the function body. - - Besides, the reserved stack space is different for SPARC64 anyway. - - MVS 4/23/2000 */ - - if (X_OP (insn) == 3 - && (X_OP3 (insn) & 0x3c) == 4 /* Store, non-alternate. */ - && (X_RD (insn) & 0x18) == 0x18 /* Input register. */ - && X_I (insn) /* Immediate mode. */ - && X_RS1 (insn) == 30) /* Off of frame pointer. */ - ; /* empty statement -- fall thru to end of loop */ - else if (GDB_TARGET_IS_SPARC64 - && X_OP (insn) == 3 - && (X_OP3 (insn) & 0x3c) == 12 /* store, extended (64-bit) */ - && (X_RD (insn) & 0x18) == 0x18 /* input register */ - && X_I (insn) /* immediate mode */ - && X_RS1 (insn) == 30) /* off of frame pointer */ - ; /* empty statement -- fall thru to end of loop */ - else if (X_OP (insn) == 3 - && (X_OP3 (insn) & 0x3c) == 36 /* store, floating-point */ - && X_I (insn) /* immediate mode */ - && X_RS1 (insn) == 30) /* off of frame pointer */ - ; /* empty statement -- fall thru to end of loop */ - else if (is_flat - && X_OP (insn) == 3 - && X_OP3 (insn) == 4 /* store? */ - && X_RS1 (insn) == 14) /* off of frame pointer */ - { - if (saved_regs && X_I (insn)) - saved_regs[X_RD (insn)] = - get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn); - } - else - break; - pc += 4; - insn = fetch_instruction (pc); + cache->frameless_p = 0; + return pc + offset + 4; } return pc; } -/* Advance PC across any function entry prologue instructions to reach - some "real" code. */ +static CORE_ADDR +sparc_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + return frame_unwind_register_unsigned (next_frame, tdep->pc_regnum); +} + +/* Return PC of first real instruction of the function starting at + START_PC. */ -CORE_ADDR -sparc_skip_prologue (CORE_ADDR start_pc) +static CORE_ADDR +sparc32_skip_prologue (CORE_ADDR start_pc) { struct symtab_and_line sal; CORE_ADDR func_start, func_end; + struct sparc_frame_cache cache; /* This is the preferred method, find the end of the prologue by using the debugging information. */ @@ -671,2694 +547,838 @@ sparc_skip_prologue (CORE_ADDR start_pc) return sal.end; } - /* Oh well, examine the code by hand. */ - return examine_prologue (start_pc, 0, NULL, NULL); + return sparc_analyze_prologue (start_pc, 0xffffffffUL, &cache); } -/* Is the prologue at IP frameless? */ +/* Normal frames. */ -int -sparc_prologue_frameless_p (CORE_ADDR ip) +struct sparc_frame_cache * +sparc_frame_cache (struct frame_info *next_frame, void **this_cache) { - return ip == examine_prologue (ip, 1, NULL, NULL); -} + struct sparc_frame_cache *cache; -/* Check instruction at ADDR to see if it is a branch. - All non-annulled instructions will go to NPC or will trap. - Set *TARGET if we find a candidate branch; set to zero if not. + if (*this_cache) + return *this_cache; - This isn't static as it's used by remote-sa.sparc.c. */ + cache = sparc_alloc_frame_cache (); + *this_cache = cache; -static branch_type -isbranch (long instruction, CORE_ADDR addr, CORE_ADDR *target) -{ - branch_type val = not_branch; - long int offset = 0; /* Must be signed for sign-extend. */ - - *target = 0; - - if (X_OP (instruction) == 0 - && (X_OP2 (instruction) == 2 - || X_OP2 (instruction) == 6 - || X_OP2 (instruction) == 1 - || X_OP2 (instruction) == 3 - || X_OP2 (instruction) == 5 - || (GDB_TARGET_IS_SPARC64 && X_OP2 (instruction) == 7))) + /* In priciple, for normal frames, %fp (%i6) holds the frame + pointer, which holds the base address for the current stack + frame. */ + + cache->base = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); + if (cache->base == 0) + return cache; + + cache->pc = frame_func_unwind (next_frame); + if (cache->pc != 0) { - if (X_COND (instruction) == 8) - val = X_A (instruction) ? baa : ba; - else - val = X_A (instruction) ? bicca : bicc; - switch (X_OP2 (instruction)) - { - case 7: - if (!GDB_TARGET_IS_SPARC64) - break; - /* else fall thru */ - case 2: - case 6: - offset = 4 * X_DISP22 (instruction); - break; - case 1: - case 5: - offset = 4 * X_DISP19 (instruction); - break; - case 3: - offset = 4 * X_DISP16 (instruction); - break; - } - *target = addr + offset; + CORE_ADDR addr_in_block = frame_unwind_address_in_block (next_frame); + sparc_analyze_prologue (cache->pc, addr_in_block, cache); } - else if (GDB_TARGET_IS_SPARC64 - && X_OP (instruction) == 2 - && X_OP3 (instruction) == 62) + + if (cache->frameless_p) { - if (X_FCN (instruction) == 0) - { - /* done */ - *target = read_register (TNPC_REGNUM); - val = done_retry; - } - else if (X_FCN (instruction) == 1) - { - /* retry */ - *target = read_register (TPC_REGNUM); - val = done_retry; - } + /* We didn't find a valid frame, which means that CACHE->base + currently holds the frame pointer for our calling frame. */ + cache->base = frame_unwind_register_unsigned (next_frame, + SPARC_SP_REGNUM); } - return val; + return cache; } - -/* Find register number REGNUM relative to FRAME and put its - (raw) contents in *RAW_BUFFER. Set *OPTIMIZED if the variable - was optimized out (and thus can't be fetched). If the variable - was fetched from memory, set *ADDRP to where it was fetched from, - otherwise it was fetched from a register. - The argument RAW_BUFFER must point to aligned memory. */ - -void -sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp, - struct frame_info *frame, int regnum, - enum lval_type *lval) +struct sparc_frame_cache * +sparc32_frame_cache (struct frame_info *next_frame, void **this_cache) { - struct frame_info *frame1; - CORE_ADDR addr; + struct sparc_frame_cache *cache; + struct symbol *sym; - if (!target_has_registers) - error ("No registers."); + if (*this_cache) + return *this_cache; - if (optimized) - *optimized = 0; + cache = sparc_frame_cache (next_frame, this_cache); - addr = 0; - - /* FIXME This code extracted from infcmd.c; should put elsewhere! */ - if (frame == NULL) + sym = find_pc_function (cache->pc); + if (sym) { - /* error ("No selected frame."); */ - if (!target_has_registers) - error ("The program has no registers now."); - if (deprecated_selected_frame == NULL) - error ("No selected frame."); - /* Try to use selected frame */ - frame = get_prev_frame (deprecated_selected_frame); - if (frame == 0) - error ("Cmd not meaningful in the outermost frame."); + struct type *type = check_typedef (SYMBOL_TYPE (sym)); + enum type_code code = TYPE_CODE (type); + + if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD) + { + type = check_typedef (TYPE_TARGET_TYPE (type)); + if (sparc_structure_or_union_p (type) + || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16)) + cache->struct_return_p = 1; + } } + return cache; +} + +static void +sparc32_frame_this_id (struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc32_frame_cache (next_frame, this_cache); + + /* This marks the outermost frame. */ + if (cache->base == 0) + return; + + (*this_id) = frame_id_build (cache->base, cache->pc); +} - frame1 = get_next_frame (frame); +static void +sparc32_frame_prev_register (struct frame_info *next_frame, void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc32_frame_cache (next_frame, this_cache); - /* Get saved PC from the frame info if not in innermost frame. */ - if (regnum == PC_REGNUM && frame1 != NULL) + if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM) { - if (lval != NULL) - *lval = not_lval; - if (raw_buffer != NULL) + *optimizedp = 0; + *lvalp = not_lval; + *addrp = 0; + *realnump = -1; + if (valuep) { - /* Put it back in target format. */ - store_unsigned_integer (raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum), get_frame_pc (frame)); + CORE_ADDR pc = (regnum == SPARC32_NPC_REGNUM) ? 4 : 0; + + /* If this functions has a Structure, Union or + Quad-Precision return value, we have to skip the UNIMP + instruction that encodes the size of the structure. */ + if (cache->struct_return_p) + pc += 4; + + regnum = cache->frameless_p ? SPARC_O7_REGNUM : SPARC_I7_REGNUM; + pc += frame_unwind_register_unsigned (next_frame, regnum) + 8; + store_unsigned_integer (valuep, 4, pc); } - if (addrp != NULL) - *addrp = 0; return; } - while (frame1 != NULL) + /* The previous frame's `local' and `in' registers have been saved + in the register save area. */ + if (!cache->frameless_p + && regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) { - /* FIXME MVS: wrong test for dummy frame at entry. */ - - if (get_frame_pc (frame1) >= (get_frame_extra_info (frame1)->bottom - ? get_frame_extra_info (frame1)->bottom - : read_sp ()) - && get_frame_pc (frame1) <= get_frame_base (frame1)) + *optimizedp = 0; + *lvalp = lval_memory; + *addrp = cache->base + (regnum - SPARC_L0_REGNUM) * 4; + *realnump = -1; + if (valuep) { - /* Dummy frame. All but the window regs are in there somewhere. - The window registers are saved on the stack, just like in a - normal frame. */ - if (regnum >= G1_REGNUM && regnum < G1_REGNUM + 7) - addr = get_frame_base (frame1) + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE - - (FP_REGISTER_BYTES + 8 * SPARC_INTREG_SIZE); - else if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8) - /* NOTE: cagney/2002-05-04: The call to get_prev_frame() - is safe/cheap - there will always be a prev frame. - This is because frame1 is initialized to frame->next - (frame1->prev == frame) and is then advanced towards - the innermost (next) frame. */ - addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom - + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_I0); - else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8) - /* NOTE: cagney/2002-05-04: The call to get_prev_frame() - is safe/cheap - there will always be a prev frame. - This is because frame1 is initialized to frame->next - (frame1->prev == frame) and is then advanced towards - the innermost (next) frame. */ - addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom - + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_L0); - else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8) - addr = get_frame_base (frame1) + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE - - (FP_REGISTER_BYTES + 16 * SPARC_INTREG_SIZE); - else if (SPARC_HAS_FPU && - regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32) - addr = get_frame_base (frame1) + (regnum - FP0_REGNUM) * 4 - - (FP_REGISTER_BYTES); - else if (GDB_TARGET_IS_SPARC64 && SPARC_HAS_FPU && - regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM) - addr = get_frame_base (frame1) + 32 * 4 + (regnum - FP0_REGNUM - 32) * 8 - - (FP_REGISTER_BYTES); - else if (regnum >= Y_REGNUM && regnum < NUM_REGS) - addr = get_frame_base (frame1) + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE - - (FP_REGISTER_BYTES + 24 * SPARC_INTREG_SIZE); + struct gdbarch *gdbarch = get_frame_arch (next_frame); + + /* Read the value in from memory. */ + read_memory (*addrp, valuep, register_size (gdbarch, regnum)); } - else if (get_frame_extra_info (frame1)->flat) - { + return; + } - if (regnum == RP_REGNUM) - addr = get_frame_extra_info (frame1)->pc_addr; - else if (regnum == I7_REGNUM) - addr = get_frame_extra_info (frame1)->fp_addr; - else - { - CORE_ADDR func_start; - CORE_ADDR *regs; + /* The previous frame's `out' registers are accessable as the + current frame's `in' registers. */ + if (!cache->frameless_p + && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) + regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM); - regs = alloca (NUM_REGS * sizeof (CORE_ADDR)); - memset (regs, 0, NUM_REGS * sizeof (CORE_ADDR)); + frame_register_unwind (next_frame, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} - find_pc_partial_function (get_frame_pc (frame1), NULL, &func_start, NULL); - examine_prologue (func_start, 0, frame1, regs); - addr = regs[regnum]; - } - } - else - { - /* Normal frame. Local and In registers are saved on stack. */ - if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8) - addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom - + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_I0); - else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8) - addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom - + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_L0); - else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8) - { - /* Outs become ins. */ - int realnum; - frame_register (frame1, (regnum - O0_REGNUM + I0_REGNUM), - optimized, lval, addrp, &realnum, raw_buffer); - return; - } - } - if (addr != 0) - break; - frame1 = get_next_frame (frame1); - } - if (addr != 0) - { - if (lval != NULL) - *lval = lval_memory; - if (regnum == SP_REGNUM) - { - if (raw_buffer != NULL) - { - /* Put it back in target format. */ - store_unsigned_integer (raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum), addr); - } - if (addrp != NULL) - *addrp = 0; - return; - } - if (raw_buffer != NULL) - read_memory (addr, raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum)); - } - else - { - if (lval != NULL) - *lval = lval_register; - addr = DEPRECATED_REGISTER_BYTE (regnum); - if (raw_buffer != NULL) - deprecated_read_register_gen (regnum, raw_buffer); - } - if (addrp != NULL) - *addrp = addr; +static const struct frame_unwind sparc32_frame_unwind = +{ + NORMAL_FRAME, + sparc32_frame_this_id, + sparc32_frame_prev_register +}; + +static const struct frame_unwind * +sparc32_frame_sniffer (struct frame_info *next_frame) +{ + return &sparc32_frame_unwind; } + -/* Push an empty stack frame, and record in it the current PC, regs, etc. +static CORE_ADDR +sparc32_frame_base_address (struct frame_info *next_frame, void **this_cache) +{ + struct sparc_frame_cache *cache = + sparc32_frame_cache (next_frame, this_cache); - We save the non-windowed registers and the ins. The locals and outs - are new; they don't need to be saved. The i's and l's of - the last frame were already saved on the stack. */ + return cache->base; +} -/* Definitely see tm-sparc.h for more doc of the frame format here. */ +static const struct frame_base sparc32_frame_base = +{ + &sparc32_frame_unwind, + sparc32_frame_base_address, + sparc32_frame_base_address, + sparc32_frame_base_address +}; -/* See tm-sparc.h for how this is calculated. */ +static struct frame_id +sparc_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame) +{ + CORE_ADDR sp; -#define DUMMY_STACK_REG_BUF_SIZE \ - (((8+8+8) * SPARC_INTREG_SIZE) + FP_REGISTER_BYTES) -#define DUMMY_STACK_SIZE \ - (DUMMY_STACK_REG_BUF_SIZE + DUMMY_REG_SAVE_OFFSET) + sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM); + return frame_id_build (sp, frame_pc_unwind (next_frame)); +} + -void -sparc_push_dummy_frame (void) -{ - CORE_ADDR sp, old_sp; - char *register_temp; +/* Extract from an array REGBUF containing the (raw) register state, a + function return value of TYPE, and copy that into VALBUF. */ - register_temp = alloca (DUMMY_STACK_SIZE); +static void +sparc32_extract_return_value (struct type *type, struct regcache *regcache, + void *valbuf) +{ + int len = TYPE_LENGTH (type); + char buf[8]; - old_sp = sp = read_sp (); + gdb_assert (!sparc_structure_or_union_p (type)); + gdb_assert (!(sparc_floating_p (type) && len == 16)); - if (GDB_TARGET_IS_SPARC64) + if (sparc_floating_p (type)) { - /* PC, NPC, CCR, FSR, FPRS, Y, ASI */ - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (PC_REGNUM), - ®ister_temp[0], - DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM) * 7); - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (PSTATE_REGNUM), - ®ister_temp[7 * SPARC_INTREG_SIZE], - DEPRECATED_REGISTER_RAW_SIZE (PSTATE_REGNUM)); - /* FIXME: not sure what needs to be saved here. */ + /* Floating return values. */ + regcache_cooked_read (regcache, SPARC_F0_REGNUM, buf); + if (len > 4) + regcache_cooked_read (regcache, SPARC_F1_REGNUM, buf + 4); + memcpy (valbuf, buf, len); } else { - /* Y, PS, WIM, TBR, PC, NPC, FPS, CPS regs */ - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (Y_REGNUM), - ®ister_temp[0], - DEPRECATED_REGISTER_RAW_SIZE (Y_REGNUM) * 8); - } - - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (O0_REGNUM), - ®ister_temp[8 * SPARC_INTREG_SIZE], - SPARC_INTREG_SIZE * 8); + /* Integral and pointer return values. */ + gdb_assert (sparc_integral_or_pointer_p (type)); - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (G0_REGNUM), - ®ister_temp[16 * SPARC_INTREG_SIZE], - SPARC_INTREG_SIZE * 8); - - if (SPARC_HAS_FPU) - deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (FP0_REGNUM), - ®ister_temp[24 * SPARC_INTREG_SIZE], - FP_REGISTER_BYTES); - - sp -= DUMMY_STACK_SIZE; - - DEPRECATED_DUMMY_WRITE_SP (sp); - - write_memory (sp + DUMMY_REG_SAVE_OFFSET, ®ister_temp[0], - DUMMY_STACK_REG_BUF_SIZE); - - if (strcmp (target_shortname, "sim") != 0) - { - /* NOTE: cagney/2002-04-04: The code below originally contained - GDB's _only_ call to write_fp(). That call was eliminated by - inlining the corresponding code. For the 64 bit case, the - old function (sparc64_write_fp) did the below although I'm - not clear why. The same goes for why this is only done when - the underlying target is a simulator. */ - if (GDB_TARGET_IS_SPARC64) + regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf); + if (len > 4) { - /* Target is a 64 bit SPARC. */ - CORE_ADDR oldfp = read_register (DEPRECATED_FP_REGNUM); - if (oldfp & 1) - write_register (DEPRECATED_FP_REGNUM, old_sp - 2047); - else - write_register (DEPRECATED_FP_REGNUM, old_sp); + regcache_cooked_read (regcache, SPARC_O1_REGNUM, buf + 4); + gdb_assert (len == 8); + memcpy (valbuf, buf, 8); } else { - /* Target is a 32 bit SPARC. */ - write_register (DEPRECATED_FP_REGNUM, old_sp); + /* Just stripping off any unused bytes should preserve the + signed-ness just fine. */ + memcpy (valbuf, buf + 4 - len, len); } - /* Set return address register for the call dummy to the current PC. */ - write_register (I7_REGNUM, read_pc () - 8); - } - else - { - /* The call dummy will write this value to FP before executing - the 'save'. This ensures that register window flushes work - correctly in the simulator. */ - write_register (G0_REGNUM + 1, read_register (DEPRECATED_FP_REGNUM)); - - /* The call dummy will write this value to FP after executing - the 'save'. */ - write_register (G0_REGNUM + 2, old_sp); - - /* The call dummy will write this value to the return address (%i7) after - executing the 'save'. */ - write_register (G0_REGNUM + 3, read_pc () - 8); - - /* Set the FP that the call dummy will be using after the 'save'. - This makes backtraces from an inferior function call work properly. */ - write_register (DEPRECATED_FP_REGNUM, old_sp); } } -/* sparc_frame_find_saved_regs (). This function is here only because - pop_frame uses it. Note there is an interesting corner case which - I think few ports of GDB get right--if you are popping a frame - which does not save some register that *is* saved by a more inner - frame (such a frame will never be a dummy frame because dummy - frames save all registers). - - NOTE: cagney/2003-03-12: Since pop_frame has been rewritten to use - frame_unwind_register() the need for this function is questionable. - - Stores, into an array of CORE_ADDR, - the addresses of the saved registers of frame described by FRAME_INFO. - This includes special registers such as pc and fp saved in special - ways in the stack frame. sp is even more special: - the address we return for it IS the sp for the next frame. - - Note that on register window machines, we are currently making the - assumption that window registers are being saved somewhere in the - frame in which they are being used. If they are stored in an - inferior frame, find_saved_register will break. - - On the Sun 4, the only time all registers are saved is when - a dummy frame is involved. Otherwise, the only saved registers - are the LOCAL and IN registers which are saved as a result - of the "save/restore" opcodes. This condition is determined - by address rather than by value. - - The "pc" is not stored in a frame on the SPARC. (What is stored - is a return address minus 8.) sparc_pop_frame knows how to - deal with that. Other routines might or might not. - - See tm-sparc.h (PUSH_DUMMY_FRAME and friends) for CRITICAL information - about how this works. */ - -static void sparc_frame_find_saved_regs (struct frame_info *, CORE_ADDR *); +/* Write into the appropriate registers a function return value stored + in VALBUF of type TYPE. */ static void -sparc_frame_find_saved_regs (struct frame_info *fi, CORE_ADDR *saved_regs_addr) +sparc32_store_return_value (struct type *type, struct regcache *regcache, + const void *valbuf) { - int regnum; - CORE_ADDR frame_addr = get_frame_base (fi); - - gdb_assert (fi != NULL); + int len = TYPE_LENGTH (type); + char buf[8]; - memset (saved_regs_addr, 0, NUM_REGS * sizeof (CORE_ADDR)); + gdb_assert (!sparc_structure_or_union_p (type)); + gdb_assert (!(sparc_floating_p (type) && len == 16)); - if (get_frame_pc (fi) >= (get_frame_extra_info (fi)->bottom - ? get_frame_extra_info (fi)->bottom - : read_sp ()) - && get_frame_pc (fi) <= get_frame_base (fi)) - { - /* Dummy frame. All but the window regs are in there somewhere. */ - for (regnum = G1_REGNUM; regnum < G1_REGNUM + 7; regnum++) - saved_regs_addr[regnum] = - frame_addr + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE - - DUMMY_STACK_REG_BUF_SIZE + 16 * SPARC_INTREG_SIZE; - - for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++) - saved_regs_addr[regnum] = - frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE - - DUMMY_STACK_REG_BUF_SIZE + 8 * SPARC_INTREG_SIZE; - - if (SPARC_HAS_FPU) - for (regnum = FP0_REGNUM; regnum < FP_MAX_REGNUM; regnum++) - saved_regs_addr[regnum] = frame_addr + (regnum - FP0_REGNUM) * 4 - - DUMMY_STACK_REG_BUF_SIZE + 24 * SPARC_INTREG_SIZE; - - if (GDB_TARGET_IS_SPARC64) - { - for (regnum = PC_REGNUM; regnum < PC_REGNUM + 7; regnum++) - { - saved_regs_addr[regnum] = - frame_addr + (regnum - PC_REGNUM) * SPARC_INTREG_SIZE - - DUMMY_STACK_REG_BUF_SIZE; - } - saved_regs_addr[PSTATE_REGNUM] = - frame_addr + 8 * SPARC_INTREG_SIZE - DUMMY_STACK_REG_BUF_SIZE; - } - else - for (regnum = Y_REGNUM; regnum < NUM_REGS; regnum++) - saved_regs_addr[regnum] = - frame_addr + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE - - DUMMY_STACK_REG_BUF_SIZE; - - frame_addr = (get_frame_extra_info (fi)->bottom - ? get_frame_extra_info (fi)->bottom - : read_sp ()); - } - else if (get_frame_extra_info (fi)->flat) + if (sparc_floating_p (type)) { - CORE_ADDR func_start; - find_pc_partial_function (get_frame_pc (fi), NULL, &func_start, NULL); - examine_prologue (func_start, 0, fi, saved_regs_addr); - - /* Flat register window frame. */ - saved_regs_addr[RP_REGNUM] = get_frame_extra_info (fi)->pc_addr; - saved_regs_addr[I7_REGNUM] = get_frame_extra_info (fi)->fp_addr; + /* Floating return values. */ + memcpy (buf, valbuf, len); + regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf); + if (len > 4) + regcache_cooked_write (regcache, SPARC_F1_REGNUM, buf + 4); } else { - /* Normal frame. Just Local and In registers */ - frame_addr = (get_frame_extra_info (fi)->bottom - ? get_frame_extra_info (fi)->bottom - : read_sp ()); - for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; regnum++) - saved_regs_addr[regnum] = - (frame_addr + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_L0); - for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++) - saved_regs_addr[regnum] = - (frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_I0); - } - if (get_next_frame (fi)) - { - if (get_frame_extra_info (fi)->flat) + /* Integral and pointer return values. */ + gdb_assert (sparc_integral_or_pointer_p (type)); + + if (len > 4) { - saved_regs_addr[O7_REGNUM] = get_frame_extra_info (fi)->pc_addr; + gdb_assert (len == 8); + memcpy (buf, valbuf, 8); + regcache_cooked_write (regcache, SPARC_O1_REGNUM, buf + 4); } else { - /* Pull off either the next frame pointer or the stack pointer */ - CORE_ADDR next_next_frame_addr = - (get_frame_extra_info (get_next_frame (fi))->bottom - ? get_frame_extra_info (get_next_frame (fi))->bottom - : read_sp ()); - for (regnum = O0_REGNUM; regnum < O0_REGNUM + 8; regnum++) - saved_regs_addr[regnum] = - (next_next_frame_addr - + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE - + FRAME_SAVED_I0); + /* ??? Do we need to do any sign-extension here? */ + memcpy (buf + 4 - len, valbuf, len); } + regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf); } - /* Otherwise, whatever we would get from ptrace(GETREGS) is accurate */ - /* FIXME -- should this adjust for the sparc64 offset? */ - saved_regs_addr[SP_REGNUM] = get_frame_base (fi); } -/* Discard from the stack the innermost frame, restoring all saved registers. +static enum return_value_convention +sparc32_return_value (struct gdbarch *gdbarch, struct type *type, + struct regcache *regcache, void *readbuf, + const void *writebuf) +{ + if (sparc_structure_or_union_p (type) + || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16)) + return RETURN_VALUE_STRUCT_CONVENTION; - Note that the values stored in fsr by - deprecated_get_frame_saved_regs are *in the context of the called - frame*. What this means is that the i regs of fsr must be restored - into the o regs of the (calling) frame that we pop into. We don't - care about the output regs of the calling frame, since unless it's - a dummy frame, it won't have any output regs in it. + if (readbuf) + sparc32_extract_return_value (type, regcache, readbuf); + if (writebuf) + sparc32_store_return_value (type, regcache, writebuf); - We never have to bother with %l (local) regs, since the called routine's - locals get tossed, and the calling routine's locals are already saved - on its stack. */ + return RETURN_VALUE_REGISTER_CONVENTION; +} -/* Definitely see tm-sparc.h for more doc of the frame format here. */ +/* Extract from REGCACHE, which contains the (raw) register state, the + address in which a function should return its structure value, as a + CORE_ADDR. */ -void -sparc_pop_frame (void) +static CORE_ADDR +sparc32_extract_struct_value_address (struct regcache *regcache) { - struct frame_info *frame = get_current_frame (); - CORE_ADDR pc; - CORE_ADDR *fsr; - char *raw_buffer; - int regnum; - - fsr = alloca (NUM_REGS * sizeof (CORE_ADDR)); - raw_buffer = alloca (DEPRECATED_REGISTER_BYTES); - sparc_frame_find_saved_regs (frame, &fsr[0]); - if (SPARC_HAS_FPU) - { - if (fsr[FP0_REGNUM]) - { - read_memory (fsr[FP0_REGNUM], raw_buffer, FP_REGISTER_BYTES); - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (FP0_REGNUM), - raw_buffer, FP_REGISTER_BYTES); - } - if (!(GDB_TARGET_IS_SPARC64)) - { - if (fsr[FPS_REGNUM]) - { - read_memory (fsr[FPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE); - deprecated_write_register_gen (FPS_REGNUM, raw_buffer); - } - if (fsr[CPS_REGNUM]) - { - read_memory (fsr[CPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE); - deprecated_write_register_gen (CPS_REGNUM, raw_buffer); - } - } - } - if (fsr[G1_REGNUM]) - { - read_memory (fsr[G1_REGNUM], raw_buffer, 7 * SPARC_INTREG_SIZE); - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (G1_REGNUM), raw_buffer, - 7 * SPARC_INTREG_SIZE); - } - - if (get_frame_extra_info (frame)->flat) - { - /* Each register might or might not have been saved, need to test - individually. */ - for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; ++regnum) - if (fsr[regnum]) - write_register (regnum, read_memory_integer (fsr[regnum], - SPARC_INTREG_SIZE)); - for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; ++regnum) - if (fsr[regnum]) - write_register (regnum, read_memory_integer (fsr[regnum], - SPARC_INTREG_SIZE)); - - /* Handle all outs except stack pointer (o0-o5; o7). */ - for (regnum = O0_REGNUM; regnum < O0_REGNUM + 6; ++regnum) - if (fsr[regnum]) - write_register (regnum, read_memory_integer (fsr[regnum], - SPARC_INTREG_SIZE)); - if (fsr[O0_REGNUM + 7]) - write_register (O0_REGNUM + 7, - read_memory_integer (fsr[O0_REGNUM + 7], - SPARC_INTREG_SIZE)); - - DEPRECATED_DUMMY_WRITE_SP (get_frame_base (frame)); - } - else if (fsr[I0_REGNUM]) - { - CORE_ADDR sp; - - char *reg_temp; - - reg_temp = alloca (SPARC_INTREG_SIZE * 16); + ULONGEST sp; - read_memory (fsr[I0_REGNUM], raw_buffer, 8 * SPARC_INTREG_SIZE); + regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp); + return read_memory_unsigned_integer (sp + 64, 4); +} - /* Get the ins and locals which we are about to restore. Just - moving the stack pointer is all that is really needed, except - store_inferior_registers is then going to write the ins and - locals from the registers array, so we need to muck with the - registers array. */ - sp = fsr[SP_REGNUM]; - - if (GDB_TARGET_IS_SPARC64 && (sp & 1)) - sp += 2047; +static int +sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type) +{ + return (sparc_structure_or_union_p (type) + || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16)); +} - read_memory (sp, reg_temp, SPARC_INTREG_SIZE * 16); + +/* The SPARC Architecture doesn't have hardware single-step support, + and most operating systems don't implement it either, so we provide + software single-step mechanism. */ - /* Restore the out registers. - Among other things this writes the new stack pointer. */ - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (O0_REGNUM), raw_buffer, - SPARC_INTREG_SIZE * 8); +static CORE_ADDR +sparc_analyze_control_transfer (CORE_ADDR pc, CORE_ADDR *npc) +{ + unsigned long insn = sparc_fetch_instruction (pc); + int conditional_p = X_COND (insn) & 0x7; + int branch_p = 0; + long offset = 0; /* Must be signed for sign-extend. */ - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (L0_REGNUM), reg_temp, - SPARC_INTREG_SIZE * 16); + if (X_OP (insn) == 0 && X_OP2 (insn) == 3 && (insn & 0x1000000) == 0) + { + /* Branch on Integer Register with Prediction (BPr). */ + branch_p = 1; + conditional_p = 1; } - - if (!(GDB_TARGET_IS_SPARC64)) - if (fsr[PS_REGNUM]) - write_register (PS_REGNUM, - read_memory_integer (fsr[PS_REGNUM], - DEPRECATED_REGISTER_RAW_SIZE (PS_REGNUM))); - - if (fsr[Y_REGNUM]) - write_register (Y_REGNUM, - read_memory_integer (fsr[Y_REGNUM], - DEPRECATED_REGISTER_RAW_SIZE (Y_REGNUM))); - if (fsr[PC_REGNUM]) + else if (X_OP (insn) == 0 && X_OP2 (insn) == 6) { - /* Explicitly specified PC (and maybe NPC) -- just restore them. */ - write_register (PC_REGNUM, - read_memory_integer (fsr[PC_REGNUM], - DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM))); - if (fsr[DEPRECATED_NPC_REGNUM]) - write_register (DEPRECATED_NPC_REGNUM, - read_memory_integer (fsr[DEPRECATED_NPC_REGNUM], - DEPRECATED_REGISTER_RAW_SIZE (DEPRECATED_NPC_REGNUM))); + /* Branch on Floating-Point Condition Codes (FBfcc). */ + branch_p = 1; + offset = 4 * X_DISP22 (insn); } - else if (get_frame_extra_info (frame)->flat) + else if (X_OP (insn) == 0 && X_OP2 (insn) == 5) { - if (get_frame_extra_info (frame)->pc_addr) - pc = PC_ADJUST ((CORE_ADDR) - read_memory_integer (get_frame_extra_info (frame)->pc_addr, - DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM))); - else - { - /* I think this happens only in the innermost frame, if so then - it is a complicated way of saying - "pc = read_register (O7_REGNUM);". */ - ULONGEST tmp; - tmp = get_frame_register_unsigned (frame, O7_REGNUM); - pc = PC_ADJUST (tmp); - } - - write_register (PC_REGNUM, pc); - write_register (DEPRECATED_NPC_REGNUM, pc + 4); + /* Branch on Floating-Point Condition Codes with Prediction + (FBPfcc). */ + branch_p = 1; + offset = 4 * X_DISP19 (insn); } - else if (fsr[I7_REGNUM]) + else if (X_OP (insn) == 0 && X_OP2 (insn) == 2) { - /* Return address in %i7 -- adjust it, then restore PC and NPC from it */ - pc = PC_ADJUST ((CORE_ADDR) read_memory_integer (fsr[I7_REGNUM], - SPARC_INTREG_SIZE)); - write_register (PC_REGNUM, pc); - write_register (DEPRECATED_NPC_REGNUM, pc + 4); + /* Branch on Integer Condition Codes (Bicc). */ + branch_p = 1; + offset = 4 * X_DISP22 (insn); + } + else if (X_OP (insn) == 0 && X_OP2 (insn) == 1) + { + /* Branch on Integer Condition Codes with Prediction (BPcc). */ + branch_p = 1; + offset = 4 * X_DISP19 (insn); } - flush_cached_frames (); -} - -/* On the Sun 4 under SunOS, the compile will leave a fake insn which - encodes the structure size being returned. If we detect such - a fake insn, step past it. */ - -CORE_ADDR -sparc_pc_adjust (CORE_ADDR pc) -{ - unsigned long insn; - char buf[4]; - int err; - - err = target_read_memory (pc + 8, buf, 4); - insn = extract_unsigned_integer (buf, 4); - if ((err == 0) && (insn & 0xffc00000) == 0) - return pc + 12; - else - return pc + 8; -} -/* If pc is in a shared library trampoline, return its target. - The SunOs 4.x linker rewrites the jump table entries for PIC - compiled modules in the main executable to bypass the dynamic linker - with jumps of the form - sethi %hi(addr),%g1 - jmp %g1+%lo(addr) - and removes the corresponding jump table relocation entry in the - dynamic relocations. - find_solib_trampoline_target relies on the presence of the jump - table relocation entry, so we have to detect these jump instructions - by hand. */ + /* FIXME: Handle DONE and RETRY instructions. */ -CORE_ADDR -sunos4_skip_trampoline_code (CORE_ADDR pc) -{ - unsigned long insn1; - char buf[4]; - int err; + /* FIXME: Handle the Trap instruction. */ - err = target_read_memory (pc, buf, 4); - insn1 = extract_unsigned_integer (buf, 4); - if (err == 0 && (insn1 & 0xffc00000) == 0x03000000) + if (branch_p) { - unsigned long insn2; - - err = target_read_memory (pc + 4, buf, 4); - insn2 = extract_unsigned_integer (buf, 4); - if (err == 0 && (insn2 & 0xffffe000) == 0x81c06000) + if (conditional_p) { - CORE_ADDR target_pc = (insn1 & 0x3fffff) << 10; - int delta = insn2 & 0x1fff; - - /* Sign extend the displacement. */ - if (delta & 0x1000) - delta |= ~0x1fff; - return target_pc + delta; + /* For conditional branches, return nPC + 4 iff the annul + bit is 1. */ + return (X_A (insn) ? *npc + 4 : 0); + } + else + { + /* For unconditional branches, return the target if its + specified condition is "always" and return nPC + 4 if the + condition is "never". If the annul bit is 1, set *NPC to + zero. */ + if (X_COND (insn) == 0x0) + pc = *npc, offset = 4; + if (X_A (insn)) + *npc = 0; + + gdb_assert (offset != 0); + return pc + offset; } } - return find_solib_trampoline_target (pc); + + return 0; } - -#ifdef USE_PROC_FS /* Target dependent support for /proc */ -/* *INDENT-OFF* */ -/* The /proc interface divides the target machine's register set up into - two different sets, the general register set (gregset) and the floating - point register set (fpregset). For each set, there is an ioctl to get - the current register set and another ioctl to set the current values. - - The actual structure passed through the ioctl interface is, of course, - naturally machine dependent, and is different for each set of registers. - For the sparc for example, the general register set is typically defined - by: - - typedef int gregset_t[38]; - - #define R_G0 0 - ... - #define R_TBR 37 - - and the floating point set by: - - typedef struct prfpregset { - union { - u_long pr_regs[32]; - double pr_dregs[16]; - } pr_fr; - void * pr_filler; - u_long pr_fsr; - u_char pr_qcnt; - u_char pr_q_entrysize; - u_char pr_en; - u_long pr_q[64]; - } prfpregset_t; - - These routines provide the packing and unpacking of gregset_t and - fpregset_t formatted data. - - */ -/* *INDENT-ON* */ - -/* Given a pointer to a general register set in /proc format (gregset_t *), - unpack the register contents and supply them as gdb's idea of the current - register values. */ void -supply_gregset (gdb_gregset_t *gregsetp) +sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p) { - prgreg_t *regp = (prgreg_t *) gregsetp; - int regi, offset = 0; - - /* If the host is 64-bit sparc, but the target is 32-bit sparc, - then the gregset may contain 64-bit ints while supply_register - is expecting 32-bit ints. Compensate. */ - if (sizeof (regp[0]) == 8 && SPARC_INTREG_SIZE == 4) - offset = 4; - - /* GDB register numbers for Gn, On, Ln, In all match /proc reg numbers. */ - /* FIXME MVS: assumes the order of the first 32 elements... */ - for (regi = G0_REGNUM; regi <= I7_REGNUM; regi++) + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + static CORE_ADDR npc, nnpc; + static char npc_save[4], nnpc_save[4]; + + if (insert_breakpoints_p) { - supply_register (regi, ((char *) (regp + regi)) + offset); - } + CORE_ADDR pc; - /* These require a bit more care. */ - supply_register (PC_REGNUM, ((char *) (regp + R_PC)) + offset); - supply_register (DEPRECATED_NPC_REGNUM, ((char *) (regp + R_nPC)) + offset); - supply_register (Y_REGNUM, ((char *) (regp + R_Y)) + offset); + pc = sparc_address_from_register (tdep->pc_regnum); + npc = sparc_address_from_register (tdep->npc_regnum); - if (GDB_TARGET_IS_SPARC64) - { -#ifdef R_CCR - supply_register (CCR_REGNUM, ((char *) (regp + R_CCR)) + offset); -#else - supply_register (CCR_REGNUM, NULL); -#endif -#ifdef R_FPRS - supply_register (FPRS_REGNUM, ((char *) (regp + R_FPRS)) + offset); -#else - supply_register (FPRS_REGNUM, NULL); -#endif -#ifdef R_ASI - supply_register (ASI_REGNUM, ((char *) (regp + R_ASI)) + offset); -#else - supply_register (ASI_REGNUM, NULL); -#endif - } - else /* sparc32 */ - { -#ifdef R_PS - supply_register (PS_REGNUM, ((char *) (regp + R_PS)) + offset); -#else - supply_register (PS_REGNUM, NULL); -#endif - - /* For 64-bit hosts, R_WIM and R_TBR may not be defined. - Steal R_ASI and R_FPRS, and hope for the best! */ - -#if !defined (R_WIM) && defined (R_ASI) -#define R_WIM R_ASI -#endif - -#if !defined (R_TBR) && defined (R_FPRS) -#define R_TBR R_FPRS -#endif - -#if defined (R_WIM) - supply_register (WIM_REGNUM, ((char *) (regp + R_WIM)) + offset); -#else - supply_register (WIM_REGNUM, NULL); -#endif - -#if defined (R_TBR) - supply_register (TBR_REGNUM, ((char *) (regp + R_TBR)) + offset); -#else - supply_register (TBR_REGNUM, NULL); -#endif - } + /* Analyze the instruction at PC. */ + nnpc = sparc_analyze_control_transfer (pc, &npc); + if (npc != 0) + target_insert_breakpoint (npc, npc_save); + if (nnpc != 0) + target_insert_breakpoint (nnpc, nnpc_save); - /* Fill inaccessible registers with zero. */ - if (GDB_TARGET_IS_SPARC64) - { - /* - * don't know how to get value of any of the following: - */ - supply_register (VER_REGNUM, NULL); - supply_register (TICK_REGNUM, NULL); - supply_register (PIL_REGNUM, NULL); - supply_register (PSTATE_REGNUM, NULL); - supply_register (TSTATE_REGNUM, NULL); - supply_register (TBA_REGNUM, NULL); - supply_register (TL_REGNUM, NULL); - supply_register (TT_REGNUM, NULL); - supply_register (TPC_REGNUM, NULL); - supply_register (TNPC_REGNUM, NULL); - supply_register (WSTATE_REGNUM, NULL); - supply_register (CWP_REGNUM, NULL); - supply_register (CANSAVE_REGNUM, NULL); - supply_register (CANRESTORE_REGNUM, NULL); - supply_register (CLEANWIN_REGNUM, NULL); - supply_register (OTHERWIN_REGNUM, NULL); - supply_register (ASR16_REGNUM, NULL); - supply_register (ASR17_REGNUM, NULL); - supply_register (ASR18_REGNUM, NULL); - supply_register (ASR19_REGNUM, NULL); - supply_register (ASR20_REGNUM, NULL); - supply_register (ASR21_REGNUM, NULL); - supply_register (ASR22_REGNUM, NULL); - supply_register (ASR23_REGNUM, NULL); - supply_register (ASR24_REGNUM, NULL); - supply_register (ASR25_REGNUM, NULL); - supply_register (ASR26_REGNUM, NULL); - supply_register (ASR27_REGNUM, NULL); - supply_register (ASR28_REGNUM, NULL); - supply_register (ASR29_REGNUM, NULL); - supply_register (ASR30_REGNUM, NULL); - supply_register (ASR31_REGNUM, NULL); - supply_register (ICC_REGNUM, NULL); - supply_register (XCC_REGNUM, NULL); + /* Assert that we have set at least one breakpoint, and that + they're not set at the same spot. */ + gdb_assert (npc != 0 || nnpc != 0); + gdb_assert (nnpc != npc); } else { - supply_register (CPS_REGNUM, NULL); + if (npc != 0) + target_remove_breakpoint (npc, npc_save); + if (nnpc != 0) + target_remove_breakpoint (nnpc, nnpc_save); } } -void -fill_gregset (gdb_gregset_t *gregsetp, int regno) +static void +sparc_write_pc (CORE_ADDR pc, ptid_t ptid) { - prgreg_t *regp = (prgreg_t *) gregsetp; - int regi, offset = 0; - - /* If the host is 64-bit sparc, but the target is 32-bit sparc, - then the gregset may contain 64-bit ints while supply_register - is expecting 32-bit ints. Compensate. */ - if (sizeof (regp[0]) == 8 && SPARC_INTREG_SIZE == 4) - offset = 4; - - for (regi = 0; regi <= R_I7; regi++) - if ((regno == -1) || (regno == regi)) - deprecated_read_register_gen (regi, (char *) (regp + regi) + offset); - - if ((regno == -1) || (regno == PC_REGNUM)) - deprecated_read_register_gen (PC_REGNUM, (char *) (regp + R_PC) + offset); + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); - if ((regno == -1) || (regno == DEPRECATED_NPC_REGNUM)) - deprecated_read_register_gen (DEPRECATED_NPC_REGNUM, (char *) (regp + R_nPC) + offset); + write_register_pid (tdep->pc_regnum, pc, ptid); + write_register_pid (tdep->npc_regnum, pc + 4, ptid); +} + +/* Unglobalize NAME. */ - if ((regno == -1) || (regno == Y_REGNUM)) - deprecated_read_register_gen (Y_REGNUM, (char *) (regp + R_Y) + offset); +char * +sparc_stabs_unglobalize_name (char *name) +{ + /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, + SunPRO) convert file static variables into global values, a + process known as globalization. In order to do this, the + compiler will create a unique prefix and prepend it to each file + static variable. For static variables within a function, this + globalization prefix is followed by the function name (nested + static variables within a function are supposed to generate a + warning message, and are left alone). The procedure is + documented in the Stabs Interface Manual, which is distrubuted + with the compilers, although version 4.0 of the manual seems to + be incorrect in some places, at least for SPARC. The + globalization prefix is encoded into an N_OPT stab, with the form + "G=". The globalization prefix always seems to start + with a dollar sign '$'; a dot '.' is used as a seperator. So we + simply strip everything up until the last dot. */ - if (GDB_TARGET_IS_SPARC64) - { -#ifdef R_CCR - if (regno == -1 || regno == CCR_REGNUM) - deprecated_read_register_gen (CCR_REGNUM, ((char *) (regp + R_CCR)) + offset); -#endif -#ifdef R_FPRS - if (regno == -1 || regno == FPRS_REGNUM) - deprecated_read_register_gen (FPRS_REGNUM, ((char *) (regp + R_FPRS)) + offset); -#endif -#ifdef R_ASI - if (regno == -1 || regno == ASI_REGNUM) - deprecated_read_register_gen (ASI_REGNUM, ((char *) (regp + R_ASI)) + offset); -#endif - } - else /* sparc32 */ + if (name[0] == '$') { -#ifdef R_PS - if (regno == -1 || regno == PS_REGNUM) - deprecated_read_register_gen (PS_REGNUM, ((char *) (regp + R_PS)) + offset); -#endif - - /* For 64-bit hosts, R_WIM and R_TBR may not be defined. - Steal R_ASI and R_FPRS, and hope for the best! */ - -#if !defined (R_WIM) && defined (R_ASI) -#define R_WIM R_ASI -#endif - -#if !defined (R_TBR) && defined (R_FPRS) -#define R_TBR R_FPRS -#endif - -#if defined (R_WIM) - if (regno == -1 || regno == WIM_REGNUM) - deprecated_read_register_gen (WIM_REGNUM, ((char *) (regp + R_WIM)) + offset); -#else - if (regno == -1 || regno == WIM_REGNUM) - deprecated_read_register_gen (WIM_REGNUM, NULL); -#endif - -#if defined (R_TBR) - if (regno == -1 || regno == TBR_REGNUM) - deprecated_read_register_gen (TBR_REGNUM, ((char *) (regp + R_TBR)) + offset); -#else - if (regno == -1 || regno == TBR_REGNUM) - deprecated_read_register_gen (TBR_REGNUM, NULL); -#endif + char *p = strrchr (name, '.'); + if (p) + return p + 1; } + + return name; } + -/* Given a pointer to a floating point register set in /proc format - (fpregset_t *), unpack the register contents and supply them as gdb's - idea of the current floating point register values. */ +/* Return the appropriate register set for the core section identified + by SECT_NAME and SECT_SIZE. */ -void -supply_fpregset (gdb_fpregset_t *fpregsetp) +const struct regset * +sparc_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, size_t sect_size) { - int regi; - char *from; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - if (!SPARC_HAS_FPU) - return; + if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset) + return tdep->gregset; - for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++) - { - from = (char *) &fpregsetp->pr_fr.pr_regs[regi - FP0_REGNUM]; - supply_register (regi, from); - } + if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset) + return tdep->fpregset; - if (GDB_TARGET_IS_SPARC64) - { - /* - * don't know how to get value of the following. - */ - supply_register (FSR_REGNUM, NULL); /* zero it out for now */ - supply_register (FCC0_REGNUM, NULL); - supply_register (FCC1_REGNUM, NULL); /* don't know how to get value */ - supply_register (FCC2_REGNUM, NULL); /* don't know how to get value */ - supply_register (FCC3_REGNUM, NULL); /* don't know how to get value */ - } - else - { - supply_register (FPS_REGNUM, (char *) &(fpregsetp->pr_fsr)); - } + return NULL; } + -/* Given a pointer to a floating point register set in /proc format - (fpregset_t *), update the register specified by REGNO from gdb's idea - of the current floating point register set. If REGNO is -1, update - them all. */ -/* This will probably need some changes for sparc64. */ - -void -fill_fpregset (gdb_fpregset_t *fpregsetp, int regno) +static struct gdbarch * +sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { - int regi; - char *to; - char *from; - - if (!SPARC_HAS_FPU) - return; - - for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++) - { - if ((regno == -1) || (regno == regi)) - { - from = (char *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (regi)]; - to = (char *) &fpregsetp->pr_fr.pr_regs[regi - FP0_REGNUM]; - memcpy (to, from, DEPRECATED_REGISTER_RAW_SIZE (regi)); - } - } + struct gdbarch_tdep *tdep; + struct gdbarch *gdbarch; - if (!(GDB_TARGET_IS_SPARC64)) /* FIXME: does Sparc64 have this register? */ - if ((regno == -1) || (regno == FPS_REGNUM)) - { - from = (char *)&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)]; - to = (char *) &fpregsetp->pr_fsr; - memcpy (to, from, DEPRECATED_REGISTER_RAW_SIZE (FPS_REGNUM)); - } -} + /* If there is already a candidate, use it. */ + arches = gdbarch_list_lookup_by_info (arches, &info); + if (arches != NULL) + return arches->gdbarch; -#endif /* USE_PROC_FS */ + /* Allocate space for the new architecture. */ + tdep = XMALLOC (struct gdbarch_tdep); + gdbarch = gdbarch_alloc (&info, tdep); -/* Because of Multi-arch, GET_LONGJMP_TARGET is always defined. So test - for a definition of JB_PC. */ -#ifdef JB_PC + tdep->pc_regnum = SPARC32_PC_REGNUM; + tdep->npc_regnum = SPARC32_NPC_REGNUM; + tdep->gregset = NULL; + tdep->sizeof_gregset = 20 * 4; + tdep->fpregset = NULL; + tdep->sizeof_fpregset = 33 * 4; + tdep->plt_entry_size = 0; + + set_gdbarch_long_double_bit (gdbarch, 128); + set_gdbarch_long_double_format (gdbarch, &floatformat_sparc_quad); + + set_gdbarch_num_regs (gdbarch, SPARC32_NUM_REGS); + set_gdbarch_register_name (gdbarch, sparc32_register_name); + set_gdbarch_register_type (gdbarch, sparc32_register_type); + set_gdbarch_num_pseudo_regs (gdbarch, SPARC32_NUM_PSEUDO_REGS); + set_gdbarch_pseudo_register_read (gdbarch, sparc32_pseudo_register_read); + set_gdbarch_pseudo_register_write (gdbarch, sparc32_pseudo_register_write); + + /* Register numbers of various important registers. */ + set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM); /* %sp */ + set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM); /* %pc */ + set_gdbarch_fp0_regnum (gdbarch, SPARC_F0_REGNUM); /* %f0 */ + + /* Call dummy code. */ + set_gdbarch_call_dummy_location (gdbarch, ON_STACK); + set_gdbarch_push_dummy_code (gdbarch, sparc32_push_dummy_code); + set_gdbarch_push_dummy_call (gdbarch, sparc32_push_dummy_call); + + set_gdbarch_return_value (gdbarch, sparc32_return_value); + set_gdbarch_extract_struct_value_address + (gdbarch, sparc32_extract_struct_value_address); + set_gdbarch_stabs_argument_has_addr + (gdbarch, sparc32_stabs_argument_has_addr); + + set_gdbarch_skip_prologue (gdbarch, sparc32_skip_prologue); + + /* Stack grows downward. */ + set_gdbarch_inner_than (gdbarch, core_addr_lessthan); -/* Figure out where the longjmp will land. We expect that we have just entered - longjmp and haven't yet setup the stack frame, so the args are still in the - output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we - extract the pc (JB_PC) that we will land at. The pc is copied into ADDR. - This routine returns true on success */ + set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc); + set_gdbarch_decr_pc_after_break (gdbarch, 0); + set_gdbarch_function_start_offset (gdbarch, 0); -int -get_longjmp_target (CORE_ADDR *pc) -{ - CORE_ADDR jb_addr; -#define LONGJMP_TARGET_SIZE 4 - char buf[LONGJMP_TARGET_SIZE]; + set_gdbarch_frame_args_skip (gdbarch, 8); - jb_addr = read_register (O0_REGNUM); + set_gdbarch_print_insn (gdbarch, print_insn_sparc); - if (target_read_memory (jb_addr + JB_PC * JB_ELEMENT_SIZE, buf, - LONGJMP_TARGET_SIZE)) - return 0; + set_gdbarch_software_single_step (gdbarch, sparc_software_single_step); + set_gdbarch_write_pc (gdbarch, sparc_write_pc); - *pc = extract_unsigned_integer (buf, LONGJMP_TARGET_SIZE); + set_gdbarch_unwind_dummy_id (gdbarch, sparc_unwind_dummy_id); - return 1; -} -#endif /* GET_LONGJMP_TARGET */ - -#ifdef STATIC_TRANSFORM_NAME -/* SunPRO (3.0 at least), encodes the static variables. This is not - related to C++ mangling, it is done for C too. */ + set_gdbarch_unwind_pc (gdbarch, sparc_unwind_pc); -char * -sunpro_static_transform_name (char *name) -{ - char *p; - if (name[0] == '$') - { - /* For file-local statics there will be a dollar sign, a bunch - of junk (the contents of which match a string given in the - N_OPT), a period and the name. For function-local statics - there will be a bunch of junk (which seems to change the - second character from 'A' to 'B'), a period, the name of the - function, and the name. So just skip everything before the - last period. */ - p = strrchr (name, '.'); - if (p != NULL) - name = p + 1; - } - return name; -} -#endif /* STATIC_TRANSFORM_NAME */ - + frame_base_set_default (gdbarch, &sparc32_frame_base); -/* Utilities for printing registers. - Page numbers refer to the SPARC Architecture Manual. */ + /* Hook in ABI-specific overrides, if they have been registered. */ + gdbarch_init_osabi (info, gdbarch); -static void dump_ccreg (char *, int); + frame_unwind_append_sniffer (gdbarch, sparc32_frame_sniffer); -static void -dump_ccreg (char *reg, int val) -{ - /* page 41 */ - printf_unfiltered ("%s:%s,%s,%s,%s", reg, - val & 8 ? "N" : "NN", - val & 4 ? "Z" : "NZ", - val & 2 ? "O" : "NO", - val & 1 ? "C" : "NC"); -} + /* If we have register sets, enable the generic core file support. */ + if (tdep->gregset && tdep->fpregset) + set_gdbarch_regset_from_core_section (gdbarch, + sparc_regset_from_core_section); -static char * -decode_asi (int val) -{ - /* page 72 */ - switch (val) - { - case 4: - return "ASI_NUCLEUS"; - case 0x0c: - return "ASI_NUCLEUS_LITTLE"; - case 0x10: - return "ASI_AS_IF_USER_PRIMARY"; - case 0x11: - return "ASI_AS_IF_USER_SECONDARY"; - case 0x18: - return "ASI_AS_IF_USER_PRIMARY_LITTLE"; - case 0x19: - return "ASI_AS_IF_USER_SECONDARY_LITTLE"; - case 0x80: - return "ASI_PRIMARY"; - case 0x81: - return "ASI_SECONDARY"; - case 0x82: - return "ASI_PRIMARY_NOFAULT"; - case 0x83: - return "ASI_SECONDARY_NOFAULT"; - case 0x88: - return "ASI_PRIMARY_LITTLE"; - case 0x89: - return "ASI_SECONDARY_LITTLE"; - case 0x8a: - return "ASI_PRIMARY_NOFAULT_LITTLE"; - case 0x8b: - return "ASI_SECONDARY_NOFAULT_LITTLE"; - default: - return NULL; - } + return gdbarch; } + +/* Helper functions for dealing with register windows. */ -/* Pretty print various registers. */ -/* FIXME: Would be nice if this did some fancy things for 32 bit sparc. */ - -static void -sparc_print_register_hook (int regno) +void +sparc_supply_rwindow (struct regcache *regcache, CORE_ADDR sp, int regnum) { - ULONGEST val; + int offset = 0; + char buf[8]; + int i; - /* Handle double/quad versions of lower 32 fp regs. */ - if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32 - && (regno & 1) == 0) + if (sp & 1) { - char value[16]; + /* Registers are 64-bit. */ + sp += BIAS; - if (frame_register_read (deprecated_selected_frame, regno, value) - && frame_register_read (deprecated_selected_frame, regno + 1, value + 4)) - { - printf_unfiltered ("\t"); - print_floating (value, builtin_type_double, gdb_stdout); - } -#if 0 /* FIXME: gdb doesn't handle long doubles */ - if ((regno & 3) == 0) + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - if (frame_register_read (deprecated_selected_frame, regno + 2, value + 8) - && frame_register_read (deprecated_selected_frame, regno + 3, value + 12)) + if (regnum == i || regnum == -1) { - printf_unfiltered ("\t"); - print_floating (value, builtin_type_long_double, gdb_stdout); + target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8); + regcache_raw_supply (regcache, i, buf); } } -#endif - return; } - -#if 0 /* FIXME: gdb doesn't handle long doubles */ - /* Print upper fp regs as long double if appropriate. */ - if (regno >= FP0_REGNUM + 32 && regno < FP_MAX_REGNUM - /* We test for even numbered regs and not a multiple of 4 because - the upper fp regs are recorded as doubles. */ - && (regno & 1) == 0) + else { - char value[16]; + /* Registers are 32-bit. Toss any sign-extension of the stack + pointer. */ + sp &= 0xffffffffUL; - if (frame_register_read (deprecated_selected_frame, regno, value) - && frame_register_read (deprecated_selected_frame, regno + 1, value + 8)) + /* Clear out the top half of the temporary buffer, and put the + register value in the bottom half if we're in 64-bit mode. */ + if (gdbarch_ptr_bit (current_gdbarch) == 64) { - printf_unfiltered ("\t"); - print_floating (value, builtin_type_long_double, gdb_stdout); + memset (buf, 0, 4); + offset = 4; } - return; - } -#endif - /* FIXME: Some of these are priviledged registers. - Not sure how they should be handled. */ - -#define BITS(n, mask) ((int) (((val) >> (n)) & (mask))) - - val = read_register (regno); - - /* pages 40 - 60 */ - if (GDB_TARGET_IS_SPARC64) - switch (regno) - { - case CCR_REGNUM: - printf_unfiltered ("\t"); - dump_ccreg ("xcc", val >> 4); - printf_unfiltered (", "); - dump_ccreg ("icc", val & 15); - break; - case FPRS_REGNUM: - printf ("\tfef:%d, du:%d, dl:%d", - BITS (2, 1), BITS (1, 1), BITS (0, 1)); - break; - case FSR_REGNUM: + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - static char *fcc[4] = - {"=", "<", ">", "?"}; - static char *rd[4] = - {"N", "0", "+", "-"}; - /* Long, but I'd rather leave it as is and use a wide screen. */ - printf_filtered ("\t0:%s, 1:%s, 2:%s, 3:%s, rd:%s, tem:%d, ", - fcc[BITS (10, 3)], fcc[BITS (32, 3)], - fcc[BITS (34, 3)], fcc[BITS (36, 3)], - rd[BITS (30, 3)], BITS (23, 31)); - printf_filtered ("ns:%d, ver:%d, ftt:%d, qne:%d, aexc:%d, cexc:%d", - BITS (22, 1), BITS (17, 7), BITS (14, 7), - BITS (13, 1), BITS (5, 31), BITS (0, 31)); - break; - } - case ASI_REGNUM: - { - char *asi = decode_asi (val); - if (asi != NULL) - printf ("\t%s", asi); - break; - } - case VER_REGNUM: - printf ("\tmanuf:%d, impl:%d, mask:%d, maxtl:%d, maxwin:%d", - BITS (48, 0xffff), BITS (32, 0xffff), - BITS (24, 0xff), BITS (8, 0xff), BITS (0, 31)); - break; - case PSTATE_REGNUM: - { - static char *mm[4] = - {"tso", "pso", "rso", "?"}; - printf_filtered ("\tcle:%d, tle:%d, mm:%s, red:%d, ", - BITS (9, 1), BITS (8, 1), - mm[BITS (6, 3)], BITS (5, 1)); - printf_filtered ("pef:%d, am:%d, priv:%d, ie:%d, ag:%d", - BITS (4, 1), BITS (3, 1), BITS (2, 1), - BITS (1, 1), BITS (0, 1)); - break; - } - case TSTATE_REGNUM: - /* FIXME: print all 4? */ - break; - case TT_REGNUM: - /* FIXME: print all 4? */ - break; - case TPC_REGNUM: - /* FIXME: print all 4? */ - break; - case TNPC_REGNUM: - /* FIXME: print all 4? */ - break; - case WSTATE_REGNUM: - printf ("\tother:%d, normal:%d", BITS (3, 7), BITS (0, 7)); - break; - case CWP_REGNUM: - printf ("\t%d", BITS (0, 31)); - break; - case CANSAVE_REGNUM: - printf ("\t%-2d before spill", BITS (0, 31)); - break; - case CANRESTORE_REGNUM: - printf ("\t%-2d before fill", BITS (0, 31)); - break; - case CLEANWIN_REGNUM: - printf ("\t%-2d before clean", BITS (0, 31)); - break; - case OTHERWIN_REGNUM: - printf ("\t%d", BITS (0, 31)); - break; - } - else /* Sparc32 */ - switch (regno) - { - case PS_REGNUM: - printf ("\ticc:%c%c%c%c, pil:%d, s:%d, ps:%d, et:%d, cwp:%d", - BITS (23, 1) ? 'N' : '-', BITS (22, 1) ? 'Z' : '-', - BITS (21, 1) ? 'V' : '-', BITS (20, 1) ? 'C' : '-', - BITS (8, 15), BITS (7, 1), BITS (6, 1), BITS (5, 1), - BITS (0, 31)); - break; - case FPS_REGNUM: - { - static char *fcc[4] = - {"=", "<", ">", "?"}; - static char *rd[4] = - {"N", "0", "+", "-"}; - /* Long, but I'd rather leave it as is and use a wide screen. */ - printf ("\trd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, " - "fcc:%s, aexc:%d, cexc:%d", - rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7), - BITS (14, 7), BITS (13, 1), fcc[BITS (10, 3)], BITS (5, 31), - BITS (0, 31)); - break; + if (regnum == i || regnum == -1) + { + target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 4), + buf + offset, 4); + regcache_raw_supply (regcache, i, buf); + } } - } - -#undef BITS + } } -static void -sparc_print_registers (struct gdbarch *gdbarch, - struct ui_file *file, - struct frame_info *frame, - int regnum, int print_all, - void (*print_register_hook) (int)) +void +sparc_collect_rwindow (const struct regcache *regcache, + CORE_ADDR sp, int regnum) { + int offset = 0; + char buf[8]; int i; - const int numregs = NUM_REGS + NUM_PSEUDO_REGS; - char raw_buffer[MAX_REGISTER_SIZE]; - char virtual_buffer[MAX_REGISTER_SIZE]; - for (i = 0; i < numregs; i++) + if (sp & 1) { - /* Decide between printing all regs, non-float / vector regs, or - specific reg. */ - if (regnum == -1) + /* Registers are 64-bit. */ + sp += BIAS; + + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - if (!print_all) + if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i) { - if (TYPE_CODE (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT) - continue; - if (TYPE_VECTOR (DEPRECATED_REGISTER_VIRTUAL_TYPE (i))) - continue; + regcache_raw_collect (regcache, i, buf); + target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8); } } - else - { - if (i != regnum) - continue; - } - - /* If the register name is empty, it is undefined for this - processor, so don't display anything. */ - if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0') - continue; - - fputs_filtered (REGISTER_NAME (i), file); - print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file); - - /* Get the data in raw format. */ - if (! frame_register_read (frame, i, raw_buffer)) - { - fprintf_filtered (file, "*value not available*\n"); - continue; - } + } + else + { + /* Registers are 32-bit. Toss any sign-extension of the stack + pointer. */ + sp &= 0xffffffffUL; - memcpy (virtual_buffer, raw_buffer, DEPRECATED_REGISTER_VIRTUAL_SIZE (i)); + /* Only use the bottom half if we're in 64-bit mode. */ + if (gdbarch_ptr_bit (current_gdbarch) == 64) + offset = 4; - /* If virtual format is floating, print it that way, and in raw - hex. */ - if (TYPE_CODE (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT) + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - int j; - - val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0, - file, 0, 1, 0, Val_pretty_default); - - fprintf_filtered (file, "\t(raw 0x"); - for (j = 0; j < DEPRECATED_REGISTER_RAW_SIZE (i); j++) + if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i) { - int idx; - if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) - idx = j; - else - idx = DEPRECATED_REGISTER_RAW_SIZE (i) - 1 - j; - fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]); + regcache_raw_collect (regcache, i, buf); + target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 4), + buf + offset, 4); } - fprintf_filtered (file, ")"); } - else - { - /* Print the register in hex. */ - val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0, - file, 'x', 1, 0, Val_pretty_default); - /* If not a vector register, print it also according to its - natural format. */ - if (TYPE_VECTOR (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == 0) - { - fprintf_filtered (file, "\t"); - val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0, - file, 0, 1, 0, Val_pretty_default); - } - } - - /* Some sparc specific info. */ - if (print_register_hook != NULL) - print_register_hook (i); - - fprintf_filtered (file, "\n"); } } -static void -sparc_print_registers_info (struct gdbarch *gdbarch, - struct ui_file *file, - struct frame_info *frame, - int regnum, int print_all) -{ - sparc_print_registers (gdbarch, file, frame, regnum, print_all, - sparc_print_register_hook); -} +/* Helper functions for dealing with register sets. */ void -sparc_do_registers_info (int regnum, int all) +sparc32_supply_gregset (const struct sparc_gregset *gregset, + struct regcache *regcache, + int regnum, const void *gregs) { - sparc_print_registers_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, - regnum, all); -} + const char *regs = gregs; + int i; -#define SPARC_F0_REGNUM FP0_REGNUM /* %f0 */ -#define SPARC_F1_REGNUM (FP0_REGNUM + 1)/* %f1 */ -#define SPARC_O0_REGNUM O0_REGNUM /* %o0 */ -#define SPARC_O1_REGNUM O1_REGNUM /* %o1 */ + if (regnum == SPARC32_PSR_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_PSR_REGNUM, + regs + gregset->r_psr_offset); -/* Push the arguments onto the stack and into the appropriate registers. */ + if (regnum == SPARC32_PC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_PC_REGNUM, + regs + gregset->r_pc_offset); -static CORE_ADDR -sparc32_do_push_arguments (struct regcache *regcache, int nargs, - struct value **args, CORE_ADDR sp) -{ - CORE_ADDR *addr; - int size = 0; - int i; + if (regnum == SPARC32_NPC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_NPC_REGNUM, + regs + gregset->r_npc_offset); + + if (regnum == SPARC32_Y_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_Y_REGNUM, + regs + gregset->r_y_offset); - /* Structure, union and quad-precision arguments are passed by - reference. We allocate space for these arguments on the stack - and record their addresses in an array. Array elements for - arguments that are passed by value will be set to zero.*/ - addr = alloca (nargs * sizeof (CORE_ADDR)); + if (regnum == SPARC_G0_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL); - for (i = nargs - 1; i >= 0; i--) + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) { - struct type *type = VALUE_ENCLOSING_TYPE (args[i]); - enum type_code code = TYPE_CODE (type); - int len = TYPE_LENGTH (type); + int offset = gregset->r_g1_offset; - /* Push the contents of structure, union and quad-precision - arguments on the stack. */ - if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION || len > 8) - { - /* Keep the stack doubleword aligned. */ - sp -= (len + 7) & ~7; - write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len); - addr[i] = sp; - size += 4; - } - else + for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++) { - addr[i] = 0; - size += (len > 4) ? 8 : 4; + if (regnum == i || regnum == -1) + regcache_raw_supply (regcache, i, regs + offset); + offset += 4; } } - /* The needed space for outgoing arguments should be a multiple of 4. */ - gdb_assert (size % 4 == 0); - - /* Make sure we reserve space for the first six words of arguments - in the stack frame, even if we don't need them. */ - if (size < 24) - sp -= (24 - size); - - /* Make sure we end up with a doubleword aligned stack in the end. - Reserve an extra word if necessary in order to accomplish this. */ - if ((sp - size) % 8 == 0) - sp -= 4; - - /* Now push the arguments onto the stack. */ - for (i = nargs - 1; i >=0; i--) + if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1) { - char buf[8]; - int len; - - if (addr[i]) + /* Not all of the register set variants include Locals and + Inputs. For those that don't, we read them off the stack. */ + if (gregset->r_l0_offset == -1) { - store_unsigned_integer (buf, 4, addr[i]); - len = 4; + ULONGEST sp; + + regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp); + sparc_supply_rwindow (regcache, sp, regnum); } else { - struct value *arg = args[i]; - - len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg)); + int offset = gregset->r_l0_offset; - /* Expand signed and unsigned bytes and halfwords as needed. */ - if (len < 4) + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - arg = value_cast (builtin_type_long, arg); - len = 4; + if (regnum == i || regnum == -1) + regcache_raw_supply (regcache, i, regs + offset); + offset += 4; } - else if (len > 4 && len < 8) - { - arg = value_cast (builtin_type_long_long, arg); - len = 4; - } - - gdb_assert (len == 4 || len == 8); - memcpy (buf, VALUE_CONTENTS_ALL (arg), len); - } - - /* We always write the argument word on the stack. */ - sp -= len; - write_memory (sp, buf, len); - - /* If this argument occupies one of the first 6 words, write it - into the appropriate register too. */ - size -= len; - if (size < 24) - { - int regnum = SPARC_O0_REGNUM + (size / 4); - - regcache_cooked_write (regcache, regnum, buf); - if (len == 8 && size < 20) - regcache_cooked_write (regcache, regnum + 1, buf + 4); - } - } - - /* Reserve space for the struct/union return value pointer. */ - sp -= 4; - - /* Stack should be doubleword aligned at this point. */ - gdb_assert (sp % 8 == 0); - - /* Return the adjusted stack pointer. */ - return sp; -} - -/* The SPARC passes the arguments on the stack; arguments smaller - than an int are promoted to an int. The first 6 words worth of - args are also passed in registers o0 - o5. */ - -CORE_ADDR -sparc32_push_arguments (int nargs, struct value **args, CORE_ADDR sp, - int struct_return, CORE_ADDR struct_addr) -{ - sp = sparc32_do_push_arguments (current_regcache, nargs, args, sp); - - /* FIXME: kettenis/20030525: We don't let this function set the - struct/union return pointer just yet. */ -#if 0 - if (struct_return) - { - char buf[4]; - - /* The space for the struct/union return value pointer has - already been reserved. */ - store_unsigned_integer (buf, 4, struct_addr); - write (sp, buf, 4); - } - - return sp; -#else - return sp + 4; -#endif -} - -/* Extract from REGCACHE a function return value of type TYPE and copy - that into VALBUF. - - Note that REGCACHE specifies the register values for the frame of - the calling function. This means that we need to fetch the value - form %o0 and %o1, which correspond to %i0 and %i1 in the frame of - the called function. */ - -void -sparc32_extract_return_value (struct type *type, struct regcache *regcache, - void *valbuf) -{ - int len = TYPE_LENGTH (type); - char buf[8]; - - if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU) - { - if (len == 4 || len == 8) - { - regcache_cooked_read (regcache, SPARC_F0_REGNUM, buf); - regcache_cooked_read (regcache, SPARC_F1_REGNUM, buf + 4); - memcpy (valbuf, buf, len); - return; - } - else - internal_error (__FILE__, __LINE__, "\ -Cannot extract floating-point return value of %d bytes long.", len); - } - - if (len <= 4) - { - regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf); - memcpy (valbuf, buf + 4 - len, len); - } - else if (len <= 8) - { - regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf); - regcache_cooked_read (regcache, SPARC_O1_REGNUM, buf + 4); - memcpy (valbuf, buf + 8 - len, len); - } - else - internal_error (__FILE__, __LINE__, - "Cannot extract return value of %d bytes long.", len); -} - -/* Write into REGBUF a function return value VALBUF of type TYPE. */ - -void -sparc32_store_return_value (struct type *type, struct regcache *regcache, - const void *valbuf) -{ - int len = TYPE_LENGTH (type); - char buf[8]; - - if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU) - { - const char *buf = valbuf; - - if (len == 4) - { - regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf); - return; } - else if (len == 8) - { - regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf); - regcache_cooked_write (regcache, SPARC_F1_REGNUM, buf + 4); - return; - } - else - internal_error (__FILE__, __LINE__, "\ -Cannot extract floating-point return value of %d bytes long.", len); - } - - /* Add leading zeros to the value. */ - memset (buf, 0, sizeof buf); - - if (len <= 4) - { - memcpy (buf + 4 - len, valbuf, len); - regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf); - } - else if (len <= 8) - { - memcpy (buf + 8 - len, valbuf, len); - regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf); - regcache_cooked_write (regcache, SPARC_O1_REGNUM, buf); } - else - internal_error (__FILE__, __LINE__, - "Cannot extract return value of %d bytes long.", len); -} - -/* Extract from REGCACHE the address in which a function should return - its structure value. */ - -CORE_ADDR -sparc_extract_struct_value_address (struct regcache *regcache) -{ - ULONGEST addr; - - regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr); - return addr; } -/* FIXME: kettenis/2003/05/24: Still used for sparc64. */ - -static void -sparc_store_return_value (struct type *type, char *valbuf) -{ - int regno; - char buffer[MAX_REGISTER_SIZE]; - - if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU) - /* Floating-point values are returned in the register pair */ - /* formed by %f0 and %f1 (doubles are, anyway). */ - regno = FP0_REGNUM; - else - /* Other values are returned in register %o0. */ - regno = O0_REGNUM; - - /* Add leading zeros to the value. */ - if (TYPE_LENGTH (type) < DEPRECATED_REGISTER_RAW_SIZE (regno)) - { - memset (buffer, 0, DEPRECATED_REGISTER_RAW_SIZE (regno)); - memcpy (buffer + DEPRECATED_REGISTER_RAW_SIZE (regno) - TYPE_LENGTH (type), valbuf, - TYPE_LENGTH (type)); - deprecated_write_register_gen (regno, buffer); - } - else - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (regno), valbuf, - TYPE_LENGTH (type)); -} - -#ifndef CALL_DUMMY_CALL_OFFSET -#define CALL_DUMMY_CALL_OFFSET \ - (gdbarch_tdep (current_gdbarch)->call_dummy_call_offset) -#endif /* CALL_DUMMY_CALL_OFFSET */ - -/* Insert the function address into a call dummy instruction sequence - stored at DUMMY. - - For structs and unions, if the function was compiled with Sun cc, - it expects 'unimp' after the call. But gcc doesn't use that - (twisted) convention. So leave a nop there for gcc - (DEPRECATED_FIX_CALL_DUMMY can assume it is operating on a pristine - CALL_DUMMY, not one that has already been customized for a - different function). */ - void -sparc_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, - struct type *value_type, int using_gcc) +sparc32_collect_gregset (const struct sparc_gregset *gregset, + const struct regcache *regcache, + int regnum, void *gregs) { + char *regs = gregs; int i; - /* Store the relative adddress of the target function into the - 'call' instruction. */ - store_unsigned_integer (dummy + CALL_DUMMY_CALL_OFFSET, 4, - (0x40000000 - | (((fun - (pc + CALL_DUMMY_CALL_OFFSET)) >> 2) - & 0x3fffffff))); - - /* If the called function returns an aggregate value, fill in the UNIMP - instruction containing the size of the returned aggregate return value, - which follows the call instruction. - For details see the SPARC Architecture Manual Version 8, Appendix D.3. - - Adjust the call_dummy_breakpoint_offset for the bp_call_dummy breakpoint - to the proper address in the call dummy, so that `finish' after a stop - in a call dummy works. - - Tweeking current_gdbarch is not an optimal solution, but the call - to sparc_fix_call_dummy is immediately followed by a call to - call_function_by_hand, which is the only function where - dummy_breakpoint_offset is actually used, if it is non-zero. */ - if (TYPE_CODE (value_type) == TYPE_CODE_STRUCT - || TYPE_CODE (value_type) == TYPE_CODE_UNION) - { - store_unsigned_integer (dummy + CALL_DUMMY_CALL_OFFSET + 8, 4, - TYPE_LENGTH (value_type) & 0x1fff); - set_gdbarch_deprecated_call_dummy_breakpoint_offset (current_gdbarch, 0x30); - } - else - set_gdbarch_deprecated_call_dummy_breakpoint_offset (current_gdbarch, 0x2c); + if (regnum == SPARC32_PSR_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_PSR_REGNUM, + regs + gregset->r_psr_offset); - if (!(GDB_TARGET_IS_SPARC64)) - { - /* If this is not a simulator target, change the first four - instructions of the call dummy to NOPs. Those instructions - include a 'save' instruction and are designed to work around - problems with register window flushing in the simulator. */ - - if (strcmp (target_shortname, "sim") != 0) - { - for (i = 0; i < 4; i++) - store_unsigned_integer (dummy + (i * 4), 4, 0x01000000); - } - } -} + if (regnum == SPARC32_PC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_PC_REGNUM, + regs + gregset->r_pc_offset); -/* - * Module "constructor" function. - */ + if (regnum == SPARC32_NPC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_NPC_REGNUM, + regs + gregset->r_npc_offset); -static struct gdbarch * sparc_gdbarch_init (struct gdbarch_info info, - struct gdbarch_list *arches); -static void sparc_dump_tdep (struct gdbarch *, struct ui_file *); + if (regnum == SPARC32_Y_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_Y_REGNUM, + regs + gregset->r_y_offset); -extern initialize_file_ftype _initialize_sparc_tdep; /* -Wmissing-prototypes */ - -void -_initialize_sparc_tdep (void) -{ - /* Hook us into the gdbarch mechanism. */ - gdbarch_register (bfd_arch_sparc, sparc_gdbarch_init, sparc_dump_tdep); -} - -/* Compensate for stack bias. Note that we currently don't handle - mixed 32/64 bit code. */ - -static CORE_ADDR -sparc64_read_sp (void) -{ - CORE_ADDR sp = read_register (SP_REGNUM); - - if (sp & 1) - sp += 2047; - return sp; -} - -static CORE_ADDR -sparc64_read_fp (void) -{ - CORE_ADDR fp = read_register (DEPRECATED_FP_REGNUM); - - if (fp & 1) - fp += 2047; - return fp; -} - -static void -sparc64_write_sp (CORE_ADDR val) -{ - CORE_ADDR oldsp = read_register (SP_REGNUM); - if (oldsp & 1) - write_register (SP_REGNUM, val - 2047); - else - write_register (SP_REGNUM, val); -} - -/* The SPARC 64 ABI passes floating-point arguments in FP0 to FP31, - and all other arguments in O0 to O5. They are also copied onto - the stack in the correct places. Apparently (empirically), - structs of less than 16 bytes are passed member-by-member in - separate registers, but I am unable to figure out the algorithm. - Some members go in floating point regs, but I don't know which. - - FIXME: Handle small structs (less than 16 bytes containing floats). - - The counting regimen for using both integer and FP registers - for argument passing is rather odd -- a single counter is used - for both; this means that if the arguments alternate between - int and float, we will waste every other register of both types. */ - -static CORE_ADDR -sparc64_push_arguments (int nargs, struct value **args, CORE_ADDR sp, - int struct_return, CORE_ADDR struct_retaddr) -{ - int i, j, register_counter = 0; - CORE_ADDR tempsp; - struct type *sparc_intreg_type = - TYPE_LENGTH (builtin_type_long) == SPARC_INTREG_SIZE ? - builtin_type_long : builtin_type_long_long; - - sp = (sp & ~(((unsigned long) SPARC_INTREG_SIZE) - 1UL)); - - /* Figure out how much space we'll need. */ - for (i = nargs - 1; i >= 0; i--) + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) { - int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i]))); - struct value *copyarg = args[i]; - int copylen = len; + int offset = gregset->r_g1_offset; - if (copylen < SPARC_INTREG_SIZE) + /* %g0 is always zero. */ + for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++) { - copyarg = value_cast (sparc_intreg_type, copyarg); - copylen = SPARC_INTREG_SIZE; + if (regnum == i || regnum == -1) + regcache_raw_collect (regcache, i, regs + offset); + offset += 4; } - sp -= copylen; } - /* Round down. */ - sp = sp & ~7; - tempsp = sp; - - /* if STRUCT_RETURN, then first argument is the struct return location. */ - if (struct_return) - write_register (O0_REGNUM + register_counter++, struct_retaddr); - - /* Now write the arguments onto the stack, while writing FP - arguments into the FP registers, and other arguments into the - first six 'O' registers. */ - - for (i = 0; i < nargs; i++) + if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1) { - int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i]))); - struct value *copyarg = args[i]; - enum type_code typecode = TYPE_CODE (VALUE_TYPE (args[i])); - int copylen = len; - - if (typecode == TYPE_CODE_INT || - typecode == TYPE_CODE_BOOL || - typecode == TYPE_CODE_CHAR || - typecode == TYPE_CODE_RANGE || - typecode == TYPE_CODE_ENUM) - if (len < SPARC_INTREG_SIZE) - { - /* Small ints will all take up the size of one intreg on - the stack. */ - copyarg = value_cast (sparc_intreg_type, copyarg); - copylen = SPARC_INTREG_SIZE; - } - - write_memory (tempsp, VALUE_CONTENTS (copyarg), copylen); - tempsp += copylen; - - /* Corner case: Structs consisting of a single float member are floats. - * FIXME! I don't know about structs containing multiple floats! - * Structs containing mixed floats and ints are even more weird. - */ - - - - /* Separate float args from all other args. */ - if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU) + /* Not all of the register set variants include Locals and + Inputs. For those that don't, we read them off the stack. */ + if (gregset->r_l0_offset != -1) { - if (register_counter < 16) - { - /* This arg gets copied into a FP register. */ - int fpreg; - - switch (len) { - case 4: /* Single-precision (float) */ - fpreg = FP0_REGNUM + 2 * register_counter + 1; - register_counter += 1; - break; - case 8: /* Double-precision (double) */ - fpreg = FP0_REGNUM + 2 * register_counter; - register_counter += 1; - break; - case 16: /* Quad-precision (long double) */ - fpreg = FP0_REGNUM + 2 * register_counter; - register_counter += 2; - break; - default: - internal_error (__FILE__, __LINE__, "bad switch"); - } - deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (fpreg), - VALUE_CONTENTS (args[i]), - len); - } - } - else /* all other args go into the first six 'o' registers */ - { - for (j = 0; - j < len && register_counter < 6; - j += SPARC_INTREG_SIZE) - { - int oreg = O0_REGNUM + register_counter; + int offset = gregset->r_l0_offset; - deprecated_write_register_gen (oreg, VALUE_CONTENTS (copyarg) + j); - register_counter += 1; - } - } - } - return sp; -} - -/* Values <= 32 bytes are returned in o0-o3 (floating-point values are - returned in f0-f3). */ - -static void -sp64_extract_return_value (struct type *type, char *regbuf, char *valbuf, - int bitoffset) -{ - int typelen = TYPE_LENGTH (type); - int regsize = DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM); - - if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU) - { - memcpy (valbuf, ®buf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], typelen); - return; - } - - if (TYPE_CODE (type) != TYPE_CODE_STRUCT - || (TYPE_LENGTH (type) > 32)) - { - memcpy (valbuf, - ®buf[O0_REGNUM * regsize + - (typelen >= regsize ? 0 : regsize - typelen)], - typelen); - return; - } - else - { - char *o0 = ®buf[O0_REGNUM * regsize]; - char *f0 = ®buf[FP0_REGNUM * regsize]; - int x; - - for (x = 0; x < TYPE_NFIELDS (type); x++) - { - struct field *f = &TYPE_FIELDS (type)[x]; - /* FIXME: We may need to handle static fields here. */ - int whichreg = (f->loc.bitpos + bitoffset) / 32; - int remainder = ((f->loc.bitpos + bitoffset) % 32) / 8; - int where = (f->loc.bitpos + bitoffset) / 8; - int size = TYPE_LENGTH (f->type); - int typecode = TYPE_CODE (f->type); - - if (typecode == TYPE_CODE_STRUCT) + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - sp64_extract_return_value (f->type, - regbuf, - valbuf, - bitoffset + f->loc.bitpos); - } - else if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU) - { - memcpy (valbuf + where, &f0[whichreg * 4] + remainder, size); - } - else - { - memcpy (valbuf + where, &o0[whichreg * 4] + remainder, size); + if (regnum == i || regnum == -1) + regcache_raw_collect (regcache, i, regs + offset); + offset += 4; } } } } -static void -sparc64_extract_return_value (struct type *type, char *regbuf, char *valbuf) -{ - sp64_extract_return_value (type, regbuf, valbuf, 0); -} - -extern CORE_ADDR -sparc32_stack_align (CORE_ADDR addr) -{ - return ((addr + 7) & -8); -} - -static CORE_ADDR -sparc64_stack_align (CORE_ADDR addr) -{ - return ((addr + 15) & -16); -} - -extern void -sparc_print_extra_frame_info (struct frame_info *fi) -{ - if (fi && get_frame_extra_info (fi) && get_frame_extra_info (fi)->flat) - printf_filtered (" flat, pc saved at 0x%s, fp saved at 0x%s\n", - paddr_nz (get_frame_extra_info (fi)->pc_addr), - paddr_nz (get_frame_extra_info (fi)->fp_addr)); -} - -static const char * -sparc32_register_name (int regno) -{ - static char *register_names[] = - { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", - "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7", - "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7", - "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7", - - "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", - "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", - "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", - "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", - - "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr" - }; - - if (regno < 0 || - regno >= (sizeof (register_names) / sizeof (register_names[0]))) - return NULL; - else - return register_names[regno]; -} - -static const char * -sparc64_register_name (int regno) +void +sparc32_supply_fpregset (struct regcache *regcache, + int regnum, const void *fpregs) { - static char *register_names[] = - { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", - "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7", - "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7", - "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7", - - "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", - "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", - "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", - "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", - "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46", - "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62", - - "pc", "npc", "ccr", "fsr", "fprs", "y", "asi", "ver", - "tick", "pil", "pstate", "tstate", "tba", "tl", "tt", "tpc", - "tnpc", "wstate", "cwp", "cansave", "canrestore", "cleanwin", "otherwin", - "asr16", "asr17", "asr18", "asr19", "asr20", "asr21", "asr22", "asr23", - "asr24", "asr25", "asr26", "asr27", "asr28", "asr29", "asr30", "asr31", - /* These are here at the end to simplify removing them if we have to. */ - "icc", "xcc", "fcc0", "fcc1", "fcc2", "fcc3" - }; - - if (regno < 0 || - regno >= (sizeof (register_names) / sizeof (register_names[0]))) - return NULL; - else - return register_names[regno]; -} + const char *regs = fpregs; + int i; -static CORE_ADDR -sparc_push_return_address (CORE_ADDR pc_unused, CORE_ADDR sp) -{ - if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT) + for (i = 0; i < 32; i++) { - /* The return PC of the dummy_frame is the former 'current' PC - (where we were before we made the target function call). - This is saved in %i7 by push_dummy_frame. - - We will save the 'call dummy location' (ie. the address - to which the target function will return) in %o7. - This address will actually be the program's entry point. - There will be a special call_dummy breakpoint there. */ - - if (DEPRECATED_CALL_DUMMY_ADDRESS_P ()) - write_register (O7_REGNUM, DEPRECATED_CALL_DUMMY_ADDRESS () - 8); - else - write_register (O7_REGNUM, entry_point_address () - 8); + if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) + regcache_raw_supply (regcache, SPARC_F0_REGNUM + i, regs + (i * 4)); } - return sp; + if (regnum == SPARC32_FSR_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_FSR_REGNUM, regs + (32 * 4) + 4); } -/* Should call_function allocate stack space for a struct return? */ - -static int -sparc64_use_struct_convention (int gcc_p, struct type *type) -{ - return (TYPE_LENGTH (type) > 32); -} - -/* Store the address of the place in which to copy the structure the - subroutine will return. This is called from call_function_by_hand. - The ultimate mystery is, tho, what is the value "16"? - - MVS: That's the offset from where the sp is now, to where the - subroutine is gonna expect to find the struct return address. */ - -static void -sparc32_store_struct_return (CORE_ADDR addr, CORE_ADDR sp) -{ - char *val; - CORE_ADDR o7; - - val = alloca (SPARC_INTREG_SIZE); - store_unsigned_integer (val, SPARC_INTREG_SIZE, addr); - write_memory (sp + (16 * SPARC_INTREG_SIZE), val, SPARC_INTREG_SIZE); - - if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT) - { - /* Now adjust the value of the link register, which was previously - stored by push_return_address. Functions that return structs are - peculiar in that they return to link register + 12, rather than - link register + 8. */ - - o7 = read_register (O7_REGNUM); - write_register (O7_REGNUM, o7 - 4); - } -} - -static void -sparc64_store_struct_return (CORE_ADDR addr, CORE_ADDR sp) +void +sparc32_collect_fpregset (const struct regcache *regcache, + int regnum, void *fpregs) { - /* FIXME: V9 uses %o0 for this. */ - /* FIXME MVS: Only for small enough structs!!! */ + char *regs = fpregs; + int i; - target_write_memory (sp + (16 * SPARC_INTREG_SIZE), - (char *) &addr, SPARC_INTREG_SIZE); -#if 0 - if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT) + for (i = 0; i < 32; i++) { - /* Now adjust the value of the link register, which was previously - stored by push_return_address. Functions that return structs are - peculiar in that they return to link register + 12, rather than - link register + 8. */ - - write_register (O7_REGNUM, read_register (O7_REGNUM) - 4); + if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) + regcache_raw_collect (regcache, SPARC_F0_REGNUM + i, regs + (i * 4)); } -#endif -} - -/* Default target data type for register REGNO. */ - -static struct type * -sparc32_register_virtual_type (int regno) -{ - if (regno == PC_REGNUM || - regno == DEPRECATED_FP_REGNUM || - regno == SP_REGNUM) - return builtin_type_unsigned_int; - if (regno < 32) - return builtin_type_int; - if (regno < 64) - return builtin_type_float; - return builtin_type_int; -} - -static struct type * -sparc64_register_virtual_type (int regno) -{ - if (regno == PC_REGNUM || - regno == DEPRECATED_FP_REGNUM || - regno == SP_REGNUM) - return builtin_type_unsigned_long_long; - if (regno < 32) - return builtin_type_long_long; - if (regno < 64) - return builtin_type_float; - if (regno < 80) - return builtin_type_double; - return builtin_type_long_long; -} -/* Number of bytes of storage in the actual machine representation for - register REGNO. */ - -static int -sparc32_register_size (int regno) -{ - return 4; + if (regnum == SPARC32_FSR_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_FSR_REGNUM, regs + (32 * 4) + 4); } + -static int -sparc64_register_size (int regno) -{ - return (regno < 32 ? 8 : regno < 64 ? 4 : 8); -} - -/* Index within the `registers' buffer of the first byte of the space - for register REGNO. */ - -static int -sparc32_register_byte (int regno) -{ - return (regno * 4); -} - -static int -sparc64_register_byte (int regno) -{ - if (regno < 32) - return regno * 8; - else if (regno < 64) - return 32 * 8 + (regno - 32) * 4; - else if (regno < 80) - return 32 * 8 + 32 * 4 + (regno - 64) * 8; - else - return 64 * 8 + (regno - 80) * 8; -} - -/* Immediately after a function call, return the saved pc. - Can't go through the frames for this because on some machines - the new frame is not set up until the new function executes - some instructions. */ - -static CORE_ADDR -sparc_saved_pc_after_call (struct frame_info *fi) -{ - return sparc_pc_adjust (read_register (RP_REGNUM)); -} - -/* Init saved regs: nothing to do, just a place-holder function. */ - -static void -sparc_frame_init_saved_regs (struct frame_info *fi_ignored) -{ /* no-op */ -} - -/* gdbarch fix call dummy: - All this function does is rearrange the arguments before calling - sparc_fix_call_dummy (which does the real work). */ - -static void -sparc_gdbarch_fix_call_dummy (char *dummy, - CORE_ADDR pc, - CORE_ADDR fun, - int nargs, - struct value **args, - struct type *type, - int gcc_p) -{ - if (CALL_DUMMY_LOCATION == ON_STACK) - sparc_fix_call_dummy (dummy, pc, fun, type, gcc_p); -} - -/* DEPRECATED_CALL_DUMMY_ADDRESS: fetch the breakpoint address for a - call dummy. */ - -static CORE_ADDR -sparc_call_dummy_address (void) -{ - return (DEPRECATED_CALL_DUMMY_START_OFFSET) + DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET; -} - -/* Supply the Y register number to those that need it. */ - -int -sparc_y_regnum (void) -{ - return gdbarch_tdep (current_gdbarch)->y_regnum; -} - -int -sparc_reg_struct_has_addr (int gcc_p, struct type *type) -{ - if (GDB_TARGET_IS_SPARC64) - return (TYPE_LENGTH (type) > 32); - else - return (gcc_p != 1); -} - -int -sparc_intreg_size (void) -{ - return SPARC_INTREG_SIZE; -} - -static int -sparc_return_value_on_stack (struct type *type) -{ - if (TYPE_CODE (type) == TYPE_CODE_FLT && - TYPE_LENGTH (type) > 8) - return 1; - else - return 0; -} - -/* Get the ith function argument for the current function. */ -static CORE_ADDR -sparc_fetch_pointer_argument (struct frame_info *frame, int argi, - struct type *type) -{ - CORE_ADDR addr; - get_frame_register (frame, O0_REGNUM + argi, &addr); - return addr; -} - -/* - * Gdbarch "constructor" function. - */ - -#define SPARC32_CALL_DUMMY_ON_STACK - -#define SPARC_SP_REGNUM 14 -#define SPARC_FP_REGNUM 30 -#define SPARC_FP0_REGNUM 32 -#define SPARC32_NPC_REGNUM 69 -#define SPARC32_PC_REGNUM 68 -#define SPARC32_Y_REGNUM 64 -#define SPARC64_PC_REGNUM 80 -#define SPARC64_NPC_REGNUM 81 -#define SPARC64_Y_REGNUM 85 +/* SunOS 4. */ -static struct gdbarch * -sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) +/* From . */ +const struct sparc_gregset sparc32_sunos4_gregset = { - struct gdbarch *gdbarch; - struct gdbarch_tdep *tdep; - - static LONGEST call_dummy_32[] = - { 0xbc100001, 0x9de38000, 0xbc100002, 0xbe100003, - 0xda03a058, 0xd803a054, 0xd603a050, 0xd403a04c, - 0xd203a048, 0x40000000, 0xd003a044, 0x01000000, - 0x91d02001, 0x01000000 - }; - static LONGEST call_dummy_64[] = - { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL, - 0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL, - 0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL, - 0xd13fa79fcd3fa797LL, 0xc93fa78fc53fa787LL, - 0xc13fa77fcc3fa777LL, 0xc83fa76fc43fa767LL, - 0xc03fa75ffc3fa757LL, 0xf83fa74ff43fa747LL, - 0xf03fa73f01000000LL, 0x0100000001000000LL, - 0x0100000091580000LL, 0xd027a72b93500000LL, - 0xd027a72791480000LL, 0xd027a72391400000LL, - 0xd027a71fda5ba8a7LL, 0xd85ba89fd65ba897LL, - 0xd45ba88fd25ba887LL, 0x9fc02000d05ba87fLL, - 0x0100000091d02001LL, 0x0100000001000000LL - }; - static LONGEST call_dummy_nil[] = {0}; - - /* Try to determine the OS ABI of the object we are loading. */ - - if (info.abfd != NULL - && info.osabi == GDB_OSABI_UNKNOWN) - { - /* If it's an ELF file, assume it's Solaris. */ - if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour) - info.osabi = GDB_OSABI_SOLARIS; - } - - /* First see if there is already a gdbarch that can satisfy the request. */ - arches = gdbarch_list_lookup_by_info (arches, &info); - if (arches != NULL) - return arches->gdbarch; - - /* None found: is the request for a sparc architecture? */ - if (info.bfd_arch_info->arch != bfd_arch_sparc) - return NULL; /* No; then it's not for us. */ - - /* Yes: create a new gdbarch for the specified machine type. */ - tdep = (struct gdbarch_tdep *) xmalloc (sizeof (struct gdbarch_tdep)); - gdbarch = gdbarch_alloc (&info, tdep); - - /* First set settings that are common for all sparc architectures. */ - set_gdbarch_believe_pcc_promotion (gdbarch, 1); - set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc); - set_gdbarch_decr_pc_after_break (gdbarch, 0); - set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT); - set_gdbarch_extract_struct_value_address (gdbarch, - sparc_extract_struct_value_address); - set_gdbarch_deprecated_fix_call_dummy (gdbarch, sparc_gdbarch_fix_call_dummy); - set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_fp_regnum (gdbarch, SPARC_FP_REGNUM); - set_gdbarch_fp0_regnum (gdbarch, SPARC_FP0_REGNUM); - set_gdbarch_deprecated_frame_chain (gdbarch, sparc_frame_chain); - set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sparc_frame_init_saved_regs); - set_gdbarch_deprecated_frame_saved_pc (gdbarch, sparc_frame_saved_pc); - set_gdbarch_frameless_function_invocation (gdbarch, - frameless_look_for_prologue); - set_gdbarch_deprecated_get_saved_register (gdbarch, sparc_get_saved_register); - set_gdbarch_deprecated_init_extra_frame_info (gdbarch, sparc_init_extra_frame_info); - set_gdbarch_inner_than (gdbarch, core_addr_lessthan); - set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT); - set_gdbarch_long_double_bit (gdbarch, 16 * TARGET_CHAR_BIT); - set_gdbarch_long_long_bit (gdbarch, 8 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_max_register_raw_size (gdbarch, 8); - set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 8); - set_gdbarch_deprecated_pop_frame (gdbarch, sparc_pop_frame); - set_gdbarch_deprecated_push_return_address (gdbarch, sparc_push_return_address); - set_gdbarch_deprecated_push_dummy_frame (gdbarch, sparc_push_dummy_frame); - set_gdbarch_deprecated_reg_struct_has_addr - (gdbarch, sparc_reg_struct_has_addr); - set_gdbarch_return_value_on_stack (gdbarch, sparc_return_value_on_stack); - set_gdbarch_deprecated_saved_pc_after_call (gdbarch, sparc_saved_pc_after_call); - set_gdbarch_prologue_frameless_p (gdbarch, sparc_prologue_frameless_p); - set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT); - set_gdbarch_skip_prologue (gdbarch, sparc_skip_prologue); - set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM); - set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0); - set_gdbarch_write_pc (gdbarch, generic_target_write_pc); - - /* Helper for function argument information. */ - set_gdbarch_fetch_pointer_argument (gdbarch, sparc_fetch_pointer_argument); - - /* - * Settings that depend only on 32/64 bit word size - */ - - switch (info.bfd_arch_info->mach) - { - case bfd_mach_sparc: - case bfd_mach_sparc_v8plus: - case bfd_mach_sparc_v8plusa: - /* 32-bit machine types: */ - -#ifdef SPARC32_CALL_DUMMY_ON_STACK - set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack); - set_gdbarch_deprecated_call_dummy_address (gdbarch, sparc_call_dummy_address); - set_gdbarch_deprecated_call_dummy_breakpoint_offset (gdbarch, 0x30); - set_gdbarch_deprecated_call_dummy_length (gdbarch, 0x38); - - /* NOTE: cagney/2003-05-01: Using the just added push_dummy_code - architecture method, it is now possible to implement a - generic dummy frames based inferior function call that stores - the breakpoint (and struct info) on the stack. Further, by - treating a SIGSEG at a breakpoint as equivalent to a SIGTRAP - it is even possible to make this work when the stack is - no-execute. - - NOTE: cagney/2002-04-26: Based from info posted by Peter - Schauer around Oct '99. Briefly, due to aspects of the SPARC - ABI, it isn't possible to use ON_STACK with a strictly - compliant compiler. - - Peter Schauer writes ... - - No, any call from GDB to a user function returning a - struct/union will fail miserably. Try this: - - *NOINDENT* - struct x - { - int a[4]; - }; - - struct x gx; - - struct x - sret () - { - return gx; - } - - main () - { - int i; - for (i = 0; i < 4; i++) - gx.a[i] = i + 1; - gx = sret (); - } - *INDENT* - - Set a breakpoint at the gx = sret () statement, run to it and - issue a `print sret()'. It will not succed with your - approach, and I doubt that continuing the program will work - as well. - - For details of the ABI see the Sparc Architecture Manual. I - have Version 8 (Prentice Hall ISBN 0-13-825001-4) and the - calling conventions for functions returning aggregate values - are explained in Appendix D.3. */ - - set_gdbarch_call_dummy_location (gdbarch, ON_STACK); - set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_32); -#else - set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point); - set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil); -#endif - set_gdbarch_deprecated_call_dummy_stack_adjust (gdbarch, 68); - set_gdbarch_frame_args_skip (gdbarch, 68); - set_gdbarch_function_start_offset (gdbarch, 0); - set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC32_NPC_REGNUM); - set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM); - set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_push_arguments (gdbarch, sparc32_push_arguments); - - set_gdbarch_deprecated_register_byte (gdbarch, sparc32_register_byte); - set_gdbarch_deprecated_register_raw_size (gdbarch, sparc32_register_size); - set_gdbarch_deprecated_register_size (gdbarch, 4); - set_gdbarch_deprecated_register_virtual_size (gdbarch, sparc32_register_size); - set_gdbarch_deprecated_register_virtual_type (gdbarch, sparc32_register_virtual_type); -#ifdef SPARC32_CALL_DUMMY_ON_STACK - set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_32)); -#else - set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0); -#endif - set_gdbarch_deprecated_stack_align (gdbarch, sparc32_stack_align); - set_gdbarch_deprecated_extra_stack_alignment_needed (gdbarch, 1); - set_gdbarch_deprecated_store_struct_return (gdbarch, sparc32_store_struct_return); - set_gdbarch_use_struct_convention (gdbarch, - generic_use_struct_convention); - set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp); - tdep->y_regnum = SPARC32_Y_REGNUM; - tdep->fp_max_regnum = SPARC_FP0_REGNUM + 32; - tdep->intreg_size = 4; - tdep->reg_save_offset = 0x60; - tdep->call_dummy_call_offset = 0x24; - break; - - case bfd_mach_sparc_v9: - case bfd_mach_sparc_v9a: - /* 64-bit machine types: */ - default: /* Any new machine type is likely to be 64-bit. */ - -#ifdef SPARC64_CALL_DUMMY_ON_STACK - set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack); - set_gdbarch_deprecated_call_dummy_address (gdbarch, sparc_call_dummy_address); - set_gdbarch_deprecated_call_dummy_breakpoint_offset (gdbarch, 8 * 4); - set_gdbarch_deprecated_call_dummy_length (gdbarch, 192); - set_gdbarch_call_dummy_location (gdbarch, ON_STACK); - set_gdbarch_deprecated_call_dummy_start_offset (gdbarch, 148); - set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_64); -#else - set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point); - set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil); -#endif - set_gdbarch_deprecated_call_dummy_stack_adjust (gdbarch, 128); - set_gdbarch_frame_args_skip (gdbarch, 136); - set_gdbarch_function_start_offset (gdbarch, 0); - set_gdbarch_long_bit (gdbarch, 8 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC64_NPC_REGNUM); - set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM); - set_gdbarch_ptr_bit (gdbarch, 8 * TARGET_CHAR_BIT); - set_gdbarch_deprecated_push_arguments (gdbarch, sparc64_push_arguments); - /* NOTE different for at_entry */ - set_gdbarch_deprecated_target_read_fp (gdbarch, sparc64_read_fp); - set_gdbarch_read_sp (gdbarch, sparc64_read_sp); - /* Some of the registers aren't 64 bits, but it's a lot simpler just - to assume they all are (since most of them are). */ - set_gdbarch_deprecated_register_byte (gdbarch, sparc64_register_byte); - set_gdbarch_deprecated_register_raw_size (gdbarch, sparc64_register_size); - set_gdbarch_deprecated_register_size (gdbarch, 8); - set_gdbarch_deprecated_register_virtual_size (gdbarch, sparc64_register_size); - set_gdbarch_deprecated_register_virtual_type (gdbarch, sparc64_register_virtual_type); -#ifdef SPARC64_CALL_DUMMY_ON_STACK - set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_64)); -#else - set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0); -#endif - set_gdbarch_deprecated_stack_align (gdbarch, sparc64_stack_align); - set_gdbarch_deprecated_extra_stack_alignment_needed (gdbarch, 1); - set_gdbarch_deprecated_store_struct_return (gdbarch, sparc64_store_struct_return); - set_gdbarch_use_struct_convention (gdbarch, - sparc64_use_struct_convention); - set_gdbarch_deprecated_dummy_write_sp (gdbarch, sparc64_write_sp); - tdep->y_regnum = SPARC64_Y_REGNUM; - tdep->fp_max_regnum = SPARC_FP0_REGNUM + 48; - tdep->intreg_size = 8; - tdep->reg_save_offset = 0x90; - tdep->call_dummy_call_offset = 148 + 4 * 5; - break; - } - - /* - * Settings that vary per-architecture: - */ - - switch (info.bfd_arch_info->mach) - { - case bfd_mach_sparc: - set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value); - set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value); - set_gdbarch_num_regs (gdbarch, 72); - set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); - set_gdbarch_register_name (gdbarch, sparc32_register_name); - tdep->fp_register_bytes = 32 * 4; - tdep->print_insn_mach = bfd_mach_sparc; - break; - case bfd_mach_sparc_v8plus: - set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value); - set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value); - set_gdbarch_num_regs (gdbarch, 72); - set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); - set_gdbarch_register_name (gdbarch, sparc32_register_name); - tdep->print_insn_mach = bfd_mach_sparc; - tdep->fp_register_bytes = 32 * 4; - break; - case bfd_mach_sparc_v8plusa: - set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value); - set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value); - set_gdbarch_num_regs (gdbarch, 72); - set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); - set_gdbarch_register_name (gdbarch, sparc32_register_name); - tdep->fp_register_bytes = 32 * 4; - tdep->print_insn_mach = bfd_mach_sparc; - break; - case bfd_mach_sparc_v9: - set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value); - set_gdbarch_num_regs (gdbarch, 125); - set_gdbarch_deprecated_register_bytes (gdbarch, 32*8 + 32*8 + 45*8); - set_gdbarch_register_name (gdbarch, sparc64_register_name); - set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); - tdep->fp_register_bytes = 64 * 4; - tdep->print_insn_mach = bfd_mach_sparc_v9a; - break; - case bfd_mach_sparc_v9a: - set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value); - set_gdbarch_num_regs (gdbarch, 125); - set_gdbarch_deprecated_register_bytes (gdbarch, 32*8 + 32*8 + 45*8); - set_gdbarch_register_name (gdbarch, sparc64_register_name); - set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); - tdep->fp_register_bytes = 64 * 4; - tdep->print_insn_mach = bfd_mach_sparc_v9a; - break; - } - - set_gdbarch_print_insn (gdbarch, print_insn_sparc); - - /* Hook in OS ABI-specific overrides, if they have been registered. */ - gdbarch_init_osabi (info, gdbarch); + 0 * 4, /* %psr */ + 1 * 4, /* %pc */ + 2 * 4, /* %npc */ + 3 * 4, /* %y */ + -1, /* %wim */ + -1, /* %tbr */ + 4 * 4, /* %g1 */ + -1 /* %l0 */ +}; + - return gdbarch; -} +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc_tdep (void); -static void -sparc_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file) +void +_initialize_sparc_tdep (void) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); - - if (tdep == NULL) - return; - - fprintf_unfiltered (file, "sparc_dump_tdep: fp_register_bytes = %d\n", - tdep->fp_register_bytes); - fprintf_unfiltered (file, "sparc_dump_tdep: y_regnum = %d\n", - tdep->y_regnum); - fprintf_unfiltered (file, "sparc_dump_tdep: fp_max_regnum = %d\n", - tdep->fp_max_regnum); - fprintf_unfiltered (file, "sparc_dump_tdep: intreg_size = %d\n", - tdep->intreg_size); - fprintf_unfiltered (file, "sparc_dump_tdep: reg_save_offset = %d\n", - tdep->reg_save_offset); - fprintf_unfiltered (file, "sparc_dump_tdep: call_dummy_call_offset = %d\n", - tdep->call_dummy_call_offset); - fprintf_unfiltered (file, "sparc_dump_tdep: print_insn_match = %d\n", - tdep->print_insn_mach); + register_gdbarch_init (bfd_arch_sparc, sparc32_gdbarch_init); } diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 7c119b407ab..d8d05822ecb 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -1,6 +1,6 @@ -/* Target-dependent code for the SPARC for GDB, the GNU debugger. +/* Target-dependent code for SPARC. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -19,4 +19,180 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -extern int sparc_y_regnum (void); +#ifndef SPARC_TDEP_H +#define SPARC_TDEP_H 1 + +struct gdbarch; +struct regcache; +struct regset; +struct trad_frame_saved_reg; +struct frame_info; + +/* Register offsets for the general-purpose register set. */ + +struct sparc_gregset +{ + int r_psr_offset; + int r_pc_offset; + int r_npc_offset; + int r_y_offset; + int r_wim_offset; + int r_tbr_offset; + int r_g1_offset; + int r_l0_offset; + int r_y_size; +}; + +/* SPARC architecture-specific information. */ + +struct gdbarch_tdep +{ + /* Register numbers for the PN and nPC registers. The definitions + for (64-bit) UltraSPARC differ from the (32-bit) SPARC + definitions. */ + int pc_regnum; + int npc_regnum; + + /* Register sets. */ + struct regset *gregset; + size_t sizeof_gregset; + struct regset *fpregset; + size_t sizeof_fpregset; + + /* Offset of saved PC in jmp_buf. */ + int jb_pc_offset; + + /* Size of an Procedure Linkage Table (PLT) entry, 0 if we shouldn't + treat the PLT special when doing prologue analysis. */ + size_t plt_entry_size; +}; + +/* Register numbers of various important registers. */ + +enum sparc_regnum +{ + SPARC_G0_REGNUM, /* %g0 */ + SPARC_G1_REGNUM, + SPARC_G2_REGNUM, + SPARC_G3_REGNUM, + SPARC_G4_REGNUM, + SPARC_G5_REGNUM, + SPARC_G6_REGNUM, + SPARC_G7_REGNUM, /* %g7 */ + SPARC_O0_REGNUM, /* %o0 */ + SPARC_O1_REGNUM, + SPARC_O2_REGNUM, + SPARC_O3_REGNUM, + SPARC_O4_REGNUM, + SPARC_O5_REGNUM, + SPARC_SP_REGNUM, /* %sp (%o6) */ + SPARC_O7_REGNUM, /* %o7 */ + SPARC_L0_REGNUM, /* %l0 */ + SPARC_L1_REGNUM, + SPARC_L2_REGNUM, + SPARC_L3_REGNUM, + SPARC_L4_REGNUM, + SPARC_L5_REGNUM, + SPARC_L6_REGNUM, + SPARC_L7_REGNUM, /* %l7 */ + SPARC_I0_REGNUM, /* %i0 */ + SPARC_I1_REGNUM, + SPARC_I2_REGNUM, + SPARC_I3_REGNUM, + SPARC_I4_REGNUM, + SPARC_I5_REGNUM, + SPARC_FP_REGNUM, /* %fp (%i6) */ + SPARC_I7_REGNUM, /* %i7 */ + SPARC_F0_REGNUM, /* %f0 */ + SPARC_F1_REGNUM, + SPARC_F31_REGNUM /* %f31 */ + = SPARC_F0_REGNUM + 31 +}; + +enum sparc32_regnum +{ + SPARC32_Y_REGNUM /* %y */ + = SPARC_F31_REGNUM + 1, + SPARC32_PSR_REGNUM, /* %psr */ + SPARC32_WIM_REGNUM, /* %wim */ + SPARC32_TBR_REGNUM, /* %tbr */ + SPARC32_PC_REGNUM, /* %pc */ + SPARC32_NPC_REGNUM, /* %npc */ + SPARC32_FSR_REGNUM, /* %fsr */ + SPARC32_CSR_REGNUM, /* %csr */ + + /* Pseudo registers. */ + SPARC32_D0_REGNUM, /* %d0 */ + SPARC32_D30_REGNUM /* %d30 */ + = SPARC32_D0_REGNUM + 15 +}; + + +struct sparc_frame_cache +{ + /* Base address. */ + CORE_ADDR base; + CORE_ADDR pc; + + /* Do we have a frame? */ + int frameless_p; + + /* Do we have a Structure, Union or Quad-Precision return value?. */ + int struct_return_p; + + /* Table of saved registers. */ + struct trad_frame_saved_reg *saved_regs; +}; + +/* Fetch the instruction at PC. */ +extern unsigned long sparc_fetch_instruction (CORE_ADDR pc); + +extern CORE_ADDR sparc_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, + struct sparc_frame_cache *cache); + +extern struct sparc_frame_cache * + sparc_frame_cache (struct frame_info *next_frame, void **this_cache); + +extern struct sparc_frame_cache * + sparc32_frame_cache (struct frame_info *next_frame, void **this_cache); + + + +extern void sparc_software_single_step (enum target_signal sig, + int insert_breakpoints_p); + +extern void sparc_supply_rwindow (struct regcache *regcache, + CORE_ADDR sp, int regnum); +extern void sparc_collect_rwindow (const struct regcache *regcache, + CORE_ADDR sp, int regnum); + +/* Register offsets for SunOS 4. */ +extern const struct sparc_gregset sparc32_sunos4_gregset; + +extern void sparc32_supply_gregset (const struct sparc_gregset *gregset, + struct regcache *regcache, + int regnum, const void *gregs); +extern void sparc32_collect_gregset (const struct sparc_gregset *gregset, + const struct regcache *regcache, + int regnum, void *gregs); +extern void sparc32_supply_fpregset (struct regcache *regcache, + int regnum, const void *fpregs); +extern void sparc32_collect_fpregset (const struct regcache *regcache, + int regnum, void *fpregs); + +/* Functions and variables exported from sparc-sol2-tdep.c. */ + +/* Register offsets for Solaris 2. */ +extern const struct sparc_gregset sparc32_sol2_gregset; + +extern int sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name); + +extern void sparc32_sol2_init_abi (struct gdbarch_info info, + struct gdbarch *gdbarch); + +/* Functions and variables exported from sparcnbsd-tdep.c. */ + +/* Register offsets for NetBSD. */ +extern const struct sparc_gregset sparc32nbsd_gregset; + +#endif /* sparc-tdep.h */ diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c index b605a1d1862..b32a24c51b2 100644 --- a/gdb/sparc64-tdep.c +++ b/gdb/sparc64-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for UltraSPARC. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -27,6 +27,9 @@ #include "frame-unwind.h" #include "gdbcore.h" #include "gdbtypes.h" +#include "inferior.h" +#include "symtab.h" +#include "objfiles.h" #include "osabi.h" #include "regcache.h" #include "target.h" @@ -45,41 +48,6 @@ /* Please use the sparc32_-prefix for 32-bit specific code, the sparc64_-prefix for 64-bit specific code and the sparc_-prefix for code can handle both. */ - -/* The stack pointer is offset from the stack frame by a BIAS of 2047 - (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC - hosts, so undefine it first. */ -#undef BIAS -#define BIAS 2047 - -/* Macros to extract fields from SPARC instructions. */ -#define X_OP(i) (((i) >> 30) & 0x3) -#define X_A(i) (((i) >> 29) & 1) -#define X_COND(i) (((i) >> 25) & 0xf) -#define X_OP2(i) (((i) >> 22) & 0x7) -#define X_IMM22(i) ((i) & 0x3fffff) -#define X_OP3(i) (((i) >> 19) & 0x3f) -/* Sign extension macros. */ -#define X_DISP22(i) ((X_IMM22 (i) ^ 0x200000) - 0x200000) -#define X_DISP19(i) ((((i) & 0x7ffff) ^ 0x40000) - 0x40000) - -/* Fetch the instruction at PC. Instructions are always big-endian - even if the processor operates in little-endian mode. */ - -static unsigned long -sparc_fetch_instruction (CORE_ADDR pc) -{ - unsigned char buf[4]; - unsigned long insn; - int i; - - read_memory (pc, buf, sizeof (buf)); - - insn = 0; - for (i = 0; i < sizeof (buf); i++) - insn = (insn << 8) | buf[i]; - return insn; -} /* The functions on this page are intended to be used to classify function arguments. */ @@ -163,14 +131,6 @@ sparc64_structure_or_union_p (const struct type *type) return 0; } -/* UltraSPARC architecture specific information. */ - -struct gdbarch_tdep -{ - /* Offset of saved PC in jmp_buf. */ - int jb_pc_offset; -}; - /* Register information. */ struct sparc64_register_info @@ -283,8 +243,7 @@ static struct sparc64_register_info sparc64_register_info[] = }; /* Total number of registers. */ -#define SPARC64_NUM_REGS \ - (sizeof (sparc64_register_info) / sizeof (sparc64_register_info[0])) +#define SPARC64_NUM_REGS ARRAY_SIZE (sparc64_register_info) /* We provide the aliases %d0..%d62 and %q0..%q60 for the floating registers as "psuedo" registers. */ @@ -348,9 +307,7 @@ static struct sparc64_register_info sparc64_pseudo_register_info[] = }; /* Total number of pseudo registers. */ -#define SPARC64_NUM_PSEUDO_REGS \ - (sizeof (sparc64_pseudo_register_info) \ - / sizeof (sparc64_pseudo_register_info[0])) +#define SPARC64_NUM_PSEUDO_REGS ARRAY_SIZE (sparc64_pseudo_register_info) /* Return the name of register REGNUM. */ @@ -499,79 +456,8 @@ sparc64_pseudo_register_write (struct gdbarch *gdbarch, regcache_raw_write_unsigned (regcache, SPARC64_STATE_REGNUM, state); } } - -/* Use the program counter to determine the contents and size of a - breakpoint instruction. Return a pointer to a string of bytes that - encode a breakpoint instruction, store the length of the string in - *LEN and optionally adjust *PC to point to the correct memory - location for inserting the breakpoint. */ - -static const unsigned char * -sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len) -{ - static unsigned char break_insn[] = { 0x91, 0xd0, 0x20, 0x01 }; - - *len = sizeof (break_insn); - return break_insn; -} -struct sparc64_frame_cache -{ - /* Base address. */ - CORE_ADDR base; - CORE_ADDR pc; - - /* Do we have a frame? */ - int frameless_p; -}; - -/* Allocate and initialize a frame cache. */ - -static struct sparc64_frame_cache * -sparc64_alloc_frame_cache (void) -{ - struct sparc64_frame_cache *cache; - int i; - - cache = FRAME_OBSTACK_ZALLOC (struct sparc64_frame_cache); - - /* Base address. */ - cache->base = 0; - cache->pc = 0; - - /* Frameless until proven otherwise. */ - cache->frameless_p = 1; - - return cache; -} - -static CORE_ADDR -sparc64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, - struct sparc64_frame_cache *cache) -{ - unsigned long insn; - - if (current_pc <= pc) - return current_pc; - - /* Check whether the function starts with a SAVE instruction. */ - insn = sparc_fetch_instruction (pc); - if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c) - { - cache->frameless_p = 0; - return pc + 4; - } - - return pc; -} - -static CORE_ADDR -sparc64_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame) -{ - return frame_unwind_register_unsigned (next_frame, SPARC64_PC_REGNUM); -} - /* Return PC of first real instruction of the function starting at START_PC. */ @@ -580,7 +466,7 @@ sparc64_skip_prologue (CORE_ADDR start_pc) { struct symtab_and_line sal; CORE_ADDR func_start, func_end; - struct sparc64_frame_cache cache; + struct sparc_frame_cache cache; /* This is the preferred method, find the end of the prologue by using the debugging information. */ @@ -593,50 +479,22 @@ sparc64_skip_prologue (CORE_ADDR start_pc) return sal.end; } - return sparc64_analyze_prologue (start_pc, 0xffffffffffffffffUL, &cache); + return sparc_analyze_prologue (start_pc, 0xffffffffffffffffULL, &cache); } /* Normal frames. */ -static struct sparc64_frame_cache * +static struct sparc_frame_cache * sparc64_frame_cache (struct frame_info *next_frame, void **this_cache) { - struct sparc64_frame_cache *cache; - - if (*this_cache) - return *this_cache; - - cache = sparc64_alloc_frame_cache (); - *this_cache = cache; - - /* In priciple, for normal frames, %fp (%i6) holds the frame - pointer, which holds the base address for the current stack - frame. */ - - cache->base = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); - if (cache->base == 0) - return cache; - - cache->pc = frame_func_unwind (next_frame); - if (cache->pc != 0) - sparc64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache); - - if (cache->frameless_p) - { - /* We didn't find a valid frame, which means that CACHE->base - currently holds the frame pointer for our calling frame. */ - cache->base = frame_unwind_register_unsigned (next_frame, - SPARC_SP_REGNUM); - } - - return cache; + return sparc_frame_cache (next_frame, this_cache); } static void sparc64_frame_this_id (struct frame_info *next_frame, void **this_cache, struct frame_id *this_id) { - struct sparc64_frame_cache *cache = + struct sparc_frame_cache *cache = sparc64_frame_cache (next_frame, this_cache); /* This marks the outermost frame. */ @@ -652,7 +510,7 @@ sparc64_frame_prev_register (struct frame_info *next_frame, void **this_cache, enum lval_type *lvalp, CORE_ADDR *addrp, int *realnump, void *valuep) { - struct sparc64_frame_cache *cache = + struct sparc_frame_cache *cache = sparc64_frame_cache (next_frame, this_cache); if (regnum == SPARC64_PC_REGNUM || regnum == SPARC64_NPC_REGNUM) @@ -718,7 +576,7 @@ sparc64_frame_sniffer (struct frame_info *next_frame) static CORE_ADDR sparc64_frame_base_address (struct frame_info *next_frame, void **this_cache) { - struct sparc64_frame_cache *cache = + struct sparc_frame_cache *cache = sparc64_frame_cache (next_frame, this_cache); /* ??? Should we take BIAS into account here? */ @@ -732,15 +590,6 @@ static const struct frame_base sparc64_frame_base = sparc64_frame_base_address, sparc64_frame_base_address }; - -static struct frame_id -sparc_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame) -{ - CORE_ADDR sp; - - sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM); - return frame_id_build (sp, frame_pc_unwind (next_frame)); -} /* Check whether TYPE must be 16-byte aligned. */ @@ -755,8 +604,12 @@ sparc64_16_byte_align_p (struct type *type) int i; for (i = 0; i < TYPE_NFIELDS (type); i++) - if (sparc64_16_byte_align_p (TYPE_FIELD_TYPE (type, i))) - return 1; + { + struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i)); + + if (sparc64_16_byte_align_p (subtype)) + return 1; + } } return 0; @@ -808,9 +661,30 @@ sparc64_store_floating_fields (struct regcache *regcache, struct type *type, int i; for (i = 0; i < TYPE_NFIELDS (type); i++) - sparc64_store_floating_fields (regcache, TYPE_FIELD_TYPE (type, i), - valbuf, element, - bitpos + TYPE_FIELD_BITPOS (type, i)); + { + struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i)); + int subpos = bitpos + TYPE_FIELD_BITPOS (type, i); + + sparc64_store_floating_fields (regcache, subtype, valbuf, + element, subpos); + } + + /* GCC has an interesting bug. If TYPE is a structure that has + a single `float' member, GCC doesn't treat it as a structure + at all, but rather as an ordinary `float' argument. This + argument will be stored in %f1, as required by the psABI. + However, as a member of a structure the psABI requires it to + be stored in %f0. This bug is present in GCC 3.3.2, but + probably in older releases to. To appease GCC, if a + structure has only a single `float' member, we store its + value in %f1 too (we already have stored in %f0). */ + if (TYPE_NFIELDS (type) == 1) + { + struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, 0)); + + if (sparc64_floating_p (subtype) && TYPE_LENGTH (subtype) == 4) + regcache_cooked_write (regcache, SPARC_F1_REGNUM, valbuf); + } } } @@ -856,9 +730,12 @@ sparc64_extract_floating_fields (struct regcache *regcache, struct type *type, int i; for (i = 0; i < TYPE_NFIELDS (type); i++) - sparc64_extract_floating_fields (regcache, TYPE_FIELD_TYPE (type, i), - valbuf, - bitpos + TYPE_FIELD_BITPOS (type, i)); + { + struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i)); + int subpos = bitpos + TYPE_FIELD_BITPOS (type, i); + + sparc64_extract_floating_fields (regcache, subtype, valbuf, subpos); + } } } @@ -1034,10 +911,11 @@ sparc64_store_arguments (struct regcache *regcache, int nargs, undefined." Even though the psABI says that "the left half is undefined", set it to zero here. */ memset (buf, 0, 4); - valbuf = memcpy (buf + 4, valbuf, 4); + memcpy (buf + 4, valbuf, 4); + valbuf = buf; len = 8; if (element < 16) - regnum = SPARC64_D0_REGNUM; + regnum = SPARC64_D0_REGNUM + element; } } else @@ -1170,7 +1048,7 @@ sparc64_store_return_value (struct type *type, struct regcache *regcache, memset (buf, 0, sizeof (buf)); memcpy (buf, valbuf, len); for (i = 0; i < ((len + 7) / 8); i++) - regcache_cooked_write (regcache, SPARC_O0_REGNUM + i, buf + i * 4); + regcache_cooked_write (regcache, SPARC_O0_REGNUM + i, buf + i * 8); if (TYPE_CODE (type) != TYPE_CODE_UNION) sparc64_store_floating_fields (regcache, type, buf, 0, 0); } @@ -1193,158 +1071,48 @@ sparc64_store_return_value (struct type *type, struct regcache *regcache, } } +static enum return_value_convention +sparc64_return_value (struct gdbarch *gdbarch, struct type *type, + struct regcache *regcache, void *readbuf, + const void *writebuf) +{ + if (TYPE_LENGTH (type) > 32) + return RETURN_VALUE_STRUCT_CONVENTION; + + if (readbuf) + sparc64_extract_return_value (type, regcache, readbuf); + if (writebuf) + sparc64_store_return_value (type, regcache, writebuf); + + return RETURN_VALUE_REGISTER_CONVENTION; +} + /* Extract from REGCACHE, which contains the (raw) register state, the address in which a function should return its structure value, as a CORE_ADDR. */ static CORE_ADDR -sparc_extract_struct_value_address (struct regcache *regcache) +sparc64_extract_struct_value_address (struct regcache *regcache) { ULONGEST addr; regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr); return addr; } - -static int -sparc64_use_struct_convention (int gcc_p, struct type *type) -{ - /* Structure and union types up to 32 bytes in size are returned in - registers. */ - return (TYPE_LENGTH (type) > 32); -} - -/* The SPARC Architecture doesn't have hardware single-step support, - and most operating systems don't implement it either, so we provide - software single-step mechanism. */ - -static CORE_ADDR -sparc_analyze_control_transfer (CORE_ADDR pc, CORE_ADDR *npc) -{ - unsigned long insn = sparc_fetch_instruction (pc); - int conditional_p = X_COND (insn) & 0x7; - int branch_p = 0; - long offset = 0; /* Must be signed for sign-extend. */ - - if (X_OP (insn) == 0 && X_OP2 (insn) == 3 && (insn & 0x1000000) == 0) - { - /* Branch on Integer Register with Prediction (BPr). */ - branch_p = 1; - conditional_p = 1; - } - else if (X_OP (insn) == 0 && X_OP2 (insn) == 6) - { - /* Branch on Floating-Point Condition Codes (FBfcc). */ - branch_p = 1; - offset = 4 * X_DISP22 (insn); - } - else if (X_OP (insn) == 0 && X_OP2 (insn) == 5) - { - /* Branch on Floating-Point Condition Codes with Prediction - (FBPfcc). */ - branch_p = 1; - offset = 4 * X_DISP19 (insn); - } - else if (X_OP (insn) == 0 && X_OP2 (insn) == 2) - { - /* Branch on Integer Condition Codes (Bicc). */ - branch_p = 1; - offset = 4 * X_DISP22 (insn); - } - else if (X_OP (insn) == 0 && X_OP2 (insn) == 1) - { - /* Branch on Integer Condition Codes with Prediction (BPcc). */ - branch_p = 1; - offset = 4 * X_DISP19 (insn); - } - - /* FIXME: Handle DONE and RETRY instructions. */ - - /* FIXME: Handle the Trap instruction. */ - - if (branch_p) - { - if (conditional_p) - { - /* For conditional branches, return nPC + 4 iff the annul - bit is 1. */ - return (X_A (insn) ? *npc + 4 : 0); - } - else - { - /* For unconditional branches, return the target if its - specified condition is "always" and return nPC + 4 if the - condition is "never". If the annul bit is 1, set *NPC to - zero. */ - if (X_COND (insn) == 0x0) - pc = *npc, offset = 4; - if (X_A (insn)) - *npc = 0; - - gdb_assert (offset != 0); - return pc + offset; - } - } - - return 0; -} void -sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p) +sparc64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - static CORE_ADDR npc, nnpc; - static char npc_save[4], nnpc_save[4]; - - if (insert_breakpoints_p) - { - CORE_ADDR pc; - - pc = sparc_address_from_register (SPARC64_PC_REGNUM); - npc = sparc_address_from_register (SPARC64_NPC_REGNUM); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - /* Analyze the instruction at PC. */ - nnpc = sparc_analyze_control_transfer (pc, &npc); - if (npc != 0) - target_insert_breakpoint (npc, npc_save); - if (nnpc != 0) - target_insert_breakpoint (nnpc, nnpc_save); - - /* Assert that we have set at least one breakpoint. */ - gdb_assert (npc != 0 || nnpc != 0); - } - else - { - if (npc != 0) - target_remove_breakpoint (npc, npc_save); - if (nnpc != 0) - target_remove_breakpoint (nnpc, nnpc_save); - - npc = 0; - nnpc = 0; - } -} - - -static struct gdbarch * -sparc64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) -{ - struct gdbarch_tdep *tdep; - struct gdbarch *gdbarch; - - /* If there is already a candidate, use it. */ - arches = gdbarch_list_lookup_by_info (arches, &info); - if (arches != NULL) - return arches->gdbarch; - - /* Allocate space for the new architecture. */ - tdep = XMALLOC (struct gdbarch_tdep); - gdbarch = gdbarch_alloc (&info, tdep); + tdep->pc_regnum = SPARC64_PC_REGNUM; + tdep->npc_regnum = SPARC64_NPC_REGNUM; + /* This is what all the fuss is about. */ set_gdbarch_long_bit (gdbarch, 64); set_gdbarch_long_long_bit (gdbarch, 64); set_gdbarch_ptr_bit (gdbarch, 64); - set_gdbarch_long_double_bit (gdbarch, 128); set_gdbarch_num_regs (gdbarch, SPARC64_NUM_REGS); set_gdbarch_register_name (gdbarch, sparc64_register_name); @@ -1354,147 +1122,327 @@ sparc64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_pseudo_register_write (gdbarch, sparc64_pseudo_register_write); /* Register numbers of various important registers. */ - set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM); /* %sp */ set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM); /* %pc */ - set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC64_NPC_REGNUM); - set_gdbarch_fp0_regnum (gdbarch, SPARC_F0_REGNUM); /* %f0 */ /* Call dummy code. */ + set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT); + set_gdbarch_push_dummy_code (gdbarch, NULL); set_gdbarch_push_dummy_call (gdbarch, sparc64_push_dummy_call); - set_gdbarch_extract_return_value (gdbarch, sparc64_extract_return_value); - set_gdbarch_store_return_value (gdbarch, sparc64_store_return_value); + set_gdbarch_return_value (gdbarch, sparc64_return_value); set_gdbarch_extract_struct_value_address - (gdbarch, sparc_extract_struct_value_address); - set_gdbarch_use_struct_convention (gdbarch, sparc64_use_struct_convention); + (gdbarch, sparc64_extract_struct_value_address); + set_gdbarch_stabs_argument_has_addr + (gdbarch, default_stabs_argument_has_addr); set_gdbarch_skip_prologue (gdbarch, sparc64_skip_prologue); - /* Stack grows downward. */ - set_gdbarch_inner_than (gdbarch, core_addr_lessthan); - - set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc); - set_gdbarch_decr_pc_after_break (gdbarch, 0); - set_gdbarch_function_start_offset (gdbarch, 0); - - set_gdbarch_frame_args_skip (gdbarch, 8); - - set_gdbarch_print_insn (gdbarch, print_insn_sparc); - - set_gdbarch_software_single_step (gdbarch, sparc_software_single_step); - - set_gdbarch_unwind_dummy_id (gdbarch, sparc_unwind_dummy_id); - - set_gdbarch_unwind_pc (gdbarch, sparc64_unwind_pc); - + frame_unwind_append_sniffer (gdbarch, sparc64_frame_sniffer); frame_base_set_default (gdbarch, &sparc64_frame_base); +} + - /* Hook in ABI-specific overrides, if they have been registered. */ - gdbarch_init_osabi (info, gdbarch); +/* Helper functions for dealing with register sets. */ - frame_unwind_append_sniffer (gdbarch, sparc64_frame_sniffer); +#define TSTATE_CWP 0x000000000000001fULL +#define TSTATE_ICC 0x0000000f00000000ULL +#define TSTATE_XCC 0x000000f000000000ULL - return gdbarch; -} - -/* Helper functions for dealing with register windows. */ +#define PSR_S 0x00000080 +#define PSR_ICC 0x00f00000 +#define PSR_VERS 0x0f000000 +#define PSR_IMPL 0xf0000000 +#define PSR_V8PLUS 0xff000000 +#define PSR_XCC 0x000f0000 void -sparc_supply_rwindow (CORE_ADDR sp, int regnum) +sparc64_supply_gregset (const struct sparc_gregset *gregset, + struct regcache *regcache, + int regnum, const void *gregs) { - int offset = 0; - char buf[8]; + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + const char *regs = gregs; int i; - if (sp & 1) + if (sparc32) { - /* Registers are 64-bit. */ - sp += BIAS; + if (regnum == SPARC32_PSR_REGNUM || regnum == -1) + { + int offset = gregset->r_tstate_offset; + ULONGEST tstate, psr; + char buf[4]; + + tstate = extract_unsigned_integer (regs + offset, 8); + psr = ((tstate & TSTATE_CWP) | PSR_S | ((tstate & TSTATE_ICC) >> 12) + | ((tstate & TSTATE_XCC) >> 20) | PSR_V8PLUS); + store_unsigned_integer (buf, 4, psr); + regcache_raw_supply (regcache, SPARC32_PSR_REGNUM, buf); + } - for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) + if (regnum == SPARC32_PC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_PC_REGNUM, + regs + gregset->r_pc_offset + 4); + + if (regnum == SPARC32_NPC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_NPC_REGNUM, + regs + gregset->r_npc_offset + 4); + + if (regnum == SPARC32_Y_REGNUM || regnum == -1) { - if (regnum == i || regnum == -1) - { - target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8); - supply_register (i, buf); - } + int offset = gregset->r_y_offset + 8 - gregset->r_y_size; + regcache_raw_supply (regcache, SPARC32_Y_REGNUM, regs + offset); } } else { - /* Registers are 32-bit. Toss any sign-extension of the stack - pointer. */ - sp &= 0xffffffffUL; + if (regnum == SPARC64_STATE_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC64_STATE_REGNUM, + regs + gregset->r_tstate_offset); + + if (regnum == SPARC64_PC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC64_PC_REGNUM, + regs + gregset->r_pc_offset); + + if (regnum == SPARC64_NPC_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC64_NPC_REGNUM, + regs + gregset->r_npc_offset); - /* Clear out the top half of the temporary buffer, and put the - register value in the bottom half if we're in 64-bit mode. */ - if (gdbarch_ptr_bit (current_gdbarch) == 64) + if (regnum == SPARC64_Y_REGNUM || regnum == -1) { - memset (buf, 0, 4); - offset = 4; + char buf[8]; + + memset (buf, 0, 8); + memcpy (buf + 8 - gregset->r_y_size, + regs + gregset->r_y_offset, gregset->r_y_size); + regcache_raw_supply (regcache, SPARC64_Y_REGNUM, buf); } - for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) + if ((regnum == SPARC64_FPRS_REGNUM || regnum == -1) + && gregset->r_fprs_offset != -1) + regcache_raw_supply (regcache, SPARC64_FPRS_REGNUM, + regs + gregset->r_fprs_offset); + } + + if (regnum == SPARC_G0_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL); + + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) + { + int offset = gregset->r_g1_offset; + + if (sparc32) + offset += 4; + + for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++) { if (regnum == i || regnum == -1) + regcache_raw_supply (regcache, i, regs + offset); + offset += 8; + } + } + + if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1) + { + /* Not all of the register set variants include Locals and + Inputs. For those that don't, we read them off the stack. */ + if (gregset->r_l0_offset == -1) + { + ULONGEST sp; + + regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp); + sparc_supply_rwindow (regcache, sp, regnum); + } + else + { + int offset = gregset->r_l0_offset; + + if (sparc32) + offset += 4; + + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 4), - buf + offset, 4); - supply_register (i, buf); + if (regnum == i || regnum == -1) + regcache_raw_supply (regcache, i, regs + offset); + offset += 8; } } } } void -sparc_fill_rwindow (CORE_ADDR sp, int regnum) +sparc64_collect_gregset (const struct sparc_gregset *gregset, + const struct regcache *regcache, + int regnum, void *gregs) { - int offset = 0; - char buf[8]; + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + char *regs = gregs; int i; - if (sp & 1) + if (sparc32) { - /* Registers are 64-bit. */ - sp += BIAS; + if (regnum == SPARC32_PSR_REGNUM || regnum == -1) + { + int offset = gregset->r_tstate_offset; + ULONGEST tstate, psr; + char buf[8]; + + tstate = extract_unsigned_integer (regs + offset, 8); + regcache_raw_collect (regcache, SPARC32_PSR_REGNUM, buf); + psr = extract_unsigned_integer (buf, 4); + tstate |= (psr & PSR_ICC) << 12; + if ((psr & (PSR_VERS | PSR_IMPL)) == PSR_V8PLUS) + tstate |= (psr & PSR_XCC) << 20; + store_unsigned_integer (buf, 8, tstate); + memcpy (regs + offset, buf, 8); + } - for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) + if (regnum == SPARC32_PC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_PC_REGNUM, + regs + gregset->r_pc_offset + 4); + + if (regnum == SPARC32_NPC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_NPC_REGNUM, + regs + gregset->r_npc_offset + 4); + + if (regnum == SPARC32_Y_REGNUM || regnum == -1) { - if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i) - { - regcache_collect (i, buf); - target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8); - } + int offset = gregset->r_y_offset + 8 - gregset->r_y_size; + regcache_raw_collect (regcache, SPARC32_Y_REGNUM, regs + offset); } } else { - /* Registers are 32-bit. Toss any sign-extension of the stack - pointer. */ - sp &= 0xffffffffUL; + if (regnum == SPARC64_STATE_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC64_STATE_REGNUM, + regs + gregset->r_tstate_offset); - /* Only use the bottom half if we're in 64-bit mode. */ - if (gdbarch_ptr_bit (current_gdbarch) == 64) - offset = 4; + if (regnum == SPARC64_PC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC64_PC_REGNUM, + regs + gregset->r_pc_offset); - for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) + if (regnum == SPARC64_NPC_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC64_NPC_REGNUM, + regs + gregset->r_npc_offset); + + if (regnum == SPARC64_Y_REGNUM || regnum == -1) { - if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i) + char buf[8]; + + regcache_raw_collect (regcache, SPARC64_Y_REGNUM, buf); + memcpy (regs + gregset->r_y_offset, + buf + 8 - gregset->r_y_size, gregset->r_y_size); + } + + if ((regnum == SPARC64_FPRS_REGNUM || regnum == -1) + && gregset->r_fprs_offset != -1) + regcache_raw_collect (regcache, SPARC64_FPRS_REGNUM, + regs + gregset->r_fprs_offset); + + } + + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) + { + int offset = gregset->r_g1_offset; + + if (sparc32) + offset += 4; + + /* %g0 is always zero. */ + for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++) + { + if (regnum == i || regnum == -1) + regcache_raw_collect (regcache, i, regs + offset); + offset += 8; + } + } + + if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1) + { + /* Not all of the register set variants include Locals and + Inputs. For those that don't, we read them off the stack. */ + if (gregset->r_l0_offset != -1) + { + int offset = gregset->r_l0_offset; + + if (sparc32) + offset += 4; + + for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++) { - regcache_collect (i, buf); - target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 4), - buf + offset, 4); + if (regnum == i || regnum == -1) + regcache_raw_collect (regcache, i, regs + offset); + offset += 8; } } } } - -/* Provide a prototype to silence -Wmissing-prototypes. */ -void _initialize_sparc64_tdep (void); +void +sparc64_supply_fpregset (struct regcache *regcache, + int regnum, const void *fpregs) +{ + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + const char *regs = fpregs; + int i; + + for (i = 0; i < 32; i++) + { + if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) + regcache_raw_supply (regcache, SPARC_F0_REGNUM + i, regs + (i * 4)); + } + + if (sparc32) + { + if (regnum == SPARC32_FSR_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC32_FSR_REGNUM, + regs + (32 * 4) + (16 * 8) + 4); + } + else + { + for (i = 0; i < 16; i++) + { + if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1) + regcache_raw_supply (regcache, SPARC64_F32_REGNUM + i, + regs + (32 * 4) + (i * 8)); + } + + if (regnum == SPARC64_FSR_REGNUM || regnum == -1) + regcache_raw_supply (regcache, SPARC64_FSR_REGNUM, + regs + (32 * 4) + (16 * 8)); + } +} void -_initialize_sparc64_tdep (void) +sparc64_collect_fpregset (const struct regcache *regcache, + int regnum, void *fpregs) { - register_gdbarch_init (bfd_arch_sparc, sparc64_gdbarch_init); + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + char *regs = fpregs; + int i; + + for (i = 0; i < 32; i++) + { + if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) + regcache_raw_collect (regcache, SPARC_F0_REGNUM + i, regs + (i * 4)); + } + + if (sparc32) + { + if (regnum == SPARC32_FSR_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC32_FSR_REGNUM, + regs + (32 * 4) + (16 * 8) + 4); + } + else + { + for (i = 0; i < 16; i++) + { + if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1) + regcache_raw_collect (regcache, SPARC64_F32_REGNUM + i, + regs + (32 * 4) + (i * 8)); + } + + if (regnum == SPARC64_FSR_REGNUM || regnum == -1) + regcache_raw_collect (regcache, SPARC64_FSR_REGNUM, + regs + (32 * 4) + (16 * 8)); + } } diff --git a/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h index e7b910d55fe..f5ab60d87e5 100644 --- a/gdb/sparc64-tdep.h +++ b/gdb/sparc64-tdep.h @@ -1,6 +1,6 @@ /* Target-dependent code for UltraSPARC. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -20,84 +20,98 @@ Boston, MA 02111-1307, USA. */ #ifndef SPARC64_TDEP_H -#define SPARC62_TDEP_H 1 +#define SPARC64_TDEP_H 1 -/* Register numbers of various important registers. */ +struct gdbarch; +struct sparc_gregset; +struct regcache; -enum sparc_regnum -{ - SPARC_G0_REGNUM, /* %g0 */ - SPARC_G1_REGNUM, - SPARC_G2_REGNUM, - SPARC_G3_REGNUM, - SPARC_G4_REGNUM, - SPARC_G5_REGNUM, - SPARC_G6_REGNUM, - SPARC_G7_REGNUM, /* %g7 */ - SPARC_O0_REGNUM, /* %o0 */ - SPARC_O1_REGNUM, - SPARC_O2_REGNUM, - SPARC_O3_REGNUM, - SPARC_O4_REGNUM, - SPARC_O5_REGNUM, - SPARC_SP_REGNUM, /* %sp (%o6) */ - SPARC_O7_REGNUM, /* %o7 */ - SPARC_L0_REGNUM, /* %l0 */ - SPARC_L1_REGNUM, - SPARC_L2_REGNUM, - SPARC_L3_REGNUM, - SPARC_L4_REGNUM, - SPARC_L5_REGNUM, - SPARC_L6_REGNUM, - SPARC_L7_REGNUM, /* %l7 */ - SPARC_I0_REGNUM, /* %i0 */ - SPARC_I1_REGNUM, - SPARC_I2_REGNUM, - SPARC_I3_REGNUM, - SPARC_I4_REGNUM, - SPARC_I5_REGNUM, - SPARC_FP_REGNUM, /* %fp (%i6) */ - SPARC_I7_REGNUM, /* %i7 */ - SPARC_F0_REGNUM, /* %f0 */ - SPARC_F31_REGNUM = SPARC_F0_REGNUM + 31 /* %f31 */ -}; +#include "sparc-tdep.h" + +/* The stack pointer is offset from the stack frame by a BIAS of 2047 + (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC + hosts, so undefine it first. */ +#undef BIAS +#define BIAS 2047 + +/* Register offsets for the general-purpose register set. */ + +/* UltraSPARC doesn't have %psr. */ +#define r_tstate_offset r_psr_offset + +/* UltraSPARC doesn't have %wim either. */ +#define r_fprs_offset r_wim_offset + +/* Register numbers of various important registers. */ enum sparc64_regnum { - SPARC64_F32_REGNUM = SPARC_F0_REGNUM + 32, /* %f32 */ - SPARC64_F62_REGNUM = SPARC64_F32_REGNUM + 15, /* %f62 */ + SPARC64_F32_REGNUM /* %f32 */ + = SPARC_F0_REGNUM + 32, + SPARC64_F62_REGNUM /* %f62 */ + = SPARC64_F32_REGNUM + 15, SPARC64_PC_REGNUM, /* %pc */ SPARC64_NPC_REGNUM, /* %npc */ SPARC64_STATE_REGNUM, SPARC64_FSR_REGNUM, /* %fsr */ SPARC64_FPRS_REGNUM, /* %fprs */ SPARC64_Y_REGNUM, /* %y */ - + /* Pseudo registers. */ SPARC64_CWP_REGNUM, /* %cwp */ SPARC64_PSTATE_REGNUM, /* %pstate */ SPARC64_ASI_REGNUM, /* %asi */ SPARC64_CCR_REGNUM, /* %ccr */ SPARC64_D0_REGNUM, /* %d0 */ - SPARC64_D10_REGNUM = SPARC64_D0_REGNUM + 5, /* %d10 */ - SPARC64_D30_REGNUM = SPARC64_D0_REGNUM + 15, /* %d30 */ - SPARC64_D32_REGNUM = SPARC64_D0_REGNUM + 16, /* %d32 */ - SPARC64_D62_REGNUM = SPARC64_D0_REGNUM + 31, /* %d62 */ + SPARC64_D10_REGNUM /* %d10 */ + = SPARC64_D0_REGNUM + 5, + SPARC64_D30_REGNUM /* %d30 */ + = SPARC64_D0_REGNUM + 15, + SPARC64_D32_REGNUM /* %d32 */ + = SPARC64_D0_REGNUM + 16, + SPARC64_D62_REGNUM /* %d62 */ + = SPARC64_D0_REGNUM + 31, SPARC64_Q0_REGNUM, /* %q0 */ - SPARC64_Q8_REGNUM = SPARC64_Q0_REGNUM + 2, /* %q8 */ - SPARC64_Q28_REGNUM = SPARC64_Q0_REGNUM + 7, /* %q28 */ - SPARC64_Q32_REGNUM = SPARC64_Q0_REGNUM + 8, /* %q32 */ - SPARC64_Q60_REGNUM = SPARC64_Q0_REGNUM + 15 /* %q60 */ + SPARC64_Q8_REGNUM /* %q8 */ + = SPARC64_Q0_REGNUM + 2, + SPARC64_Q28_REGNUM /* %q28 */ + = SPARC64_Q0_REGNUM + 7, + SPARC64_Q32_REGNUM /* %q32 */ + = SPARC64_Q0_REGNUM + 8, + SPARC64_Q60_REGNUM /* %q60 */ + = SPARC64_Q0_REGNUM + 15 }; -extern void sparc_supply_rwindow (CORE_ADDR sp, int regnum); -extern void sparc_fill_rwindow (CORE_ADDR sp, int regnum); +extern void sparc64_init_abi (struct gdbarch_info info, + struct gdbarch *gdbarch); + +extern void sparc64_supply_gregset (const struct sparc_gregset *gregset, + struct regcache *regcache, + int regnum, const void *gregs); +extern void sparc64_collect_gregset (const struct sparc_gregset *gregset, + const struct regcache *regcache, + int regnum, void *gregs); +extern void sparc64_supply_fpregset (struct regcache *regcache, + int regnum, const void *fpregs); +extern void sparc64_collect_fpregset (const struct regcache *regcache, + int regnum, void *fpregs); + +/* Functions and variables exported from sparc64-sol2-tdep.c. */ + +/* Register offsets for Solaris 2. */ +extern const struct sparc_gregset sparc64_sol2_gregset; + +extern void sparc64_sol2_init_abi (struct gdbarch_info info, + struct gdbarch *gdbarch); + +/* Variables exported from sparc64fbsd-tdep.c. */ + +/* Register offsets for FreeBSD/sparc64. */ +extern const struct sparc_gregset sparc64fbsd_gregset; -/* Functions exported from sparc64fbsd-tdep.c. */ +/* Variables exported from sparc64nbsd-tdep.c. */ -extern void sparc64fbsd_supply_reg (const char *regs, int regnum); -extern void sparc64fbsd_fill_reg (char *regs, int regnum); -extern void sparc64fbsd_supply_fpreg (const char *regs, int regnum); -extern void sparc64fbsd_fill_fpreg (char *regs, int regnum); +/* Register offsets for NetBSD/sparc64. */ +extern const struct sparc_gregset sparc64nbsd_gregset; #endif /* sparc64-tdep.h */ diff --git a/gdb/sparc64fbsd-nat.c b/gdb/sparc64fbsd-nat.c index 26c58d8d13b..09bf12a4c00 100644 --- a/gdb/sparc64fbsd-nat.c +++ b/gdb/sparc64fbsd-nat.c @@ -22,47 +22,7 @@ #include "defs.h" #include "sparc64-tdep.h" -#include "sparcbsd-nat.h" - -/* Determine whether `struct reg' contains register REGNUM. */ - -static int -sparc64fbsd_reg_supplies_p (int regnum) -{ - /* Integer registers. */ - if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM) - || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) - || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM) - || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM)) - return 1; - - /* Control registers. */ - if (regnum == SPARC64_PC_REGNUM - || regnum == SPARC64_NPC_REGNUM - || regnum == SPARC64_STATE_REGNUM - || regnum == SPARC64_FPRS_REGNUM - || regnum == SPARC64_Y_REGNUM) - return 1; - - return 0; -} - -/* Determine whether `struct fpreg' contains register REGNUM. */ - -static int -sparc64fbsd_fpreg_supplies_p (int regnum) -{ - /* Floating-point registers. */ - if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) - || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM)) - return 1; - - /* Control registers. */ - if (regnum == SPARC64_FSR_REGNUM) - return 1; - - return 0; -} +#include "sparc-nat.h" /* Provide a prototype to silence -Wmissing-prototypes. */ void _initialize_sparc64fbsd_nat (void); @@ -70,11 +30,5 @@ void _initialize_sparc64fbsd_nat (void); void _initialize_sparc64fbsd_nat (void) { - sparcbsd_supply_reg = sparc64fbsd_supply_reg; - sparcbsd_fill_reg = sparc64fbsd_fill_reg; - sparcbsd_supply_fpreg = sparc64fbsd_supply_fpreg; - sparcbsd_fill_fpreg = sparc64fbsd_fill_fpreg; - - sparcbsd_reg_supplies_p = sparc64fbsd_reg_supplies_p; - sparcbsd_fpreg_supplies_p = sparc64fbsd_fpreg_supplies_p; + sparc_gregset = &sparc64fbsd_gregset; } diff --git a/gdb/sparc64fbsd-tdep.c b/gdb/sparc64fbsd-tdep.c index 2b910c1b33d..3c1335df431 100644 --- a/gdb/sparc64fbsd-tdep.c +++ b/gdb/sparc64fbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for FreeBSD/sparc64. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -20,208 +20,198 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" +#include "frame.h" +#include "frame-unwind.h" #include "gdbcore.h" #include "osabi.h" #include "regcache.h" +#include "regset.h" #include "target.h" +#include "trad-frame.h" +#include "gdb_assert.h" #include "gdb_string.h" #include "sparc64-tdep.h" /* From . */ - -/* Offset of registers in `struct reg'. */ -int sparc64fbsd_r_global_offset = (0 * 8); -int sparc64fbsd_r_out_offset = (8 * 8); -int sparc64fbsd_r_fprs_offset = (16 * 8); -int sparc64fbsd_r_tnpc_offset = (24 * 8); -int sparc64fbsd_r_tpc_offset = (25 * 8); -int sparc64fbsd_r_tstate_offset = (26 * 8); -int sparc64fbsd_r_y_offset = (28 * 8); - -/* Size of `struct reg' and `struct fpreg'. */ -int sparc64fbsd_sizeof_struct_reg = 256; -int sparc64fbsd_sizeof_struct_fpreg = 272; - -void -sparc64fbsd_supply_reg (const char *regs, int regnum) +const struct sparc_gregset sparc64fbsd_gregset = { - char buf[8]; - int i; - - if (regnum == SPARC64_PC_REGNUM || regnum == -1) - supply_register (SPARC64_PC_REGNUM, regs + sparc64fbsd_r_tpc_offset); - - if (regnum == SPARC64_NPC_REGNUM || regnum == -1) - supply_register (SPARC64_NPC_REGNUM, regs + sparc64fbsd_r_tnpc_offset); - - if (regnum == SPARC64_STATE_REGNUM || regnum == -1) - supply_register (SPARC64_STATE_REGNUM, regs + sparc64fbsd_r_tstate_offset); - - if (regnum == SPARC64_FPRS_REGNUM || regnum == -1) - supply_register (SPARC64_FPRS_REGNUM, regs + sparc64fbsd_r_fprs_offset); - - if (regnum == SPARC64_Y_REGNUM || regnum == -1) - supply_register (SPARC64_Y_REGNUM, regs + sparc64fbsd_r_y_offset); - - if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM) || regnum == -1) - { - if (regnum == SPARC_G0_REGNUM || regnum == -1) - supply_register (SPARC_G0_REGNUM, NULL); /* %g0 is always zero. */ - for (i = SPARC_G1_REGNUM; i <= SPARC_G7_REGNUM; i++) - { - if (regnum == i || regnum == -1) - supply_register (i, (regs + sparc64fbsd_r_global_offset - + ((i - SPARC_G0_REGNUM) * 8))); - } - } - - if ((regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) - { - for (i = SPARC_O0_REGNUM; i <= SPARC_O7_REGNUM; i++) - { - if (regnum == i || regnum == -1) - supply_register (i, (regs + sparc64fbsd_r_out_offset - + ((i - SPARC_O0_REGNUM) * 8))); - } - } - - /* Inputs and Locals are stored onto the stack by by the kernel. */ - if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1) - { - ULONGEST sp; + 26 * 8, /* "tstate" */ + 25 * 8, /* %pc */ + 24 * 8, /* %npc */ + 28 * 8, /* %y */ + 16 * 8, /* %fprs */ + -1, + 1 * 8, /* %g1 */ + -1, /* %l0 */ + 8 /* sizeof (%y) */ +}; + - regcache_cooked_read_unsigned (current_regcache, SPARC_SP_REGNUM, &sp); - sparc_supply_rwindow (sp, regnum); - } +static void +sparc64fbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *gregs, size_t len) +{ + sparc64_supply_gregset (regset->descr, regcache, regnum, gregs); } -void -sparc64fbsd_fill_reg (char *regs, int regnum) +static void +sparc64fbsd_supply_fpregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *fpregs, size_t len) { - char buf[8]; - int i; - - if (regnum == SPARC64_PC_REGNUM || regnum == -1) - regcache_collect (SPARC64_PC_REGNUM, regs + sparc64fbsd_r_tpc_offset); - - if (regnum == SPARC64_NPC_REGNUM || regnum == -1) - regcache_collect (SPARC64_NPC_REGNUM, regs + sparc64fbsd_r_tnpc_offset); - - if (regnum == SPARC64_FPRS_REGNUM || regnum == -1) - regcache_collect (SPARC64_FPRS_REGNUM, regs + sparc64fbsd_r_fprs_offset); - - if (regnum == SPARC64_Y_REGNUM || regnum == -1) - regcache_collect (SPARC64_Y_REGNUM, regs + sparc64fbsd_r_y_offset); - - if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM) || regnum == -1) - { - /* %g0 is always zero. */ - for (i = SPARC_G1_REGNUM; i <= SPARC_G7_REGNUM; i++) - { - if (regnum == i || regnum == -1) - regcache_collect (i, (regs + sparc64fbsd_r_global_offset - + ((i - SPARC_G0_REGNUM) * 8))); - } - } + sparc64_supply_fpregset (regcache, regnum, fpregs); +} + - if ((regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1) - { - for (i = SPARC_O0_REGNUM; i <= SPARC_O7_REGNUM; i++) - { - if (regnum == i || regnum == -1) - regcache_collect (i, (regs + sparc64fbsd_r_out_offset - + ((i - SPARC_O0_REGNUM) * 8))); - } - } +/* Signal trampolines. */ - /* Responsibility for the stack regs is pushed off onto the caller. */ +static int +sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + return (name && strcmp (name, "__sigtramp") == 0); } -void -sparc64fbsd_supply_fpreg (const char *fpregs, int regnum) +static struct sparc_frame_cache * +sparc64fbsd_sigtramp_frame_cache (struct frame_info *next_frame, + void **this_cache) { - int i; - - for (i = 0; i < 32; i++) + struct sparc_frame_cache *cache; + CORE_ADDR addr, mcontext_addr, sp; + LONGEST fprs; + int regnum; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); + + /* The third argument is a pointer to an instance of `ucontext_t', + which has a member `uc_mcontext' that contains the saved + registers. */ + addr = frame_unwind_register_unsigned (next_frame, SPARC_O2_REGNUM); + mcontext_addr = addr + 64; + + /* The following registers travel in the `mc_local' slots of + `mcontext_t'. */ + addr = mcontext_addr + 16 * 8; + cache->saved_regs[SPARC64_FPRS_REGNUM].addr = addr + 0 * 8; + cache->saved_regs[SPARC64_FSR_REGNUM].addr = addr + 1 * 8; + + /* The following registers travel in the `mc_in' slots of + `mcontext_t'. */ + addr = mcontext_addr + 24 * 8; + cache->saved_regs[SPARC64_NPC_REGNUM].addr = addr + 0 * 8; + cache->saved_regs[SPARC64_PC_REGNUM].addr = addr + 1 * 8; + cache->saved_regs[SPARC64_STATE_REGNUM].addr = addr + 2 * 8; + cache->saved_regs[SPARC64_Y_REGNUM].addr = addr + 4 * 8; + + /* The `global' and `out' registers travel in the `mc_global' and + `mc_out' slots of `mcontext_t', except for %g0. Since %g0 is + always zero, keep the identity encoding. */ + for (regnum = SPARC_G1_REGNUM, addr = mcontext_addr + 8; + regnum <= SPARC_O7_REGNUM; regnum++, addr += 8) + cache->saved_regs[regnum].addr = addr; + + /* The `local' and `in' registers have been saved in the register + save area. */ + addr = cache->saved_regs[SPARC_SP_REGNUM].addr; + sp = get_frame_memory_unsigned (next_frame, addr, 8); + for (regnum = SPARC_L0_REGNUM, addr = sp + BIAS; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 8) + cache->saved_regs[regnum].addr = addr; + + /* The floating-point registers are only saved if the FEF bit in + %fprs has been set. */ + +#define FPRS_FEF (1 << 2) + + addr = cache->saved_regs[SPARC64_FPRS_REGNUM].addr; + fprs = get_frame_memory_unsigned (next_frame, addr, 8); + if (fprs & FPRS_FEF) { - if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) - supply_register (SPARC_F0_REGNUM + i, fpregs + (i * 4)); - } + for (regnum = SPARC_F0_REGNUM, addr = mcontext_addr + 32 * 8; + regnum <= SPARC_F31_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; - for (i = 0; i < 16; i++) - { - if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1) - supply_register (SPARC64_F32_REGNUM + i, fpregs + (32 * 4) + (i * 8)); + for (regnum = SPARC64_F32_REGNUM; + regnum <= SPARC64_F62_REGNUM; regnum++, addr += 8) + cache->saved_regs[regnum].addr = addr; } - if (regnum == SPARC64_FSR_REGNUM || regnum == -1) - supply_register (SPARC64_FSR_REGNUM, fpregs + (32 * 4) + (16 * 8)); + return cache; } -void -sparc64fbsd_fill_fpreg (char *fpregs, int regnum) +static void +sparc64fbsd_sigtramp_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) { - int i; - - for (i = 0; i < 32; i++) - { - if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1) - regcache_collect (SPARC_F0_REGNUM + i, fpregs + (i * 4)); - } + struct sparc_frame_cache *cache = + sparc64fbsd_sigtramp_frame_cache (next_frame, this_cache); - for (i = 0; i < 16; i++) - { - if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1) - regcache_collect (SPARC64_F32_REGNUM + i, fpregs + (32 * 4) + (i * 8)); - } - - if (regnum == SPARC64_FSR_REGNUM || regnum == -1) - regcache_collect (SPARC64_FSR_REGNUM, fpregs + (32 * 4) + (16 * 8)); + (*this_id) = frame_id_build (cache->base, cache->pc); } - static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +sparc64fbsd_sigtramp_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) { - switch (which) - { - case 0: /* Integer registers */ - if (core_reg_size != sparc64fbsd_sizeof_struct_reg) - warning ("Wrong size register set in core file."); - else - sparc64fbsd_supply_reg (core_reg_sect, -1); - break; - - case 2: /* Floating pointer registers */ - if (core_reg_size != sparc64fbsd_sizeof_struct_fpreg) - warning ("Wrong size FP register set in core file."); - else - sparc64fbsd_supply_fpreg (core_reg_sect, -1); - break; - - default: - /* Don't know what kind of register request this is; just ignore it. */ - break; - } + struct sparc_frame_cache *cache = + sparc64fbsd_sigtramp_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); } -static struct core_fns sparc64fbsd_core_fns = +static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind = { - bfd_target_elf_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL + SIGTRAMP_FRAME, + sparc64fbsd_sigtramp_frame_this_id, + sparc64fbsd_sigtramp_frame_prev_register }; + +static const struct frame_unwind * +sparc64fbsd_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc64fbsd_pc_in_sigtramp (pc, name)) + return &sparc64fbsd_sigtramp_frame_unwind; + + return NULL; +} static void sparc64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - /* Nothing yet. */ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + tdep->gregset = XMALLOC (struct regset); + tdep->gregset->descr = &sparc64fbsd_gregset; + tdep->gregset->supply_regset = sparc64fbsd_supply_gregset; + tdep->sizeof_gregset = 256; + + tdep->fpregset = XMALLOC (struct regset); + tdep->fpregset->supply_regset = sparc64fbsd_supply_fpregset; + tdep->sizeof_fpregset = 272; + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc64fbsd_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc64fbsd_sigtramp_frame_sniffer); + + sparc64_init_abi (info, gdbarch); } /* Provide a prototype to silence -Wmissing-prototypes. */ @@ -232,6 +222,4 @@ _initialize_sparc64fbsd_tdep (void) { gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9, GDB_OSABI_FREEBSD_ELF, sparc64fbsd_init_abi); - - add_core_fns (&sparc64fbsd_core_fns); } diff --git a/gdb/sparc64nbsd-nat.c b/gdb/sparc64nbsd-nat.c index c68b96b6a73..91577039eb3 100644 --- a/gdb/sparc64nbsd-nat.c +++ b/gdb/sparc64nbsd-nat.c @@ -1,6 +1,6 @@ -/* Native-dependent code for UltraSPARC systems running NetBSD. - Copyright 2002, 2003 Free Software Foundation, Inc. - Contributed by Wasabi Systems, Inc. +/* Native-dependent code for NetBSD/sparc64. + + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -20,189 +20,120 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" -#include "inferior.h" -#include "regcache.h" -#include "sparc-tdep.h" -#include "sparcnbsd-tdep.h" +#include "sparc64-tdep.h" +#include "sparc-nat.h" -#include -#include -#include +/* NetBSD is different from the other OSes that support both SPARC and + UltraSPARC in that the result of ptrace(2) depends on whether the + traced process is 32-bit or 64-bit. */ -/* NOTE: We don't bother with any of the deferred_store nonsense; it - makes things a lot more complicated than they need to be. */ +static void +sparc64nbsd_supply_gregset (const struct sparc_gregset *gregset, + struct regcache *regcache, + int regnum, const void *gregs) +{ + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); -/* Determine if PT_GETREGS fetches this register. */ -static int -getregs_supplies (int regno) + if (sparc32) + sparc32_supply_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs); + else + sparc64_supply_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs); +} + +static void +sparc64nbsd_collect_gregset (const struct sparc_gregset *gregset, + const struct regcache *regcache, + int regnum, void *gregs) +{ + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + + if (sparc32) + sparc32_collect_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs); + else + sparc64_collect_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs); +} + +static void +sparc64nbsd_supply_fpregset (struct regcache *regcache, + int regnum, const void *fpregs) +{ + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + + if (sparc32) + sparc32_supply_fpregset (regcache, regnum, fpregs); + else + sparc64_supply_fpregset (regcache, regnum, fpregs); +} + +static void +sparc64nbsd_collect_fpregset (const struct regcache *regcache, + int regnum, void *fpregs) { - /* FIXME: PS_REGNUM for 32-bit code. */ - return (regno == TSTATE_REGNUM - || regno == PC_REGNUM - || regno == DEPRECATED_NPC_REGNUM - || regno == Y_REGNUM - || (regno >= G0_REGNUM && regno <= G7_REGNUM) - || (regno >= O0_REGNUM && regno <= O7_REGNUM) - /* stack regs (handled by sparcnbsd_supply_reg) */ - || (regno >= L0_REGNUM && regno <= I7_REGNUM)); + int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32); + + if (sparc32) + sparc32_collect_fpregset (regcache, regnum, fpregs); + else + sparc64_collect_fpregset (regcache, regnum, fpregs); } -/* Determine if PT_GETFPREGS fetches this register. */ +/* Determine whether `gregset_t' contains register REGNUM. */ + static int -getfpregs_supplies (int regno) +sparc64nbsd_gregset_supplies_p (int regnum) { - return ((regno >= FP0_REGNUM && regno <= (FP0_REGNUM + 47)) - || regno == FPS_REGNUM); + if (gdbarch_ptr_bit (current_gdbarch) == 32) + return sparc32_gregset_supplies_p (regnum); + + /* Integer registers. */ + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM) + || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) + || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM) + || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM)) + return 1; + + /* Control registers. */ + if (regnum == SPARC64_PC_REGNUM + || regnum == SPARC64_NPC_REGNUM + || regnum == SPARC64_STATE_REGNUM + || regnum == SPARC64_Y_REGNUM) + return 1; + + return 0; } -void -fetch_inferior_registers (int regno) +/* Determine whether `fpregset_t' contains register REGNUM. */ + +static int +sparc64nbsd_fpregset_supplies_p (int regnum) { - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "fetch_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - union { - struct reg32 regs32; - struct reg64 regs64; - } regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_supply_reg32 ((char *) ®s.regs32, regno); - else - sparcnbsd_supply_reg64 ((char *) ®s.regs64, regno); - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - union { - struct fpreg32 fpregs32; - struct fpreg64 fpregs64; - } fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_supply_fpreg32 ((char *) &fpregs.fpregs32, regno); - else - sparcnbsd_supply_fpreg64 ((char *) &fpregs.fpregs64, regno); - if (regno != -1) - return; - } + if (gdbarch_ptr_bit (current_gdbarch) == 32) + return sparc32_fpregset_supplies_p (regnum); + + /* Floating-point registers. */ + if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) + || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM)) + return 1; + + /* Control registers. */ + if (regnum == SPARC64_FSR_REGNUM) + return 1; + + return 0; } + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparcnbsd_nat (void); + void -store_inferior_registers (int regno) +_initialize_sparcnbsd_nat (void) { - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "store_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - union { - struct reg32 regs32; - struct reg64 regs64; - } regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_fill_reg32 ((char *) ®s.regs32, regno); - else - sparcnbsd_fill_reg64 ((char *) ®s.regs64, regno); - - if (ptrace (PT_SETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't write registers"); - - /* Deal with the stack regs. */ - if (regno == -1 || regno == SP_REGNUM - || (regno >= L0_REGNUM && regno <= I7_REGNUM)) - { - CORE_ADDR sp = read_register (SP_REGNUM); - int i; - char buf[8]; - - if (sp & 1) - { - /* Registers are 64-bit. */ - sp += 2047; - - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == -1 || regno == SP_REGNUM || regno == i) - { - regcache_collect (i, buf); - target_write_memory (sp + ((i - L0_REGNUM) * 8), - buf, sizeof (buf)); - } - } - } - else - { - /* Registers are 32-bit. Toss any sign-extension of the stack - pointer. - - FIXME: We don't currently handle 32-bit code in a binary - that indicated LP64. Do we have to care about that? */ - if (gdbarch_ptr_bit (current_gdbarch) != 32) - internal_error - (__FILE__, __LINE__, - "store_inferior_registers: 32-bit code in 64-bit inferior"); - - sp &= 0xffffffffUL; - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == -1 || regno == SP_REGNUM || regno == i) - { - regcache_collect (i, buf); - target_write_memory (sp + ((i - L0_REGNUM) * 4), buf, 4); - } - } - } - } - - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - union { - struct fpreg32 fpregs32; - struct fpreg64 fpregs64; - } fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_fill_fpreg32 ((char *) &fpregs.fpregs32, regno); - else - sparcnbsd_fill_fpreg64 ((char *) &fpregs.fpregs64, regno); - - if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't write floating point registers"); - - if (regno != -1) - return; - } + sparc_supply_gregset = sparc64nbsd_supply_gregset; + sparc_collect_gregset = sparc64nbsd_collect_gregset; + sparc_supply_fpregset = sparc64nbsd_supply_fpregset; + sparc_collect_fpregset = sparc64nbsd_collect_fpregset; + sparc_gregset_supplies_p = sparc64nbsd_gregset_supplies_p; + sparc_fpregset_supplies_p = sparc64nbsd_fpregset_supplies_p; } diff --git a/gdb/sparcbsd-nat.c b/gdb/sparcbsd-nat.c deleted file mode 100644 index 8ab95375d08..00000000000 --- a/gdb/sparcbsd-nat.c +++ /dev/null @@ -1,126 +0,0 @@ -/* Native-dependent code for SPARC BSD's. - - Copyright 2002, 2003 Free Software Foundation, Inc. - Based on code contributed by Wasabi Systems, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "inferior.h" -#include "regcache.h" - -/* FIXME: Should be changed to sparc-tdep.h when the old code is gone. */ -#include "sparc64-tdep.h" -#include "sparcbsd-nat.h" - -#include -#include -#include - -/* Functions translating between `struct reg' and `struct fpreg' and - GDB's register cache. */ -void (*sparcbsd_supply_reg)(const char *, int); -void (*sparcbsd_fill_reg)(char *, int); -void (*sparcbsd_supply_fpreg)(const char *, int); -void (*sparcbsd_fill_fpreg)(char *, int); - -/* Functions indication whether `struct reg' or `struct fpreg' provides - a certain register. */ -int (*sparcbsd_reg_supplies_p)(int); -int (*sparcbsd_fpreg_supplies_p)(int); - -void -fetch_inferior_registers (int regnum) -{ - if (regnum == -1 || sparcbsd_reg_supplies_p (regnum)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcbsd_supply_reg ((char *) ®s, regnum); - if (regnum != -1) - return; - } - - if (regnum == -1 || sparcbsd_fpreg_supplies_p (regnum)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating-point registers"); - - sparcbsd_supply_fpreg ((char *) &fpregs, regnum); - if (regnum != -1) - return; - } -} - -void -store_inferior_registers (int regnum) -{ - if (regnum == -1 || sparcbsd_reg_supplies_p (regnum)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcbsd_fill_reg ((char *) ®s, regnum); - - if (ptrace (PT_SETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't write registers"); - - /* Deal with the stack regs. */ - if (regnum == -1 || regnum == SPARC_SP_REGNUM - || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM)) - { - ULONGEST sp; - - regcache_cooked_read_unsigned (current_regcache, - SPARC_SP_REGNUM, &sp); - sparc_fill_rwindow (sp, regnum); - } - - if (regnum != -1) - return; - } - - if (regnum == -1 || sparcbsd_fpreg_supplies_p (regnum)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating-point registers"); - - sparcbsd_fill_fpreg ((char *) &fpregs, regnum); - - if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't write floating-point registers"); - - if (regnum != -1) - return; - } -} diff --git a/gdb/sparcbsd-nat.h b/gdb/sparcbsd-nat.h deleted file mode 100644 index 326d669fe28..00000000000 --- a/gdb/sparcbsd-nat.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Native-dependent code for SPARC BSD's. - - Copyright 2003 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef SPARCBSD_NAT_H -#define SPARCBSD_NAT_H - -/* Functions translating between `struct reg' and `struct fpreg' and - GDB's register cache. */ -extern void (*sparcbsd_supply_reg)(const char *, int); -extern void (*sparcbsd_fill_reg)(char *, int); -extern void (*sparcbsd_supply_fpreg)(const char *, int); -extern void (*sparcbsd_fill_fpreg)(char *, int); - -/* Functions indication whether `struct reg' or `struct fpreg' provides - a certain register. */ -extern int (*sparcbsd_reg_supplies_p)(int); -extern int (*sparcbsd_fpreg_supplies_p)(int); - -#endif /* sparcbsd-nat.h */ diff --git a/gdb/sparcnbsd-nat.c b/gdb/sparcnbsd-nat.c index ef52746deae..9038ea334b6 100644 --- a/gdb/sparcnbsd-nat.c +++ b/gdb/sparcnbsd-nat.c @@ -1,6 +1,6 @@ -/* Native-dependent code for SPARC systems running NetBSD. - Copyright 2002, 2003 Free Software Foundation, Inc. - Contributed by Wasabi Systems, Inc. +/* Native-dependent code for NetBSD/sparc. + + Copyright 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -20,136 +20,15 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" -#include "inferior.h" -#include "regcache.h" #include "sparc-tdep.h" -#include "sparcnbsd-tdep.h" - -#include -#include -#include - -/* NOTE: We don't bother with any of the deferred_store nonsense; it - makes things a lot more complicated than they need to be. */ - -/* Determine if PT_GETREGS fetches this register. */ -static int -getregs_supplies (int regno) -{ - return (regno == PS_REGNUM - || regno == PC_REGNUM - || regno == DEPRECATED_NPC_REGNUM - || regno == Y_REGNUM - || (regno >= G0_REGNUM && regno <= G7_REGNUM) - || (regno >= O0_REGNUM && regno <= O7_REGNUM) - /* stack regs (handled by sparcnbsd_supply_reg) */ - || (regno >= L0_REGNUM && regno <= I7_REGNUM)); -} +#include "sparc-nat.h" -/* Determine if PT_GETFPREGS fetches this register. */ -static int -getfpregs_supplies (int regno) -{ - return ((regno >= FP0_REGNUM && regno <= (FP0_REGNUM + 31)) - || regno == FPS_REGNUM); -} +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparcnbsd_nat (void); void -fetch_inferior_registers (int regno) +_initialize_sparcnbsd_nat (void) { - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "fetch_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcnbsd_supply_reg32 ((char *) ®s, regno); - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - sparcnbsd_supply_fpreg32 ((char *) &fpregs, regno); - if (regno != -1) - return; - } -} - -void -store_inferior_registers (int regno) -{ - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "store_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcnbsd_fill_reg32 ((char *) ®s, regno); - - if (ptrace (PT_SETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't write registers"); - - /* Deal with the stack regs. */ - if (regno == -1 || regno == SP_REGNUM - || (regno >= L0_REGNUM && regno <= I7_REGNUM)) - { - CORE_ADDR sp = read_register (SP_REGNUM); - int i; - char buf[4]; - - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == -1 || regno == SP_REGNUM || regno == i) - { - regcache_collect (i, buf); - target_write_memory (sp + ((i - L0_REGNUM) * 4), - buf, sizeof (buf)); - } - } - } - - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - sparcnbsd_fill_fpreg32 ((char *) &fpregs, regno); - - if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't write floating point registers"); - - if (regno != -1) - return; - } + sparc_gregset = &sparc32nbsd_gregset; } diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c index f2595074048..4ea39016aa5 100644 --- a/gdb/sparcnbsd-tdep.c +++ b/gdb/sparcnbsd-tdep.c @@ -1,5 +1,6 @@ -/* Target-dependent code for SPARC systems running NetBSD. - Copyright 2002, 2003 Free Software Foundation, Inc. +/* Target-dependent code for NetBSD/sparc. + + Copyright 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GDB. @@ -20,495 +21,258 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" +#include "floatformat.h" +#include "frame.h" +#include "frame-unwind.h" #include "gdbcore.h" -#include "regcache.h" -#include "target.h" -#include "value.h" #include "osabi.h" +#include "regcache.h" +#include "regset.h" +#include "solib-svr4.h" +#include "symtab.h" +#include "trad-frame.h" +#include "gdb_assert.h" #include "gdb_string.h" #include "sparc-tdep.h" -#include "sparcnbsd-tdep.h" #include "nbsd-tdep.h" -#include "solib-svr4.h" - -#define REG32_OFFSET_PSR (0 * 4) -#define REG32_OFFSET_PC (1 * 4) -#define REG32_OFFSET_NPC (2 * 4) -#define REG32_OFFSET_Y (3 * 4) -#define REG32_OFFSET_GLOBAL (4 * 4) -#define REG32_OFFSET_OUT (12 * 4) - -#define REG64_OFFSET_TSTATE (0 * 8) -#define REG64_OFFSET_PC (1 * 8) -#define REG64_OFFSET_NPC (2 * 8) -#define REG64_OFFSET_Y (3 * 8) -#define REG64_OFFSET_GLOBAL (4 * 8) -#define REG64_OFFSET_OUT (12 * 8) - -void -sparcnbsd_supply_reg32 (char *regs, int regno) +const struct sparc_gregset sparc32nbsd_gregset = { - int i; - - if (regno == PS_REGNUM || regno == -1) - supply_register (PS_REGNUM, regs + REG32_OFFSET_PSR); - - if (regno == PC_REGNUM || regno == -1) - supply_register (PC_REGNUM, regs + REG32_OFFSET_PC); - - if (regno == DEPRECATED_NPC_REGNUM || regno == -1) - supply_register (DEPRECATED_NPC_REGNUM, regs + REG32_OFFSET_NPC); - - if (regno == Y_REGNUM || regno == -1) - supply_register (Y_REGNUM, regs + REG32_OFFSET_Y); - - if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1) - { - if (regno == G0_REGNUM || regno == -1) - supply_register (G0_REGNUM, NULL); /* %g0 is always zero */ - for (i = G1_REGNUM; i <= G7_REGNUM; i++) - { - if (regno == i || regno == -1) - supply_register (i, regs + REG32_OFFSET_GLOBAL + - ((i - G0_REGNUM) * 4)); - } - } - - if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1) - { - for (i = O0_REGNUM; i <= O7_REGNUM; i++) - { - if (regno == i || regno == -1) - supply_register (i, regs + REG32_OFFSET_OUT + - ((i - O0_REGNUM) * 4)); - } - } - - /* Inputs and Locals are stored onto the stack by by the kernel. */ - if ((regno >= L0_REGNUM && regno <= I7_REGNUM) || regno == -1) - { - CORE_ADDR sp = read_register (SP_REGNUM); - char buf[4]; - - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == i || regno == -1) - { - target_read_memory (sp + ((i - L0_REGNUM) * 4), - buf, sizeof (buf)); - supply_register (i, buf); - } - } - } + 0 * 4, /* %psr */ + 1 * 4, /* %pc */ + 2 * 4, /* %npc */ + 3 * 4, /* %y */ + -1, /* %wim */ + -1, /* %tbr */ + 5 * 4, /* %g1 */ + -1 /* %l0 */ +}; - /* FIXME: If we don't set these valid, read_register_bytes() rereads - all the regs every time it is called! */ - if (regno == WIM_REGNUM || regno == -1) - supply_register (WIM_REGNUM, NULL); - if (regno == TBR_REGNUM || regno == -1) - supply_register (TBR_REGNUM, NULL); - if (regno == CPS_REGNUM || regno == -1) - supply_register (CPS_REGNUM, NULL); -} +/* Unlike other NetBSD implementations, the SPARC port historically + used .reg and .reg2 (see bfd/netbsd-core.c), and as such, we can + share one routine for a.out and ELF core files. */ -void -sparcnbsd_supply_reg64 (char *regs, int regno) +static void +sparc32nbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *gregs, size_t len) { - int i; - char buf[8]; - - if (regno == TSTATE_REGNUM || regno == -1) - supply_register (PS_REGNUM, regs + REG64_OFFSET_TSTATE); - - if (regno == PC_REGNUM || regno == -1) - supply_register (PC_REGNUM, regs + REG64_OFFSET_PC); - - if (regno == DEPRECATED_NPC_REGNUM || regno == -1) - supply_register (DEPRECATED_NPC_REGNUM, regs + REG64_OFFSET_NPC); - - if (regno == Y_REGNUM || regno == -1) - { - memset (buf, 0, sizeof (buf)); - memcpy (&buf[4], regs + REG64_OFFSET_Y, 4); - supply_register (Y_REGNUM, buf); - } - - if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1) - { - if (regno == G0_REGNUM || regno == -1) - supply_register (G0_REGNUM, NULL); /* %g0 is always zero */ - for (i = G1_REGNUM; i <= G7_REGNUM; i++) - { - if (regno == i || regno == -1) - supply_register (i, regs + REG64_OFFSET_GLOBAL + - ((i - G0_REGNUM) * 8)); - } - } - - if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1) - { - for (i = O0_REGNUM; i <= O7_REGNUM; i++) - { - if (regno == i || regno == -1) - supply_register (i, regs + REG64_OFFSET_OUT + - ((i - O0_REGNUM) * 8)); - } - } - - /* Inputs and Locals are stored onto the stack by by the kernel. */ - if ((regno >= L0_REGNUM && regno <= I7_REGNUM) || regno == -1) - { - CORE_ADDR sp = read_register (SP_REGNUM); - char buf[8]; - - if (sp & 1) - { - /* Registers are 64-bit. */ - sp += 2047; - - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == i || regno == -1) - { - target_read_memory (sp + ((i - L0_REGNUM) * 8), - buf, sizeof (buf)); - supply_register (i, buf); - } - } - } - else - { - /* Registers are 32-bit. Toss any sign-extension of the stack - pointer, clear out the top half of the temporary buffer, and - put the register value in the bottom half. */ - - sp &= 0xffffffffUL; - memset (buf, 0, sizeof (buf)); - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == i || regno == -1) - { - target_read_memory (sp + ((i - L0_REGNUM) * 4), - &buf[4], sizeof (buf)); - supply_register (i, buf); - } - } - } - } - - /* FIXME: If we don't set these valid, read_register_bytes() rereads - all the regs every time it is called! */ - if (regno == WIM_REGNUM || regno == -1) - supply_register (WIM_REGNUM, NULL); - if (regno == TBR_REGNUM || regno == -1) - supply_register (TBR_REGNUM, NULL); - if (regno == CPS_REGNUM || regno == -1) - supply_register (CPS_REGNUM, NULL); + sparc32_supply_gregset (regset->descr, regcache, regnum, gregs); } -void -sparcnbsd_fill_reg32 (char *regs, int regno) +static void +sparc32nbsd_supply_fpregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *fpregs, size_t len) { - int i; - - if (regno == PS_REGNUM || regno == -1) - regcache_collect (PS_REGNUM, regs + REG32_OFFSET_PSR); - - if (regno == PC_REGNUM || regno == -1) - regcache_collect (PC_REGNUM, regs + REG32_OFFSET_PC); + sparc32_supply_fpregset (regcache, regnum, fpregs); +} - if (regno == DEPRECATED_NPC_REGNUM || regno == -1) - regcache_collect (DEPRECATED_NPC_REGNUM, regs + REG32_OFFSET_NPC); + +/* Signal trampolines. */ - if (regno == Y_REGNUM || regno == -1) - regcache_collect (Y_REGNUM, regs + REG32_OFFSET_Y); +/* The following variables describe the location of an on-stack signal + trampoline. The current values correspond to the memory layout for + NetBSD 1.3 and up. These shouldn't be necessary for NetBSD 2.0 and + up, since NetBSD uses signal trampolines provided by libc now. */ - if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1) - { - /* %g0 is always zero */ - for (i = G1_REGNUM; i <= G7_REGNUM; i++) - { - if (regno == i || regno == -1) - regcache_collect (i, regs + REG32_OFFSET_GLOBAL + - ((i - G0_REGNUM) * 4)); - } - } +static const CORE_ADDR sparc32nbsd_sigtramp_start = 0xeffffef0; +static const CORE_ADDR sparc32nbsd_sigtramp_end = 0xeffffff0; - if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1) - { - for (i = O0_REGNUM; i <= O7_REGNUM; i++) - { - if (regno == i || regno == -1) - regcache_collect (i, regs + REG32_OFFSET_OUT + - ((i - O0_REGNUM) * 4)); - } - } +static int +sparc32nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + if (pc >= sparc32nbsd_sigtramp_start && pc < sparc32nbsd_sigtramp_end) + return 1; - /* Responsibility for the stack regs is pushed off onto the caller. */ + return nbsd_pc_in_sigtramp (pc, name); } -void -sparcnbsd_fill_reg64 (char *regs, int regno) +static struct sparc_frame_cache * +sparc32nbsd_sigcontext_frame_cache (struct frame_info *next_frame, + void **this_cache) { - int i; - - if (regno == TSTATE_REGNUM || regno == -1) - regcache_collect (TSTATE_REGNUM, regs + REG64_OFFSET_TSTATE); + struct sparc_frame_cache *cache; + CORE_ADDR addr, sigcontext_addr; + LONGEST psr; + int regnum, delta; - if (regno == PC_REGNUM || regno == -1) - regcache_collect (PC_REGNUM, regs + REG64_OFFSET_PC); + if (*this_cache) + return *this_cache; - if (regno == DEPRECATED_NPC_REGNUM || regno == -1) - regcache_collect (DEPRECATED_NPC_REGNUM, regs + REG64_OFFSET_NPC); + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); - if (regno == Y_REGNUM || regno == -1) - regcache_collect (Y_REGNUM, regs + REG64_OFFSET_Y); + /* The registers are saved in bits and pieces scattered all over the + place. The code below records their location on the assumption + that the part of the signal trampoline that saves the state has + been executed. */ - if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1) + /* If we couldn't find the frame's function, we're probably dealing + with an on-stack signal trampoline. */ + if (cache->pc == 0) { - /* %g0 is always zero */ - for (i = G1_REGNUM; i <= G7_REGNUM; i++) - { - if (regno == i || regno == -1) - regcache_collect (i, regs + REG64_OFFSET_GLOBAL + - ((i - G0_REGNUM) * 4)); - } - } + cache->pc = sparc32nbsd_sigtramp_start; - if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1) - { - for (i = O0_REGNUM; i <= O7_REGNUM; i++) - { - if (regno == i || regno == -1) - regcache_collect (i, regs + REG64_OFFSET_OUT + - ((i - O0_REGNUM) * 4)); - } + /* Since we couldn't find the frame's function, the cache was + initialized under the assumption that we're frameless. */ + cache->frameless_p = 0; + addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); + cache->base = addr; } - /* Responsibility for the stack regs is pushed off onto the caller. */ -} - -void -sparcnbsd_supply_fpreg32 (char *fpregs, int regno) -{ - int i; - - for (i = 0; i <= 31; i++) + cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); + + /* We find the appropriate instance of `struct sigcontext' at a + fixed offset in the signal frame. */ + sigcontext_addr = cache->base + 64 + 16; + + cache->saved_regs[SPARC_SP_REGNUM].addr = sigcontext_addr + 8; + cache->saved_regs[SPARC32_PC_REGNUM].addr = sigcontext_addr + 12; + cache->saved_regs[SPARC32_NPC_REGNUM].addr = sigcontext_addr + 16; + cache->saved_regs[SPARC32_PSR_REGNUM].addr = sigcontext_addr + 20; + cache->saved_regs[SPARC_G1_REGNUM].addr = sigcontext_addr + 24; + cache->saved_regs[SPARC_O0_REGNUM].addr = sigcontext_addr + 28; + + /* The remaining `global' registers and %y are saved in the `local' + registers. */ + delta = SPARC_L0_REGNUM - SPARC_G0_REGNUM; + for (regnum = SPARC_G2_REGNUM; regnum <= SPARC_G7_REGNUM; regnum++) + cache->saved_regs[regnum].realreg = regnum + delta; + cache->saved_regs[SPARC32_Y_REGNUM].realreg = SPARC_L1_REGNUM; + + /* The remaining `out' registers can be found in the current frame's + `in' registers. */ + delta = SPARC_I0_REGNUM - SPARC_O0_REGNUM; + for (regnum = SPARC_O1_REGNUM; regnum <= SPARC_O5_REGNUM; regnum++) + cache->saved_regs[regnum].realreg = regnum + delta; + cache->saved_regs[SPARC_O7_REGNUM].realreg = SPARC_I7_REGNUM; + + /* The `local' and `in' registers have been saved in the register + save area. */ + addr = cache->saved_regs[SPARC_SP_REGNUM].addr; + addr = get_frame_memory_unsigned (next_frame, addr, 4); + for (regnum = SPARC_L0_REGNUM; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; + + /* The floating-point registers are only saved if the EF bit in %prs + has been set. */ + +#define PSR_EF 0x00001000 + + addr = cache->saved_regs[SPARC32_PSR_REGNUM].addr; + psr = get_frame_memory_unsigned (next_frame, addr, 4); + if (psr & PSR_EF) { - if (regno == (FP0_REGNUM + i) || regno == -1) - supply_register (FP0_REGNUM + i, fpregs + (i * 4)); + CORE_ADDR sp; + + sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM); + cache->saved_regs[SPARC32_FSR_REGNUM].addr = sp + 96; + for (regnum = SPARC_F0_REGNUM, addr = sp + 96 + 8; + regnum <= SPARC_F31_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; } - if (regno == FPS_REGNUM || regno == -1) - supply_register (FPS_REGNUM, fpregs + (32 * 4)); + return cache; } -void -sparcnbsd_supply_fpreg64 (char *fpregs, int regno) +static void +sparc32nbsd_sigcontext_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) { - int i; - - for (i = 0; i <= 31; i++) - { - if (regno == (FP0_REGNUM + i) || regno == -1) - supply_register (FP0_REGNUM + i, fpregs + (i * 4)); - } + struct sparc_frame_cache *cache = + sparc32nbsd_sigcontext_frame_cache (next_frame, this_cache); - for (; i <= 47; i++) - { - if (regno == (FP0_REGNUM + i) || regno == -1) - supply_register (FP0_REGNUM + i, fpregs + (32 * 4) + (i * 8)); - } - - if (regno == FPS_REGNUM || regno == -1) - supply_register (FPS_REGNUM, fpregs + (32 * 4) + (16 * 8)); - - /* XXX %gsr */ + (*this_id) = frame_id_build (cache->base, cache->pc); } -void -sparcnbsd_fill_fpreg32 (char *fpregs, int regno) +static void +sparc32nbsd_sigcontext_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) { - int i; - - for (i = 0; i <= 31; i++) - { - if (regno == (FP0_REGNUM + i) || regno == -1) - regcache_collect (FP0_REGNUM + i, fpregs + (i * 4)); - } + struct sparc_frame_cache *cache = + sparc32nbsd_sigcontext_frame_cache (next_frame, this_cache); - if (regno == FPS_REGNUM || regno == -1) - regcache_collect (FPS_REGNUM, fpregs + (32 * 4)); + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); } -void -sparcnbsd_fill_fpreg64 (char *fpregs, int regno) +static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind = { - int i; - - for (i = 0; i <= 31; i++) - { - if (regno == (FP0_REGNUM + i) || regno == -1) - regcache_collect (FP0_REGNUM + i, fpregs + (i * 4)); - } - - for (; i <= 47; i++) - { - if (regno == (FP0_REGNUM + i) || regno == -1) - regcache_collect (FP0_REGNUM + i, fpregs + (32 * 4) + (i * 8)); - } - - if (regno == FPS_REGNUM || regno == -1) - regcache_collect (FPS_REGNUM, fpregs + (32 * 4) + (16 * 8)); - - /* XXX %gsr */ -} + SIGTRAMP_FRAME, + sparc32nbsd_sigcontext_frame_this_id, + sparc32nbsd_sigcontext_frame_prev_register +}; -/* Unlike other NetBSD implementations, the SPARC port historically used - .reg and .reg2 (see bfd/netbsd-core.c), and as such, we can share one - routine for a.out and ELF core files. */ -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +static const struct frame_unwind * +sparc32nbsd_sigtramp_frame_sniffer (struct frame_info *next_frame) { - int reg_size, fpreg_size; + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; - if (gdbarch_ptr_bit (current_gdbarch) == 32) - { - reg_size = (20 * 4); - fpreg_size = (33 * 4); - } - else + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc32nbsd_pc_in_sigtramp (pc, name)) { - reg_size = (20 * 8); - fpreg_size = (64 * 4) - + 8 /* fsr */ - + 4 /* gsr */ - + 4; /* pad */ + if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21)) + return &sparc32nbsd_sigcontext_frame_unwind; } - switch (which) - { - case 0: /* Integer registers */ - if (core_reg_size != reg_size) - warning ("Wrong size register set in core file."); - else if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_supply_reg32 (core_reg_sect, -1); - else - sparcnbsd_supply_reg64 (core_reg_sect, -1); - break; - - case 2: /* Floating pointer registers */ - if (core_reg_size != fpreg_size) - warning ("Wrong size FP register set in core file."); - else if (gdbarch_ptr_bit (current_gdbarch) == 32) - sparcnbsd_supply_fpreg32 (core_reg_sect, -1); - else - sparcnbsd_supply_fpreg64 (core_reg_sect, -1); - break; - - default: - /* Don't know what kind of register request this is; just ignore it. */ - break; - } + return NULL; } + -static struct core_fns sparcnbsd_core_fns = -{ - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL -}; - -static struct core_fns sparcnbsd_elfcore_fns = -{ - bfd_target_elf_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL -}; - -/* FIXME: Need PC_IN_SIGTRAMP() support, but NetBSD/sparc signal trampolines - aren't easily identified. */ +/* Return non-zero if we are in a shared library trampoline code stub. */ static int -sparcnbsd_get_longjmp_target_32 (CORE_ADDR *pc) +sparcnbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name) { - CORE_ADDR jb_addr; - char buf[4]; - - jb_addr = read_register (O0_REGNUM); - - if (target_read_memory (jb_addr + 12, buf, sizeof (buf))) - return 0; - - *pc = extract_unsigned_integer (buf, sizeof (buf)); - - return 1; + return (name && !strcmp (name, "_DYNAMIC")); } -static int -sparcnbsd_get_longjmp_target_64 (CORE_ADDR *pc) +static void +sparc32nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - CORE_ADDR jb_addr; - char buf[8]; - - jb_addr = read_register (O0_REGNUM); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - if (target_read_memory (jb_addr + 16, buf, sizeof (buf))) - return 0; + /* NetBSD doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big); - *pc = extract_unsigned_integer (buf, sizeof (buf)); - - return 1; -} + tdep->gregset = XMALLOC (struct regset); + tdep->gregset->descr = &sparc32nbsd_gregset; + tdep->gregset->supply_regset = sparc32nbsd_supply_gregset; -static int -sparcnbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name) -{ - if (strcmp (name, "_DYNAMIC") == 0) - return 1; + tdep->fpregset = XMALLOC (struct regset); + tdep->fpregset->supply_regset = sparc32nbsd_supply_fpregset; - return 0; + set_gdbarch_pc_in_sigtramp (gdbarch, sparc32nbsd_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer); } static void -sparcnbsd_init_abi_common (struct gdbarch_info info, - struct gdbarch *gdbarch) +sparc32nbsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - set_gdbarch_get_longjmp_target (gdbarch, gdbarch_ptr_bit (gdbarch) == 32 ? - sparcnbsd_get_longjmp_target_32 : - sparcnbsd_get_longjmp_target_64); -} - -static void -sparcnbsd_init_abi_aout (struct gdbarch_info info, - struct gdbarch *gdbarch) -{ - sparcnbsd_init_abi_common (info, gdbarch); + sparc32nbsd_init_abi (info, gdbarch); - set_gdbarch_in_solib_call_trampoline (gdbarch, - sparcnbsd_aout_in_solib_call_trampoline); + set_gdbarch_in_solib_call_trampoline + (gdbarch, sparcnbsd_aout_in_solib_call_trampoline); } static void -sparcnbsd_init_abi_elf (struct gdbarch_info info, - struct gdbarch *gdbarch) +sparc32nbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - sparcnbsd_init_abi_common (info, gdbarch); + sparc32nbsd_init_abi (info, gdbarch); - set_gdbarch_pc_in_sigtramp (gdbarch, nbsd_pc_in_sigtramp); - - set_solib_svr4_fetch_link_map_offsets (gdbarch, - gdbarch_ptr_bit (gdbarch) == 32 ? - nbsd_ilp32_solib_svr4_fetch_link_map_offsets : - nbsd_lp64_solib_svr4_fetch_link_map_offsets); + set_solib_svr4_fetch_link_map_offsets + (gdbarch, nbsd_ilp32_solib_svr4_fetch_link_map_offsets); } static enum gdb_osabi @@ -520,6 +284,10 @@ sparcnbsd_aout_osabi_sniffer (bfd *abfd) return GDB_OSABI_UNKNOWN; } + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparcnbsd_tdep (void); + void _initialize_sparnbsd_tdep (void) { @@ -527,10 +295,7 @@ _initialize_sparnbsd_tdep (void) sparcnbsd_aout_osabi_sniffer); gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_AOUT, - sparcnbsd_init_abi_aout); + sparc32nbsd_aout_init_abi); gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_ELF, - sparcnbsd_init_abi_elf); - - add_core_fns (&sparcnbsd_core_fns); - add_core_fns (&sparcnbsd_elfcore_fns); + sparc32nbsd_elf_init_abi); } diff --git a/gdb/sparcnbsd-tdep.h b/gdb/sparcnbsd-tdep.h deleted file mode 100644 index bad2d653c8e..00000000000 --- a/gdb/sparcnbsd-tdep.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Common target dependent code for GDB on SPARC systems running NetBSD. - Copyright 2002 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef SPARCNBSD_TDEP_H -#define SPARCNBSD_TDEP_H - -void sparcnbsd_supply_reg32 (char *, int); -void sparcnbsd_supply_reg64 (char *, int); -void sparcnbsd_fill_reg32 (char *, int); -void sparcnbsd_fill_reg64 (char *, int); - -void sparcnbsd_supply_fpreg32 (char *, int); -void sparcnbsd_supply_fpreg64 (char *, int); -void sparcnbsd_fill_fpreg32 (char *, int); -void sparcnbsd_fill_fpreg64 (char *, int); - -#endif /* SPARCNBSD_TDEP_H */ diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 5b9dba7a4fb..948cf0eb85b 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -1118,13 +1118,8 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, if (local_symbols && local_symbols->nsyms > 0 -#ifndef DEPRECATED_USE_REGISTER_NOT_ARG - /* DEPRECATED_USE_REGISTER_NOT_ARG is only defined by - the SPARC. */ && gdbarch_stabs_argument_has_addr (current_gdbarch, - SYMBOL_TYPE (sym)) -#endif - ) + SYMBOL_TYPE (sym))) { struct symbol *prev_sym; prev_sym = local_symbols->symbol[local_symbols->nsyms - 1]; diff --git a/gdb/stack.c b/gdb/stack.c index a2b331f029e..73a6ec52e33 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -1,8 +1,8 @@ /* Print and select stack frames for GDB, the GNU debugger. Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software - Foundation, Inc. + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free + Software Foundation, Inc. This file is part of GDB. @@ -968,10 +968,6 @@ frame_info (char *addr_exp, int from_tty) printf_filtered (" source language %s.\n", language_str (s->language)); -#ifdef DEPRECATED_PRINT_EXTRA_FRAME_INFO - DEPRECATED_PRINT_EXTRA_FRAME_INFO (fi); -#endif - { /* Address of the argument list for this frame, or 0. */ CORE_ADDR arg_list = get_frame_args_address (fi); diff --git a/gdb/target.c b/gdb/target.c index 4c12bda3f8a..cc3b747d4b8 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -709,8 +709,6 @@ unpush_target (struct target_ops *t) struct target_ops **cur; struct target_ops *tmp; - target_close (t, 0); - /* Look for the specified target. Note that we assume that a target can only occur once in the target stack. */ @@ -723,6 +721,14 @@ unpush_target (struct target_ops *t) if ((*cur) == NULL) return 0; /* Didn't find target_ops, quit now */ + /* NOTE: cagney/2003-12-06: In '94 the close call was made + unconditional by moving it to before the above check that the + target was in the target stack (something about "Change the way + pushing and popping of targets work to support target overlays + and inheritance"). This doesn't make much sense - only open + targets should be closed. */ + target_close (t, 0); + /* Unchain the target */ tmp = (*cur); (*cur) = (*cur)->beneath; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index aac4e5d56eb..fec3158f252 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,264 @@ +2004-01-12 Elena Zannoni + + * gdb.base/sepdebug.exp: New file. + * gdb.base/sepdebug.c: New file. + * lib/gdb.exp (separate_debug_filename): New procedure. + (gdb_gnu_strip_debug): New procedure. + +2004-01-12 Andrew Cagney + + * gdb.mi/ChangeLog: Delete file. Renamed to ... + * gdb.mi/ChangeLog-1999-2003: New file. + +2004-01-12 Andrew Cagney + + * gdb.base/fileio.exp: Update copyright year. On GNU/Linux, for + "Renaming a directory to a non-empty directory returns ENOTEMPTY + or EEXIST", treat EBUSY as an XFAIL. + +2004-01-11 Michael Chastain + + * gdb.base/scope.exp: Remove obsolete setup_xfail for + hp_cc_compiler. + +2004-01-10 Michael Chastain + + * gdb.cp/classes.exp: Remove old "(obsolescent gcc or gdb)" + decorations. + +2004-01-10 Michael Chastain + + * gdb.cp/virtfunc.exp: Remove old "(obsolescent gcc or gdb)" + and "(aCC)" decorations. Remove obsolete doco about old + test results. + +2004-01-09 Michael Chastain + + * gdb.cp/exception.exp: Fix typo in doco. + +2004-01-09 Mark Kettenis + + * gdb.base/gdb1476.exp: Fix typo. + +2004-01-09 Michael Chastain + + * gdb.hp/gdb.aCC/exception.exp: Re-create as a nearly empty + file. + +2004-01-09 Michael Chastain + + * gdb.cp/exception.cc: Change to . + * gdb.cp/exception.exp: Use gdb test, gdb_test_multiple. + Use gdb_compile. Remove restriction on gcc. Add some patterns + for recent version of gdb. Delete second half, which was a copy + of the first half with different build flags. This test is + still disabled because it is still not ready for production. + +2004-01-08 Michael Chastain + + * gdb.cp/exception.cc: Add copyright notice. + * gdb.cp/exception.exp: Add a notice that this file is broken + because of line number changes caused by addition of copyright + notice. + +2004-01-08 Michael Chastain + + * gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc. + * gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp. + +2004-01-08 Michael Chastain + + * gdb.cp/classes.exp: Accept gnu abi 2. + * gdb.cp/derivation.exp: Likewise. + * gdb.cp/overload.exp: Likewise. + * gdb.cp/virtfunc.exp: Likewise. + +2004-01-08 Michael Chastain + + * gdb.mi/pthreads.c (done_making_threads): Remove extraneous + semicolon after end of function. + +2004-01-07 Michael Chastain + + * gdb.cp/bs15503.cc: Include , not . + * gdb.cp/bs15503.exp: Remove hp-only restriction. Use modern + boilerplate code for compiling and running the program under + test. Add some string method tests. + +2004-01-07 Michael Chastain + + * gdb.cp/bs15503.cc: Add copyright notice. + * gdb.cp/bs15503.exp: Adjust line number. + +2004-01-07 Michael Chastain + + * gdb.hp/gdb.defects/bs15503.exp: Renamed to gdb.cp/bs15503.exp. + * gdb.hp/gdb.defects/bs15503.cc: Renamed to gdb.cp/bs15503.cc. + +2004-01-07 Michael Chastain + + * gdb.base/funcargs.exp: Remove obsolete setup_xfail for + hp_cc_compiler. + +2004-01-07 Michael Chastain + + * gdb.cp/cttiadd.c: Add a marker for gdb_get_line_number. + * gdb.cp/ctti.exp: Use the marker instead of "next". + With gcc, run further before bailing. + +2004-01-07 Michael Chastain + + * gdb.cp/cttiadd.cc: Add copyright notice. + * gdb.cp/cttiadd1.cc: Likewise. + * gdb.cp/cttiadd2.cc: Likewise. + * gdb.cp/cttiadd3.cc: Likewise. + +2004-01-07 Michael Chastain + + * gdb.cp/ctti.exp: Partial rewrite. Call gdb_compile properly. + Use gdb_test, gdb_test_multiple. Use floating-point values that + have exact representations in IEEE-ish formats. + +2004-01-07 Michael Chastain + + * gdb.base/constvars.exp: Do not force lang=c++ if using HP + compilers. Delete duplicate call to get_compiler_info. + (local_compiler_xfail_check): setup_xfail if $hp_cc_compiler. + * gdb.base/volatile.exp: Likewise. + +2004-01-07 Mark Kettenis + + * gdb.base/gdb1476.exp: Only run the tests if we can't read the + memory at address 0. + +2004-01-07 Michael Chastain + + * gdb.stabs/weird.exp: Use hp_cc_compiler and hp_aCC_compiler + to test for hp-ux assembler. Fix copyright years. + +2004-01-07 Andrew Cagney + + * gdb.base/fileio.c (strerrno): Add "EBUSY". + +2004-01-07 Andrew Cagney + + * gdb.base/fileio.c (test_open): Do not pass S_IWUSR to "open" + when creating the read-only file. From analysis by Roland McGrath + and Elena Zannoni. + +2004-01-06 Michael Chastain + + * gdb.cp/namespace.exp: Call get_compiler_info with "c++". + +2004-01-06 Michael Chastain + + * gdb.base/cvexpr.c: Be type-safe with function pointers and + data pointers. + +2004-01-06 Michael Chastain + + * gdb.cp/m-static.exp: Compile one source file at a time. + Delete unused call to get_compiler_info. + +2004-01-06 Michael Chastain + + * gdb.base/call-ar-st.exp: Delete explicit reference to ${binfile}.ci. + * gdb.base/call-rt-st.exp: Likewise. + * gdb.base/nodebug.exp: Likewise. + * gdb.base/volatile.exp: Likewise. + * gdb.cp/ref-types.exp: Likewise. + * gdb.cp/templates.exp: Likewise. + +2004-01-05 Mark Kettenis + + * gdb.base/gdb1476.exp, gdb.base/gdb1476.c: New files. + +2004-01-05 Michael Chastain + + * gdb.cp/funcargs.exp: Delete special timeout of 240 seconds for + hppa*-hp-hpux*. + +2004-01-04 Mark Kettenis + + * gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for + x86_64-*-*. + + * gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for + sparc64-*-* and sparc*-solaris2*. + +2004-01-04 Mark Kettenis + + * gdb.base/structs.exp: Remove ${testfile} from "zed L for + return ${tests}" test. The ${tests} already mentions the + filename. + +2004-01-02 Michael Chastain + + * gdb.cp/local.exp: Accept gcc abi 2. + +2004-01-02 Michael Chastain + + * gdb.cp/templates.exp: Accept gcc abi 2. + +2004-01-02 Michael Chastain + + * lib/compiler.cc: Remove supports_template_debugging. + * gdb.cp/templates.exp: Do not test supports_template_debugging. + +2004-01-01 Michael Chastain + + * gdb.cp/namespace.exp: Accept gcc abi 2. + +2004-01-01 Michael Chastain + + * gdb.cp/method.exp: Accept gcc abi 2. + +2004-01-01 Michael Chastain + + * gdb.cp/classes.exp: Generate identical results as old version. + * gdb.cp/derivation.exp: Likewise. + * gdb.cp/overload.exp: Likewise. + * gdb.cp/virtfunc.exp: Likewise. + +2004-01-01 Michael Chastain + + * gdb.cp/virtfunc.exp: Modify some patterns to avoid a + mysterious bug with sourceware version of expect. + +2004-01-01 Michael Chastain + + * gdb.cp/overload.exp: Rewrite. Clean up patterns to match + current versions of gcc, including gcc abi 2. Remove gratuitous + restart of test program. Use gdb_test_multiple and gdb_test for + all tests. Add patterns to xfail missing "const" in "const char *" + and kfail PR gdb/1155. + +2004-01-01 Michael Chastain + + * gdb.cp/derivation.exp: Rewrite. Clean up patterns to match + current versions of gcc, including gcc abi 2. Remove gratuitous + restart of test program. Use gdb_test_multiple and gdb_test for + all tests. Add patterns to kfail PR gdb/1498. + +2003-12-31 Michael Chastain + + * gdb.cp/virtfunc.exp: Rewrite. Clean up patterns to match + current versions of gcc, including gcc abi 2. Use "breakpoint" + and "continue" instead of restarting the target program. Use + gdb_test_multiple and gdb_test for all tests. + +2004-01-01 Mark Kettenis + + * gdb.asm/asm-source.exp: Update copyright year. Link statically + for *-*-solaris2*. + +2003-12-31 Michael Chastain + + * gdb.cp/classes.exp: Rewrite. Clean up patterns to match + current versions of gcc, including gcc abi 2. Use "breakpoint" + and "continue" instead of restarting the target program several + times. Use gdb_test_multiple and gdb_test for all tests. + 2003-12-18 Michael Chastain * gdb.base/sect-cmd.exp: Handle compiling test case from multiple @@ -11027,6 +11288,8 @@ Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com) of dejagnu. The modifications to these testcases, etc., which will allow them to work with the new version of dejagnu will be made in a future update. + +For additional changes see gdb.mi/ChangeLog-1999-2003. Local Variables: mode: change-log diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp index e41bfec1a4d..301b778a0e9 100644 --- a/gdb/testsuite/gdb.asm/asm-source.exp +++ b/gdb/testsuite/gdb.asm/asm-source.exp @@ -1,4 +1,4 @@ -# Copyright 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -118,13 +118,17 @@ if { "${asm-arch}" == "" } { gdb_suppress_entire_file "Assembly source test -- not implemented for this target." } -# On FreeBSD and NetBSD, crt1.o the final link will fail because of +# On FreeBSD and NetBSD, the final link will fail because of # unresolved symbols. It turns out that libc.so references symbols # that are normally provided by crt1.o, which isn't linked in since we # specify -nostartfiles. Using -nostdlib doesn't help since # target_compile automatically adds -lm. Linking statically avoids # this mess. -if {[istarget "*-*-freebsd*"] || [istarget "*-*-netbsd*"]} then { +# +# On Solaris, linking dynamically results in a binary that dumps core. +# +if {[istarget "*-*-freebsd*"] || [istarget "*-*-netbsd*"] + || [istarget "*-*-solaris2*"]} then { append link-flags " -static" } diff --git a/gdb/testsuite/gdb.base/call-ar-st.exp b/gdb/testsuite/gdb.base/call-ar-st.exp index a7ea5cf56aa..1431bc56f8f 100644 --- a/gdb/testsuite/gdb.base/call-ar-st.exp +++ b/gdb/testsuite/gdb.base/call-ar-st.exp @@ -1,4 +1,4 @@ -# Copyright 1998, 1999, 2000, 2001 +# Copyright 1998, 1999, 2000, 2001, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -89,8 +89,6 @@ proc set_lang_c {} { } } -source ${binfile}.ci - # Start with a fresh gdb. gdb_exit diff --git a/gdb/testsuite/gdb.base/call-rt-st.exp b/gdb/testsuite/gdb.base/call-rt-st.exp index 39242fd5b9f..4a912fcdc29 100644 --- a/gdb/testsuite/gdb.base/call-rt-st.exp +++ b/gdb/testsuite/gdb.base/call-rt-st.exp @@ -1,4 +1,5 @@ -# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -91,11 +92,6 @@ proc set_lang_c {} { } } - - -source ${binfile}.ci - - # Start with a fresh gdb. gdb_exit diff --git a/gdb/testsuite/gdb.base/constvars.exp b/gdb/testsuite/gdb.base/constvars.exp index 9008624a936..68732867d50 100644 --- a/gdb/testsuite/gdb.base/constvars.exp +++ b/gdb/testsuite/gdb.base/constvars.exp @@ -1,4 +1,4 @@ -# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -48,23 +48,10 @@ if [get_compiler_info ${binfile}] { return -1; } -if {$hp_aCC_compiler || $hp_cc_compiler} { - set lang "c++" -} else { - set lang "" -} - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug $lang]] != "" } { +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -# Create and source the file that provides information about the compiler -# used to compile the test case. - -if [get_compiler_info ${binfile}] { - return -1; -} - gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir @@ -88,6 +75,11 @@ proc local_compiler_xfail_check { } { setup_xfail "*-*-*" } } + + global hp_cc_compiler + if { $hp_cc_compiler } { + setup_xfail "hppa*-*-hpux*" + } } send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $" diff --git a/gdb/testsuite/gdb.base/cvexpr.c b/gdb/testsuite/gdb.base/cvexpr.c index 587120928e4..afbcd3172c3 100644 --- a/gdb/testsuite/gdb.base/cvexpr.c +++ b/gdb/testsuite/gdb.base/cvexpr.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -409,26 +409,26 @@ int main () use (&v_boolean2); use (&v_misordered); - use (v_char_func); - use (v_signed_char_func); - use (v_unsigned_char_func); + use (&v_char_func); + use (&v_signed_char_func); + use (&v_unsigned_char_func); - use (v_short_func); - use (v_signed_short_func); - use (v_unsigned_short_func); + use (&v_short_func); + use (&v_signed_short_func); + use (&v_unsigned_short_func); - use (v_int_func); - use (v_signed_int_func); - use (v_unsigned_int_func); + use (&v_int_func); + use (&v_signed_int_func); + use (&v_unsigned_int_func); - use (v_long_func); - use (v_signed_long_func); - use (v_unsigned_long_func); + use (&v_long_func); + use (&v_signed_long_func); + use (&v_unsigned_long_func); - use (v_long_long_func); - use (v_signed_long_long_func); - use (v_unsigned_long_long_func); + use (&v_long_long_func); + use (&v_signed_long_long_func); + use (&v_unsigned_long_long_func); - use (v_float_func); - use (v_double_func); + use (&v_float_func); + use (&v_double_func); } diff --git a/gdb/testsuite/gdb.base/fileio.c b/gdb/testsuite/gdb.base/fileio.c index 591b3b67588..4fda0fd80a3 100644 --- a/gdb/testsuite/gdb.base/fileio.c +++ b/gdb/testsuite/gdb.base/fileio.c @@ -103,7 +103,7 @@ test_open () close (ret); /* Open for write but no write permission */ errno = 0; - ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR); + ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR); if (ret >= 0) { close (ret); @@ -478,6 +478,9 @@ strerrno (int err) #endif #ifdef ENOTEMPTY case ENOTEMPTY: return "ENOTEMPTY"; +#endif +#ifdef EBUSY + case EBUSY: return "EBUSY"; #endif default: return "E??"; } diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp index 128cbb608f4..80dc6186957 100644 --- a/gdb/testsuite/gdb.base/fileio.exp +++ b/gdb/testsuite/gdb.base/fileio.exp @@ -1,4 +1,4 @@ -# Copyright 2002, 2003 +# Copyright 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -216,9 +216,19 @@ gdb_test continue \ "Renaming a file to existing directory returns EISDIR" send_gdb "tbreak 388\n" ; gdb_expect -re "$gdb_prompt $" -gdb_test continue \ - "Continuing\\..*rename 3:.*(ENOTEMPTY|EEXIST).*test_rename \\(\\) at.*$srcfile:388.*" \ -"Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST" +set test "Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST" +gdb_test_multiple continue "${test}" { + -re "Continuing\\..*rename 3:.*(ENOTEMPTY|EEXIST).*test_rename \\(\\) at.*$srcfile:388.*" { + pass "${test}" + } + -re "Continuing\\..*rename 3:.*EBUSY.*test_rename \\(\\) at.*$srcfile:388.*" { + # At least version <= 2.6/2004-01-08 of the Linux Kernel gets + # this wrong (reporting EBUSY) when the file system is NFS + # mounted. + setup_xfail *-*-*linux* gdb/1502 + fail "${test}" + } +} send_gdb "tbreak 393\n" ; gdb_expect -re "$gdb_prompt $" gdb_test continue \ diff --git a/gdb/testsuite/gdb.base/funcargs.exp b/gdb/testsuite/gdb.base/funcargs.exp index 38949f1599c..f3284c01b95 100644 --- a/gdb/testsuite/gdb.base/funcargs.exp +++ b/gdb/testsuite/gdb.base/funcargs.exp @@ -1,5 +1,5 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 -# Free Software Foundation, Inc. +# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, +# 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -162,7 +162,6 @@ proc float_and_integral_args {} { global gdb_prompt global det_file global gcc_compiled - global hp_cc_compiler delete_breakpoints @@ -178,8 +177,6 @@ proc float_and_integral_args {} { # Run; should stop at call2a and print actual arguments. if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" "mips-sgi-irix5*" } - # The debug info. for "f" is not correct. It's a known bug. - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} gdb_run_cmd gdb_expect { -re ".* call2a \\(c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5\\) .*$gdb_prompt $" { pass "run to call2a" } @@ -190,55 +187,46 @@ proc float_and_integral_args {} { # Print each arg as a double check to see if we can print gdb_test "print c" ".* = 97 'a'" "print c after run to call2a" - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} gdb_test "print f1" ".* = 4" "print f1 after run to call2a" gdb_test "print s" ".* = 1" "print s after run to call2a" gdb_test "print d1" ".* = 5" "print d1 after run to call2a" gdb_test "print i" ".* = 2" "print i after run to call2a" - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} gdb_test "print f2" ".* = 4" "print f2 after run to call2a" gdb_test "print l" ".* = 3" "print l after run to call2a" gdb_test "print d2" ".* = 5" "print d2 after run to call2a" setup_xfail "rs6000-*-*" - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} if {!$gcc_compiled} then { setup_xfail "mips-sgi-irix*" } # Continue; should stop at call2b and print actual arguments. if [gdb_test "cont" ".* call2b \\(f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a'\\) .*" "continue to call2b"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2c and print actual arguments. if [gdb_test "cont" ".* call2c \\(s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4\\) .*" "continue to call2c"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2d and print actual arguments. if [gdb_test "cont" ".* call2d \\(d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1\\) .*" "continue to call2d"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2e and print actual arguments. if [gdb_test "cont" ".* call2e \\(i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5\\) .*" "continue to call2e"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2f and print actual arguments. if [gdb_test "cont" ".* call2f \\(f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2\\) .*" "continue to call2f"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2g and print actual arguments. if [gdb_test "cont" ".* call2g \\(l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4\\) .*" "continue to call2g"] { gdb_suppress_tests; } - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2h and print actual arguments. if [gdb_test "cont" ".* call2h \\(d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3\\) .*" "continue to call2h"] { gdb_suppress_tests; @@ -249,7 +237,6 @@ proc float_and_integral_args {} { delete_breakpoints gdb_breakpoint call2i - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} # Continue; should stop at call2i and print actual arguments. if [gdb_test "cont" ".* call2i \\(c1=97 'a', f1=4, c2=97 'a', c3=97 'a', d1=5, c4=97 'a', c5=97 'a', c6=97 'a', f2=4, s=1, c7=97 'a', d2=5\\) .*" "continue to call2i"] { gdb_suppress_tests; @@ -445,7 +432,6 @@ proc discard_and_shuffle {} { global decimal global det_file global gcc_compiled - global hp_cc_compiler delete_breakpoints @@ -474,8 +460,6 @@ proc discard_and_shuffle {} { setup_xfail "mips-sgi-irix5*" } - # The debug info. for "f" is not correct. It's a known bug. - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" gdb_expect { -re "backtrace 100\[\r\n\]+ @@ -505,7 +489,6 @@ $gdb_prompt $" { gdb_continue call6b - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6b" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6b \\(s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) " @@ -520,7 +503,6 @@ $gdb_prompt $" { gdb_continue call6c - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6c" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6c \\(i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) " @@ -535,7 +517,6 @@ $gdb_prompt $" { gdb_continue call6d - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6d" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6d \\(l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) " @@ -552,7 +533,6 @@ $gdb_prompt $" { gdb_continue call6e - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6e" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6e \\(f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) " @@ -570,7 +550,6 @@ $gdb_prompt $" { gdb_continue call6f - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6f" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6f \\(d=5, uc=98 'b', us=6, ui=7, ul=8\\) " @@ -589,7 +568,6 @@ $gdb_prompt $" { gdb_continue call6g - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6g" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6g \\(uc=98 'b', us=6, ui=7, ul=8\\) " @@ -609,7 +587,6 @@ $gdb_prompt $" { gdb_continue call6h - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6h" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6h \\(us=6, ui=7, ul=8\\) " @@ -637,7 +614,6 @@ $gdb_prompt $" { gdb_continue call6i - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6i" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6i \\(ui=7, ul=8\\) " @@ -659,7 +635,6 @@ $gdb_prompt $" { gdb_continue call6j - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6j" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6j \\(ul=8\\) " @@ -681,7 +656,6 @@ $gdb_prompt $" { # Print backtrace. gdb_continue call6k - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" if [gdb_expect_list "backtrace from call6k" ".*$gdb_prompt $" { ".*\[\r\n\]#0 .* call6k \\(\\) " @@ -713,7 +687,6 @@ proc shuffle_round_robin {} { global decimal global det_file global gcc_compiled - global hp_cc_compiler delete_breakpoints @@ -739,8 +712,6 @@ proc shuffle_round_robin {} { } if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" "mips-sgi-irix5*" } - # The debug info. for "f" is not correct. It's a known bug. - if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*} send_gdb "backtrace 100\n" gdb_expect { -re "backtrace 100\[\r\n\]+ @@ -1183,8 +1154,6 @@ gdb_load ${binfile} if [istarget "mips*tx39-*"] { set timeout 300 -} elseif [istarget "hppa*-hp-hpux*"] then { - set timeout 240 } else { set timeout 60 } diff --git a/gdb/testsuite/gdb.base/nodebug.exp b/gdb/testsuite/gdb.base/nodebug.exp index 836ff8637e1..fc96074d8d0 100644 --- a/gdb/testsuite/gdb.base/nodebug.exp +++ b/gdb/testsuite/gdb.base/nodebug.exp @@ -1,4 +1,4 @@ -# Copyright 1997, 1999 Free Software Foundation, Inc. +# Copyright 1997, 1999, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -39,8 +39,6 @@ if [get_compiler_info ${binfile}] { return -1; } -source ${binfile}.ci - gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir diff --git a/gdb/testsuite/gdb.base/scope.exp b/gdb/testsuite/gdb.base/scope.exp index 266e0e31224..3749d2348b8 100644 --- a/gdb/testsuite/gdb.base/scope.exp +++ b/gdb/testsuite/gdb.base/scope.exp @@ -1,5 +1,5 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 -# Free Software Foundation, Inc. +# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, +# 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -112,7 +112,6 @@ proc test_at_main {} { # Print scope1.c::filelocal, which is 2 if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" } - if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs} if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] { gdb_suppress_tests ; } @@ -121,7 +120,6 @@ proc test_at_main {} { # Print scope1.c::filelocal_bss, which is 102 if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" } - if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs} if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] { gdb_suppress_tests ; } diff --git a/gdb/testsuite/gdb.base/structs.exp b/gdb/testsuite/gdb.base/structs.exp index c0f596f5e25..4d282d2e58d 100644 --- a/gdb/testsuite/gdb.base/structs.exp +++ b/gdb/testsuite/gdb.base/structs.exp @@ -1,6 +1,6 @@ # This testcase is part of GDB, the GNU debugger. -# Copyright 1996, 1997, 1999, 2003 Free Software Foundation, Inc. +# Copyright 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -219,6 +219,9 @@ proc test_struct_calls { n } { # Call fun${n}, checking the printed return-value. setup_kfails structs-*tld* i*86-*-* gdb/1447 + setup_kfails structs-*tld* sparc64-*-* gdb/1447 + setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447 + setup_kfails structs-*tld* x86_64-*-* gdb/1447 setup_compiler_kfails structs-tc-* gcc-3-3 "DWARF 2" i*86-*-* gdb/1455 gdb_test "p/c fun${n}()" "[foo ${n}]" "p/c fun(); ${tests}" @@ -231,6 +234,9 @@ proc test_struct_calls { n } { gdb_test "call Fun${n}(foo${n})" "" "call Fun(foo); ${tests}" setup_kfails structs-*tld* i*86-*-* gdb/1447 + setup_kfails structs-*tld* sparc64-*-* gdb/1447 + setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447 + setup_kfails structs-*tld* x86_64-*-* gdb/1447 setup_compiler_kfails structs-tc-* gcc-3-3 "DWARF 2" i*86-*-* gdb/1455 gdb_test "p/c L${n}" [foo ${n}] "p/c L; ${tests}" } @@ -285,7 +291,10 @@ proc test_struct_returns { n } { # Check that the program invalidated the relevant global. setup_kfails structs-tld i*86-*-* gdb/1447 - gdb_test "p/c L${n}" " = [zed $n]" "zed L for return; ${tests} .${testfile}." + setup_kfails structs-tld sparc64-*-* gdb/1447 + setup_kfails structs-tld sparc*-*-solaris2* gdb/1447 + setup_kfails structs-tld x86_64-*-* gdb/1447 + gdb_test "p/c L${n}" " = [zed $n]" "zed L for return; ${tests}" # Force the "return". This checks that the return is always # performed, and that GDB correctly reported this to the user. @@ -334,6 +343,9 @@ proc test_struct_returns { n } { set test "value foo returned; ${tests}" setup_kfails structs-*tld* i*86-*-* gdb/1447 + setup_kfails structs-*tld* sparc64-*-* gdb/1447 + setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447 + setup_kfails structs-*tld* x86_64-*-* gdb/1447 gdb_test_multiple "p/c L${n}" "${test}" { -re " = [foo ${n}].*${gdb_prompt} $" { if $return_value_unknown { @@ -385,6 +397,9 @@ proc test_struct_returns { n } { # Check that the program invalidated the relevant global. setup_kfails structs-tld i*86-*-* gdb/1447 + setup_kfails structs-tld sparc64-*-* gdb/1447 + setup_kfails structs-tld sparc*-*-solaris2* gdb/1447 + setup_kfails structs-tld x86_64-*-* gdb/1447 gdb_test "p/c L${n}" " = [zed $n]" "zed L for finish; ${tests}" # Finish the function, set 'finish_value_unknown" to non-empty if the @@ -407,6 +422,9 @@ proc test_struct_returns { n } { # check that the variable was cleared, is printed. set test "value foo finished; ${tests}" setup_kfails structs-*tld* i*86-*-* gdb/1447 + setup_kfails structs-*tld* sparc64-*-* gdb/1447 + setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447 + setup_kfails structs-*tld* x86_64-*-* gdb/1447 gdb_test_multiple "p/c" "${test}" { -re "[foo ${n}]\[\r\n\]+${gdb_prompt} $" { if $finish_value_unknown { diff --git a/gdb/testsuite/gdb.base/volatile.exp b/gdb/testsuite/gdb.base/volatile.exp index faf62b9847b..c12e3d88eae 100644 --- a/gdb/testsuite/gdb.base/volatile.exp +++ b/gdb/testsuite/gdb.base/volatile.exp @@ -1,4 +1,4 @@ -# Copyright 1997, 1998, 1999, 2003 Free Software Foundation, Inc. +# Copyright 1997, 1998, 1999, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -55,28 +55,15 @@ if [get_compiler_info ${binfile}] { return -1; } -if {$hp_aCC_compiler || $hp_cc_compiler} { - set lang "c++" -} else { - set lang "" -} - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug $lang]] != "" } { +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -remote_exec build "rm -f ${binfile}.ci" -if [get_compiler_info ${binfile}] { - return -1 -} - gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} -source ${binfile}.ci - # # set it up at a breakpoint so we can play with the variable values # @@ -94,6 +81,11 @@ proc local_compiler_xfail_check { } { setup_xfail "*-*-*" } } + + global hp_cc_compiler + if { $hp_cc_compiler } { + setup_xfail "hppa*-*-hpux*" + } } send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $" diff --git a/gdb/testsuite/gdb.cp/classes.exp b/gdb/testsuite/gdb.cp/classes.exp index 60f5ab75dc4..16a4c3b3f67 100644 --- a/gdb/testsuite/gdb.cp/classes.exp +++ b/gdb/testsuite/gdb.cp/classes.exp @@ -1,5 +1,5 @@ # Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003 Free Software Foundation, Inc. +# 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,12 +19,13 @@ # bug-gdb@prep.ai.mit.edu # This file was written by Fred Fish. (fnf@cygnus.com) +# And rewritten by Michael Chastain . set ws "\[\r\n\t \]+" set nl "\[\r\n\]+" if $tracelevel then { - strace $tracelevel + strace $tracelevel } if { [skip_cplus_tests] } { continue } @@ -33,559 +34,571 @@ set testfile "misc" set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} -# Create and source the file that provides information about the compiler -# used to compile the test case. - -if [get_compiler_info ${binfile} "c++"] { - return -1 -} - if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -# # Test ptype of class objects. # +# This code accepts the output of gcc v2 and v3, dwarf-2 and stabs+. +# It could use some expansion with other compilers such as hp-ux ac++. +# +# There are lots of variations in the output: +# +# . gcc -stabs+ emits debug info for implicit member functions: +# operator=, copy ctor, ctor. gcc -gdwarf-2 does not. +# +# . gcc with abi version 1 puts the implicit member functions +# at the beginning of the member function list; with abi version 2, +# the implicit member functions are at the end of the member function +# list. This appears as an output difference with -gstabs+. +# gcc 3.3.X defaults to abi version 1, and gcc 3.4 will default +# to abi version 2. +# +# . gcc v2 shows data members for virtual base pointers. +# gcc v3 does not. +# +# . gdb always prints "class" for both "class" and "struct". +# In the future, I should accept "struct" in case gdb improves. proc test_ptype_class_objects {} { global gdb_prompt global ws global nl - # Note that struct members are public by default, so we don't print - # "public:" for the public members of structs. - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # Simple type. - send_gdb "ptype struct default_public_struct\n" - gdb_expect { - -re "type = struct default_public_struct \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype struct default_public_struct" "ptype struct default_public_struct" { + -re "type = class default_public_struct \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype struct default_public_struct" } - -re "type = class default_public_struct \{$nl.*int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + -re "type = class default_public_struct \{${ws}public:${ws}int a;${ws}int b;${ws}default_public_struct ?& ?operator ?=\\(default_public_struct const ?&\\);${ws}default_public_struct\\(default_public_struct const ?&\\);${ws}default_public_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype struct default_public_struct" } - -re ".*$gdb_prompt $" { fail "ptype struct default_public_struct" } - timeout { fail "ptype struct default_public_struct (timeout)" ; return } } - # Note that struct members are public by default, so we don't print - # "public:" for the public members of structs. - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # Same test, slightly different type. - send_gdb "ptype struct explicit_public_struct\n" - gdb_expect { - -re "type = struct explicit_public_struct \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype struct explicit_public_struct" "ptype struct explicit_public_struct" { + -re "type = class explicit_public_struct \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype struct explicit_public_struct" } - -re "type = class explicit_public_struct \{$nl.*int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + -re "type = class explicit_public_struct \{${ws}public:${ws}int a;${ws}int b;${ws}explicit_public_struct ?& ?operator ?=\\(explicit_public_struct const ?&\\);${ws}explicit_public_struct\\(explicit_public_struct const ?&\\);${ws}explicit_public_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype struct explicit_public_struct" } - -re ".*$gdb_prompt $" { fail "ptype struct explicit_public_struct" } - timeout { fail "ptype struct explicit_public_struct (timeout)" ; return } } - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # Same test, slightly different type. - send_gdb "ptype struct protected_struct\n" - gdb_expect { - -re "type = struct protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype struct protected_struct" "ptype struct protected_struct" { + -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype struct protected_struct" } - -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;${ws}public:${ws}protected_struct ?& ?operator ?=\\(protected_struct const ?&\\);${ws}protected_struct\\(protected_struct const ?&\\);${ws}protected_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype struct protected_struct" } - -re ".*$gdb_prompt $" { fail "ptype struct protected_struct" } - timeout { fail "ptype struct protected_struct (timeout)" ; return } } - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # Same test, slightly different type. - send_gdb "ptype struct private_struct\n" - gdb_expect { - -re "type = struct private_struct \{${ws}private:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype struct private_struct" "ptype struct private_struct" { + -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype struct private_struct" } - -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;${ws}public:${ws}private_struct ?& ?operator ?=\\(private_struct const ?&\\);${ws}private_struct\\(private_struct const ?&\\);${ws}private_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype struct private_struct" } - -re ".*$gdb_prompt $" { fail "ptype struct private_struct" } - timeout { fail "ptype struct private_struct (timeout)" ; return } } - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # Similar test, bigger type. - send_gdb "ptype struct mixed_protection_struct\n" - gdb_expect { - -re "type = struct mixed_protection_struct \{${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype struct mixed_protection_struct" "ptype struct mixed_protection_struct" { + -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype struct mixed_protection_struct" } - -re "type = struct mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" { - pass "ptype struct mixed_protection_struct (extra public)" - } - -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" { + -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;${ws}public:${ws}mixed_protection_struct ?& ?operator ?=\\(mixed_protection_struct const ?&\\);${ws}mixed_protection_struct\\(mixed_protection_struct const ?&\\);${ws}mixed_protection_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype struct mixed_protection_struct" } - -re ".*$gdb_prompt $" { fail "ptype struct mixed_protection_struct" } - timeout { fail "ptype struct mixed_protection_struct (timeout)" ; return } } - # Accept it if gdb just fails to distinguish between - # class and struct, and everything else is OK. + # All that again with "class" instead of "struct". + # gdb does not care about the difference anyways. - send_gdb "ptype class public_class\n" - gdb_expect { - -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class public_class" "ptype class public_class" { + -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class public_class" } - -re "type = struct public_class \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;${ws}public_class ?& ?operator ?=\\(public_class const ?&\\);${ws}public_class\\(public_class const ?&\\);${ws}public_class\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype class public_class" } - -re ".*$gdb_prompt $" { fail "ptype class public_class" } - timeout { fail "ptype class public_class (timeout)" ; return } } - send_gdb "ptype class protected_class\n" - gdb_expect { - -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + # Same test, slightly different type. + + gdb_test_multiple "ptype class protected_class" "ptype class protected_class" { + -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class protected_class" } - -re "type = struct protected_class \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" { - fail "ptype class protected_class" + -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;${ws}public:${ws}protected_class ?& ?operator ?=\\(protected_class const ?&\\);${ws}protected_class\\(protected_class const ?&\\);${ws}protected_class\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class protected_class" } - -re ".*$gdb_prompt $" { fail "ptype class protected_class" } - timeout { fail "ptype class protected_class (timeout)" ; return } } - # Accept it if gdb just emits a superflous "private:" - # attribute, since classes default to private and for consistency with - # structs (where we don't print the "public:" attribute) we don't print - # the "private:" attribute. + # Same test, slightly different type. + # The 'private' is optional but gdb always prints it. - send_gdb "ptype class default_private_class\n" - gdb_expect { - -re "type = class default_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class default_private_class" "ptype class default_private_class" { + -re "type = class default_private_class \{${ws}(private:${ws}|)int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class default_private_class" } - -re "type = class default_private_class \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + -re "type = class default_private_class \{${ws}(private:${ws}|)int a;${ws}int b;${ws}public:${ws}default_private_class ?& ?operator ?=\\(default_private_class const ?&\\);${ws}default_private_class\\(default_private_class const ?&\\);${ws}default_private_class\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype class default_private_class" } - -re ".*$gdb_prompt $" { fail "ptype class default_private_class" } - timeout { fail "ptype class default_private_class (timeout)" ; return } } - send_gdb "ptype class explicit_private_class\n" - gdb_expect { - -re "type = class explicit_private_class \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { + # Same test, slightly different type. + + gdb_test_multiple "ptype class explicit_private_class" "ptype class explicit_private_class" { + -re "type = class explicit_private_class \{${ws}(private:${ws}|)int a;${ws}int b;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class explicit_private_class" } - -re "type = class explicit_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { - pass "ptype class explicit_private_class" - } - -re "type = struct explicit_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" { - fail "ptype class explicit_private_class" + -re "type = class explicit_private_class \{${ws}(private:${ws}|)int a;${ws}int b;${ws}public:${ws}explicit_private_class ?& ?operator ?=\\(explicit_private_class const ?&\\);${ws}explicit_private_class\\(explicit_private_class const ?&\\);${ws}explicit_private_class\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class explicit_private_class" } - -re ".*$gdb_prompt $" { fail "ptype class explicit_private_class" } - timeout { fail "ptype class explicit_private_class (timeout)" ; return } } - send_gdb "ptype class mixed_protection_class\n" - gdb_expect { - -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" { + # Similar test, bigger type. + + gdb_test_multiple "ptype class mixed_protection_class" "ptype struct mixed_protection_class" { + -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class mixed_protection_class" } - -re "type = struct mixed_protection_class \{${ws}int a;${ws}int b;${ws}int c;${ws}int d;${ws}int e;${ws}int f;${ws}int g;${ws}int h;${ws}int i;$nl.*\}$nl$gdb_prompt $" { - fail "ptype class mixed_protection_class" + -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;${ws}public:${ws}mixed_protection_class ?& ?operator ?=\\(mixed_protection_class const ?&\\);${ws}mixed_protection_class\\(mixed_protection_class const ?&\\);${ws}mixed_protection_class\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class mixed_protection_class" } - -re ".*$gdb_prompt $" { fail "ptype class mixed_protection_class" } - timeout { fail "ptype class mixed_protection_class (timeout)" ; return } } - # This class does not use any C++-specific features, so it's fine for - # it to print as "struct". - send_gdb "ptype class A\n" - gdb_expect { - -re "type = (class|struct) A \{(${ws}public:|)${ws}int a;${ws}int x;((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\((A const|const A) ?&\\);)|(${ws}A\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { + # Here are some classes with inheritance. + + # Base class. + + gdb_test_multiple "ptype class A" "ptype class A" { + -re "type = class A \{${ws}public:${ws}int a;${ws}int x;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class A" } - -re ".*$gdb_prompt $" { - fail "ptype class A" - } - timeout { - fail "ptype class A (timeout)" - return + -re "type = class A \{${ws}public:${ws}int a;${ws}int x;${ws}A ?& ?operator ?=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class A" } } - send_gdb "ptype class B\n" - gdb_expect { - -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + # Derived class. + + gdb_test_multiple "ptype class B" "ptype class B" { + -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class B" } - -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(B const ?&\\);)|(${ws}B\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class B (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class B" - } - timeout { - fail "ptype class B (timeout)" - return + -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;${ws}B ?& ?operator ?=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class B" } } - send_gdb "ptype class C\n" - gdb_expect { - -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + # Derived class. + + gdb_test_multiple "ptype class C" "ptype class C" { + -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class C" } - -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(C const ?&\\);)|(${ws}C\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class C (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class C" - } - timeout { - fail "ptype class C (timeout)" - return + -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;${ws}C ?& ?operator ?=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class C" } } - send_gdb "ptype class D\n" - gdb_expect { - -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + # Derived class, multiple inheritance. + + gdb_test_multiple "ptype class D" "ptype class D" { + -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class D" } - -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(D const ?&\\);)|(${ws}D\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class D (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class D" - } - timeout { - fail "ptype class D (timeout)" - return + -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;${ws}D ?& ?operator ?=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class D" } } - send_gdb "ptype class E\n" - gdb_expect { - -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + # Derived class. + + gdb_test_multiple "ptype class E" "ptype class E" { + -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class E" } - -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\((E const|const E) ?&\\);)|(${ws}E\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { + -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;${ws}E ?& ?operator ?=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype class E" } - -re ".*$gdb_prompt $" { - fail "ptype class E" - } - timeout { - fail "ptype class E (timeout)" - return - } } - # With g++ 2.x and stabs debug info, we misinterpret static methods - # whose name matches their argument mangling. - send_gdb "ptype class Static\n" - gdb_expect { - -re "type = (class|struct) Static \{(${ws}public:|)${ws}Static & operator=\\(Static const ?&\\);${ws}Static\\((Static const|const Static) ?&\\);${ws}Static\\((void|)\\);${ws}static void ii\\(int, int\\);${ws}\}$nl$gdb_prompt $" { + # This is a break from inheritance tests. + # + # gcc 2.X with stabs (stabs or stabs+?) used to have a problem with + # static methods whose name is the same as their argument mangling. + + gdb_test_multiple "ptype class Static" "ptype class Static" { + -re "type = class Static \{${ws}public:${ws}static void ii\\(int, int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class Static" } - -re "type = (class|struct) Static \{(${ws}public:|)${ws}static void ii\\(int, int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class Static \{${ws}public:${ws}Static ?& ?operator ?=\\(Static const ?&\\);${ws}Static\\(Static const ?&\\);${ws}Static\\((void|)\\);${ws}static void ii\\(int, int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ pass "ptype class Static" } - -re ".*$gdb_prompt $" { - fail "ptype class Static" - } - timeout { - fail "ptype class Static (timeout)" - return + -re "type = class Static \{${ws}public:${ws}static void ii\\(int, int\\);${ws}Static ?& ?operator ?=\\(Static const ?&\\);${ws}Static\\(Static const ?&\\);${ws}Static\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class Static" } } - send_gdb "ptype class vA\n" - gdb_expect { - -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;${ws}\}$nl$gdb_prompt $" { + # Here are some virtual inheritance tests. + + gdb_test_multiple "ptype class vA" "ptype class vA" { + -re "type = class vA \{${ws}public:${ws}int va;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class vA" } - -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;${ws}vA & operator=\\(vA const ?&\\);${ws}vA\\((vA const|const vA) ?&\\);${ws}vA\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class vA \{${ws}public:${ws}int va;${ws}int vx;${ws}vA ?& ?operator ?=\\(vA const ?&\\);${ws}vA\\(vA const ?&\\);${ws}vA\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ pass "ptype class vA" } - -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;((${ws}vA & operator=\\(vA const ?&\\);)|(${ws}vA\\(vA const ?&\\);)|(${ws}vA\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class vA (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class vA" - } - timeout { - fail "ptype class vA (timeout)" - return - } } - # Accept the form with embedded GNU style mangled virtual table constructs - # for now, but with a FIXME. At some future point, gdb should use a - # portable representation for the virtual table constructs. - - # The format of a g++ virtual base pointer. - set vbptr "(_vb\[$.\]|__vb_)\[0-9\]?" + # With gcc 2, gdb prints the virtual base pointer. + # With gcc 3, gdb does not print the virtual base pointer. + # drow considers it a gdb bug if gdb prints the vbptr. - send_gdb "ptype class vB\n" - gdb_expect { - -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}vB & operator=\\(vB const ?&\\);${ws}vB\\((vB const|const vB) ?&\\);${ws}vB\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class vB" "ptype class vB" { + -re "type = class vB : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.2vA;${ws}public:${ws}int vb;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: kfail this + fail "ptype class vB" + } + -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class vB" } - -re "type = class vB : public virtual vA \{${ws}private:${ws}vA \\*${vbptr}vA;${ws}public:${ws}int vb;${ws}int vx;${ws}vB & operator=\\(vB const ?&\\);${ws}vB\\(int, vB const ?&\\);${ws}vB\\(int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class vB : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.vA;${ws}public:${ws}int vb;${ws}int vx;${ws}vB ?& ?operator ?=\\(vB const ?&\\);${ws}vB\\(int, ?vB const ?&\\);${ws}vB\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # See the hidden "in-charge" ctor parameter! + # TODO: kfail this setup_xfail "*-*-*" fail "ptype class vB (FIXME: non-portable virtual table constructs)" } - -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}\}$nl$gdb_prompt $" { - pass "ptype class vB" - } - -re "type = class vB : public virtual vA \{${ws}private:${ws}vA \\*_vb.vA;${ws}public:${ws}int vb;${ws}int vx;((${ws}vB & operator=\\(vB const ?&\\);)|(${ws}vB\\(int, vB const ?&\\);)|(${ws}vB\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - setup_xfail "*-*-*" - fail "ptype class vB (FIXME) (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class vB" - } - timeout { - fail "ptype class vB (timeout)" - return + -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}vB ?& ?operator ?=\\(vB const ?&\\);${ws}vB\\(vB const ?&\\);${ws}vB\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class vB" } } - # Accept the form with embedded GNU style mangled virtual table constructs - # for now, but with a FIXME. At some future point, gdb should use a - # portable representation for the virtual table constructs. + # Another class with a virtual base. - send_gdb "ptype class vC\n" - gdb_expect { - -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}vC & operator=\\(vC const ?&\\);${ws}vC\\((vC const|const vC) ?&\\);${ws}vC\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class vC" "ptype class vC" { + -re "type = class vC : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.2vA;${ws}public:${ws}int vc;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: kfail + fail "ptype class vC" + } + -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class vC" } - -re "type = class vC : public virtual vA \{${ws}private:${ws}vA \\*${vbptr}vA;${ws}public:${ws}int vc;${ws}int vx;${ws}vC & operator=\\(vC const ?&\\);${ws}vC\\(int, vC const ?&\\);${ws}vC\\(int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class vC : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.vA;${ws}public:${ws}int vc;${ws}int vx;${ws}vC ?& ?operator ?=\\(vC const ?&\\);${ws}vC\\(int, ?vC const ?&\\);${ws}vC\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # See the hidden "in-charge" ctor parameter! + # TODO: kfail setup_xfail "*-*-*" fail "ptype class vC (FIXME: non-portable virtual table constructs)" } - -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}\}$nl$gdb_prompt $" { - pass "ptype class vC" - } - -re "type = class vC : public virtual vA \{${ws}private:${ws}vA \\*_vb.vA;${ws}public:${ws}int vc;${ws}int vx;((${ws}vC & operator=\\(vC const ?&\\);)|(${ws}vC\\(int, vC const ?&\\);)|(${ws}vC\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - setup_xfail "*-*-*" - fail "ptype class vC (FIXME) (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class vC" - } - timeout { - fail "ptype class vC (timeout)" - return + -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}vC ?& ?operator ?=\\(vC const ?&\\);${ws}vC\\(vC const ?&\\);${ws}vC\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class vC" } } - # Accept the form with embedded GNU style mangled virtual table constructs - # for now, but with a FIXME. At some future point, gdb should use a - # portable representation for the virtual table constructs. + # The classic diamond inheritance. - send_gdb "ptype class vD\n" - gdb_expect { - -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}vD & operator=\\(vD const ?&\\);${ws}vD\\((vD const|const vD) ?&\\);${ws}vD\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class vD" "ptype class vD" { + -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC ?\\* ?_vb.2vC;${ws}vB ?\\* ?_vb.2vB;${ws}public:${ws}int vd;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: kfail + fail "ptype class vD" + } + -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class vD" } - -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC \\*${vbptr}vC;${ws}vB \\*${vbptr}vB;${ws}public:${ws}int vd;${ws}int vx;${ws}vD & operator=\\(vD const ?&\\);${ws}vD\\(int, vD const ?&\\);${ws}vD\\(int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC ?\\* ?_vb.vC;${ws}vB ?\\* ?_vb.vB;${ws}public:${ws}int vd;${ws}int vx;${ws}vD ?& ?operator ?=\\(vD const ?&\\);${ws}vD\\(int, ?vD const ?&\\);${ws}vD\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # See the hidden "in-charge" ctor parameter! + # TODO: kfail setup_xfail "*-*-*" fail "ptype class vD (FIXME: non-portable virtual table constructs)" } - -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}\}$nl$gdb_prompt $" { - pass "ptype class vD" - } - -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC \\*_vb.vC;${ws}vB \\*_vb.vB;${ws}public:${ws}int vd;${ws}int vx;((${ws}vD & operator=\\(vD const ?&\\);)|(${ws}vD\\(int, vD const ?&\\);)|(${ws}vD\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - setup_xfail "*-*-*" - fail "ptype class vD (FIXME) (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class vD" - } - timeout { - fail "ptype class vD (timeout)" - return + -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}vD ?& ?operator ?=\\(vD const ?&\\);${ws}vD\\(vD const ?&\\);${ws}vD\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class vD" } } - # Accept the form with embedded GNU style mangled virtual table constructs - # for now, but with a FIXME. At some future point, gdb should use a - # portable representation for the virtual table constructs. + # One more case of virtual derivation. - send_gdb "ptype class vE\n" - gdb_expect { - -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}vE & operator=\\(vE const ?&\\);${ws}vE\\((vE const|const vE) ?&\\);${ws}vE\\((void|)\\);${ws}\}$nl$gdb_prompt $" { + gdb_test_multiple "ptype class vE" "ptype class vE" { + -re "type = class vE : public virtual vD \{${ws}private:${ws}vD ?\\* ?_vb.2vD;${ws}public:${ws}int ve;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: kfail + fail "ptype class vE" + } + -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class vE" } - -re "type = class vE : public virtual vD \{${ws}private:${ws}vD \\*${vbptr}vD;${ws}public:${ws}int ve;${ws}int vx;${ws}vE & operator=\\(vE const ?&\\);${ws}vE\\(int, vE const ?&\\);${ws}vE\\(int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class vE : public virtual vD \{${ws}private:${ws}vD ?\\* ?_vb.vD;${ws}public:${ws}int ve;${ws}int vx;${ws}vE ?& ?operator ?=\\(vE const ?&\\);${ws}vE\\(int, ?vE const ?&\\);${ws}vE\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # See the hidden "in-charge" ctor parameter! + # TODO: kfail setup_xfail "*-*-*" fail "ptype class vE (FIXME: non-portable virtual table constructs)" } - -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}\}$nl$gdb_prompt $" { - pass "ptype class vE" - } - -re "type = class vE : public virtual vD \{${ws}private:${ws}vD \\*_vb.vD;${ws}public:${ws}int ve;${ws}int vx;((${ws}vE & operator=\\(vE const ?&\\);)|(${ws}vE\\(int, vE const ?&\\);)|(${ws}vE\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - setup_xfail "*-*-*" - fail "ptype class vE (FIXME) (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class vE" - } - timeout { - fail "ptype class vE (timeout)" - return + -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}vE ?& ?operator ?=\\(vE const ?&\\);${ws}vE\\(vE const ?&\\);${ws}vE\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class vE" } } - send_gdb "ptype class Base1\n" - gdb_expect { - -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1 & operator=\\(Base1 const ?&\\);${ws}Base1\\(((Base1 const)|(const Base1)) ?&\\);${ws}Base1\\(int\\);${ws}\}$nl$gdb_prompt $" { + # Another inheritance series. + + gdb_test_multiple "ptype class Base1" "ptype class Base1" { + -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class Base1" } - -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);${ws}\}$nl$gdb_prompt $" { + -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1 ?& ?operator ?=\\(Base1 const ?&\\);${ws}Base1\\(Base1 const ?&\\);${ws}Base1\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ pass "ptype class Base1" } - -re "type = class Base1 \{${ws}public:${ws}int x;((${ws}Base1 & operator=\\(Base1 const ?&\\);)|(${ws}Base1\\(Base1 const ?&\\);)|(${ws}Base1\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class Base1 (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class Base1" - } - timeout { - fail "ptype class Base1 (timeout)" - return + -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);${ws}Base1 ?& ?operator ?=\\(Base1 const ?&\\);${ws}Base1\\(Base1 const ?&\\);$nl\}$nl$gdb_prompt $" { + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class Base1" } } - send_gdb "ptype class Foo\n" - gdb_expect { - -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;\r\n${ws}Foo\\(int, int\\);${ws}int operator!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" { - pass "ptype class Foo" - } - -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo & operator=\\(Foo const ?&\\);${ws}Foo\\((Foo const|const Foo) ?&\\);${ws}Foo\\(int, int\\);${ws}int operator!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);${ws}\}$nl$gdb_prompt $" { + # The second base class. + + gdb_test_multiple "ptype class Foo" "ptype class Foo" { + -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class Foo" } - -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;((${ws}Foo & operator=\\(Foo const ?&\\);)|(${ws}Foo\\(Foo const ?&\\);)|(${ws}Foo\\(int, int\\);)|(${ws}int operator!\\((void|)\\);)|(${ws}int operator int\\((void|)\\);)|(${ws}int times\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class Foo (obsolescent gcc or gdb)" + -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}int operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # TODO: "int operator int()" is a bug + # kfail "gdb/1497" "ptype class Foo" + pass "ptype class Foo" } - -re ".*$gdb_prompt $" { - fail "ptype class Foo" + -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + pass "ptype class Foo" } - timeout { - fail "ptype class Foo (timeout)" - return + -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);$nl\}$nl$gdb_prompt $" { + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class Foo" } } - send_gdb "ptype class Bar\n" - gdb_expect { - -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar & operator=\\(Bar const ?&\\);${ws}Bar\\((Bar const|const Bar) ?&\\);${ws}Bar\\(int, int, int\\);${ws}\}$nl$gdb_prompt $" { + # A multiple inheritance derived class. + + gdb_test_multiple "ptype class Bar" "ptype class Bar" { + -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar\\(int, int, int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 pass "ptype class Bar" } - -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;((${ws}Bar & operator=\\(Bar const ?&\\);)|(${ws}Bar\\(Bar const ?&\\);)|(${ws}Bar\\(int, int, int\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype class Bar (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype class Bar" + -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar ?& ?operator ?=\\(Bar const ?&\\);${ws}Bar\\(Bar const ?&\\);${ws}Bar\\(int, int, int\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + pass "ptype class Bar" } - timeout { - fail "ptype class Bar (timeout)" - return + -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar\\(int, int, int\\);${ws}Bar ?& ?operator ?=\\(Bar const ?&\\);${ws}Bar\\(Bar const ?&\\);$nl\}$nl$gdb_prompt $" { + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype class Bar" } } } -# # Test simple access to class members. -# +# TODO: these test names are gross! +# Just let the test name default. proc test_non_inherited_member_access {} { global gdb_prompt # Print non-inherited members of g_A. - gdb_test "print g_A.a" ".* = 1" "g_A.a incorrect" - gdb_test "print g_A.x" ".* = 2" "g_A.x incorrect" # Print non-inherited members of g_B. - gdb_test "print g_B.b" ".* = 5" "g_B.b incorrect" - gdb_test "print g_B.x" ".* = 6" "g_B.x incorrect" # Print non-inherited members of g_C. - gdb_test "print g_C.c" ".* = 9" "g_C.c incorrect" - gdb_test "print g_C.x" ".* = 10" "g_C.x incorrect" # Print non-inherited members of g_D. - gdb_test "print g_D.d" ".* = 19" "g_D.d incorrect" - gdb_test "print g_D.x" ".* = 20" "g_D.x incorrect" # Print non-inherited members of g_E. - gdb_test "print g_E.e" ".* = 31" "g_E.e incorrect" - gdb_test "print g_E.x" ".* = 32" "g_E.x incorrect" } -# -# Try access to non-members that are members of another class. -# Should give errors. -# +# Test access to members of other classes. +# gdb should refuse to print them. +# (I feel old -- I remember when this was legal in C -- chastain). +# TODO: Again, change the silly test names. proc test_wrong_class_members {} { global gdb_prompt gdb_test "print g_A.b" "There is no member( or method|) named b." "print g_A.b should be error" - gdb_test "print g_B.c" "There is no member( or method|) named c." "print g_B.c should be error" - gdb_test "print g_B.d" "There is no member( or method|) named d." "print g_B.d should be error" - gdb_test "print g_C.b" "There is no member( or method|) named b." "print g_C.b should be error" - gdb_test "print g_C.d" "There is no member( or method|) named d." "print g_C.d should be error" - gdb_test "print g_D.e" "There is no member( or method|) named e." "print g_D.e should be error" } -# -# Try access to non-members that are not members of any class. -# Should give errors. -# +# Test access to names that are not members of any class. +# TODO: test names again. proc test_nonexistent_members {} { global gdb_prompt gdb_test "print g_A.y" "There is no member( or method|) named y." "print g_A.y should be error" - gdb_test "print g_B.z" "There is no member( or method|) named z." "print g_B.z should be error" - gdb_test "print g_C.q" "There is no member( or method|) named q." "print g_C.q should be error" - gdb_test "print g_D.p" "There is no member( or method|) named p." "print g_D.p should be error" } -# # Call a method that expects a base class parameter with base, inherited, # and unrelated class arguments. -# proc test_method_param_class {} { gdb_test "call class_param.Aptr_a (&g_A)" ".* = 1" "base class param->a" @@ -606,62 +619,70 @@ proc test_method_param_class {} { gdb_test "call class_param.Aval_a (foo)" "Cannot resolve .*" "unrelated class param" } -# # Examine a class with an enum field. -# proc test_enums {} { global gdb_prompt - global hp_aCC_compiler + global nl + global ws # print the object - send_gdb "print obj_with_enum\n" - gdb_expect { - -re "\\$\[0-9\]* = \\{priv_enum = red, x = 0\\}.*$gdb_prompt $" { pass "print obj_with_enum (1)" } - -re "$gdb_prompt $" { fail "print obj_with_enum (1)" } - timeout { fail "(timeout) print obj_with_enum (1)" } - } - send_gdb "next\n" - gdb_expect { - -re "$gdb_prompt $" { pass "next" } - timeout { fail "(timeout) next" } - } + gdb_test "print obj_with_enum" \ + "\\$\[0-9\]+ = \{priv_enum = red, x = 0\}" \ + "print obj_with_enum (1)" + + # advance one line + + gdb_test "next" "" + + # TODO: with gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2, + # gdb says that obj_with_enum is out of scope here and the + # tests after this FAIL. This needs investigation. + # -- chastain 2003-12-30 # print the object again - send_gdb "print obj_with_enum\n" - gdb_expect { - -re "\\$\[0-9\]* = \\{priv_enum = green, x = 0\\}.*$gdb_prompt $" { pass "print obj_with_enum (2)" } - -re "$gdb_prompt $" { fail "print obj_with_enum (2)" } - timeout { fail "(timeout) print obj_with_enum (2)" } - } - # print out the enum member - send_gdb "print obj_with_enum.priv_enum\n" - gdb_expect { - -re "\\$\[0-9\]* = green.*$gdb_prompt $" { pass "print obj_with_enum.priv_enum" } - -re "$gdb_prompt $" { fail "print obj_with_enum.priv_enum" } - timeout { fail "(timeout) print obj_with_enum.priv_enum" } - } + gdb_test "print obj_with_enum" \ + "\\$\[0-9\]+ = \{priv_enum = green, x = 0\}" \ + "print obj_with_enum (2)" + + # print the enum member + + gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = green" # ptype on the enum member - # The third success case is a little dubious, but it's not clear what - # ought to be required of a ptype on a private enum... -sts 19990324 - send_gdb "ptype obj_with_enum.priv_enum\n" - gdb_expect { - -re "type = enum ClassWithEnum::PrivEnum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" } - -re "type = enum PrivEnum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" } - -re "type = enum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" } - -re "$gdb_prompt $" { fail "ptype obj_with_enum.priv_enum" } - timeout { fail "(timeout) ptype obj_with_enum.priv_enum" } + + gdb_test_multiple "ptype obj_with_enum.priv_enum" "ptype obj_with_enum.priv_enum" { + -re "type = enum ClassWithEnum::PrivEnum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" { + pass "ptype obj_with_enum.priv_enum" + } + -re "type = enum PrivEnum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + pass "ptype obj_with_enum.priv_enum" + } + -re "type = enum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" { + # This case case is a little dubious, but it's not clear what + # ought to be required of a ptype on a private enum... + # -sts 19990324 + # + # It bugs me that this happens with gcc 3. + # -- chastain 2003-12-30 + # + # gcc 2.95.3 -gstabs+ + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "ptype obj_with_enum.priv_enum" + } } # ptype on the object - send_gdb "ptype obj_with_enum\n" - gdb_expect { - -re "type = class ClassWithEnum \\{\r\n\[ \t\]*public:\r\n\[ \t\]*(enum |)ClassWithEnum::PrivEnum priv_enum;\r\n\[ \t\]*int x;\r\n\\}\r\n$gdb_prompt $" { pass "ptype obj_with_enum" } - -re "type = class ClassWithEnum \\{\r\n\[ \t\]*public:\r\n\[ \t\]*(enum |)PrivEnum priv_enum;\r\n\[ \t\]*int x;.*\\}\r\n$gdb_prompt $" - { + gdb_test_multiple "ptype obj_with_enum" "ptype obj_with_enum" { + -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)ClassWithEnum::PrivEnum priv_enum;${ws}int x;$nl\}$nl$gdb_prompt $" { + pass "ptype obj_with_enum" + } + -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)PrivEnum priv_enum;${ws}int x;$nl\}$nl$gdb_prompt $" { # NOTE: carlton/2003-02-28: One could certainly argue that # this output is acceptable: PrivEnum is a member of # ClassWithEnum, so there's no need to explicitly qualify @@ -670,150 +691,85 @@ proc test_enums {} { # of ClassWithEnum, so we do that output for a bad reason # instead of a good reason. Under stabs, we probably # can't get this right; under DWARF-2, we can. + # + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + kfail "gdb/57" "ptype obj_with_enum" + } + -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)PrivEnum priv_enum;${ws}int x;${ws}ClassWithEnum ?& ?operator ?=\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ kfail "gdb/57" "ptype obj_with_enum" } - -re "$gdb_prompt $" { fail "ptype obj_with_enum" } - timeout { fail "(timeout) ptype obj_with_enum" } + -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)ClassWithEnum::PrivEnum priv_enum;${ws}int x;${ws}ClassWithEnum ?& ?operator ?=\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\((void|)\\);$nl\}$nl$gdb_prompt $" { + # I think this is a PASS, but only carlton knows for sure. + # -- chastain 2003-12-30 + # + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + fail "ptype obj_with_enum" + } } - # We'll do this test twice, because of a parser bug: see - # PR gdb/826. + # I'll do this test two different ways, because of a parser bug. + # See PR gdb/826. - send_gdb "print (ClassWithEnum::PrivEnum) 42\n" - gdb_expect { - -re "\\$\[0-9\]* = yellow.*$gdb_prompt $" { pass "print (ClassWithEnum::PrivEnum) 42" } - -re "A parse error in expression, near `42'.\r\n$gdb_prompt $" { - # bison 1.35 - kfail "gdb/826" "print (ClassWithEnum::PrivEnum) 42" + gdb_test_multiple "print (ClassWithEnum::PrivEnum) 42" "print (ClassWithEnum::PrivEnum) 42" { + -re "\\$\[0-9\]+ = yellow$nl$gdb_prompt $" { + pass "print (ClassWithEnum::PrivEnum) 42" } - -re "A syntax error in expression, near `42'.\r\n$gdb_prompt $" { - # bison 1.875 + -re "A (parse|syntax) error in expression, near `42'.$nl$gdb_prompt $" { + # "parse error" is bison 1.35. + # "syntax error" is bison 1.875. kfail "gdb/826" "print (ClassWithEnum::PrivEnum) 42" } - -re "$gdb_prompt $" { fail "print (ClassWithEnum::PrivEnum) 42" } - timeout { fail "(timeout) print (ClassWithEnum::PrivEnum) 42" } } - send_gdb "print ('ClassWithEnum::PrivEnum') 42\n" - gdb_expect { - -re "\\$\[0-9\]* = yellow.*$gdb_prompt $" { pass "print ('ClassWithEnum::PrivEnum') 42" } - -re "No symbol \"ClassWithEnum::PrivEnum\" in current context.\r\n$gdb_prompt $" - { kfail "gdb/57" "print ('ClassWithEnum::PrivEnum') 42" } - -re "$gdb_prompt $" { fail "print ('ClassWithEnum::PrivEnum') 42" } - timeout { fail "(timeout) print ('ClassWithEnum::PrivEnum') 42" } + gdb_test_multiple "print ('ClassWithEnum::PrivEnum') 42" "print ('ClassWithEnum::PrivEnum') 42" { + -re "\\$\[0-9\]+ = yellow$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "print ('ClassWithEnum::PrivEnum') 42" + } + -re "No symbol \"ClassWithEnum::PrivEnum\" in current context.$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 + # gcc 2.95.3 -gstabs+ + kfail "gdb/57" "print ('ClassWithEnum::PrivEnum') 42" + } } } -# # Pointers to class members -# proc test_pointers_to_class_members {} { global gdb_prompt - global decimal - global nl - - gdb_test "print Bar::z" ".* = .int\[ \]*\[( \]*Bar::&\[)\]+\[ \]*Bar::z" "print Bar::z" - gdb_test "print &Foo::x" ".* = .int\[ \]*\[( \]*Foo::\[*)\]+\[ \]*&Foo::x" "print &Foo::x" - - gdb_test "print (int)&Foo::x" ".* = 0" "print (int)&Foo::x" - - send_gdb "print (int)&Bar::y == 2*sizeof(int)\n" - gdb_expect { - -re ".* = true$nl$gdb_prompt $" { - pass "print (int)&Bar::y == 2*sizeof(int)" - } - -re "There is no field named y.*$gdb_prompt $" { - setup_xfail "*-*-*" - fail "print (int)&Bar::y == 2*sizeof(int)" - } - -re ".*$gdb_prompt $" { fail "print (int)&Bar::y == 2*sizeof(int)" } - timeout { fail "print (int)&Bar::y == 2*sizeof(int) (timeout)" ; return } - } - - send_gdb "next 2\n" - setup_xfail "*-*-*" - gdb_expect { - -re "$decimal\[ \t\]+inheritance3 \[)(\]+;$nl$gdb_prompt $" {} - -re ".*$gdb_prompt $" { fail "next to inheritance3" ; return } - } - clear_xfail "*-*-*" - - gdb_test "print (int)pmi == sizeof(int)" ".* = false" "print (int)pmi == sizeof(int)" + gdb_test "print Bar::z" "\\$\[0-9\]+ = \\(int ?\\( ?Bar::& ?\\) ?\\) ?Bar::z" + gdb_test "print &Foo::x" "\\$\[0-9\]+ = \\(int ?\\( ?Foo::\\* ?\\) ?\\) ?&Foo::x" + gdb_test "print (int)&Foo::x" "\\$\[0-9\]+ = 0" + gdb_test "print (int)&Bar::y == 2*sizeof(int)" "\\$\[0-9\]+ = true" + + # TODO: this is a bogus test. It's looking at a variable that + # has not even been declared yet, so it's accessing random junk + # on the stack and comparing that it's NOT equal to a specific + # value. It's been like this since gdb 4.10 in 1993! + # -- chastain 2004-01-01 + gdb_test "print (int)pmi == sizeof(int)" ".* = false" } -# # Test static members. -# proc test_static_members {} { global gdb_prompt global hex - global nl - - send_gdb "print Foo::st\n" - gdb_expect { - -re ".* = 100$nl$gdb_prompt $" { - pass "print Foo::st" - } - -re "There is no field named st.*$gdb_prompt $" { - setup_xfail "*-*-*" - fail "print Foo::st" - } - -re ".*$gdb_prompt $" { fail "print Foo::st" } - timeout { fail "print Foo::st (timeout)" ; return } - } - - send_gdb "set foo.st = 200\n" - gdb_expect { - -re ".*$gdb_prompt $" {} - } - - send_gdb "print bar.st\n" - gdb_expect { - -re ".* = 200$nl$gdb_prompt $" { - pass "print bar.st" - } - -re "There is no member( or method|) named st.*$gdb_prompt $" { - setup_xfail "*-*-*" - fail "print bar.st" - } - -re ".*$gdb_prompt $" { fail "print bar.st" } - timeout { fail "print bar.st (timeout)" ; return } - } - - send_gdb "print &foo.st\n" - gdb_expect { - -re ".* = .int \[*)\]+ $hex$nl$gdb_prompt $" { - pass "print &foo.st" - } - -re "There is no member( or method|) named st.*$gdb_prompt $" { - setup_xfail "*-*-*" - fail "print &foo.st" - } - -re ".*$gdb_prompt $" { fail "print &foo.st" } - timeout { fail "print &foo.st (timeout)" ; return } - } - - set got_bar_st 0 - send_gdb "print &Bar::st\n" - gdb_expect { - -re ".* = .int \[*)\]+ $hex$nl$gdb_prompt $" { - pass "print &Bar::st" - set got_bar_st 1 - } - -re "There is no field named st.*$gdb_prompt $" { - setup_xfail "*-*-*" - fail "print &Bar::st" - } - -re ".*$gdb_prompt $" { fail "print &Bar::st" } - timeout { fail "print &Bar::st (timeout)" ; return } - } - if $got_bar_st then { - gdb_test "print *\$" ".* = 200" "print *\$" - } + gdb_test "print Foo::st" "\\$\[0-9\]+ = 100" + gdb_test "set foo.st = 200" "" "" + gdb_test "print bar.st" "\\$\[0-9\]+ = 200" + gdb_test "print &foo.st" "\\$\[0-9\]+ = \\(int ?\\*\\) $hex" + gdb_test "print &Bar::st" "\\$\[0-9\]+ = \\(int ?\\*\\) $hex" + gdb_test "print *\$" "\\$\[0-9\]+ = 200" gdb_test "set print static-members off" "" gdb_test "print csi" \ @@ -840,6 +796,7 @@ proc do_tests {} { global srcdir global binfile global gdb_prompt + global nl set prms_id 0 set bug_id 0 @@ -851,74 +808,71 @@ proc do_tests {} { gdb_reinitialize_dir $srcdir/$subdir gdb_load $binfile - send_gdb "set language c++\n" - gdb_expect -re "$gdb_prompt $" - send_gdb "set width 0\n" - gdb_expect -re "$gdb_prompt $" - - runto_main - test_ptype_class_objects - - if [ runto 'inheritance2' ] then { - test_non_inherited_member_access - test_wrong_class_members - test_nonexistent_members - test_method_param_class - } - - gdb_breakpoint enums2 - if [ gdb_continue "enums2(\\(\\)|)" ]==0 then { - gdb_test "finish" "" "" - test_enums - } - - if [istarget "mips-idt-*"] then { - # Restart because IDT/SIM runs out of file descriptors. - gdb_exit - gdb_start - gdb_reinitialize_dir $srcdir/$subdir - gdb_load $binfile - } - - if [ runto_main ] then { - test_pointers_to_class_members - test_static_members - } + gdb_test "set language c++" "" "" + gdb_test "set width 0" "" "" - if [istarget "mips-idt-*"] then { - # Restart because IDT/SIM runs out of file descriptors. - gdb_exit - gdb_start - gdb_reinitialize_dir $srcdir/$subdir - gdb_load $binfile + if ![runto_main ] then { + perror "couldn't run to breakpoint" + return } - if [ runto marker_reg1 ] then { - - gdb_test "finish" "Run till exit from.*" "finish from marker_reg1" + gdb_breakpoint inheritance2 + gdb_test "continue" ".*Breakpoint .* inheritance2.*" "" - send_gdb "print v.method ()\n" - gdb_expect { - -re "= 82.*$gdb_prompt $" { - pass "calling method for small class" - } - -re "Address requested for identifier .v. which is in register.*$gdb_prompt $" { - setup_xfail "*-*-*" 2972 - fail "calling method for small class" - } - -re ".*$gdb_prompt $" { fail "calling method for small class" } - timeout { fail "calling method for small class (timeout)" } - eof { fail "calling method for small class (eof)" } - } - } + test_ptype_class_objects + test_non_inherited_member_access + test_wrong_class_members + test_nonexistent_members + test_method_param_class + gdb_breakpoint enums2 + gdb_test "continue" ".*Breakpoint .* enums2.*" "continue to enums2(\\(\\)|)" + gdb_test "finish" "" "" + test_enums + + gdb_test "finish" "" "" + test_pointers_to_class_members + test_static_members + + # Now some random tests that were just thrown in here. + + gdb_breakpoint marker_reg1 + gdb_test "continue" ".*Breakpoint .* marker_reg1.*" "" + gdb_test "finish" "Run till exit from.*" "finish from marker_reg1" + + # This class is so small that an instance of it can fit in a register. + # When gdb tries to call a method, it gets embarrassed about taking + # the address of a register. + # + # TODO: I think that message should be a PASS, not an XFAIL. + # gdb prints an informative message and declines to do something + # impossible. + # + # The method call actually succeeds if the compiler allocates very + # small classes in memory instead of registers. So this test does + # not tell us anything interesting if the call succeeds. + # + # -- chastain 2003-12-31 + gdb_test_multiple "print v.method ()" "calling method for small class" { + -re "\\$\[0-9\]+ = 82$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2 + # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2 + # gcc 3.3.2 -gstabs+ + # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+ + pass "calling method for small class" + } + -re "Address requested for identifier \"v\" which is in register .*$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # gcc 2.95.3 -gstabs+ + setup_xfail "*-*-*" 2972 + fail "calling method for small class" + } + } + + # This is a random v2 demangling test. + # This is redundant with existing tests in demangle.exp. + # TODO: Just remove this. + gdb_test "maint demangle inheritance1__Fv" "inheritance1\\(void\\)" "demangle" } do_tests - -send_gdb "maint demangle inheritance1__Fv\n" -gdb_expect { - -re "inheritance1\\(void\\).*$gdb_prompt $" { pass "demangle" } - -re ".*$gdb_prompt $" { fail "demangle" } - timeout { fail "(timeout) demangle" } -} diff --git a/gdb/testsuite/gdb.cp/ctti.exp b/gdb/testsuite/gdb.cp/ctti.exp index 1bc005afed5..a5e75d8136e 100644 --- a/gdb/testsuite/gdb.cp/ctti.exp +++ b/gdb/testsuite/gdb.cp/ctti.exp @@ -1,4 +1,4 @@ -# Copyright 1998, 1999, 2001, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2001, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,253 +17,194 @@ # Please email any bugs, comments, and/or additions to this file to: # bug-gdb@prep.ai.mit.edu - # This file is part of the gdb testsuite # file written by Elena Zannoni (ezannoni@cygnus.com) +# rewritten by Michael Chastain (mec.gnu@mindspring.com) # # source files cttiadd.cc, cttiadd1.cc, cttiadd2.cc, cttiadd3.cc -# +# Call to template instantiations. if $tracelevel then { - strace $tracelevel + strace $tracelevel } if { [skip_cplus_tests] } { continue } -# Check to see if we have an executable to test. If not, then either we -# haven't tried to compile one, or the compilation failed for some reason. -# In either case, just notify the user and skip the tests in this file. - set testfile "cttiadd" -set srcfile ${testfile}.cc -set srcfile1 ${testfile}1.cc -set srcfile2 ${testfile}2.cc -set srcfile3 ${testfile}3.cc -set binfile ${objdir}/${subdir}/${testfile} +set srcfile "${srcdir}/${subdir}/${testfile}.cc" +set srcfile1 "${srcdir}/${subdir}/${testfile}1.cc" +set srcfile2 "${srcdir}/${subdir}/${testfile}2.cc" +set srcfile3 "${srcdir}/${subdir}/${testfile}3.cc" +set objfile "${objdir}/${subdir}/${testfile}.o" +set objfile1 "${objdir}/${subdir}/${testfile}1.o" +set objfile2 "${objdir}/${subdir}/${testfile}2.o" +set objfile3 "${objdir}/${subdir}/${testfile}3.o" +set binfile "${objdir}/${subdir}/${testfile}" + +if { [gdb_compile "${srcfile}" "${objfile}" object {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} -if [get_compiler_info ${binfile} "c++"] { - return -1; +if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -if { [test_compiler_info gcc-*] } then { continue } +if { [gdb_compile "${srcfile2}" "${objfile2}" object {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} -#if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3}" "${binfile}" executable {debug c++}] != "" } { -# gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." -#} +if { [gdb_compile "${srcfile3}" "${objfile3}" object {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} -set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3} -g -o ${binfile}" +if { [gdb_compile "${objfile} ${objfile1} ${objfile2} ${objfile3}" "${binfile}" executable {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} -remote_exec build $cmdline +if [get_compiler_info ${binfile} "c++"] { + return -1; +} gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} - - if ![runto_main] then { perror "couldn't run to breakpoint" continue } +gdb_breakpoint [gdb_get_line_number "marker add1"] +gdb_continue_to_breakpoint "marker add1" -send_gdb "n\n" -gdb_expect { - -re "$decimal.*i = 2;.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - - -send_gdb "n\n" -gdb_expect { - -re "$decimal.*f = 4.5;.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - -send_gdb "n\n" -gdb_expect { - -re "$decimal.*c = add\\(c, c\\);.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - -send_gdb "n\n" -gdb_expect { - -re "$decimal.*i = add\\(i, i\\);.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - -send_gdb "n\n" -gdb_expect { - -re "$decimal.*f = add\\(f, f\\);.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - -send_gdb "n\n" -gdb_expect { - -re "$decimal.*add1\\(\\);.*$gdb_prompt $" { - pass "next " - } - -re ".*$gdb_prompt $" { fail "next " } - timeout { fail "next " } - } - -send_gdb "print c\n" -gdb_expect { - -re ".$decimal = -62.*\r\n$gdb_prompt $" { - pass "print value of c" - } - -re ".*$gdb_prompt $" { fail "print value of c" } - timeout { fail "(timeout) print value of c" } - } +gdb_test "print c" "\\$\[0-9\]+ = -62 .*" +gdb_test "print f" "\\$\[0-9\]+ = 9" +gdb_test "print i" "\\$\[0-9\]+ = 4" +# TODO: this needs more work before actually deploying it. +# So bail out here. -send_gdb "print f\n" -gdb_expect { - -re ".$decimal = 9\r\n$gdb_prompt $" { - pass "print value of f" - } - -re ".*$gdb_prompt $" { fail "print value of f" } - timeout { fail "(timeout) print value of f" } - } - - -send_gdb "print i\n" -gdb_expect { - -re ".$decimal = 4\r\n$gdb_prompt $" { - pass "print value of i" - } - -re ".*$gdb_prompt $" { fail "print value of i" } - timeout { fail "(timeout) print value of i" } - } - - - -send_gdb "print add(2,2)\n" -gdb_expect { - -re ".$decimal = 4\r\n$gdb_prompt $" { - pass "print value of add(2,2)" - } - -re ".*$gdb_prompt $" { fail "print value of add(2,2)" } - timeout { fail "(timeout) print value of add(2,2)" } - } - -send_gdb "print add(2.3,2.3)\n" -gdb_expect { - -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" { - pass "print value of add(2.3,2.3)" - } - -re ".*$gdb_prompt $" { fail "print value of add(2.3,2.3)" } - timeout { fail "(timeout) print value of add(2.3,2.3)" } - } - -send_gdb "print add('A','A')\n" -gdb_expect { - -re ".$decimal = -126.*202.\r\n$gdb_prompt $" { - pass "print value of add('A','A')" - } - -re ".*$gdb_prompt $" { fail "print value of add('A','A')" } - timeout { fail "(timeout) print value of add('A','A')" } - } +if { [ test_compiler_info gcc-*] } then { continue } +gdb_test_multiple "print add(2,2)" "print add(2,2)" { + -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { + pass "print add(2,2)" + } + -re "No symbol \"add\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add(2,2)" + } +} -send_gdb "print add2(2,2)\n" -gdb_expect { - -re ".$decimal = 4\r\n$gdb_prompt $" { - pass "print value of add2(2,2)" - } - -re ".*$gdb_prompt $" { fail "print value of add2(2,2)" } - timeout { fail "(timeout) print value of add2(2,2)" } - } +# Note: 2.25 and 4.5 are exactly representable in IEEE-ish formats +gdb_test_multiple "print add(2.25,2.25)" "print add(2.25,2.25)" { + -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { + pass "print add(2.25,2.25)" + } + -re "No symbol \"add\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add(2.25,2.25)" + } +} -send_gdb "print add2(2.3,2.3)\n" -gdb_expect { - -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" { - pass "print value of add2(2.3,2.3)" - } - -re ".*$gdb_prompt $" { fail "print value of add2(2.3,2.3)" } - timeout { fail "(timeout) print value of add2(2.3,2.3)" } - } +gdb_test_multiple "print add('A','A')" "print add('A','A')" { + -re "\\$\[0-9\]+ = -126 .*\r\n$gdb_prompt $" { + pass "print add('A','A')" + } + -re "No symbol \"add\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add('A','A')" + } +} -send_gdb "print add2('A','A')\n" -gdb_expect { - -re ".$decimal = -126.*202.\r\n$gdb_prompt $" { - pass "print value of add2('A','A')" - } - -re ".*$gdb_prompt $" { fail "print value of add2('A','A')" } - timeout { fail "(timeout) print value of add2('A','A')" } - } +gdb_test_multiple "print add2(2,2)" "print add2(2,2)" { + -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { + pass "print add2(2,2)" + } + -re "No symbol \"add2\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add2(2,2)" + } +} -send_gdb "print add3(2,2)\n" -gdb_expect { - -re ".$decimal = 4\r\n$gdb_prompt $" { - pass "print value of add3(2,2)" - } - -re ".*$gdb_prompt $" { fail "print value of add3(2,2)" } - timeout { fail "(timeout) print value of add3(2,2)" } - } +gdb_test_multiple "print add2(2.25,2.25)" "print add2(2.25,2.25)" { + -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { + pass "print add2(2.25,2.25)" + } + -re "No symbol \"add2\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add2(2.25,2.25)" + } +} -send_gdb "print add3(2.3,2.3)\n" -gdb_expect { - -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" { - pass "print value of add3(2.3,2.3)" - } - -re ".*$gdb_prompt $" { fail "print value of add3(2.3,2.3)" } - timeout { fail "(timeout) print value of add3(2.3,2.3)" } - } +gdb_test_multiple "print add2('A','A')" "print add2('A','A')" { + -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { + pass "print add2('A','A')" + } + -re "No symbol \"add2\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add2('A','A')" + } +} -send_gdb "print add3('A','A')\n" -gdb_expect { - -re ".$decimal = -126.*202.\r\n$gdb_prompt $" { - pass "print value of add3('A','A')" - } - -re ".*$gdb_prompt $" { fail "print value of add3('A','A')" } - timeout { fail "(timeout) print value of add3('A','A')" } - } +gdb_test_multiple "print add3(2,2)" "print add3(2,2)" { + -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { + pass "print add3(2,2)" + } + -re "No symbol \"add3\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add3(2,2)" + } +} -send_gdb "print add4(2,2)\n" -gdb_expect { - -re ".$decimal = 4\r\n$gdb_prompt $" { - pass "print value of add4(2,2)" - } - -re ".*$gdb_prompt $" { fail "print value of add4(2,2)" } - timeout { fail "(timeout) print value of add4(2,2)" } - } +gdb_test_multiple "print add3(2.25,2.25)" "print add3(2.25,2.25)" { + -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { + pass "print add3(2.25,2.25)" + } + -re "No symbol \"add3\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add3(2.25,2.25)" + } +} -send_gdb "print add4(2.3,2.3)\n" -gdb_expect { - -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" { - pass "print value of add4(2.3,2.3)" - } - -re ".*$gdb_prompt $" { fail "print value of add4(2.3,2.3)" } - timeout { fail "(timeout) print value of add4(2.3,2.3)" } - } +gdb_test_multiple "print add3('A','A')" "print add3('A','A')" { + -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { + pass "print add3('A','A')" + } + -re "No symbol \"add3\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add3('A','A')" + } +} -send_gdb "print add4('A','A')\n" -gdb_expect { - -re ".$decimal = -126.*202.\r\n$gdb_prompt $" { - pass "print value of add4('A','A')" - } - -re ".*$gdb_prompt $" { fail "print value of add4('A','A')" } - timeout { fail "(timeout) print value of add4('A','A')" } - } +gdb_test_multiple "print add4(2,2)" "print add4(2,2)" { + -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { + pass "print add4(2,2)" + } + -re "No symbol \"add4\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add4(2,2)" + } +} +gdb_test_multiple "print add4(2.25,2.25)" "print add4(2.25,2.25)" { + -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { + pass "print add4(2.25,2.25)" + } + -re "No symbol \"add4\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add4(2.25,2.25)" + } +} -gdb_exit -return 0 +gdb_test_multiple "print add4('A','A')" "print add4('A','A')" { + -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { + pass "print add4('A','A')" + } + -re "No symbol \"add4\" in current context.\r\n$gdb_prompt $" { + # TODO: kfail or xfail this + fail "print add4('A','A')" + } +} diff --git a/gdb/testsuite/gdb.cp/cttiadd.cc b/gdb/testsuite/gdb.cp/cttiadd.cc index 1f50fae24c1..195860531e5 100644 --- a/gdb/testsuite/gdb.cp/cttiadd.cc +++ b/gdb/testsuite/gdb.cp/cttiadd.cc @@ -1,3 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1998, 1999, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + template T add(T v1, T v2) { T v3; @@ -23,6 +44,7 @@ int main() i = add(i, i); f = add(f, f); + // marker add1 add1(); subr2(); subr3(); diff --git a/gdb/testsuite/gdb.cp/cttiadd1.cc b/gdb/testsuite/gdb.cp/cttiadd1.cc index 7113ecea421..3ef318a60d6 100644 --- a/gdb/testsuite/gdb.cp/cttiadd1.cc +++ b/gdb/testsuite/gdb.cp/cttiadd1.cc @@ -1,3 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + template T add(T v1, T v2); void add1() diff --git a/gdb/testsuite/gdb.cp/cttiadd2.cc b/gdb/testsuite/gdb.cp/cttiadd2.cc index d0d9891fb2f..a2f04b5aaca 100644 --- a/gdb/testsuite/gdb.cp/cttiadd2.cc +++ b/gdb/testsuite/gdb.cp/cttiadd2.cc @@ -1,3 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + template T add2(T v1, T v2) { T v3; diff --git a/gdb/testsuite/gdb.cp/cttiadd3.cc b/gdb/testsuite/gdb.cp/cttiadd3.cc index 7ba1b019f16..60fb61a2aba 100644 --- a/gdb/testsuite/gdb.cp/cttiadd3.cc +++ b/gdb/testsuite/gdb.cp/cttiadd3.cc @@ -1,3 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + template T add3(T v1, T v2) { T v3; diff --git a/gdb/testsuite/gdb.cp/derivation.exp b/gdb/testsuite/gdb.cp/derivation.exp index 39acf2570a9..5f75899feee 100644 --- a/gdb/testsuite/gdb.cp/derivation.exp +++ b/gdb/testsuite/gdb.cp/derivation.exp @@ -1,4 +1,5 @@ -# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,24 +19,23 @@ # bug-gdb@prep.ai.mit.edu # This file was written by Elena Zannoni (ezannoni@cygnus.com) +# And rewritten by Michael Chastain # This file is part of the gdb testsuite -# -# -# tests for inheritance, with several derivations types combinations (private, -# public, protected) +# tests for inheritance, with several derivations types combinations +# (private, public, protected) # classes have simple members and member functions. -# +set ws "\[\r\n\t \]+" +set nl "\[\r\n\]+" if $tracelevel then { - strace $tracelevel - } + strace $tracelevel +} + +# Start program. -# -# test running programs -# set prms_id 0 set bug_id 0 @@ -45,13 +45,6 @@ set testfile "derivation" set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} -# Create and source the file that provides information about the compiler -# used to compile the test case. - -if [get_compiler_info ${binfile} "c++"] { - return -1 -} - if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } @@ -61,13 +54,7 @@ gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} -# -# set it up at a breakpoint so we can play with the variable values -# -if ![runto_main] then { - perror "couldn't run to breakpoint" - continue -} +# Set it up at a breakpoint so we can play with the variable values. if ![runto 'marker1'] then { perror "couldn't run to marker1" @@ -76,236 +63,150 @@ if ![runto 'marker1'] then { gdb_test "up" ".*main.*" "up from marker1" +# Print class types and values. +# See virtfunc.exp for a discussion of ptype. + +# class A + +set re_class "((struct|class) A \{${ws}public:|struct A \{)" +set re_fields "int a;${ws}int aa;" +set re_methods "A\\((void|)\\);${ws}int afoo\\((void|)\\);${ws}int foo\\((void|)\\);" +set re_synth_gcc_23 "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);" +set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)" +gdb_test "print a_instance" "\\$\[0-9\]+ = \{a = 1, aa = 2\}" "print value of a_instance" -send_gdb "print a_instance\n" -gdb_expect { - -re ".\[0-9\]* = \{a = 1, aa = 2\}\r\n$gdb_prompt $" { - pass "print value of a_instance" - } - -re ".*$gdb_prompt $" { fail "print value of a_instance" } - timeout { fail "(timeout) print value of a_instance" } - } +gdb_test_multiple "ptype a_instance" "ptype a_instance" { + -re "type = $re_class${ws}$re_fields${ws}$re_methods$nl\}$nl$gdb_prompt $" { + pass "ptype a_instance (no synth ops)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_synth_gcc_23${ws}$re_methods${ws}$nl\}$nl$gdb_prompt $" { + pass "ptype a_instance (with synth ops)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + pass "ptype a_instance (with synth ops)" + } +} + +# class D +set re_class "class D : private A, public B, protected C \{${ws}public:" +set XX_class "class D : private A, public B, private C \{${ws}public:" +set re_fields "int d;${ws}int dd;" +set re_methods "D\\((void|)\\);${ws}int dfoo\\((void|)\\);${ws}int foo\\((void|)\\);" +set re_synth_gcc_23 "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);" +set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)" -send_gdb "ptype a_instance\n" -gdb_expect { - -re "type = class A \{\r\n\[\t \]*public:\r\n\[\t \]*int a;\r\n\[\t \]*int aa;\[\r\n\t ]+A & operator=\\(A const ?&\\);\[\r\n\t ]+A\\((A const|const A) ?&\\);\[\r\n\t ]+A\\((void|)\\);\r\n\[\t \]*int afoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype a_instance (with synth ops)" } - -re "type = class A \{\r\n\[\t \]*public:\r\n\[\t \]*int a;\r\n\[\t \]*int aa;\[\r\n\t \]+A\\(void\\);\r\n\[\t \]*int afoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype a_instance (no synth ops)" } - -re ".*$gdb_prompt $" { fail "ptype a_instance" } - timeout { fail "(timeout) ptype a_instance" } +gdb_test_multiple "print d_instance" "print value of d_instance" { + -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, d = 7, dd = 8\}$nl$gdb_prompt $" { + pass "print value of d_instance" + } +} + +gdb_test_multiple "ptype d_instance" "ptype d_instance" { + -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + pass "ptype d_instance" + } + -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" { + pass "ptype d_instance" + } + -re "type = $XX_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + # TODO: this is a gcc bug + # kfail "gdb/1498" "ptype d_instance" + pass "ptype d_instance" + } + -re "type = $XX_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" { + # TODO: this is a gcc bug. + # kfail "gdb/1498" "ptype d_instance" + pass "ptype d_instance" + } } +# class E + +set re_class "class E : public A, private B, protected C \{${ws}public:" +set XX_class "class E : public A, private B, private C \{${ws}public:" +set re_fields "int e;${ws}int ee;" +set re_methods "E\\((void|)\\);${ws}int efoo\\((void|)\\);${ws}int foo\\((void|)\\);" +set re_synth_gcc_23 "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);" +set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)" + +gdb_test_multiple "print e_instance" "print value of e_instance" { + -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, e = 9, ee = 10\}$nl$gdb_prompt $" { + pass "print value of e_instance" + } +} -send_gdb "print d_instance\n" -gdb_expect { - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, d = 7, dd = 8\}\r\n$gdb_prompt $" { - pass "print value of d_instance" - } - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, d = 7, dd = 8\}\r\n$gdb_prompt $" { - pass "print value of d_instance" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance" } - timeout { fail "(timeout) print value of d_instance" } - } - - if { [test_compiler_info gcc-*] } then { - send_gdb "ptype d_instance\n" - gdb_expect { - -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t ]+D & operator=\\(D const ?&\\);\[\r\n\t ]+D\\((D const|const D) ?&\\);\[\r\n\t \]+D\\((void|)\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" } - -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t ]+D & operator=\\(D const ?&\\);\[\r\n\t ]+D\\((D const|const D) ?&\\);\[\r\n\t \]+D\\((void|)\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" } - -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t \]+D\\(void\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" } - -re ".*$gdb_prompt $" { fail "ptype d_instance" } - timeout { fail "(timeout) ptype d_instance" } - } - } else { - send_gdb "ptype d_instance\n" - gdb_expect { - -re "type = class D : private A, public B, protected C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t \]+D\\(void\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" } - -re ".*$gdb_prompt $" { fail "ptype d_instance" } - timeout { fail "(timeout) ptype d_instance" } - } - } - - -send_gdb "print e_instance\n" -gdb_expect { - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, e = 9, ee = 10\}\r\n$gdb_prompt $" { - pass "print value of e_instance" - } - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, e = 9, ee = 10\}\r\n$gdb_prompt $" { - pass "print value of e_instance" - } - -re ".*$gdb_prompt $" { fail "print value of e_instance" } - timeout { fail "(timeout) print value of e_instance" } - } - - if { [test_compiler_info gcc-*] } then { - send_gdb "ptype e_instance\n" - gdb_expect { - -re "type = class E : public A, private B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t ]+E & operator=\\(E const ?&\\);\[\r\n\t ]+E\\((E const|const E) ?&\\);\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" } - -re "type = class E : public A, private B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" } - -re ".*$gdb_prompt $" { fail "ptype e_instance" } - timeout { fail "(timeout) ptype e_instance" } - } - } else { - send_gdb "ptype e_instance\n" - gdb_expect { - -re "type = class E : public A, private B, protected C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" } - -re ".*$gdb_prompt $" { fail "ptype e_instance" } - timeout { fail "(timeout) ptype e_instance" } - } - } - - -send_gdb "print f_instance\n" -gdb_expect { - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, f = 11, ff = 12\}\r\n$gdb_prompt $" { - pass "print value of f_instance" - } - -re ".\[0-9\]* = \{ = \{a = 1, aa = 2\}, = \{b = 3, bb = 4\}, = \{c = 5, cc = 6\}, f = 11, ff = 12\}\r\n$gdb_prompt $" { - pass "print value of f_instance" - } - -re ".*$gdb_prompt $" { fail "print value of f_instance" } - timeout { fail "(timeout) print value of f_instance" } - } - -send_gdb "ptype f_instance\n" -gdb_expect { - -re "type = class F : private A, public B, private C \{\r\n\[\t \]*public:\r\n\[\t \]*int f;\r\n\[\t \]*int ff;\[\r\n\t ]+F & operator=\\(F const ?&\\);\[\r\n\t ]+F\\((F const|const F) ?&\\);\[\r\n\t \]+F\\((void|)\\);\r\n\[\t \]*int ffoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype f_instance" } - -re "type = class F : private A, public B, private C \{\r\n\[\t \]*public:\r\n\[\t \]*int f;\r\n\[\t \]*int ff;\[\r\n\t \]+F\\((void|)\\);\r\n\[\t \]*int ffoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype f_instance" } - -re ".*$gdb_prompt $" { fail "ptype f_instance" } - timeout { fail "(timeout) ptype f_instance" } +gdb_test_multiple "ptype e_instance" "ptype e_instance" { + -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + pass "ptype e_instance" + } + -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" { + pass "ptype e_instance" + } + -re "type = $XX_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + # TODO: this is a gcc bug. + # kfail "gdb/1498" "ptype e_instance" + pass "ptype e_instance" + } + -re "type = $XX_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" { + # TODO: this is a gcc bug. + # kfail "gdb/1498" "ptype e_instance" + pass "ptype e_instance" + } } +# class F +set re_class "class F : private A, public B, private C \{${ws}public:" +set re_fields "int f;${ws}int ff;" +set re_methods "F\\((void|)\\);${ws}int ffoo\\((void|)\\);${ws}int foo\\((void|)\\);" +set re_synth_gcc_23 "F & operator=\\(F const ?&\\);${ws}F\\(F const ?&\\);" +set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)" -send_gdb "print d_instance.a\n" -gdb_expect { - -re ".\[0-9\]* = 1.*$gdb_prompt $" { - pass "print value of d_instance.a" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.a" } - timeout { fail "(timeout) print value of d_instance.a" } - } - -send_gdb "print d_instance.aa\n" -gdb_expect { - -re ".\[0-9\]* = 2.*$gdb_prompt $" { - pass "print value of d_instance.aa" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.aa" } - timeout { fail "(timeout) print value of d_instance.aa" } - } - -send_gdb "print d_instance.b\n" -gdb_expect { - -re ".\[0-9\]* = 3.*$gdb_prompt $" { - pass "print value of d_instance.b" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.b" } - timeout { fail "(timeout) print value of d_instance.b" } - } - -send_gdb "print d_instance.bb\n" -gdb_expect { - -re ".\[0-9\]* = 4.*$gdb_prompt $" { - pass "print value of d_instance.bb" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.bb" } - timeout { fail "(timeout) print value of d_instance.bb" } - } - -send_gdb "print d_instance.c\n" -gdb_expect { - -re ".\[0-9\]* = 5.*$gdb_prompt $" { - pass "print value of d_instance.c" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.c" } - timeout { fail "(timeout) print value of d_instance.c" } - } - -send_gdb "print d_instance.cc\n" -gdb_expect { - -re ".\[0-9\]* = 6.*$gdb_prompt $" { - pass "print value of d_instance.cc" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.cc" } - timeout { fail "(timeout) print value of d_instance.cc" } - } - -send_gdb "print d_instance.d\n" -gdb_expect { - -re ".\[0-9\]* = 7.*$gdb_prompt $" { - pass "print value of d_instance.d" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.d" } - timeout { fail "(timeout) print value of d_instance.d" } - } - -send_gdb "print d_instance.dd\n" -gdb_expect { - -re ".\[0-9\]* = 8.*$gdb_prompt $" { - pass "print value of d_instance.dd" - } - -re ".*$gdb_prompt $" { fail "print value of d_instance.dd" } - timeout { fail "(timeout) print value of d_instance.dd" } - } - -send_gdb "print g_instance.a\n" -gdb_expect { - -re "warning.*$gdb_prompt $" { - # The compiler doesn't think this is ambiguous. - fail "print value of g_instance.a" +gdb_test_multiple "print f_instance" "print value of f_instance" { + -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, f = 11, ff = 12\}$nl$gdb_prompt $" { + pass "print value of f_instance" } - -re ".\[0-9\]* = 15.*$gdb_prompt $" { - pass "print value of g_instance.a" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.a" } - timeout { fail "(timeout) print value of g_instance.a" } - } - -send_gdb "print g_instance.b\n" -gdb_expect { - -re "warning.*$gdb_prompt $" { - # The compiler doesn't think this is ambiguous. - fail "print value of g_instance.b" +} + +gdb_test_multiple "ptype f_instance" "ptype f_instance" { + -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" { + pass "ptype f_instance" } - -re ".\[0-9\]* = 16.*$gdb_prompt $" { - pass "print value of g_instance.b" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.b" } - timeout { fail "(timeout) print value of g_instance.b" } - } - -send_gdb "print g_instance.c\n" -gdb_expect { - -re "warning.*$gdb_prompt $" { - # The compiler doesn't think this is ambiguous. - fail "print value of g_instance.c" + -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" { + pass "ptype f_instance" } - -re ".\[0-9\]* = 17.*$gdb_prompt $" { - pass "print value of g_instance.c" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.c" } - timeout { fail "(timeout) print value of g_instance.c" } - } - -send_gdb "print g_instance.afoo()\n" -gdb_expect { - -re ".\[0-9\]* = 1.*$gdb_prompt $" { - pass "print value of g_instance.afoo()" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.afoo()" } - timeout { fail "(timeout) print value of g_instance.afoo()" } - } +} + +# Print individual fields. + +gdb_test "print d_instance.a" "\\$\[0-9\]+ = 1" "print value of d_instance.a" +gdb_test "print d_instance.aa" "\\$\[0-9\]+ = 2" "print value of d_instance.aa" +gdb_test "print d_instance.b" "\\$\[0-9\]+ = 3" "print value of d_instance.b" +gdb_test "print d_instance.bb" "\\$\[0-9\]+ = 4" "print value of d_instance.bb" +gdb_test "print d_instance.c" "\\$\[0-9\]+ = 5" "print value of d_instance.c" +gdb_test "print d_instance.cc" "\\$\[0-9\]+ = 6" "print value of d_instance.cc" +gdb_test "print d_instance.d" "\\$\[0-9\]+ = 7" "print value of d_instance.d" +gdb_test "print d_instance.dd" "\\$\[0-9\]+ = 8" "print value of d_instance.dd" +# Print some fields which are defined in the top of class G +# and in its base classes. This is not be ambiguous. + +gdb_test "print g_instance.a" "\\$\[0-9\]+ = 15" "print value of g_instance.a" +gdb_test "print g_instance.b" "\\$\[0-9\]+ = 16" "print value of g_instance.b" +gdb_test "print g_instance.c" "\\$\[0-9\]+ = 17" "print value of g_instance.c" + +# Print a function call. + +gdb_test "print g_instance.afoo()" "\\$\[0-9\]+ = 1" "print value of g_instance.afoo()" # If GDB fails to restore the selected frame properly after the # inferior function call above (see GDB PR 1155 for an explanation of # why this might happen), all the subsequent tests will fail. We # should detect report that failure, but let the marker call finish so # that the rest of the tests can run undisturbed. + gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" { -re "#0 marker1.*$gdb_prompt $" { setup_kfail "gdb/1155" s390-*-linux-gnu @@ -317,21 +218,6 @@ gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" { pass "re-selected 'main' frame after inferior call" } } - -send_gdb "print g_instance.bfoo()\n" -gdb_expect { - -re ".\[0-9\]* = 2.*$gdb_prompt $" { - pass "print value of g_instance.bfoo()" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.bfoo()" } - timeout { fail "(timeout) print value of g_instance.bfoo()" } - } - -send_gdb "print g_instance.cfoo()\n" -gdb_expect { - -re ".\[0-9\]* = 3.*$gdb_prompt $" { - pass "print value of g_instance.cfoo()" - } - -re ".*$gdb_prompt $" { fail "print value of g_instance.cfoo()" } - timeout { fail "(timeout) print value of g_instance.cfoo()" } - } + +gdb_test "print g_instance.bfoo()" "\\$\[0-9\]+ = 2" "print value of g_instance.bfoo()" +gdb_test "print g_instance.cfoo()" "\\$\[0-9\]+ = 3" "print value of g_instance.cfoo()" diff --git a/gdb/testsuite/gdb.cp/local.exp b/gdb/testsuite/gdb.cp/local.exp index 21ceb7ae3db..88880559489 100644 --- a/gdb/testsuite/gdb.cp/local.exp +++ b/gdb/testsuite/gdb.cp/local.exp @@ -1,4 +1,5 @@ -# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -96,6 +97,13 @@ gdb_test "up" ".*foobar.*" "up from marker1" # # chastain 2002-04-08 +# pattern #5 +# PASS +# stabs+ +# gcc HEAD abi-2 +# +# chastain 2004-01-02 + set sep "(\[.\]|___)\[0-9\]" send_gdb "ptype Local\n" @@ -106,6 +114,7 @@ gdb_expect { } -re "type = class Local \{\[\r\n\t \]*public:\[\r\n\t \]*int loc1;\[\r\n\t \]*Local & operator *=\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((void|)\\);\[\r\n\t \]*char loc_foo\\(char\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype Local" } -re "type = class Local \{\r\n\[\t \]*public:\r\n\[\t \]*int loc1;\r\n\r\n\[\t \]*char loc_foo\\(char\\);\r\n\[\t \]*\\(Local at.*local\\.cc:\[0-9\]*\\)\r\n\}.*$gdb_prompt $" { xpass "ptype Local (old aCC)" } + -re "type = class Local \{\[\r\n\t \]*public:\[\r\n\t \]*int loc1;\[\r\n\t \]*char loc_foo\\(char\\);\[\r\n\t \]*Local & operator *=\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype Local" } -re ".*$gdb_prompt $" { fail "ptype Local" } timeout { fail "(timeout) ptype Local" } } @@ -131,6 +140,10 @@ gdb_expect { # this right. kfail gdb/825 "Local out of scope" } + -re "ptype Local${eol}type = class Local {${eol} public:${eol} int loc1;${eol} char loc_foo\\(char\\);${eol}.*${eol}}${eol}${gdb_prompt} " { + # gcc 3.X abi-2 -gstabs+ + kfail gdb/825 "Local out of scope" + } -re ".*${gdb_prompt} $" { fail "Local out of scope" } @@ -168,12 +181,20 @@ gdb_expect { # # chastain 2002-05-27 +# Pattern 5: +# PASS +# stabs+ +# HEAD +# +# chastain 2004-01-02 + send_gdb "ptype InnerLocal\n" gdb_expect { -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*int il_foo\\((unsigned char const|const unsigned char) *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 1)" } -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 2)" } -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*InnerLocal::NestedInnerLocal nest1;\r\n\r\n\[\t \]*.int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\}\[\t \]*\\(Local at.*local\\.cc:36\\).*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" } -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*class InnerLocal4::NestedInnerLocal nest1;\r\n\r\n\[\t \]*int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\\(Local at.*local\.cc:\[0-9\]+\\)\r\n\}.*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" } + -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]* int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 5)" } -re ".*$gdb_prompt $" { fail "ptype InnerLocal" } timeout { fail "(timeout) ptype InnerLocal" } } diff --git a/gdb/testsuite/gdb.cp/m-static.exp b/gdb/testsuite/gdb.cp/m-static.exp index d291135fb06..56cd7bc3bfc 100644 --- a/gdb/testsuite/gdb.cp/m-static.exp +++ b/gdb/testsuite/gdb.cp/m-static.exp @@ -1,4 +1,4 @@ -# Copyright 2002 Free Software Foundation, Inc. +# Copyright 2002, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -33,16 +33,22 @@ set prms_id 0 set bug_id 0 set testfile "m-static" -set srcfile ${testfile}.cc -set srcfile1 ${testfile}1.cc -set binfile ${objdir}/${subdir}/${testfile} +set srcfile "${srcdir}/${subdir}/${testfile}.cc" +set srcfile1 "${srcdir}/${subdir}/${testfile}1.cc" +set objfile "${objdir}/${subdir}/${testfile}.o" +set objfile1 "${objdir}/${subdir}/${testfile}1.o" +set binfile "${objdir}/${subdir}/${testfile}" -if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1}" "${binfile}" executable {debug c++}] != "" } { +if { [gdb_compile "${srcfile}" "${objfile}" object {debug c++}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -if [get_compiler_info ${binfile} "c++"] { - return -1 +if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +if { [gdb_compile "${objfile} ${objfile1}" "${binfile}" executable {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } gdb_exit diff --git a/gdb/testsuite/gdb.cp/method.exp b/gdb/testsuite/gdb.cp/method.exp index 5ae2e5b3b72..dde0a625e0a 100644 --- a/gdb/testsuite/gdb.cp/method.exp +++ b/gdb/testsuite/gdb.cp/method.exp @@ -1,4 +1,4 @@ -# Copyright 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -170,6 +170,9 @@ gdb_expect { -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" { pass "ptype A" } + -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\}\r\n$gdb_prompt $" { + pass "ptype A" + } -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\);\r\n\[ \]*int qux\\(int, float\\) const;\r\n\}\r\n$gdb_prompt $" { pass "ptype A (HP aCC bug -- volatile not indicated)" } diff --git a/gdb/testsuite/gdb.cp/namespace.exp b/gdb/testsuite/gdb.cp/namespace.exp index 228d791ad66..fda393e5869 100644 --- a/gdb/testsuite/gdb.cp/namespace.exp +++ b/gdb/testsuite/gdb.cp/namespace.exp @@ -1,4 +1,5 @@ -# Copyright 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -44,7 +45,7 @@ set srcfile1 ${testfile}1.cc set objfile1 ${objdir}/${subdir}/${testfile}1.o set binfile ${objdir}/${subdir}/${testfile} -if [get_compiler_info ${binfile}] { +if [get_compiler_info ${binfile} c++] { return -1; } @@ -119,6 +120,9 @@ gdb_expect { -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" { pass "ptype ina" } + -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*int fum\\(int\\);\r\n.*\}\r\n$gdb_prompt $" { + pass "ptype ina" + } -re ".*$gdb_prompt $" { fail "ptype ina" } timeout { fail "(timeout) ptype ina" } } diff --git a/gdb/testsuite/gdb.cp/overload.exp b/gdb/testsuite/gdb.cp/overload.exp index 3e14678e4c2..2925b504b43 100644 --- a/gdb/testsuite/gdb.cp/overload.exp +++ b/gdb/testsuite/gdb.cp/overload.exp @@ -1,4 +1,5 @@ -# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,20 +19,19 @@ # bug-gdb@prep.ai.mit.edu # written by Elena Zannoni (ezannoni@cygnus.com) +# Rewritten by Michael Chastain # This file is part of the gdb testsuite -# -# tests for overloaded member functions. Command Line calls -# +# Tests for overloaded member functions. if $tracelevel then { - strace $tracelevel - } + strace $tracelevel +} + +set ws "\[\r\n\t \]+" +set nl "\[\r\n\]+" -# -# test running programs -# set prms_id 0 set bug_id 0 @@ -45,21 +45,12 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -if [get_compiler_info ${binfile} "c++"] { - return -1 -} - gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} -# set it up at a breakpoint so we can play with the variable values -# -if ![runto_main] then { - perror "couldn't run to breakpoint" - continue -} +# Set it up at a breakpoint so we can play with the variable values. if ![runto 'marker1'] then { perror "couldn't run to marker1" @@ -68,63 +59,108 @@ if ![runto 'marker1'] then { gdb_test "up" ".*main.*" "up from marker1" -send_gdb "print foo_instance1\n" -gdb_expect { - -re ".\[0-9\]* = \{ifoo = 111, ccpfoo = 0x0\}\r\n$gdb_prompt $" { - pass "print foo_instance1" - } - -re ".*$gdb_prompt $" { fail "print foo_instance1" } - timeout { fail "(timeout) print foo_instance1" } - } - - -setup_xfail "hppa*-*-*" CLLbs16901 -send_gdb "ptype foo_instance1\n" -gdb_expect { - -re "type = class foo \{.*public:.*int ifoo;.*const char \\*ccpfoo;.*foo\\(int\\);.*foo\\(int, (const char|char const) \\*\\);.*foo\\(foo &\\);.*~foo\\(void\\);.*void foofunc\\(int\\);.*void foofunc\\(int, signed char \\*\\);.*int overload1arg\\(void\\);.*int overload1arg\\(char\\);.*int overload1arg\\(signed char\\);.*int overload1arg\\(unsigned char\\);.*int overload1arg\\(short\\);.*int overload1arg\\(unsigned short\\);.*int overload1arg\\(int\\);.*int overload1arg\\(unsigned int\\);.*int overload1arg\\(long\\);.*int overload1arg\\(unsigned long\\);.*int overload1arg\\(float\\);.*int overload1arg\\(double\\);.*int overloadargs\\(int\\);.*int overloadargs\\(int, int\\);.*int overloadargs\\(int, int, int\\);.*int overloadargs\\(int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);\r\n\}\r\n$gdb_prompt $" { - pass "ptype foo_instance1 (HP aCC -- known quirk with ~foo parameter list)" - } - -re "type = class foo .*int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);\r\n\}\r\n$gdb_prompt $" { +# Print the monster class type. +# See virtfunc.exp for a discussion of ptype. +# +# This is hairy to begin with. It is even more hairy because of the +# XX_* alternate patterns to catch the KFAIL and XFAIL cases. + +set re_class "((struct|class) foo \{${ws}public:|struct foo \{)" +set re_fields "int ifoo;${ws}const char ?\\* ?ccpfoo;" +set XX_fields "int ifoo;${ws}char ?\\* ?ccpfoo;" +set re_ctor "foo\\(int\\);${ws}foo\\(int, (char const|const char) ?\\*\\);${ws}foo\\(foo ?&\\);" +set re_dtor "~foo\\((void|)\\);" +set XX_dtor "~foo\\(int\\);" +set re_methods "void foofunc\\(int\\);" +set re_methods "${re_methods}${ws}void foofunc\\(int, signed char ?\\*\\);" +set re_methods "${re_methods}${ws}int overload1arg\\((void|)\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(char\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(signed char\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(unsigned char\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(short\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(unsigned short\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(int\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(unsigned int\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(long\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(unsigned long\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(float\\);" +set re_methods "${re_methods}${ws}int overload1arg\\(double\\);" +set re_methods "${re_methods}${ws}int overloadfnarg\\((void|)\\);" +set re_methods "${re_methods}${ws}int overloadfnarg\\(int\\);" +set re_methods "${re_methods}${ws}int overloadfnarg\\(int, int ?\\(\\*\\) ?\\(int\\)\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int\\);" +set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);" +set re_synth "foo & operator=\\(foo const ?&\\);" + +gdb_test "print foo_instance1" "\\$\[0-9\]+ = \{ifoo = 111, ccpfoo = 0x0\}" + +gdb_test_multiple "ptype foo_instance1" "ptype foo_instance1" { + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: this is not a quirk! + pass "ptype foo_instance1 (HP aCC -- known quirk with ~foo parameter list)" + } + -re "type = $re_class${ws}$XX_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+, no "const" on "const char *" + # TODO: gdb.base/constvar.exp has XFAILed this kind of problem for a + # long time, but an XFAIL really needs an external bug report. + # -- chastain 2003-12-31 + # setup_xfail "*-*-*" + # fail "ptype foo_instance1" + # TODO: this should be a KFAIL. pass "ptype foo_instance1 (shorter match)" } - -re ".*$gdb_prompt $" { fail "ptype foo_instance1" } - timeout { fail "(timeout) ptype foo_instance1" } - } - -send_gdb "print foo_instance2\n" -gdb_expect { - -re ".\[0-9\]* = \{ifoo = 222, ccpfoo = $hex \"A\"\}\r\n$gdb_prompt $" { - pass "print foo_instance2" - } - -re ".*$gdb_prompt $" { fail "print foo_instance2" } - timeout { fail "(timeout) print foo_instance2" } - } - -send_gdb "print foo_instance3\n" -gdb_expect { - -re ".\[0-9\]* = \{ifoo = 222, ccpfoo = $hex \"A\"\}\r\n$gdb_prompt $" { - pass "print foo_instance3" - } - -re ".*$gdb_prompt $" { fail "print foo_instance3" } - timeout { fail "(timeout) print foo_instance3" } - } - - -send_gdb "print foo_instance1.overloadargs(1)\n" -gdb_expect { - -re ".\[0-9\]* = 1\r\n$gdb_prompt $" { - pass "print call overloaded func 1 arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 1 arg" } - timeout { fail "(timeout) print call overloaded func 1 arg" } - } + -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ if "const char *" ever gets fixed + pass "ptype foo_instance1" + } + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$XX_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2, "~foo(int)" + # TODO: kfail this + # kfail "gdb/1113" "ptype foo_instance1" + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2, if the dtor bug gets fixed + # gcc HEAD -gdwarf-2 (abi-2) + # TODO: just pass this + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # TODO: enough with the "shorter match" + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods${ws}$re_synth$nl\}$nl$gdb_prompt $" { + # gcc HEAD -gstabs+ (abi-2) + pass "ptype foo_instance1 (shorter match)" + } +} + +# Print variables and method calls. +# This is a walk in the park. +gdb_test "print foo_instance2" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}" +gdb_test "print foo_instance3" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}" + +gdb_test "print foo_instance1.overloadargs(1)" "\\$\[0-9\]+ = 1" \ + "print call overloaded func 1 arg" # If GDB fails to restore the selected frame properly after the # inferior function call above (see GDB PR 1155 for an explanation of # why this might happen), all the subsequent tests will fail. We # should detect and report that failure, but let the marker call # finish so that the rest of the tests can run undisturbed. + gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" { -re "#0 marker1.*$gdb_prompt $" { setup_kfail "gdb/1155" s390-*-linux-gnu @@ -137,254 +173,118 @@ gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" { } } +gdb_test "print foo_instance1.overloadargs(1, 2)" \ + "\\$\[0-9\]+ = 2" \ + "print call overloaded func 2 args" -send_gdb "print foo_instance1.overloadargs(1, 2)\n" -gdb_expect { - -re ".\[0-9\]* = 2\r\n$gdb_prompt $" { - pass "print call overloaded func 2 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 2 args" } - timeout { fail "(timeout) print call overloaded func 2 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3)\n" -gdb_expect { - -re ".\[0-9\]* = 3\r\n$gdb_prompt $" { - pass "print call overloaded func 3 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 3 args" } - timeout { fail "(timeout) print call overloaded func 3 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4)\n" -gdb_expect { - -re ".\[0-9\]* = 4\r\n$gdb_prompt $" { - pass "print call overloaded func 4 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 4 args" } - timeout { fail "(timeout) print call overloaded func 4 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5)\n" -gdb_expect { - -re ".\[0-9\]* = 5\r\n$gdb_prompt $" { - pass "print call overloaded func 5 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 5 args" } - timeout { fail "(timeout) print call overloaded func 5 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6)\n" -gdb_expect { - -re ".\[0-9\]* = 6\r\n$gdb_prompt $" { - pass "print call overloaded func 6 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 6 args" } - timeout { fail "(timeout) print call overloaded func 6 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7)\n" -gdb_expect { - -re ".\[0-9\]* = 7\r\n$gdb_prompt $" { - pass "print call overloaded func 7 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 7 args" } - timeout { fail "(timeout) print call overloaded func 7 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8)\n" -gdb_expect { - -re ".\[0-9\]* = 8\r\n$gdb_prompt $" { - pass "print call overloaded func 8 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 8 args" } - timeout { fail "(timeout) print call overloaded func 8 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9)\n" -gdb_expect { - -re ".\[0-9\]* = 9\r\n$gdb_prompt $" { - pass "print call overloaded func 9 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 9 args" } - timeout { fail "(timeout) print call overloaded func 9 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)\n" -gdb_expect { - -re ".\[0-9\]* = 10\r\n$gdb_prompt $" { - pass "print call overloaded func 10 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 10 args" } - timeout { fail "(timeout) print call overloaded func 10 args" } - } - - -send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)\n" -gdb_expect { - -re ".\[0-9\]* = 11\r\n$gdb_prompt $" { - pass "print call overloaded func 11 args" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func 11 args" } - timeout { fail "(timeout) print call overloaded func 11 args" } - } - - -send_gdb "print foo_instance1.overload1arg()\n" -gdb_expect { - -re ".\[0-9\]* = 1\r\n$gdb_prompt $" { - pass "print call overloaded func void arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func void arg" } - timeout { fail "(timeout) print call overloaded func void arg" } - } - - -send_gdb "print foo_instance1.overload1arg((char)arg2)\n" -gdb_expect { - -re ".\[0-9\]* = 2\r\n$gdb_prompt $" { - pass "print call overloaded func char arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func char arg" } - timeout { fail "(timeout) print call overloaded func char arg" } - } - - -send_gdb "print foo_instance1.overload1arg((signed char)arg3)\n" -gdb_expect { - -re ".\[0-9\]* = 3\r\n$gdb_prompt $" { - pass "print call overloaded func signed char arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func signed char arg" } - timeout { fail "(timeout) print call overloaded func signed char arg" } - } - - -send_gdb "print foo_instance1.overload1arg((unsigned char)arg4)\n" -gdb_expect { - -re ".\[0-9\]* = 4\r\n$gdb_prompt $" { - pass "print call overloaded func unsigned char arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned char arg" } - timeout { fail "(timeout) print call overloaded func unsigned char arg" } - } - - -send_gdb "print foo_instance1.overload1arg((short)arg5)\n" -gdb_expect { - -re ".\[0-9\]* = 5\r\n$gdb_prompt $" { - pass "print call overloaded func short arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func short arg" } - timeout { fail "(timeout) print call overloaded func short arg" } - } - - -send_gdb "print foo_instance1.overload1arg((unsigned short)arg6)\n" -gdb_expect { - -re ".\[0-9\]* = 6\r\n$gdb_prompt $" { - pass "print call overloaded func unsigned short arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned short arg" } - timeout { fail "(timeout) print call overloaded func unsigned short arg" } - } - - -send_gdb "print foo_instance1.overload1arg((int)arg7)\n" -gdb_expect { - -re ".\[0-9\]* = 7\r\n$gdb_prompt $" { - pass "print call overloaded func int arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func int arg" } - timeout { fail "(timeout) print call overloaded func int arg" } - } - - -send_gdb "print foo_instance1.overload1arg((unsigned int)arg8)\n" -gdb_expect { - -re ".\[0-9\]* = 8\r\n$gdb_prompt $" { - pass "print call overloaded func unsigned int arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned int arg" } - timeout { fail "(timeout) print call overloaded func unsigned int arg" } - } - - -send_gdb "print foo_instance1.overload1arg((long)arg9)\n" -gdb_expect { - -re ".\[0-9\]* = 9\r\n$gdb_prompt $" { - pass "print call overloaded func long arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func long arg" } - timeout { fail "(timeout) print call overloaded func long arg" } - } - - -send_gdb "print foo_instance1.overload1arg((unsigned long)arg10)\n" -gdb_expect { - -re ".\[0-9\]* = 10\r\n$gdb_prompt $" { - pass "print call overloaded func unsigned long arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned long arg" } - timeout { fail "(timeout) print call overloaded func unsigned long arg" } - } - - -send_gdb "print foo_instance1.overload1arg((float)arg11)\n" -gdb_expect { - -re ".\[0-9\]* = 11\r\n$gdb_prompt $" { - pass "print call overloaded func float arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func float arg" } - timeout { fail "(timeout) print call overloaded func float arg" } - } - - -send_gdb "print foo_instance1.overload1arg((double)arg12)\n" -gdb_expect { - -re ".\[0-9\]* = 12\r\n$gdb_prompt $" { - pass "print call overloaded func double arg" - } - -re ".*$gdb_prompt $" { fail "print call overloaded func double arg" } - timeout { fail "(timeout) print call overloaded func double arg" } - } - -# Now some tests to see if we can list overloaded functions properly: +gdb_test "print foo_instance1.overloadargs(1, 2, 3)" \ + "\\$\[0-9\]+ = 3" \ + "print call overloaded func 3 args" -gdb_test "set listsize 1" "" "" -# send_gdb "set listsize 1\n" -# gdb_expect -re ".*$gdb_prompt $" +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4)" \ + "\\$\[0-9\]+ = 4" \ + "print call overloaded func 4 args" -# -# Decide whether to use "()" or "(void)" -# +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5)" \ + "\\$\[0-9\]+ = 5" \ + "print call overloaded func 5 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6)" \ + "\\$\[0-9\]+ = 6" \ + "print call overloaded func 6 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7)" \ + "\\$\[0-9\]+ = 7" \ + "print call overloaded func 7 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8)" \ + "\\$\[0-9\]+ = 8" \ + "print call overloaded func 8 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9)" \ + "\\$\[0-9\]+ = 9" \ + "print call overloaded func 9 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)" \ + "\\$\[0-9\]+ = 10" \ + "print call overloaded func 10 args" + +gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)" \ + "\\$\[0-9\]+ = 11" \ + "print call overloaded func 11 args" + +gdb_test "print foo_instance1.overload1arg()" \ + "\\$\[0-9\]+ = 1" \ + "print call overloaded func void arg" + +gdb_test "print foo_instance1.overload1arg((char)arg2)" \ + "\\$\[0-9\]+ = 2" \ + "print call overloaded func char arg" + +gdb_test "print foo_instance1.overload1arg((signed char)arg3)" \ + "\\$\[0-9\]+ = 3" \ + "print call overloaded func signed char arg" + +gdb_test "print foo_instance1.overload1arg((unsigned char)arg4)" \ + "\\$\[0-9\]+ = 4" \ + "print call overloaded func unsigned char arg" + +gdb_test "print foo_instance1.overload1arg((short)arg5)" \ + "\\$\[0-9\]+ = 5" \ + "print call overloaded func short arg" -send_gdb "info func overloadfnarg\n" -gdb_expect { +gdb_test "print foo_instance1.overload1arg((unsigned short)arg6)" \ + "\\$\[0-9\]+ = 6" \ + "print call overloaded func unsigned short arg" + +gdb_test "print foo_instance1.overload1arg((int)arg7)" \ + "\\$\[0-9\]+ = 7" \ + "print call overloaded func int arg" + +gdb_test "print foo_instance1.overload1arg((unsigned int)arg8)" \ + "\\$\[0-9\]+ = 8" \ + "print call overloaded func unsigned int arg" + +gdb_test "print foo_instance1.overload1arg((long)arg9)" \ + "\\$\[0-9\]+ = 9" \ + "print call overloaded func long arg" + +gdb_test "print foo_instance1.overload1arg((unsigned long)arg10)" \ + "\\$\[0-9\]+ = 10" \ + "print call overloaded func unsigned long arg" + +gdb_test "print foo_instance1.overload1arg((float)arg11)" \ + "\\$\[0-9\]+ = 11" \ + "print call overloaded func float arg" + +gdb_test "print foo_instance1.overload1arg((double)arg12)" \ + "\\$\[0-9\]+ = 12" \ + "print call overloaded func double arg" + +# --- + +# List overloaded functions. + +# The void case is tricky because some compilers say "(void)" +# and some compilers say "()". + +gdb_test "set listsize 1" "" "" +gdb_test_multiple "info func overloadfnarg" "list overloaded function with no args" { -re ".*overloadfnarg\\(void\\).*$gdb_prompt $" { + # gcc 2 gdb_test "list foo::overloadfnarg(void)"\ ".*int foo::overloadfnarg.*\\(void\\).*" \ "list overloaded function with no args" } -re ".*overloadfnarg\\(\\).*$gdb_prompt $" { + # gcc 3 gdb_test "list foo::overloadfnarg()"\ ".*int foo::overloadfnarg.*\\(void\\).*" \ "list overloaded function with no args" } - -re ".*$gdb_prompt $" { - fail "list overloaded function with no args (no matching symbol)" - } } -gdb_test "list foo::overloadfnarg(int)"\ +gdb_test "list foo::overloadfnarg(int)" \ "int foo::overloadfnarg.*\\(int arg\\).*" \ "list overloaded function with int arg" @@ -392,9 +292,11 @@ gdb_test "list foo::overloadfnarg(int, int (*)(int))" \ "int foo::overloadfnarg.*\\(int arg, int \\(\\*foo\\) \\(int\\)\\).*" \ "list overloaded function with function ptr args" -# This one crashes GDB. Don't know why yet. gdb_test "list \"foo::overloadfnarg(int, int (*)(int))\"" \ "int foo::overloadfnarg.*\\(int arg, int \\(\\*foo\\) \\(int\\)\\).*" \ "list overloaded function with function ptr args - quotes around argument" -gdb_test "print intToChar(1)" ".\[0-9\]* = 297" +# One last mysterious test. +# I wonder what this is for? + +gdb_test "print intToChar(1)" "\\$\[0-9\]+ = 297" diff --git a/gdb/testsuite/gdb.cp/ref-types.exp b/gdb/testsuite/gdb.cp/ref-types.exp index dd06f027111..98dc2d68f60 100644 --- a/gdb/testsuite/gdb.cp/ref-types.exp +++ b/gdb/testsuite/gdb.cp/ref-types.exp @@ -1,5 +1,5 @@ # Tests for reference types with short type variables in GDB. -# Copyright 1998, 1999, 2000 Free Software Foundation, Inc. +# Copyright 1998, 1999, 2000, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -72,8 +72,6 @@ proc gdb_start_again {} { gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} - source ${binfile}.ci - # # set it up at a breakpoint so we can play with the variable values # diff --git a/gdb/testsuite/gdb.cp/templates.exp b/gdb/testsuite/gdb.cp/templates.exp index 29fc5786848..8f94790b686 100644 --- a/gdb/testsuite/gdb.cp/templates.exp +++ b/gdb/testsuite/gdb.cp/templates.exp @@ -1,4 +1,4 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003 +# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -37,7 +37,6 @@ set binfile ${objdir}/${subdir}/${testfile} if [get_compiler_info ${binfile} "c++"] { return -1 } -source ${binfile}.ci if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." @@ -56,6 +55,9 @@ proc test_ptype_of_templates {} { -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}(T5 & operator=\\(T5 const ?&\\);${ws})?T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype T5" } + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5 & operator=\\(T5 const ?&\\);${ws}\}\r\n$gdb_prompt $" { + pass "ptype T5" + } -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { pass "ptype T5 -- new with unsigned int" } -re "type = class T5 \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5 &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { pass "ptype T5 -- new with unsigned long" } -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5 & operator=\\(T5 const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\((T5 const|const T5) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\\}\r\n$gdb_prompt $" { @@ -84,6 +86,9 @@ proc test_ptype_of_templates {} { -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}(T5 & operator=\\(T5 const ?&\\);${ws})?T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i" } + -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5 & operator=\\(T5 const ?&\\);${ws}\\}\r\n$gdb_prompt $" { + pass "ptype t5i" + } -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5 & operator=\\(T5 const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\(T5 const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i (obsolescent gcc or gdb)" } @@ -197,7 +202,6 @@ proc do_tests {} { global srcdir global binfile global gdb_prompt - global supports_template_debugging set prms_id 0 set bug_id 0 @@ -209,11 +213,6 @@ proc do_tests {} { gdb_reinitialize_dir $srcdir/$subdir gdb_load $binfile - if { !$supports_template_debugging } { - warning "compiler lacks debugging info for templates; tests suppressed." 0 - return - } - runto_main test_ptype_of_templates @@ -294,6 +293,7 @@ gdb_expect { send_gdb "ptype fint\n" gdb_expect { -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" } + -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" } -re "$gdb_prompt $" { fail "ptype fint" } timeout { fail "(timeout) ptype fint" } } @@ -303,6 +303,7 @@ gdb_expect { send_gdb "ptype fchar\n" gdb_expect { -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" } + -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char foo\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" } -re "$gdb_prompt $" { fail "ptype fchar" } timeout { fail "(timeout) ptype fchar" } } @@ -311,7 +312,8 @@ gdb_expect { send_gdb "ptype fvpchar\n" gdb_expect { - -re "type = (class |)Foo<.*char.* ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char.* \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" } + -re "type = (class |)Foo<(volatile char|char volatile) ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" } + -re "type = (class |)Foo<(volatile char|char volatile) ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" } -re "$gdb_prompt $" { fail "ptype fvpchar" } timeout { fail "(timeout) ptype fvpchar" } } @@ -373,7 +375,8 @@ gdb_expect { send_gdb "ptype bint\n" gdb_expect { - -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" } + -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" } + -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" } -re "$gdb_prompt $" { fail "ptype bint" } timeout { fail "(timeout) ptype bint" } } @@ -382,7 +385,8 @@ gdb_expect { send_gdb "ptype bint2\n" gdb_expect { - -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" } + -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" } + -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" } -re "$gdb_prompt $" { fail "ptype bint2" } timeout { fail "(timeout) ptype bint2" } } @@ -409,7 +413,8 @@ gdb_expect { send_gdb "ptype bazint\n" gdb_expect { - -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" } + -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" } + -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\).*;\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" } -re "$gdb_prompt $" { fail "ptype bazint" } timeout { fail "(timeout) ptype bazint" } } @@ -418,7 +423,8 @@ gdb_expect { send_gdb "ptype bazint2\n" gdb_expect { - -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" } + -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" } + -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char baz\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" } -re "$gdb_prompt $" { fail "ptype bazint2" } timeout { fail "(timeout) ptype bazint2" } } @@ -443,7 +449,8 @@ gdb_expect { send_gdb "ptype quxint\n" gdb_expect { - -re "type = class Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" } + -re "type = class Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" } + -re "type = class Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" } -re "$gdb_prompt $" { fail "ptype quxint" } timeout { fail "(timeout) ptype quxint" } } @@ -480,7 +487,8 @@ gdb_expect { send_gdb "ptype siip\n" gdb_expect { - -re "type = class Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int ?\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" } + -re "type = class Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int ?\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" } + -re "type = class Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(int ?\\*\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" } -re "$gdb_prompt $" { fail "ptype siip" } timeout { fail "(timeout) ptype siip" } } @@ -490,6 +498,7 @@ gdb_expect { send_gdb "ptype Garply\n" gdb_expect { -re "type = class Garply \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply" } + -re "type = class Garply \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int garply\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply" } -re "$gdb_prompt $" { fail "ptype Garply" } timeout { fail "(timeout) ptype Garply" } } @@ -499,6 +508,7 @@ gdb_expect { send_gdb "ptype Garply >\n" gdb_expect { -re "type = (class |)Garply > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply t;\r\n\r\n\[ \t\]*.*(class |)Garply garply\\(int, (class |)Garply\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply >" } + -re "type = (class |)Garply > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply t;\r\n\r\n\[ \t\]*(class |)Garply garply\\(int, (class |)Garply\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply >" } -re "$gdb_prompt $" { fail "ptype Garply >" } timeout { fail "(timeout) ptype Garply >" } } diff --git a/gdb/testsuite/gdb.cp/virtfunc.exp b/gdb/testsuite/gdb.cp/virtfunc.exp index ff36c27cc36..958900a4ef1 100644 --- a/gdb/testsuite/gdb.cp/virtfunc.exp +++ b/gdb/testsuite/gdb.cp/virtfunc.exp @@ -1,4 +1,4 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 +# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -19,12 +19,14 @@ # bug-gdb@prep.ai.mit.edu # This file was written by Fred Fish. (fnf@cygnus.com) +# And rewritten by Michael Chastain . -set ws "\[\r\n\t \]+" -set nl "\[\r\n\]+" +set wsopt "\[\r\n\t \]*" +set ws "\[\r\n\t \]+" +set nl "\[\r\n\]+" if $tracelevel then { - strace $tracelevel + strace $tracelevel } if { [skip_cplus_tests] } { continue } @@ -33,706 +35,454 @@ set testfile "virtfunc" set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} -if [get_compiler_info ${binfile} "c++"] { - return -1 -} - -source ${binfile}.ci - if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {c++ debug}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } -proc gdb_virtfunc_init {} { - global srcdir subdir binfile - global gdb_prompt - - gdb_reinitialize_dir $srcdir/$subdir - gdb_load $binfile - - send_gdb "set language c++\n" - gdb_expect -re "$gdb_prompt $" - send_gdb "set width 0\n" - gdb_expect -re "$gdb_prompt $" -} - -proc gdb_virtfunc_restart {} { - gdb_exit; - gdb_start; - gdb_virtfunc_init; - runto 'test_calls'; -} - +# Test ptype of a class. +# +# Different C++ compilers produce different output. I build up regular +# expressions piece by piece to accommodate all the compilers that I +# have seen: gcc 2.95.3, gcc 3.3.2 (ABI 1), gcc 3.4 prerelease (ABI 2); +# and all the debug formats I have seen: dwarf-2 and stabs+. +# +# A complicated class declaration looks like this: +# +# class A : public virtual V { // re_class +# private: +# V * _vb$V; // re_vbptr +# int a; // re_fields +# +# public: // re_access_methods +# A & operator=(A const &); // re_synth_gcc_2 +# A(int, A const &); // ... +# A(int); // ... +# virtual int f(void); // re_methods +# } +# +# RE_CLASS matches the class declaration. C++ allows multiple ways of +# expressing this. +# +# struct ... { private: ... }; +# class ... { private: ... }; +# class ... { ... }; # -# Test printing of the types of various classes. +# RE_VBPTR matches the virtual base declarations. gcc 2.95.3 sometimes +# emits these, but gcc 3.X.Y never emits these. The name depends on the +# debug format. # +# RE_FIELDS matches the data fields of the class. +# RE_METHODS matches the methods explicitly declared for the class. +# +# RE_SYNTH_GCC_2 and RE_SYNTH_GCC_3 match the optional synthetic methods +# of the class. gcc -gstabs+ emits these methods, and gcc -gdwarf-2 +# does not. +# +# RE_ACCESS_METHODS is an access specifier after RE_FIELDS and before +# the methods (explicit methods and/or synthetic methods). +# There is also an RE_ACCESS_FIELDS. +# +# When I get HP-UX aCC, I hope that I can just add RE_SYNTH_ACC_NNN. +# +# Yet another twist: with gcc v2, ctor and dtor methods have a hidden +# argument in front, the "in-charge" flag. With gcc v3, there is no +# hidden argument; instead, there are multiple object functions for +# each ctor and dtor. +# +# -- chastain 2004-01-01 -proc test_ptype_of_classes {} { +proc test_one_ptype { command testname re_class re_vbptr re_access_fields re_fields re_access_methods re_methods re_synth_gcc_2 re_synth_gcc_3 re_star } { global gdb_prompt + global wsopt global ws global nl - # This used to be a fail if it printed "struct" not "class". But - # since this struct doesn't use any special C++ features, it is - # considered right for GDB to print it as "struct". - send_gdb "ptype VA\n" - gdb_expect { - -re "type = (struct|class) VA \{(${ws}public:|)${ws}int va;${ws}VA & operator=\\(VA const ?&\\);${ws}VA\\((VA const|const VA) ?&\\);${ws}VA\\((void|)\\);${ws}\}.*$gdb_prompt $" { - pass "ptype VA" - } - -re "type = (struct|class) VA \{(${ws}public:|)${ws}int va;((${ws}VA & operator=\\(VA const ?&\\);)|(${ws}VA\\(VA const ?&\\);)|(${ws}VA\\((void|)\\);))*${ws}\}.*$gdb_prompt $" { - pass "ptype VA (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype VA" - } - timeout { - fail "ptype VA (timeout)" - } - } - - send_gdb "ptype VB\n" - gdb_expect { - -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\}.*$gdb_prompt $" { - pass "ptype VB" - } - -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\}.*$gdb_prompt $" { - pass "ptype VB (aCC)" - } - -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\}.*$gdb_prompt $" { - pass "ptype VB (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype VB" - } - timeout { - fail "ptype VB (timeout)" - } - } - - send_gdb "ptype V\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype V" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype V (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype V (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype V" - } - timeout { - fail "ptype V (timeout)" - } - } - - # The format of a g++ virtual base pointer. - set vbptr "(_vb\[$.\]|__vb_)\[0-9\]?" - - send_gdb "ptype A\n" - gdb_expect { - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype A" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype A" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype A (aCC)" - } - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype A (obsolescent gcc or gdb)" - } - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}FOO;${ws}int a;${ws}public:${ws}virtual int f.void.;${ws}\}$nl$gdb_prompt $" { - # This happens because the type is defined only after it is - # too late. - fail "ptype A (known failure with gcc cygnus-2.4.5-930417)" - # Many of the rest of these tests have the same problem. - return 0 - } - -re ".*$gdb_prompt $" { - fail "ptype A" - } - timeout { - fail "ptype A (timeout)" - } - } - - send_gdb "ptype B\n" - gdb_expect { - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype B" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype B" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype B (aCC)" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype B (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype B" - } - timeout { - fail "ptype B (timeout)" - } - } - - send_gdb "ptype C\n" - gdb_expect { - -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype C" - } - -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype C" - } - -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}\}$nl$gdb_prompt $" { - pass "ptype C (aCC)" - } - -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(int, C const ?&\\);)|(${ws}C\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype C (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype C" - } - timeout { - fail "ptype C (timeout)" - } - } - - send_gdb "ptype AD\n" - gdb_expect { - -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype AD" - } - -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype AD (aCC)" - } - -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype AD (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype AD" - } - timeout { - fail "ptype AD (timeout)" - } - } - - send_gdb "ptype D\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype D" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype D" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype D (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype D (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype D" - } - timeout { - fail "ptype D (timeout)" - } - } - - send_gdb "ptype E\n" - gdb_expect { - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype E" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype E" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype E (aCC)" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype E (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype E" - } - timeout { - fail "ptype E (timeout)" - } - } - - send_gdb "ptype dd\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype dd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype dd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype dd (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype dd (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype dd" - } - timeout { - fail "ptype dd (timeout)" - } - } - - send_gdb "ptype ppd\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype ppd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype ppd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype ppd (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype ppd (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype ppd" - } - timeout { - fail "ptype ppd (timeout)" - } - } - - send_gdb "ptype pAd\n" - gdb_expect { - -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAd" - } - -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAd (aCC)" - } - -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAd (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pAd" - } - timeout { - fail "ptype pAd (timeout)" - } - } - - send_gdb "ptype a\n" - gdb_expect { - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype a" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype a" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype a (aCC)" - } - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype a (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype a" - } - timeout { - fail "ptype a (timeout)" - } - } - - send_gdb "ptype b\n" - gdb_expect { - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype b" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype b" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype b (aCC)" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype b (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype b" - } - timeout { - fail "ptype b (timeout)" - } - } - - send_gdb "ptype c\n" - gdb_expect { - -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype c" - } - -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype c" - } - -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}\}$nl$gdb_prompt $" { - pass "ptype c (aCC)" - } - -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(int, C const ?&\\);)|(${ws}C\\(int\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype c (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype c" - } - timeout { - fail "ptype c (timeout)" - } - } - - send_gdb "ptype d\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype d" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype d" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype d (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype d (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype d" - } - timeout { - fail "ptype d (timeout)" - } - } - - send_gdb "ptype e\n" - gdb_expect { - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype e" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype e" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype e (aCC)" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype e (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype e" - } - timeout { - fail "ptype e (timeout)" - } - } - - send_gdb "ptype v\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype v" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype v (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype v (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype v" - } - timeout { - fail "ptype v (timeout)" - } - } - - send_gdb "ptype vb\n" - gdb_expect { - -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype vb" - } - -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\}$nl$gdb_prompt $" { - pass "ptype vb (aCC)" - } - -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" { - pass "ptype vb (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype vb" - } - timeout { - fail "ptype vb (timeout)" - } - } - - send_gdb "ptype pAa\n" - gdb_expect { - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAa" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAa" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAa (aCC)" - } - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAa (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pAa" - } - timeout { - fail "ptype pAa (timeout)" - } - } - - send_gdb "ptype pAe\n" - gdb_expect { - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAe" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAe" - } - -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAe (aCC)" - } - -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pAe (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pAe" - } - timeout { - fail "ptype pAe (timeout)" - } - } - - send_gdb "ptype pBe\n" - gdb_expect { - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pBe" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pBe" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pBe (aCC)" - } - -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pBe (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pBe" - } - timeout { - fail "ptype pBe (timeout)" - } - } - - send_gdb "ptype pDd\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDd" - } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDd (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDd (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pDd" - } - timeout { - fail "ptype pDd (timeout)" + gdb_test_multiple "$command" "$testname" { + -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" { + # gcc 2.95.3, dwarf-2, no vbptr + # gcc 3.X, abi 1, dwarf-2 + # gcc 3.X, abi 2, dwarf-2 + pass "$testname" } - } - - send_gdb "ptype pDe\n" - gdb_expect { - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDe" + -re "type = $re_class${wsopt}$re_vbptr${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" { + # gcc 2.95.3, dwarf-2, vbptr + # TODO: drow says the vbptr is a bug + pass "$testname" } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDe" + -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_2${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" { + # gcc 2.95.3, stabs+, no vbptr + pass "$testname" } - -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDe (aCC)" - } - -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pDe (obsolescent gcc or gdb)" + -re "type = $re_class${wsopt}$re_vbptr${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_2${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" { + # gcc 2.95.3, stabs+, vbptr + # TODO: drow says the vbptr is a bug + pass "$testname" } - -re ".*$gdb_prompt $" { - fail "ptype pDe" + -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_3${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" { + # gcc 3.X, abi 1, stabs+ + pass "$testname" } - timeout { - fail "ptype pDe (timeout)" + -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods${wsopt}$re_synth_gcc_3$nl\}$re_star$nl$gdb_prompt $" { + # gcc 3.X, abi 2, stabs+ + pass "$testname" } } - send_gdb "ptype pVa\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVa" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVa (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVa (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pVa" - } - timeout { - fail "ptype pVa (timeout)" - } - } - - send_gdb "ptype pVv\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVv" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVv (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVv (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pVv" - } - timeout { - fail "ptype pVv (timeout)" - } - } - - send_gdb "ptype pVe\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVe" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVe (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVe (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pVe" - } - timeout { - fail "ptype pVe (timeout)" - } - } - - send_gdb "ptype pVd\n" - gdb_expect { - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVd" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVd (aCC)" - } - -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVd (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pVd" - } - timeout { - fail "ptype pVd (timeout)" - } - } - - send_gdb "ptype pADe\n" - gdb_expect { - -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pADe" - } - -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pADe (aCC)" - } - -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pADe (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pADe" - } - timeout { - fail "ptype pADe (timeout)" - } - } +} - send_gdb "ptype pEe\n" - gdb_expect { - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pEe" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pEe" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pEe (aCC)" - } - -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pEe (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pEe" - } - timeout { - fail "ptype pEe (timeout)" - } - } +proc test_ptype_of_classes {} { + global gdb_prompt + global ws + global nl - send_gdb "ptype pVB\n" - gdb_expect { - -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVB" - } - -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVB (aCC)" - } - -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" { - pass "ptype pVB (obsolescent gcc or gdb)" - } - -re ".*$gdb_prompt $" { - fail "ptype pVB" - } - timeout { - fail "ptype pVB (timeout)" - } - } + # class VA + + test_one_ptype "ptype VA" "ptype VA" \ + "((struct|class) VA \{${ws}public:|struct VA \{)" \ + "" \ + "" "int va;" \ + "" "" \ + "VA & operator=\\(VA const ?&\\);${ws}VA\\(VA const ?&\\);${ws}VA\\((void|)\\);" \ + "VA & operator=\\(VA const ?&\\);${ws}VA\\(VA const ?&\\);${ws}VA\\((void|)\\);" \ + "" + + # class VB + + test_one_ptype "ptype VB" "ptype VB" \ + "((struct|class) VB \{${ws}public:|struct VB \{)" \ + "" \ + "" "int vb;" \ + "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + "" + + # class V + + test_one_ptype "ptype V" "ptype V" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "" + + # class A + + test_one_ptype "ptype A" "ptype A" \ + "class A : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int a;" \ + "public:" "virtual int f\\((void|)\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \ + "" + + # class B + + test_one_ptype "ptype B" "ptype B" \ + "class B : public A \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int b;" \ + "public:" "virtual int f\\((void|)\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \ + "" + + # class C + + test_one_ptype "ptype C" "ptype C" \ + "class C : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int c;" \ + "" "" \ + "C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);" \ + "C & operator=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\(\\);" \ + "" + + # class AD + + test_one_ptype "ptype AD" "ptype AD" \ + "((struct|class) AD \{${ws}public:|struct AD \{)" \ + "" \ + "" "" \ + "" "virtual int vg\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + "" + + # class D + + test_one_ptype "ptype D" "ptype D" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + "" + + # class E + # TODO: E does not show a vbptr for V. That seems strange. + + test_one_ptype "ptype E" "ptype E" \ + "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \ + "" \ + "public:" "int e;" \ + "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \ + "" + + # An instance of D + + test_one_ptype "ptype dd" "ptype dd" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + "" + + # An instance of D * + + test_one_ptype "ptype ppd" "ptype ppd" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + " ?\\*" + + # An instance of AD * + # TODO: this should be named pADd, not pAd. + + test_one_ptype "ptype pAd" "ptype pAd" \ + "((struct|class) AD \{${ws}public:|struct AD \{)" \ + "" \ + "" "" \ + "" "virtual int vg\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + " ?\\*" + + # An instance of A + + test_one_ptype "ptype a" "ptype a" \ + "class A : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int a;" \ + "public:" "virtual int f\\((void|)\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \ + "" + + # An instance of B + + test_one_ptype "ptype b" "ptype b" \ + "class B : public A \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int b;" \ + "public:" "virtual int f\\((void|)\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \ + "" + + # An instance of C + + test_one_ptype "ptype c" "ptype c" \ + "class C : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int c;" \ + "" "" \ + "C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);" \ + "C & operator=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\(\\);" \ + "" + + # An instance of D + + test_one_ptype "ptype d" "ptype d" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + "" + + # An instance of E + + test_one_ptype "ptype e" "ptype e" \ + "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \ + "" \ + "public:" "int e;" \ + "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \ + "" + + # An instance of V + + test_one_ptype "ptype v" "ptype v" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "" + + # An instance of VB + + test_one_ptype "ptype vb" "ptype vb" \ + "((struct|class) VB \{${ws}public:|struct VB \{)" \ + "" \ + "" "int vb;" \ + "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + "" + + # An instance of A * + + test_one_ptype "ptype pAa" "ptype pAa" \ + "class A : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int a;" \ + "public:" "virtual int f\\((void|)\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \ + " ?\\*" + + # An instance of A * + + test_one_ptype "ptype pAe" "ptype pAe" \ + "class A : public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int a;" \ + "public:" "virtual int f\\((void|)\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \ + "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \ + " ?\\*" + + # An instance of B * + + test_one_ptype "ptype pBe" "ptype pBe" \ + "class B : public A \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "" "int b;" \ + "public:" "virtual int f\\((void|)\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \ + "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \ + " ?\\*" + + # An instance of D * + + test_one_ptype "ptype pDd" "ptype pDd" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + " ?\\*" + + # An instance of D * + + test_one_ptype "ptype pDe" "ptype pDe" \ + "class D : public AD, public virtual V \{(${ws}private:|)" \ + "V \\*(_vb.1V|_vb.V);" \ + "public:" "int d;" \ + "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \ + "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \ + " ?\\*" + + # An instance of V * + + test_one_ptype "ptype pVa" "ptype pVa" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + " ?\\*" + + # An instance of V * + + test_one_ptype "ptype pVv" "ptype pVv" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + " ?\\*" + + # An instance of V * + + test_one_ptype "ptype pVe" "ptype pVe" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + " ?\\*" + + # An instance of V * + + test_one_ptype "ptype pVd" "ptype pVd" \ + "class V : public VA, public VB \{${ws}public:" \ + "" \ + "" "int w;" \ + "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \ + " ?\\*" + + # An instance of AD * + + test_one_ptype "ptype pADe" "ptype pADe" \ + "((struct|class) AD \{${ws}public:|struct AD \{)" \ + "" \ + "" "" \ + "" "virtual int vg\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \ + " ?\\*" + + # An instance of E * + + test_one_ptype "ptype pEe" "ptype pEe" \ + "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \ + "" \ + "public:" "int e;" \ + "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \ + "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \ + " ?\\*" + + # An instance of VB * + + test_one_ptype "ptype pVB" "ptype pVB" \ + "((struct|class) VB \{${ws}public:|struct VB \{)" \ + "" \ + "" "int vb;" \ + "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \ + " ?\\*" } -# -# Test calling of virtual functions. -# +# Call virtual functions. proc test_virtual_calls {} { global gdb_prompt - global GDB global nl if [target_info exists gdb,cannot_call_functions] { @@ -741,207 +491,61 @@ proc test_virtual_calls {} { return 0 } - send_gdb "print pAe->f()\n" - gdb_expect { - -re ".* = 20$nl$gdb_prompt $" { pass "print pAe->f()" } - -re "Cannot invoke functions on this machine.*$gdb_prompt $" { - fail "print pAe->f() (cannot invoke functions, skipping virtual calls)" - return 0 - } - -re ".*Cannot access memory at address 0x8.*$gdb_prompt $" { - fail "print pAe->f() \ -(known failure with gcc cygnus-2.4.5-930417, skipping virtual calls)" - return 0 - } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pAe->f()" - } - -re ".*$gdb_prompt $" { fail "print pAe->f()" } - timeout { fail "print pAe->f() (timeout)" } - eof { fail "print pAe->f() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pAa->f()\n" - gdb_expect { - -re ".* = 1$nl$gdb_prompt $" { pass "print pAa->f()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pAa->f()" - } - -re ".*$gdb_prompt $" { fail "print pAa->f()" } - timeout { fail "print pAa->f() (timeout)" } - eof { fail "print pAa->f() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pDe->vg()\n" - gdb_expect { - -re ".* = 202$nl$gdb_prompt $" { pass "print pDe->vg()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pDe->vg()" - } - -re ".*$gdb_prompt $" { fail "print pDe->vg()" } - timeout { fail "print pDe->vg() (timeout)" } - eof { fail "print pDe->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pADe->vg()\n" - gdb_expect { - -re ".* = 202$nl$gdb_prompt $" { pass "print pADe->vg()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pADe->vg()" - } - -re ".*$gdb_prompt $" { fail "print pADe->vg()" } - timeout { fail "print pADe->vg() (timeout)" } - eof { fail "print pADe->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pDd->vg()\n" - gdb_expect { - -re ".* = 101$nl$gdb_prompt $" { pass "print pDd->vg()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pDd->vg()" - } - -re ".*$gdb_prompt $" { fail "print pDd->vg()" } - timeout { fail "print pDd->vg() (timeout)" } - eof { fail "print pDd->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pEe->vvb()\n" - gdb_expect { - -re ".* = 411$nl$gdb_prompt $" { pass "print pEe->vvb()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pEe->vvb()" - } - -re ".*$gdb_prompt $" { fail "print pEe->vvb()" } - timeout { fail "print pEe->vvb() (timeout)" } - eof { fail "print pEe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pVB->vvb()\n" - gdb_expect { - -re ".* = 407$nl$gdb_prompt $" { pass "print pVB->vvb()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pVB->vvb()" - } - -re ".*$gdb_prompt $" { fail "print pVB->vvb()" } - timeout { fail "print pVB->vvb() (timeout)" } - eof { fail "print pVB->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pBe->vvb()\n" - gdb_expect { - -re ".* = 411$nl$gdb_prompt $" { pass "print pBe->vvb()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pBe->vvb()" - } - -re ".*$gdb_prompt $" { fail "print pBe->vvb()" } - timeout { fail "print pBe->vvb() (timeout)" } - eof { fail "print pBe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pDe->vvb()\n" - gdb_expect { - -re ".* = 411$nl$gdb_prompt $" { pass "print pDe->vvb()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pDe->vvb()" - } - -re ".*$gdb_prompt $" { fail "print pDe->vvb()" } - timeout { fail "print pDe->vvb() (timeout)" } - eof { fail "print pDe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } + gdb_test "print pAe->f()" "\\$\[0-9\]+ = 20" + gdb_test "print pAa->f()" "\\$\[0-9\]+ = 1" + gdb_test "print pDe->vg()" "\\$\[0-9\]+ = 202" + gdb_test "print pADe->vg()" "\\$\[0-9\]+ = 202" + gdb_test "print pDd->vg()" "\\$\[0-9\]+ = 101" + gdb_test "print pEe->vvb()" "\\$\[0-9\]+ = 411" + gdb_test "print pVB->vvb()" "\\$\[0-9\]+ = 407" + gdb_test "print pBe->vvb()" "\\$\[0-9\]+ = 411" + gdb_test "print pDe->vvb()" "\\$\[0-9\]+ = 411" + gdb_test "print pEe->vd()" "\\$\[0-9\]+ = 282" + gdb_test "print pEe->fvb()" "\\$\[0-9\]+ = 311" + + # more recent results: + # wrong value "202" + # gcc 2.95.3 -gdwarf-2 + # gcc 2.95.3 -gstabs+ + # attempt to take addres of value not located in memory + # gcc 3.3.2 -gdwarf-2 + # gcc 3.3.2 -gstabs+ + # + # -- chastain 2003-12-31 - send_gdb "print pEe->vd()\n" - gdb_expect { - -re ".* = 282$nl$gdb_prompt $" { pass "print pEe->vd()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pEe->vd()" + gdb_test_multiple "print pEe->D::vg()" "print pEe->D::vg()" { + -re "\\$\[0-9]+ = 102$nl$gdb_prompt $" { + pass "print pEe->D::vg()" } - -re ".*$gdb_prompt $" { fail "print pEe->vd()" } - timeout { fail "print pEe->vd() (timeout)" } - eof { fail "print pEe->vd() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - send_gdb "print pEe->fvb()\n" - gdb_expect { - -re ".* = 311$nl$gdb_prompt $" { pass "print pEe->fvb()" } - -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { - setup_xfail hppa*-*-* CLLbs16899 - fail "print pEe->fvb()" + -re "Attempt to take address of value not located in memory.$nl$gdb_prompt $" { + kfail "gdb/1064" "print pEe->D::vg()" } - -re ".*$gdb_prompt $" { fail "print pEe->fvb()" } - timeout { fail "print pEe->fvb() (timeout)" } - eof { fail "print pEe->fvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } - } - - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=2.95.3, goption=-gdwarf-2. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=2.95.3, goption=-gstabs+. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=3.0.3, goption=-gdwarf-2. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=3.0.3, goption=-gstabs+. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=3.0.4-20020215, goption=-gdwarf-2. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=3.0.4-20020215, goption=-gstabs+. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=gcc-3_0-branch%2002-02-16, goption=-gdwarf-2. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=gcc-3_0-branch%2002-02-16, goption=-gstabs+. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=HEAD%2002-02-16, goption=-gdwarf-2. - # - # fails on target=native, host=i686-pc-linux-gnu%rh-7.2, - # gdb=HEAD%2002-02-16, gcc=HEAD%2002-02-16, goption=-gstabs+. - # - # -- chastain 2002-02-20 - - send_gdb "print pEe->D::vg()\n" - gdb_expect { - -re ".* = 102$nl$gdb_prompt $" { pass "print pEe->D::vg()" } - -re "Attempt to take address of value not located in memory.\r\n$gdb_prompt $" - { kfail "gdb/1064" "print pEe->D::vg()" } - -re ".*$gdb_prompt $" { fail "print pEe->D::vg()" } - timeout { fail "print pEe->D::vg() (timeout)" } - eof { fail "print pEe->D::vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return } } } proc do_tests {} { global prms_id global bug_id + global srcdir subdir binfile + global gdb_prompt set prms_id 0 set bug_id 0 - gdb_start; - gdb_virtfunc_init; + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile - runto_main + gdb_test "set language c++" "" "" + gdb_test "set width 0" "" "" + runto_main test_ptype_of_classes - if [ runto 'test_calls' ] then { - test_virtual_calls - } + gdb_breakpoint test_calls + gdb_test "continue" ".*Breakpoint .* test_calls.*" "" + test_virtual_calls } do_tests diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc b/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc deleted file mode 100644 index 27459329a8b..00000000000 --- a/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc +++ /dev/null @@ -1,48 +0,0 @@ -// Test file for exception handling support. - -#include - -int foo (int i) -{ - if (i < 32) - throw (int) 13; - else - return i * 2; -} - -extern "C" int bar (int k, unsigned long eharg, int flag); - -int bar (int k, unsigned long eharg, int flag) -{ - cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl; - return 1; -} - -int main() -{ - int j; - - try { - j = foo (20); - } - catch (int x) { - cout << "Got an except " << x << endl; - } - - try { - try { - j = foo (20); - } - catch (int x) { - cout << "Got an except " << x << endl; - throw; - } - } - catch (int y) { - cout << "Got an except (rethrown) " << y << endl; - } - - // Not caught - foo (20); - -} diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp b/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp index a0914ae5ba4..85b0136399e 100644 --- a/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp +++ b/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997, 1998 Free Software Foundation, Inc. +# Copyright 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,423 +17,9 @@ # Please email any bugs, comments, and/or additions to this file to: # bug-gdb@prep.ai.mit.edu -# -# tests for exception-handling support -# Written by Satish Pai 1997-07-23 - -# This file is part of the gdb testsuite - -# Note: These tests are geared to the HP aCC compiler, -# which has an idiosyncratic way of emitting debug info -# for exceptions -- it uses a callback mechanism, which -# is different from the way g++ records exception info -# for debugging - -# The tests are in two parts; the first part deals with -# statically linked (archive-bound) executables, and the -# second part repeats those tests with dynamically linked -# (shared bound) executables. (In the latter case we use -# a different mechanism to get the address of the notification -# hook in the C++ support library.) The tests themselves are -# the same in both parts. -# -# IMPORTANT: -# --------- -# IF YOU CHANGE A TEST IN ONE PART MAKE SURE YOU CHANGE IT -# -------------------------------------------------------- -# IN THE OTHER PART TOO! -# ---------------------- - - - -if $tracelevel then { - strace $tracelevel - } - -if { [skip_hp_tests] } then { continue } - -# -# test running programs -# - -# Part I : Archive-bound executables -# ---------------------------------- - -set testfile "exception" -set srcfile ${testfile}.cc -set binfile ${objdir}/${subdir}/${testfile} - -if [get_compiler_info ${binfile} "c++"] { - return -1; -} - - -if { $gcc_compiled } then { continue } - -set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} +A -Wl,-a,archive -g -o ${binfile}" - -remote_exec build $cmdline - -# Start with a fresh gdb - -set prms_id 0 -set bug_id 0 - -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load ${binfile} - -if ![runto_main] then { - perror "couldn't run to breakpoint" - continue -} - -# Set a catch catchpoint - -send_gdb "catch catch\n" -gdb_expect { - -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" { - pass "catch catch (static executable)" - } - -re ".*$gdb_prompt $" { fail "catch catch (static executable)" } - timeout { fail "(timeout) catch catch (static executable)" } -} - -# Set a throw catchpoint - -send_gdb "catch throw\n" -gdb_expect { - -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" { - pass "catch throw (static executable)" - } - -re ".*$gdb_prompt $" { fail "catch throw (static executable)" } - timeout { fail "(timeout) catch throw (static executable)" } -} - -# The catchpoints should be listed in the list of breakpoints. - -send_gdb "info break\n" -gdb_expect { - -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" { - pass "info break with catchpoints (static executable)" - } - -re ".*$gdb_prompt $" { fail "info break (static executable)" } - timeout { fail "(timeout) info break (static executable)" } -} - -# Info catch currently does not work with HP aCC. No easy way to -# list the active handlers on the stack. - -send_gdb "info catch\n" -gdb_expect { - -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" { - pass "info catch (static executable)" - } - -re ".*$gdb_prompt $" { fail "info catch (static executable)" } - timeout { fail "(timeout) info catch (static executable)" } -} - -# Get the first exception thrown - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" { - pass "caught a throw (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a throw (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a throw? (static executable)" } -} - -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" { - pass "backtrace after throw (static executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" { - pass "backtrace after throw (static executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after throw (static executable)" } - timeout { fail "(timeout) backtrace after throw (static executable)" } -} - -# Now intercept it when it is caught. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" { - pass "caught a catch (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch? (static executable)" } -} - -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" { - pass "backtrace after catch (static executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" { - pass "backtrace after catch (static executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after catch (static executable)" } - timeout { fail "(timeout) backtrace after catch (static executable)" } -} - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" { - pass "caught a throw (2) (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (static executable)" } -} - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" { - pass "caught a catch (2) (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (static executable)" } -} - -# Now the exception will be rethrown. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" { - pass "caught a rethrow (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a rethrow? (static executable)" } -} - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" { - # FIXME: guo: why XFAIL? need comment - xfail "caught a catch (3) (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (static executable)" } -} - -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" { - # FIXME: guo: why XFAIL? need comment - xfail "backtrace after catch (3) (static executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" { - # FIXME: guo: why XFAIL? need comment - xfail "backtrace after catch (3) (static executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (static executable)" } - timeout { fail "(timeout) backtrace after catch (3) (static executable)" } -} - -# Now the exception will be thrown, but not catch-able anywhere. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" { - pass "caught an uncatchable throw (static executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (static executable)" } - timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (static executable)" } -} - -# Part II : Shared-bound executables -# ---------------------------------- - -# Start with a fresh gdb -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir - -set prms_id 0 -set bug_id 0 - -set testfile "exception" -set srcfile ${testfile}.cc -set binfile ${objdir}/${subdir}/${testfile} - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { - gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will a -utomatically fail." -} - - -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load ${binfile} - - -if ![runto_main] then { - perror "couldn't run to breakpoint" - continue -} - -# Set a catch catchpoint - -send_gdb "catch catch\n" -gdb_expect { - -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" { - pass "catch catch (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "catch catch (dynamic executable)" } - timeout { fail "(timeout) catch catch (dynamic executable)" } -} - -# Set a throw catchpoint - -send_gdb "catch throw\n" -gdb_expect { - -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" { - pass "catch throw (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "catch throw (dynamic executable)" } - timeout { fail "(timeout) catch throw (dynamic executable)" } -} - -# The catchpoints should be listed in the list of breakpoints. - -send_gdb "info break\n" -gdb_expect { - -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" { - pass "info break with catchpoints (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "info break (dynamic executable)" } - timeout { fail "(timeout) info break (dynamic executable)" } -} - -# Info catch currently does not work with HP aCC. No easy way to -# list the active handlers on the stack. - -send_gdb "info catch\n" -gdb_expect { - -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" { - pass "info catch (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "info catch (dynamic executable)" } - timeout { fail "(timeout) info catch (dynamic executable)" } -} - -# Get the first exception thrown - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" { - pass "caught a throw (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a throw (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a throw? (dynamic executable)" } -} - -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" { - pass "backtrace after throw (dynamic executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" { - pass "backtrace after throw (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after throw (dynamic executable)" } - timeout { fail "(timeout) backtrace after throw (dynamic executable)" } -} - -# Now intercept it when it is caught. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" { - pass "caught a catch (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch? (dynamic executable)" } -} - -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" { - pass "backtrace after catch (dynamic executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" { - pass "backtrace after catch (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after catch (dynamic executable)" } - timeout { fail "(timeout) backtrace after catch (dynamic executable)" } -} - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" { - pass "caught a throw (2) (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (dynamic executable)" } -} - -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" { - pass "caught a catch (2) (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (dynamic executable)" } -} - -# Now the exception will be rethrown. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" { - pass "caught a rethrow (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a rethrow? (dynamic executable)" } -} - -#DTS CLLbs14858 -#The throw location should be at line 38 instead of 36. -setup_xfail hppa*-*-* CLLbs14858 -send_gdb "continue\n" -gdb_expect { - -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" { - # FIXME: guo: according to comment above the RE is wrong! - pass "caught a catch (3) (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (dynamic executable)" } -} - -#DTS CLLbs14858 -#The line number for main() should be at exception.cc:38 instead of exception.cc:36 -setup_xfail hppa*-*-* CLLbs14858 -send_gdb "backtrace\n" -gdb_expect { - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" { - # FIXME: guo: according to comment above the RE is wrong! - pass "backtrace after catch (3) (dynamic executable)" - } - -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" { - # FIXME: guo: according to comment above the RE is wrong! - pass "backtrace after catch (3) (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (dynamic executable)" } - timeout { fail "(timeout) backtrace after catch (3) (dynamic executable)" } -} - -# Now the exception will be thrown, but not catch-able anywhere. - -send_gdb "continue\n" -gdb_expect { - -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" { - pass "caught an uncatchable throw (dynamic executable)" - } - -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (dynamic executable)" } - timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (dynamic executable)" } -} +# This file exists because the configure script requires it to exist. +# It would be nice to regenerate the configure script. I can't do it +# because I don't have autoconf 2.12.1, which is used to build it. +# -- chastain 2004-01-09 +continue diff --git a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc b/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc deleted file mode 100644 index 759bc0f8943..00000000000 --- a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include - -template -class StringTest { -public: - virtual void runTest(); - void testFunction(); -}; - -template -void StringTest:: runTest() { - testFunction (); -} - -template -void StringTest ::testFunction() { - // initialize s with string literal - cout << "in StringTest" << endl; - string s("I am a shot string"); - cout << s << endl; - - // insert 'r' to fix "shot" - s.insert(s.begin()+10,'r' ); - cout << s << endl; - - // concatenate another string - s += "and now a longer string"; - cout << s << endl; - - // find position where blank needs to be inserted - string::size_type spos = s.find("and"); - s.insert(spos, " "); - cout << s << endl; - - // erase the concatenated part - s.erase(spos); - cout << s << endl; -} - -int main() { - StringTest ts; - ts.runTest(); -} - -/* output: -I am a shot string -I am a short string -I am a short stringand now a longer string -I am a short string and now a longer string -I am a short string -*/ diff --git a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp b/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp deleted file mode 100644 index ef249516bd6..00000000000 --- a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (C) 1992 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -# Test case for CLLbs15503 -# This file was written by Sue Kimura (sue_kimura@hp.com) - -if $tracelevel { - strace $tracelevel -} - -if { [skip_hp_tests] } { continue } - -set testfile "bs15503" -set srcfile ${testfile}.cc -set binfile ${objdir}/${subdir}/${testfile} - -# Create and source the file that provides information about the compiler -# used to compile the test case. -if [get_compiler_info ${binfile}] { - return -1 -} - -# The testcode is non-conforming and rejected by GCC. So bypass this -# test completely unless we're compiling with HP's compiler. -if {!$hp_aCC_compiler && !$hp_cc_compiler} { - return 0 -} - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } { - perror "Couldn't compile ${srcfile}" - return -1 -} - - -# Start with a fresh gdb. -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir - -# Load $binfile -- there should be no warnings about "Procedure ... spans -# file or module boundaries", "No symbols in psymtab for file ..." or -# "File ... has ending address after starting address of next file..." - -if [istarget "hppa64-hp-hpux*" ] { - gdb_test "file $binfile" \ - "Detected 64-bit executable..*Invoking .*gdb64..*Use \"run\" to continue execution." \ - "loading $binfile" -} else { - gdb_test "file $binfile" \ - "Reading symbols from $binfile...done." \ - "loading $binfile" -} -# Test setting breakpoint on template function -# -gdb_test "break StringTest::testFunction" \ - "Breakpoint $decimal at $hex: file .*bs15503.cc, line 19." \ - "break point on function" - -gdb_test "run" \ - "Starting program:.*Breakpoint $decimal, StringTest::testFunction \\(this=$hex\\).*cout << \"in StringTest\" << endl;.*" \ - "run to function breakpoint" - -#restart with fresh gdb -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load $binfile - -gdb_test "break 32" \ - "Breakpoint $decimal at $hex: file .*bs15503.cc, line 32." \ - "break point on line in function" - -gdb_test "run" \ - ".*32.*string::size_type spos = s.find\\(\"and\"\\);.*" \ - "run to break point on line in function" diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog deleted file mode 100644 index 6f263c33056..00000000000 --- a/gdb/testsuite/gdb.mi/ChangeLog +++ /dev/null @@ -1,768 +0,0 @@ -2003-08-07 Andrew Cagney - - * mi2-basics.exp: Copy base MI .exp file, set MIFLAGS to -i=mi2. - * mi2-break.exp, mi2-cli.exp, mi2-console.exp: Ditto. - * mi2-disassemble.exp, mi2-eval.exp, mi2-file.exp: Ditto. - * mi2-hack-cli.exp, mi2-pthreads.exp, mi2-read-memory.exp: Ditto. - * mi2-regs.exp, mi2-return.exp, mi2-simplerun.exp: Ditto. - * mi2-stack.exp, mi2-stepi.exp, mi2-syn-frame.exp: Ditto. - * mi2-until.exp, mi2-var-block.exp, mi2-var-child.exp: Ditto. - * mi2-var-cmd.exp, mi2-var-display.exp, mi2-watch.exp: Ditto. - -2003-05-03 J. Brobecker - - From Thierry Schneider : - * mi1-symbol.exp (-symbol-list-lines): New test file to - validate all symbol-related commands - -2003-04-08 Andrew Cagney - - * gdb792.exp: Skip when C++. - -2003-02-23 Stephane Carrez - - * mi-syn-frame.exp: Don't run this test when gdb,nosignals is set. - -2002-12-13 Jeff Johnston - - * mi-basics.exp: Change tests for -environment-directory. Also add - tests for -environment-cd, -environment-pwd, and -environment-path. - Part of fix for PR gdb/741. - -2002-11-05 Jeff Johnston - - * gdb792.cc: New file to test patch for PR gdb/792. - * gdb792.exp: Ditto. - -2002-11-04 Elena Zannoni - - * mi-console.exp: Use mi_runto, mi_run_to_main, mi_next_to, - mi_step_to wherever possible. Update copyright notices. - * mi-disassemble.exp: Ditto. - * mi-eval.exp: Ditto. - * mi-read-memory.exp: Ditto. - * mi-regs.exp: Ditto. - * mi-return.exp: Ditto. - * mi-stack.exp: Ditto. - * mi-stepi.exp: Ditto. - * mi-var-block.exp: Ditto. - * mi-var-cmd.exp: Ditto. - * mi-watch.exp: Ditto. - * mi1-console.exp: Ditto. - * mi1-disassemble.exp: Ditto. - * mi1-eval.exp: Ditto. - * mi1-read-memory.exp: Ditto. - * mi1-regs.exp: Ditto. - * mi1-return.exp: Ditto. - * mi1-stack.exp: Ditto. - * mi1-stepi.exp: Ditto. - * mi1-var-block.exp: Ditto. - * mi1-var-cmd.exp: Ditto. - * mi1-watch.exp: Ditto. - -2002-10-23 Jeff Johnston - - * mi-var-cmd.exp: Add tests to verify that a -var-assign that changes - a value shows up in the changelist of a -var-update. Part of fix - for gdb/702. - * mi1-var-cmd.exp: Ditto. - -2002-10-03 Jeff Johnston - - * mi-return.exp: Change expected frame output to remove extraneous - space in level field when frame level is single digit. Part of - fix for PR gdb/192. - * mi-stack.exp: Ditto. - * mi1-return.exp: Ditto. - * mi1-stack.exp: Ditto. - -2002-10-03 Jeff Johnston - - * mi-var-block.exp: Change expected output from -var-update - command to expect list format for "changelist". Fix for - PR gdb/672. - * mi-var-cmd.exp: Ditto. - * mi-var-child: Ditto. - -2002-09-25 Keith Seitz - - * mi-pthreads.exp (get_mi_thread_list): Check if expect_out - exists before using it. - (check_mi_and_console_threads): Likewise. - * gdb669.exp (get_mi_thread_list): Likewise. - (check_mi_and_console_threads): Likewise. - -2002-09-24 Keith Seitz - - * configure.in: Add config header. - Check for pthread.h. - * configure: Regenerate. - * config.in: New file. - * pthreads.c: New file. - * mi-pthreads.exp: New file to test thread functionality. - * gdb669.exp: New file. - -2002-09-17 Keith Seitz - - * mi-var-cmd.exp: Add tests to check when varobj pinned to a - selected frame changes type. - -2002-09-17 Keith Seitz - - * mi-console.exp: Update copyright. - * mi-var-block.exp: Likewise. - * mi-var-cmd.exp: Likewise. - * mi-var-display.exp: Likewise. - * mi0-console.exp: Likewise. - * mi0-var-child.exp: Likewise. - * mi0-var-cmd.exp: Likewise. - * mi0-var-display.exp: Likewise. - -2002-09-16 Keith Seitz - - * gdb701.exp: New file for testing varobj target type bug. - * gdb701.c: New file. - -2002-09-13 Keith Seitz - - * mi-var-child.exp: Use mi_step_to and mi_execute_to instead - of a bunch of repeated send_gdb/gdb_expect statements. - Fix line numbers. - -2002-09-10 Keith Seitz - - * mi-simplerun.exp (test_controlled_execution): Follow renaming of - mi_run_to to mi_execute_to. - * mi-var-cmd.exp: Likewise. - * mi0-simplerun.exp: Likewise. - * mi0-var-cmd.exp: Likewise. - -2002-09-03 Keith Seitz - - * gdb680.exp: New file to test to check for uiout list/tuple - nesting bug. - -2002-03-04 Michael Chastain - - * mi-var-cmd.exp: In test "create local variable func", - accommodate gcc v3 function signature. - * mi0-var-cmd-exp: Ditto. - -2002-02-05 Jim Blandy - - * mi-regs.exp: Various cleanups for SPARC-only tests. - (test_breakpoints_creation_and_listing): Format of breakpoint - table has changed. - (sparc_register_tests): Expand floating-point number regexp to - recognize NaN values, too. Replace ineffectual single backslash - before a hyphen with a double backslash. Don't check the exact - numbers of the registers which have changed, since there's no way - to know which registers changed, exactly; just check that the - result is well-formed. - * mi0-regs.exp: (sparc_register_tests): Same as for - sparc_register_tests in mi-regs.exp. - - * mi-var-child.exp ("get children of struct_declarations", "get - children of struct_declarations.s2.u2.u1s2", "get children of - weird"): Tolerate argument types when they appear in function - types. (Dwarf 2 includes prototype info; STABS does not.) - * mi0-var-child.exp: Same. - -2001-12-19 Keith Seitz - - * mi-var-display.exp: char* variables have a child. Update all - occurences. - * mi0-var-display.exp: Likewise. - -2001-08-29 Andrew Cagney - - * mi-var-cmd.exp, mi0-var-cmd.exp: Variable lpcharacter has one - child. Soften floating point tests. - -2001-08-09 Andrew Cagney - - * mi0-var-block.exp, mi0-stack.exp, mi0-simplerun.exp, - mi0-regs.exp, mi0-watch.exp, mi0-stepi.exp, mi0-until.exp, - mi0-return.exp, mi0-read-memory.exp, mi0-eval.exp, - mi0-disassemble.exp, mi0-console.exp, mi-watch.exp, - mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp, - mi-until.exp, mi-var-block.exp, mi-stepi.exp, mi-stack.exp, - mi-simplerun.exp, mi-return.exp, mi-regs.exp, mi-read-memory.exp, - mi-disassemble.exp, mi-eval.exp, mi-console.exp: Replace pattern - matching thread=0 with one to also match thread=1. - Fix PR gdb/190. - -2001-08-18 Andrew Cagney - - * mi0-until.exp, mi-until.exp, mi0-stepi.exp, mi-stepi.exp, - mi-simplerun.exp, mi0-simplerun.exp, mi0-return.exp, - mi-return.exp, mi0-console.exp, mi-console.exp: Recognize an - unexpected run-to-main response. Report as a fail. - -2001-06-27 Andrew Cagney - - * mi-disassemble.exp: Update to accept mi1 breakpoint tables. - * mi-basics.exp: Ditto. - * mi-simplerun.exp: Ditto. - * mi-watch.exp: Ditto. Add check for full header. - * mi-break.exp: Ditto. Add check for full header. - -2001-06-26 Andrew Cagney - - * mi-stack.exp: Update. Output for args=... and - locals=... changed to a list. - -2001-06-26 Andrew Cagney - - * mi-stack.exp: Update. Output for stack=..., args=... and - stack-args=... changed to a list. - -2001-06-25 Andrew Cagney - - * mi-console.exp: Update args=... part of stop-reason - patterns. Output changed to a list of arguments. - * mi-disassemble.exp: Ditto. - * mi-simplerun.exp: Ditto. - * mi-return.exp: Ditto. - * mi-read-memory.exp: Ditto. - * mi-eval.exp: Ditto. - * mi-watch.exp: Ditto. - * mi-var-display.exp: Ditto. - * mi-var-cmd.exp: Ditto. - * mi-var-child.exp: Ditto. - * mi-var-block.exp: Ditto. - * mi-until.exp: Ditto. - * mi-stepi.exp: Ditto. - * mi-stack.exp: Ditto. - * mi-regs.exp: Ditto. - -2001-06-25 Andrew Cagney - - * mi-read-memory.exp: Update patterns matching data-read-memory. - Outputs a list. - -2001-06-25 Andrew Cagney - - * mi-regs.exp: Update patterns matching register-values. Outputs a - list. - -2001-06-25 Andrew Cagney - - * mi-regs.exp: Update patters matching register-names. Now - outputs a list. - -2001-06-25 Andrew Cagney - - * mi-regs.exp: Update patterns matching changed-registers. Now - outputs a list. - -2001-06-23 Andrew Cagney - - * ChangeLog-mi: Rename to ChangeLog. - * mi-basics.exp: Remove local emacs variable defining - change-log-default-name. - * mi-break.exp, mi-console.exp, mi-disassemble.exp: Ditto. - * mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp: Ditto. - * mi-regs.exp, mi-return.exp, mi-simplerun.exp: Ditto. - * mi-stack.exp, mi-stepi.exp, mi-until.exp: Ditto. - * mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp: Ditto. - * mi-var-display.exp, mi-watch.exp, mi0-basics.exp: Ditto. - * mi0-break.exp, mi0-console.exp, mi0-disassemble.exp: Ditto. - * mi0-eval.exp, mi0-hack-cli.exp, mi0-read-memory.exp: Ditto. - * mi0-regs.exp, mi0-return.exp, mi0-simplerun.exp: Ditto. - * mi0-stack.exp, mi0-stepi.exp, mi0-until.exp: Ditto. - * mi0-var-block.exp, mi0-var-child.exp, mi0-var-cmd.exp: Ditto. - * mi0-var-display.exp, mi0-watch.exp: Ditto. - -2001-06-23 Andrew Cagney - - * mi-disassemble.exp: Update patterns matching data-disassemble - output. Now produces a list of instructions and a list of - source/assembly lines. - -2001-06-18 Andrew Cagney - - * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp, - mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp, - mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp, - mi-until.exp, mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp, - mi-var-display.exp, mi-watch.exp, mi0-basics.exp, mi0-break.exp, - mi0-console.exp, mi0-disassemble.exp, mi0-eval.exp, - mi0-hack-cli.exp, mi0-read-memory.exp, mi0-regs.exp, - mi0-return.exp, mi0-simplerun.exp, mi0-stack.exp, mi0-stepi.exp, - mi0-until.exp, mi0-var-block.exp, mi0-var-child.exp, - mi0-var-cmd.exp, mi0-var-display.exp, mi0-watch.exp: Use MIFLAGS - to explictly select an interpreter. - -2001-06-16 Andrew Cagney - - MI0 was the never enabled MI interface included in GDB 5.0. - * mi0-basics.exp: Copy mi-basics.exp. - * mi0-break.exp: Copy mi-break.exp. - * mi0-console.exp: Copy mi-console.exp. - * mi0-disassemble.exp: Copy mi-disassemble.exp. - * mi0-eval.exp: Copy mi-eval.exp. - * mi0-hack-cli.exp: Copy mi-hack-cli.exp. - * mi0-read-memory.exp: Copy mi-read-memory.exp. - * mi0-regs.exp: Copy mi-regs.exp. - * mi0-return.exp: Copy mi-return.exp. - * mi0-simplerun.exp: Copy mi-simplerun.exp. - * mi0-stack.exp: Copy mi-stack.exp. - * mi0-stepi.exp: Copy mi-stepi.exp. - * mi0-until.exp: Copy mi-until.exp. - * mi0-var-block.exp: Copy mi-var-block.exp. - * mi0-var-child.exp: Copy mi-var-child.exp. - * mi0-var-cmd.exp: Copy mi-var-cmd.exp. - * mi0-var-display.exp: Copy mi-var-display.exp. - * mi0-watch.exp: Copy mi-watch.exp. - -2001-05-11 Fernando Nasser - - * mi-var-child.exp: Adjust for the fact that now (char *) can be - dereferenced. - -2001-03-06 Kevin Buettner - - * mi-basics.exp, mi-break.exp, mi-disassemble.exp, - mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp, - mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp, - mi-until.exp, mi-watch.exp: Update/correct copyright notices. - -2001-01-20 Mark Kettenis - - * mi-support.exp (mi_gdb_start): Skip mi tests if -i flag is - recognized (i.e. if GDB was compiled with UI_OUT, but the mi - interpreter wasn't recognized (because it wasn't compiled in). - -Tue Apr 18 15:36:07 2000 Andrew Cagney - - * Makefile.in (clean mostlyclean): Do not delete $(MISCELLANEOUS). - -Tue Mar 14 15:54:57 2000 Andrew Cagney - - * basics.c: Add EMACS local variable pointing change-log at this - file. - * Makefile.in: Ditto - -2000-03-13 James Ingham - - * mi-var-block.exp: The error report from varobj_create changed - since I am now trapping parse_exp_1 errors. Change the tests to - match the new error message. - * mi-var-child.exp: Ditto. - * mi-var-cmd.exp: Ditto. - -2000-03-06 Elena Zannoni - - * mi-disassemble.exp: Don't assume numbers for the offset - values. They can be different depending on the architecture. - - * mi-watch.exp (test_watchpoint_triggering): In same cases the - type can be 'hw wathcpoint' not just 'watchpoint'. Adjust for that. - - * basics.c (callee4): Make the function return something, - otherwise the return value is undefined. - -2000-03-06 Elena Zannoni - - * mi-basics.exp: Comment out test for a still unimplemented operation. - - * mi-disassemble.exp: Rewrite most of the tests to conform to new - disassemble interface. - -Sat Mar 4 13:55:08 2000 Andrew Cagney - - From Fri 3 Mar 2000 Peter Schauer: - * mi-support.exp (mi_gdb_start): When GDB doesn't recongize -i=mi - option, assume no MI support present. - -2000-02-01 Elena Zannoni - - * mi-support.exp (mi_gdb_start): Update to recognize start up - message with 'UI_OUT' instead of 'HEADLESS'. - -2000-01-27 Elena Zannoni - - * mi-regs.exp (test_running_the_program): Add global var 'hex'. - - * mi-stack.exp, mi-stepi.exp, mi-until.exp, mi-watch.exp, - mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp, - mi-var-block.exp: Update all stopped messages. - -2000-01-17 Elena Zannoni - - * mi-console.exp, mi-disassemble.exp, mi-eval.exp, - mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp: - Update stopped messages, update copyright. - - * mi-disassemble.exp: Update error messages output. - - * mi-support.exp (proc mi_step): Make gdb do a 'step' command, not - a 'next'. Update stopped message. - (proc mi_next): Update stop message. - (proc mi_run_to_main): Update stopped message. - Update copyright. - -2000-01-11 Elena Zannoni - - * mi-simplerun.exp: Remove stack frames tests from here, to: - - * mi-stack.exp: New file, tests for stack commands. - - * mi-support.exp (mi_run_to_main, mi_next, mi_step) : Update to - include thread-id in stopped message. - - * mi-regs.exp: Update break-insert output. - - * (mi-console.exp, mi-disassemble.exp, mi-eval.exp, - mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp, - mi-stepi.exp, mi-until.exp, mi-var-block.exp, mi-var-child.exp, - mi-var-cmd.exp, mi-var-display.exp, mi-watch.exp): Update stopped - message to include thread-id. - -Wed Dec 29 22:06:05 1999 Andrew Cagney - - * mi-watch.exp, mi-var-display.exp, mi-var-cmd.exp, - mi-var-child.exp, mi-var-block.exp, mi-until.exp, mi-stepi.exp, - mi-simplerun.exp, mi-return.exp, mi-support.exp, mi-eval.exp, - mi-console.exp, mi-disassemble.exp, mi-break.exp: Update to - reflect extended output from -break-insert command. - - * mi-break.exp (test_rbreak_creation_and_listing): XFAIL regexp - tests. -r flag broken by above. - -Sun Dec 19 19:28:13 1999 Andrew Cagney - - * cpp_variable.cc, cpp_variable.h, c_variable.c: Delete. - -Fri Dec 17 20:59:55 1999 Andrew Cagney - - * mi-read-memory.exp: Test of ``-o '' now works. - -1999-12-16 Elena Zannoni - - * mi-var-cmd.exp: Fix 2 tests outputs. - - * mi-var-child.exp: Add many more tests. - - * mi-var-display.exp: Add many more tests. - - * var-cmd.c: Change type of incr_a parameter to char. - -1999-12-15 Elena Zannoni - - * mi-var-block.exp: Set up xfails fro known problems. - - * mi-var-display.exp: Set up printing of values of 'e' and 'anone' - as xfails. - - * mi-var-child.exp: Fix typos. - -1999-12-15 Andrew Cagney - - * mi-var-child.exp: Space was missing before ``[10]''. - -Wed Dec 15 19:23:38 1999 Andrew Cagney - - * mi-read-memory.exp: Add test for ``-o ''. Update checks - and match next-row et.al. - -1999-12-14 Elena Zannoni - - * mi-var-display.exp : New file. Tests for format and type, with - unions, structs and enums. - - * mi-var-cmd.exp: Add some var-assign tests. - -1999-12-14 Elena Zannoni - - * mi-var-cmd.exp, mi-var-block.exp, mi-var-child.exp: New files - some tests for -var* commands. - - * var-cmd.c: New source file for var-* commands tests. - * gdb.mi/Makefile.in (PROGS): Add var-cmd. - -Mon Dec 13 18:06:09 1999 Andrew Cagney - - * mi-break.exp: Fix quoting. Changed "srcfile.c":6 to - "\"srcfile.c\":6". - * mi-simplerun.exp: Fix quoting. - -Sat Dec 11 21:33:37 1999 Andrew Cagney - - * mi-simplerun.exp (exec-finish): Fix return value was zero, - should have been three. - - * mi-disassemble.exp: Reduce number of wild card matches in - * patterns. Remove all numeric constants. - -1999-12-09 Elena Zannoni - - * mi-eval.exp: New file. Some initial tests for - -data-evaluate-expression. - -1999-12-09 Fernando Nasser - - * c_variable.c, cpp_variable.cc, cpp_variable.h: New files. Used - for testing "var" operations. - * Makefile.in: Add reference to the above files. - -1999-12-08 Elena Zannoni - - * mi-regs.exp: Fix test for format 'N' for - data-list-register-values. - -1999-12-07 Elena Zannoni - - * mi-disassemble.exp: Update expected output. Break test of - disassembly in mixed mode into 2 functions. - - * mi-regs.exp: Initial register tests. Works only on sparc right - now. - -1999-12-02 Elena Zannoni - - * mi-stepi.exp: New file. Tests exec-step-instruction and - exec-next-instruction. - * mi-until.exp: New file. Tests exec-until. - * until.c: New file. - * mi-return.exp: New file. Tests exec-return. - -Thu Dec 2 09:38:23 1999 Andrew Cagney - - * mi-hack-cli.exp: New test. Check the hacked up access to the - CLI. - -Wed Dec 1 16:47:40 1999 Andrew Cagney - - * mi-basics.exp: Delete calls to mi_delete_breakpoints, - mi_gdb_reinitialize_dir and mi_gdb_load. This test is checking - that these can work. - - * mi-support.exp (mi_step, mi_next, mi_run_to_main): New - procedures. - - * mi-read-memory.exp, mi-read-memory.c: New files. Test - data-read-memory command. - -Tue Nov 30 23:54:16 1999 Andrew Cagney - - * mi-support.exp: Don't start SID until after GDB has been started - and verified. - -Tue Nov 30 22:21:33 1999 Andrew Cagney - - * mi-support.exp (mi_uncatched_gdb_exit): When SID, call sid_exit. - (mi_gdb_start): When SID, call sid_start. - (mi_gdb_start): Add MIFLAGS to spawn-GDB command. Check for - HEADLESS gdb. Return non-zero when GDB fails to start. - (mi_gdb_load): When SID or SIM, download program. - (mi_run_cmd): Don't do download here. Assume target supports the - 00-exec-run command. - (skip_mi_tests, setup_gdbmi, unset_gdbmi): Delete. Merged into - mi_gdb_start. - - * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp, - mi-simplerun.exp, mi-watch.exp: Update. Check status from - mi_gdb_start indicating that GDB started correctly. - -Tue Nov 30 15:22:08 1999 Andrew Cagney - - * mi-support.exp (setup_gdbmi, unset_gdbmi): New - procedures. Setup/unset dejagnu for mi tests. - * mi-basics.exp, mi-console.exp, mi-simplerun.exp, mi-break.exp, - mi-disassemble.exp, mi-watch.exp: Update. - -1999-11-29 Elena Zannoni - - * mi-simplerun.exp (test_running_the_program): Remove XFAIL. The - output is fixed now. - (test_program_termination): Update output pattern. - -Tue Nov 30 00:19:10 1999 Andrew Cagney - - * mi-console.c, mi-console.exp: New files. Test console output. - -Mon Nov 29 17:59:13 1999 Andrew Cagney - - * mi-support.exp (mi_run_command): Check for exec-run command - failure due to MI not having an active target. - (mi_run_command): Check for and handle a builtin simulator target. - (mi_run_command): Don't check/handle for ``The program has been - started already'', not a valid MI response. - - * mi-simplerun.exp (test_running_the_program): Update all patterns - to match async output. - (test_running_the_program): Mark ``step to callee4'' as XFAIL. MI - output contains {,reason="end-stepping-range"}+. - - * mi-simplerun.exp: Limit the timeout for ``step to callee4'' to - 30 seconds. - -Mon Nov 29 17:30:00 1999 Andrew Cagney - - * mi-support.exp (skip_mi_tests): Print UNTESTED when MI interface - isn't available. Start/stop instead of assuming GDB is running. - (MIFLAGS): Define. - * mi-simplerun.exp, mi-disassemble.exp, mi-break.exp, - mi-basics.exp, mi-watch.exp: Update. - -1999-11-26 Elena Zannoni - - * mi-simplerun.exp: Move break-insert {-t, -r} from here. - * mi-break.exp: To here. New file. - * mi-watch.exp: New file. Tests for watchpoints. - -Wed Nov 24 17:42:07 1999 Andrew Cagney - - * gdb.mi/ChangeLog-mi: MI entries moved to here. - -Wed Nov 24 17:31:04 1999 Andrew Cagney - - * gdb.mi/mi-basics.exp, gdb.mi/mi-disassemble.exp, - gdb.mi/mi-simplerun.exp: Print warning message when test isn't - run. - -1999-11-23 Elena Zannoni - - * gdb.mi/mi-simplerun.exp: Update output of break-list to account for - "times" field. - -1999-11-05 Elena Zannoni - - * gdb.mi/mi-simplerun.exp: Add tests for temporary breakpoints - and bp based on regular expressions. - * gdb.mi/mi-disassemble.exp: Fix typo. - -1999-11-04 Elena Zannoni - - * gdb.mi/mi-disassemble.exp: Update output of execution commands - to reflect new 'reason' field. - * gdb.mi/mi-simplerun.exp: Ditto. - -1999-10-25 Elena Zannoni - - * gdb.mi/mi-simplerun.exp: Add more stack-list-frames tests. - - * gdb.mi/mi-disassemble.exp: Update 'run to main' output. - - * gdb.mi/mi-simplerun.exp: Update execution commands - output. Update backtrace output. - -1999-10-18 Elena Zannoni - - * gdb.mi/mi-disassemble.exp: Add new tests for the new - disassembly command parameter, number of lines. - -Mon Oct 11 13:57:21 1999 Andrew Cagney - - * lib/mi-support.exp: Break complicated gdb_expect containing - exp_continue into a while within an expect. Don't attempt a start - more than three times. Check return value from gdb_load. - -1999-10-06 Elena Zannoni - - * gdb.mi/mi-disassemble.exp: New file. - -Wed Oct 6 12:05:58 1999 Andrew Cagney - - * lib/mi-support.exp (mi_run_cmd): Give up after two restart - attempts. - -1999-09290 Fernando Nasser - - * gdb.mi/mi-basics.exp: Update to current syntax and output formats. - * gdb.mi/mi-simplerun.exp: Ditto. - * lib/mi-support.exp (mi_delete_breakpoints): Ditto. - -1999-06-30 Fernando Nasser - - * gdb.mi/basics.c (main): Fix return code. Add a print "Hello, - World". - * gdb.mi/mi-basics.exp: Fix message texts and numbering. - * gdb.mi/mi-simplerun.exp: Ditto. Also, add new tests and improve - some patterns. - -1999-06-30 Fernando Nasser - - * lib/mi-support.exp (mi_gdb_reinitialize_dir): Remove query as an - acceptable response to the environment-dir command. - -1999-06-30 Fernando Nasser - - * lib/mi-support.exp (mi_delete_breakpoints): Remove references to - gdb-cli. - (mi_run_cmd): Ditto. - -1999-06-25 Fernando Nasser - - * lib/mi-support.exp (skip_mi_tests): Use gdb-version to check for - headless output format. - -1999-06-24 Fernando Nasser - - * gdb.mi/mi-simplerun.exp (test_controlled_execution): Add global - spec for hex. - -1999-06-24 Fernando Nasser - - * lib/mi-support.exp (mi_run_cmd): Fix pattern and add a timeout - clause. - -1999-06-24 Fernando Nasser - - * lib/mi-support.exp: Use mi_gdb_prompt instead of a modified - gdb_prompt. Remove uneeded loading of libgloss. - (mi_gdb_exit): Remove prompt argument. - (mi_uncatched_gdb_exit): Ditto. - (mi_run_cmd): New proc. MI version of gdb_run. - (skip_mi_tests): New proc. Check if gdb is capable of producing - headless formatted output. - * gdb.mi/mi-basics.exp: Use mi_gdb_prompt instead of a modified - gdb_prompt. Eliminate parameter to mi_gdb_exit (as a result of - the above). Test for skip_mi_tests before running. - Note: The above changes are interelated (need each other). - * gdb.mi/mi-simplerun.exp: Same changes as for mi-basics.exe - above. - (test_breakpoint_creation_and_listing): Remove insertion of - breakpoint at callee1 (and renumber tokens). Add tests for - break-list, break-disable and break-info. - (test_running_the_program): Use mi_run_cmd so it can run on remote - targets. - (test_controlled_execution): Fix broken test. - (test_program_termination): Test implemented. - * gdb.mi/basic.c (main): Small change to allow for testing of both - exec-next and exec-step operations. - -1999-06-22 Fernando Nasser - - * lib/mi-support.exp (mi_gdb_test): New proc. MI version of gdb_test. - * gdb.mi/mi-basics.exp: Use the above instead of gdb_test. - * gdb.mi/mi-simplerun.exp: Ditto. - -1999-06-22 Fernando Nasser - - * gdb.mi/mi-simplerun.exp: New file. Tests simple debugging tasks. - * gdb.mi/mi-basics.exp: Remove tests moved to above new file. - * lib/mi-support.exp: New file. Support procedures for mi tests. - -1999-06-08 Fernando Nasser - - * gdb.mi/mi-basics.exp: Skip all tests if the MI interpreter is - not active. - -1999-06-03 Fernando Nasser - - * gdb.mi: New directory. - * configure.in: Configure it. - * configure: Regenerate. - * gdb.mi/{Makefile.in,configure.in,configure}: New files. - * gdb.mi/{mi-basics.exp,basics.c,testcmds}: New files. - - -Local Variables: -mode: indented-text -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c index b73b0236c93..0d8f1b616fc 100644 --- a/gdb/testsuite/gdb.mi/pthreads.c +++ b/gdb/testsuite/gdb.mi/pthreads.c @@ -1,5 +1,5 @@ /* Pthreads test program. - Copyright 1996, 2002, 2003 + Copyright 1996, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Keith Seitz of Red Hat. @@ -58,7 +58,7 @@ void done_making_threads (void) { /* Nothing */ -}; +} void create_thread (void) diff --git a/gdb/testsuite/gdb.stabs/weird.exp b/gdb/testsuite/gdb.stabs/weird.exp index e3bbfb5e6cc..324f67b1f0b 100644 --- a/gdb/testsuite/gdb.stabs/weird.exp +++ b/gdb/testsuite/gdb.stabs/weird.exp @@ -1,4 +1,5 @@ -# Copyright 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright 1997, 1998, 1999, 2001, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -33,6 +34,24 @@ if ![file isdirectory ${objdir}/${subdir}] then { set prms_id 0 set bug_id 0 +set testfile weird +set srcfile ${objdir}/${subdir}/weird.s +set binfile ${objdir}/${subdir}/weirdx.o + +if { [ get_compiler_info "$binfile" ] } { + return -1 +} + +if { $hp_cc_compiler || $hp_aCC_compiler } { + # The native hp-ux assembler does not support stabs at all. + # If the compiler is native hp-ux, of course the assembler is too. + # But if someone builds gcc with the native assembler (not recommended) + # rather than the gnu assembler, then this logic will not suppress it. + # -- chastain 2004-01-07 + unsupported "stabs with hp-ux assembler" + continue +} + proc do_tests {} { global binfile global gdb_prompt @@ -236,9 +255,6 @@ proc print_weird_var { var } { # Don't use gdb_load; it doesn't bitch if the loading produced some # error messages during symbol reading. -set testfile weird -set srcfile ${objdir}/${subdir}/weird.s -set binfile ${objdir}/${subdir}/weirdx.o global target_os set sedscript ${srcdir}/${subdir}/aout.sed @@ -266,7 +282,6 @@ switch -glob ${target_triplet} { } } - # Hope this is a Unix box. set exec_output [remote_exec build "sed" "-f ${sedscript}" "${srcdir}/${subdir}/weird.def" "${srcfile}"] if { [lindex $exec_output 0] != 0 } { @@ -274,12 +289,6 @@ if { [lindex $exec_output 0] != 0 } { return -1 } -# HP's assembler has no idea of what to do with .stab directives; detect the -# use of HP compilers and escape from here. (No doubt a better heuristic -# could be devised.) - -if { [ info exists CC ] && [ string first "/opt/ansic/bin/cc" "$CC" ] >= 0 } then { continue } - if { [gdb_compile "${srcfile}" "${binfile}" object ""] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } diff --git a/gdb/testsuite/lib/compiler.cc b/gdb/testsuite/lib/compiler.cc index 719b62b0b6b..bbefeaabe98 100644 --- a/gdb/testsuite/lib/compiler.cc +++ b/gdb/testsuite/lib/compiler.cc @@ -1,6 +1,6 @@ /* This test file is part of GDB, the GNU debugger. - Copyright 1995, 1999, 2003 Free Software Foundation, Inc. + Copyright 1995, 1999, 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,18 +34,6 @@ definition made with 'set" to see if one already exists, and if so warn about conflicts if it is being set to something else. */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) -set supports_template_debugging 1 -#else -set supports_template_debugging 0 -#endif - -#if defined(__cplusplus) -set supports_template_debugging 1 -#else -set supports_template_debugging 0 -#endif - #if defined (__GNUC__) set gcc_compiled __GNUC__ set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ } -] diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 136f68c43b8..3f2938ef2be 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1918,3 +1918,87 @@ proc gdb_skip_bogus_test { msg } { return 0; } + +# Note: the procedure gdb_gnu_strip_debug will produce an executable called +# ${binfile}.dbglnk, which is just like the executable ($binfile) but without +# the debuginfo. Instead $binfile has a .gnu_debuglink section which contains +# the name of a idebuginfo only file. This file will be stored in the +# gdb.base/.debug subdirectory. + +# Functions for separate debug info testing + +# starting with an executable: +# foo --> original executable + +# at the end of the process we have: +# foo.stripped --> foo w/o debug info +# .debug/foo.debug --> foo's debug info +# foo --> like foo, but with a new .gnu_debuglink section pointing to foo.debug. + +# Return the name of the file in which we should stor EXEC's separated +# debug info. EXEC contains the full path. +proc separate_debug_filename { exec } { + + # In a .debug subdirectory off the same directory where the testcase + # executable is going to be. Something like: + # /gdb/testsuite/gdb.base/.debug/blah.debug. + # This is the default location where gdb expects to findi + # the debug info file. + + set exec_dir [file dirname $exec] + set exec_file [file tail $exec] + set debug_dir [file join $exec_dir ".debug"] + set debug_file [file join $debug_dir "${exec_file}.debug"] + + return $debug_file +} + + +proc gdb_gnu_strip_debug { dest } { + + set debug_file [separate_debug_filename $dest] + set strip_to_file_program strip + set objcopy_program objcopy + + # Make sure the directory that will hold the separated debug + # info actually exists. + set debug_dir [file dirname $debug_file] + if {! [file isdirectory $debug_dir]} { + file mkdir $debug_dir + } + + set debug_link [file tail $debug_file] + set stripped_file "${dest}.stripped" + + # Get rid of the debug info, and store result in stripped_file + # something like gdb/testsuite/gdb.base/blah.stripped. + set result [catch "exec $strip_to_file_program --strip-debug ${dest} -o ${stripped_file}" output] + verbose "result is $result" + verbose "output is $output" + if {$result == 1} { + return 1 + } + + # Get rid of everything but the debug info, and store result in debug_file + # This will be in the .debug subdirectory, see above. + set result [catch "exec $strip_to_file_program --only-keep-debug ${dest} -o ${debug_file}" output] + verbose "result is $result" + verbose "output is $output" + if {$result == 1} { + return 1 + } + + # Link the two previous output files together, adding the .gnu_debuglink + # section to the stripped_file, containing a pointer to the debug_file, + # save the new file in dest. + # This will be the regular executable filename, in the usual location. + set result [catch "exec $objcopy_program --add-gnu-debuglink=${debug_file} ${stripped_file} ${dest}" output] + verbose "result is $result" + verbose "output is $output" + if {$result == 1} { + return 1 + } + + return 0 +} + diff --git a/gdb/top.c b/gdb/top.c index c52c1765d68..8dcf73a61f8 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1,7 +1,7 @@ /* Top level stuff for GDB, the GNU debugger. Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -1359,7 +1359,7 @@ print_gdb_version (struct ui_file *stream) /* Second line is a copyright notice. */ - fprintf_filtered (stream, "Copyright 2003 Free Software Foundation, Inc.\n"); + fprintf_filtered (stream, "Copyright 2004 Free Software Foundation, Inc.\n"); /* Following the copyright is a brief statement that the program is free software, that users are free to copy and change it on diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 6e33841824f..713bf14f2cc 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -914,6 +914,10 @@ validate_actionline (char **line, struct tracepoint *t) struct cleanup *old_chain = NULL; char *p; + /* if EOF is typed, *line is NULL */ + if (*line == NULL) + return END; + for (p = *line; isspace ((int) *p);) p++; diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog deleted file mode 100644 index fc5886c1ae1..00000000000 --- a/gdb/tui/ChangeLog +++ /dev/null @@ -1,1217 +0,0 @@ -2003-09-27 Andrew Cagney - - * tuiRegs.c: Rename REGISTER_RAW_SIZE to - DEPRECATED_REGISTER_RAW_SIZE. - -2003-09-13 Andrew Cagney - - * tui.h (struct ui_file): Add opaque declaration. - -2003-08-04 Daniel Jacobowitz - - * tui-interp.c: Include "cli-out.h". - (tui_resume): Update tui_old_uiout's stream to gdb_stdout. - -2003-07-24 Stephane Carrez - - * tui.c (tui_rl_other_window): New function to switch the TUI active - window and give focus to a next window. - (tui_initialize_readline): Bind it to c-x o. - (tui_rl_next_keymap): Activate TUI mode when entering SingleKey mode. - -2003-07-23 Stephane Carrez - - * tui.c (tui_enable): Call tuiRefreshAll to make sure the window - is accurate. - -2003-07-23 Stephane Carrez - - * tui-interp.c (tui_resume): Enable tui when we expected it. - (tui_suspend): Remember in which TUI mode we are. - (_initialize_tui_interp): Use the tui interpreter even when no - other interpreter was set and define in which TUI mode to start. - -2003-06-28 Daniel Jacobowitz - - * tui-out.c (tui_ui_out_impl): Add NULL for redirect member. - -2003-06-22 Daniel Jacobowitz - - * tui-hooks.c: Update include order. - * tui.c: Likewise. - * tuiCommand.c: Likewise. - * tuiData.c: Likewise. - * tuiDataWin.c: Likewise. - * tuiDisassem.c: Likewise. - * tuiGeneralWin.c: Likewise. - * tuiIO.c: Likewise. - * tuiLayout.c: Likewise. - * tuiRegs.c: Likewise. - * tuiSource.c: Likewise. - * tuiSourceWin.c: Likewise. - * tuiStack.c: Likewise. - * tuiWin.c: Likewise. - -2003-06-12 Andreas Schwab - - * tuiSource.c (tuiVerticalSourceScroll): Use get_frame_pc. - * tuiSourceWin.c (tuiHorizontalSourceScroll): Likewise. - * tuiStack.c (tui_get_function_from_frame): Likewise. - (tuiShowFrameInfo): Likewise. - * tuiWin.c (_makeVisibleWithNewHeight): Likewise. - * tui-hooks.c (tui_selected_frame_level_changed_hook): Likewise. - * tuiDisassem.c (tuiVerticalDisassemScroll): Likewise. - Include "disasm.h". - -2003-05-08 Andrew Cagney - - * tuiRegs.c: Use MAX_REGISTER_SIZE instead of - MAX_REGISTER_RAW_SIZE. - -2003-05-03 Andrew Cagney - - * tuiDisassem.c (tui_disassemble): Call gdb_print_insn, instead of - TARGET_PRINT_INSN. Do not initialize a disassemble_info object. - -2003-04-30 Andrew Cagney - - * tuiDisassem.c (tui_disassemble): Use - "deprecated_tm_print_insn_info" instead of TARGET_PRINT_INSN_INFO, - add comment. - -2003-03-14 Andrew Cagney - - * tuiRegs.c (_tuiGetRegisterRawValue): Use frame_read_register, - instead of get_saved_register. - -2003-03-13 Stephane Carrez - - * tui-out.c (tui_out_data): Fix typedef. - -2003-03-08 Andrew Cagney - - * tui-out.c: Update copyright. - (tui_out_data): Define typedef. Use instead of ui_out_data. - -2003-02-14 Andrew Cagney - - * tui.c (tui_enable, tui_disable): Don't modify tui_version. - (tui_is_window_visible, tui_get_command_dimension): Test - tui_active instead of tui_version. - * tuiData.h (tui_version): Delete declaration. - * tui-hooks.c (tui_init_hook, tui_event_loop): Delete function, - moved to "tui-interp.c". - (tui_exit, tui_command_loop): Ditto. - (_initialize_tui): Don't initialize init_ui_hook. Initialize - target_new_objfile_hook. - * tui-interp.c: New file. - -2003-02-12 Andrew Cagney - - * tuiIO.c (tui_prep_terminal): Add one notused parameter. - * tui.c (tui_rl_switch_mode): Add two notused parameters. - (tui_rl_change_windows, tui_rl_next_keymap): Ditto. - (tui_rl_delete_other_windows): Ditto. - (tui_rl_change_windows, tui_rl_delete_other_windows): Update - calls. - -2002-12-08 Elena Zannoni - - Import of readline 4.3. - Fix PR gdb/675 - * tuiWin.c: Include readline/readline.h. - (tui_update_gdb_sizes): Use accessor function rl_get_screen_size. - (tuiResizeAll): Ditto. - -2002-12-06 Elena Zannoni - - * tuiStack.c (tuiShowFrameInfo): Fix typo. - -2002-11-29 Andrew Cagney - - * tui/tui-hooks.c: Update to use deprecated_selected_frame. - * tui/tui.c, tui/tuiDisassem.c, tui/tuiRegs.c: Ditto. - * tui/tuiSource.c, tui/tuiSourceWin.c, tui/tuiWin.c: Ditto. - -2002-11-28 Andrew Cagney - - * tuiStack.c (tuiShowFrameInfo): Use find_frame_sal instead of - find_pc_line. - -2002-11-23 Andrew Cagney - - * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of - deprecated_frame_in_dummy. Fix coding style. - -2002-11-21 Stephane Carrez - - * tui-hooks.c (tui_init_hook): Don't enable the TUI if a specific - interpreter is installed. - -2002-11-18 Andrew Cagney - - * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of - signal_handler_caller. - -2002-11-10 Andrew Cagney - - * tuiStack.c (tuiShowFrameInfo): Replace frame_in_dummy with - deprecated_frame_in_dummy. - -2002-10-26 Stephane Carrez - - * tuiIO.c (tui_prep_terminal): Save the prompt registered in readline. - (tui_redisplay_readline): Use the last saved prompt. - (tui_rl_saved_prompt): New. - -2002-10-25 Stephane Carrez - - Fix PR gdb/787 - * tuiWin.c (ACS_LRCORNER, ACS_LLCORNER, ACS_ULCORNER, ACS_URCORNER, - ACS_HLINE, ACS_VLINE): Define if they don't exist. - -2002-10-25 Stephane Carrez - - Fix PR gdb/478 - * tuiIO.c (tui_initialize_io): Use setvbuf since this is portable. - -2002-10-02 Elena Zannoni - - * tui-hooks.c (selected_frame_level_changed_hook): Use the one - exported from frame.h. - -2002-09-29 Elena Zannoni - - * tui.c (tui_show_source): Don't access current_source_symtab, use - accessor function instead. Include source.h and symtab.h - * tuiDisassem.c (tuiShowDisassemAndUpdateSource, - tuiVerticalDisassemScroll): Use accessor functions for current - source line and symtab. Include source.h. - * tuiLayout.c (_extractDisplayStartAddr): Use accessor functions - for current source line and symtab. Include source.h. - * tuiWin.c (_makeVisibleWithNewHeight): Ditto. - * tuiSourceWin.c (tuiUpdateSourceWindowAsIs, - tuiHorizontalSourceScroll): Ditto. - * tuiSource.c (tuiVerticalSourceScroll): Ditto. - -2002-09-13 Stephane Carrez - - * tui.c (tui_rl_switch_mode): Remove unecessary TUI switch printfs. - (tui_initialize_readline): Allow to use space to leave SingleKey - to enter one gdb command. - (tui_enable): Restore the TUI keymap when we are back to TUI. - (tui_disable): Restore normal keymap when leaving TUI. - * tuiIO.c (tui_redisplay_readline): Restore the SingleKey mode - when the buffer becomes empty and we are in tui_one_command_mode. - -2002-09-13 Stephane Carrez - - * tuiIO.c (tui_setup_io): rl_already_prompted must be cleared - when leaving TUI mode so that gdb prompt is displayed. - -2002-09-13 Stephane Carrez - - * tuiStack.c (tui_make_status_line): Make sure the local buffer - is large enough to hold the complete line. - -2002-09-10 Stephane Carrez - - * tui-hooks.c (tui_event_loop): New function. - (tui_command_loop): New function to override gdb loop and make sure - uiout is set according to TUI mode. - (tui_command_loop): Install the specific TUI command hook. - * tuiIO.c (tui_initialize_io): Initialize tui_old_uiout. - (tui_uiout, tui_old_uiout): Make public. - * tuiIO.h (tui_uiout, tui_old_uiout): Declare. - -2002-09-04 Stephane Carrez - - * tuiIO.c (tui_putc): New function to print one character. - (printable_part): New function from readline/complete.c. - (PUTX): New macro, likewise. - (print_filename): New function, likewise. - (get_y_or_n): New function, likewise and adapted for TUI. - (tui_rl_display_match_list): New function from readline/complete.c - and writes on TUI command window. - (tui_setup_io): Install or remove the readline hook - rl_completion_display_matches_hook so that completion is written - directly in TUI command window instead of in the TUI pipe. - (tui_initialize_io): Use #ifdef TUI_USE_PIPE_FOR_READLINE for the - TUI redirection pipe. - (tui_getc): Likewise for call to tui_readline_output. - (tui_readline_output): Likewise for function. - * tui.c (tui_rl_startup_hook): Always take care of gdb prompt. - -2002-09-02 Stephane Carrez - - * tuiWin.c (_newHeightOk): Fix compilation warnings. - -2002-09-01 Stephane Carrez - - * tuiWin.c (_tuiAllWindowsInfo): Don't crash if the window - is not displayed. - -2002-09-01 Stephane Carrez - - * tui-out.c (tui_out_new): Clear start_of_line. - * tuiSource.c (tuiVerticalSourceScroll): Use print_source_lines - to update the current source line. - -2002-09-01 Stephane Carrez - - * tui-hooks.c (tui_detach_hook): New hook to know when a process dies. - (tui_install_hooks): Install it. - (tui_remove_hooks): Remove it. - -2002-09-01 Stephane Carrez - - * tuiData.h (FILE_PREFIX): Don't define. - (blankStr, locationStr, breakStr): Don't declare. - (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Likewise. - (displayableWinContentOf, displayableWinContentAt): Likewise. - (winElementHeight, winByName, freeAllWindows): Likewise. - - * tuiData.c (blankStr, locationStr, breakStr): Remove. - (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Remove. - (displayableWinContentOf, displayableWinContentAt): Remove. - (winElementHeight, winByName, freeAllWindows): Remove. - -2002-09-01 Stephane Carrez - - * tuiStack.c (tui_make_status_line): New function to create the - status line. - (tuiShowLocatorContent): Use it instead of displayableWinContentAt. - * tuiData.h (PROC_PREFIX): Use "In:" to reduce length of prefix. - (PC_PREFIX): Use upper case. - (SINGLE_KEY, MIN_LINE_WIDTH, MIN_PROC_WIDTH): Define. - (MAX_TARGET_WIDTH, MAX_PID_WIDTH): Define. - -2002-08-31 Stephane Carrez - - * tuiSourceWin.h (tuiUpdateAllExecInfos): Don't declare. - (tuiClearAllExecInfosContent): Likewise. - (tuiEraseAllExecInfosContent): Ditto. - (tuiUpdateSourceWindowsFromLocator): Ditto. - * tuiSourceWin.c (tuiUpdateAllExecInfos): Remove. - * tui.h (tui_vCheckDataValues): Don't declare. - (tui_vStartNewLines, tui_vAllSetHasBreakAt): Likewise. - (tui_vUpdateLocatorFilename, tui_vUpdateSourceWindowsWithAddr): Ditto. - (tui_vShowFrameInfo): Ditto. - -2002-08-31 Stephane Carrez - - * tui.c (tui_commands): Table of single key commands. - (tui_rl_command_key): New function to execute gdb command. - (tui_rl_command_mode): New function to temporarily leave SingleKey. - (tui_rl_next_keymap): New function to enter/leave the SingleKey mode. - (tui_rl_startup_hook): New function to avoid prompt display by - readline functions. - (tui_set_key_mode): New function to set the key mode and install - the readline keymap. - (tui_initialize_readline): Create TUI SingleKey readline map. - (tui_enable): Install rl_startup_hook. - (tui_disable): Remove it. - * tui.h (enum tui_key_mode): Declare. - (tui_set_key_mode, tui_current_key_mode): Declare. - * tuiIO.c (tui_redisplay_readline): Don't display the prompt in - SingleKey mode. - * tuiIO.h (tui_redisplay_readline): Declare. - -2002-08-31 Stephane Carrez - - * tuiSourceWin.c (tuiSetIsExecPointAt): Redraw the previous and - current line. - -2002-08-31 Stephane Carrez - - * tuiSource.c (tuiSetSourceContent): Remove old breakpoint code. - (_hasBreak): Remove. - (tuiShowSource): Fix comment indentation. - (tuiSourceIsDisplayed): Likewise. - (tuiVerticalSourceScroll): Likewise. - -2002-08-30 Stephane Carrez - - * tuiSourceWin.h (tui_update_all_breakpoint_info): Declare. - (tui_update_breakpoint_info): Declare. - (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove. - - * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Update breakpoint - information using tui_update_breakpoint_info. - (tui_update_all_breakpoint_info): New function to refresh all - execution windows. - (tui_update_breakpoint_info): New function to recompute the status - of exec info window from breakpoints. - (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove. - (tuiSetExecInfoContent): Use the exec info flags computed by - tui_update_breakpoint_info to display a short status about breakpoints. - - * tuiData.h (TuiExecInfoContent): New for exec info string. - (TuiWhichElement): Use it. - (TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT): New defines. - (TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): New defines. - (TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS): Likewise. - (TUI_EXECINFO_SIZE): Likewise. - * tuiData.c (initContentElement): Clear exec info string. - - * tui-hooks.c (get_breakpoint): Remove. - (tui_event_create_breakpoint): Call tui_update_all_breakpoint_info. - (tui_event_delete_breakpoint): Likewise. - (tui_event_modify_breakpoint): Likewise. - -2002-08-29 Stephane Carrez - - * tui.c (tuiGetLowDisassemblyAddress): Moved from here. - * tuiDisassem.c (tuiGetLowDisassemblyAddress): To here, and use - tui_find_disassembly_address to find the starting address of - disassemble window. - -2002-08-28 Stephane Carrez - - * tuiDisassem.c (tui_disassemble): New function to disassemble - several lines in a buffer. - (tui_find_disassembly_address): New function to search backward - or forward a disassembly line. - (tuiSetDisassemContent): Use tui_disassemble to obtain the real - content and format it in the window. - (tuiShowDisassemAndUpdateSource): Remove unused locals. - (tuiVerticalDisassemScroll): Use tui_find_disassembly_address to - obtain the address to disassemble for the scrolling. - * tuiDisassem.h (tuiGetBeginAsmAddress): Update. - * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Don't pass symtab. - -2002-08-28 Stephane Carrez - - * tuiIO.c (CTRL_CHAR): Redefine and use readline 4.3 definition. - -2002-08-26 Stephane Carrez - - Fix PR gdb/393: - * tui.c (tui_disable): Update gdb's knowledge of its terminal - using target_terminal_save_ours. - (tui_enable): Likewise. - -2002-08-25 Stephane Carrez - - * tui.c (tui_rl_switch_mode): Renames tui_switch_mode. - (tui_rl_change_windows): Renames tui_change_windows. - (tui_rl_delete_other_windows): Renames tui_delete_other_windows. - (tui_initialize_readline): Update. - -2002-08-25 Stephane Carrez - - * tuiDisassem.c (tuiSetDisassemContent): Use breakpoint_here_p. - (_hasBreak): Remove. - -2002-08-25 Stephane Carrez - - * tuiDisassem.c (tuiGetBeginAsmAddress): Use lookup_minimal_symbol - to find symbol address. - -2002-08-25 Stephane Carrez - - * tuiSourceWin.c (tui_display_main): Rename from tuiDisplayMainFunction - and use tuiGetBeginAsmAddress. - * tuiSourceWin.h (tui_display_main): Declare. - * tui.h (tuiDisplayMainFunction): Remove. - * tui-hooks.c (tui_new_objfile_hook): Update. - -2002-08-25 Stephane Carrez - - * tuiSource.h (m_tuiShowSourceAsIs): Remove macro. - (tuiShowSourceAsIs): Don't declare. - -2002-08-25 Stephane Carrez - - * tui-hooks.c (tui_selected_frame_level_changed_hook): Always update - the frame position. - -2002-08-25 Stephane Carrez - - * tuiStack.c (tuiSetLocatorContent): Remove. - (tuiUpdateLocatorInfoFromFrame): Remove. - (tui_set_locator_info): Allocate the content buffer if necessary. - (tui_set_locator_filename): Call tui_set_locator_info directly. - (tuiShowFrameInfo): Likewise and use find_pc_line instead of - find_pc_symtab. - -2002-08-25 Stephane Carrez - - * tuiSourceWin.c (tuiDisplayMainFunction): Update to use - tuiUpdateLocatorFilename. - * tuiStack.c (tuiSetLocatorInfo): Make it static. - (tuiSetLocatorContent): Likewise. - (tuiUpdateLocatorInfoFromFrame): Likewise. - (tuiSwitchFilename): Remove. - (tui_set_locator_filename): New function - (tui_set_locator_info): Rename from tuiSetLocatorInfo to GNU-ify; - use tui_set_locator_filename to record the filename. - (tuiUpdateLocatorFilename): Likewise. - (tuiUpdateLocatorInfoFromFrame): Update. - (tuiSetLocatorContent): Likewise. - * tuiStack.h (tuiClearLocatorContent): Don't declare. - (tuiSetLocatorInfo, tuiSetLocatorContent): Likewise. - (tuiUpdateLocatorInfoFromFrame, tuiSwitchFilename): Likewise. - -2002-08-25 Stephane Carrez - - * tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint - comparison; cleanup. - * tuiSource.c (tuiSetSourceContent): Set window title and filename. - * tuiGeneralWin.c (boxWin): Print optional title on top of window. - * tuiData.h (TuiSourceInfo): Add filename member. - (TuiGenWinInfo): Add title member. - * tuiData.c (initGenericPart): Clear title. - (freeWindow): Free title and filename; remove unused locals. - (initWinInfo): Clear filename. - (tuiDelWindow): Free it; remove unused locals. - -2002-08-25 Stephane Carrez - - * tuiStack.h (tuiGetLocatorFilename): Don't declare. - (tuiUpdateLocatorDisplay): Likewise. - * tuiStack.c (tuiGetLocatorFilename): Remove. - (tuiShowFrameInfo): Use tuiSetLocatorContent and tuiShowLocatorContent - instead of tuiUpdateLocatorDisplay. - (tuiUpdateLocatorDisplay): Remove. - -2002-08-25 Stephane Carrez - - * tuiStack.h (tuiClearLocatorDisplay): Don't declare. - * tuiStack.c (tuiClearLocatorDisplay): Remove. - (tuiShowLocatorContent): Use wclrtoeol to clear end of status line. - (tuiUpdateLocatorDisplay): Don't call tuiClearLocatorDisplay. - -2002-08-25 Stephane Carrez - - * tuiStack.c (tui_get_function_from_frame): Rename from - _getFuncNameFromFrame; use print_address_symbolic to get symbolic - name of address. - (tuiUpdateLocatorInfoFromFrame): Update. - -2002-08-25 Stephane Carrez - - * tuiRegs.c (tuiDisplayRegistersFrom): Remove unused locals. - (_tuiRegisterFormat, _tuiSetSpecialRegsContent): Likewise. - (_tuiSetGeneralAndSpecialRegsContent): Likewise. - (_tuiSetFloatRegsContent): Likewise. - (_tuiRegisterName): Return a const char*. - * tuiData.h (_TuiDataElement): Use const char* for name. - -2002-08-25 Stephane Carrez - - * tuiSourceWin.h (tuiEraseAllSourceContent): Don't declare. - (tuiShowAllExecInfosContent): Likewise. - * tuiSourceWin.c (tuiEraseAllSourceContent): Remove. - (tuiShowAllExecInfosContent): Remove. - (tuiAllocSourceBuffer): Remove unused locals. - -2002-08-25 Stephane Carrez - - * tuiStack.c (tui_update_command): Rename _tuiUpdateLocation_command - to follow other gdb's command names; use execute_command; cleanup. - (_initialize_tuiStack): Update. - -2002-08-25 Stephane Carrez - - * tuiWin.h (tui_update_gdb_sizes): Declare. - -2002-08-24 Stephane Carrez - - * tui.c (strcat_to_buf): Use const char* for source item. - (tui_enable): Update the windows if there is a selected frame. - * tui.h (strcat_to_buf): Update prototype. - (strcat_to_buf_with_fmt): Remove. - -2002-08-24 Stephane Carrez - - * tuiWin.c (tui_update_gdb_sizes): New function to tell gdb what - is the size of command window. - (tuiResizeAll): Call it instead of init_page_info. - * tui.c (tui_enable): Call it to resize to TUI command window. - (tui_disable): Likewise for plain screen. - -2002-08-24 Stephane Carrez - - * tui.c (tui_enable): Use tuiSetLayout instead of showLayout and - use tuiShowFrameInfo instead of tuiSetLocatorContent. - * tuiLayout.h (showLayout): Remove. - * tuiLayout.c (_showSourceOrDisassemAndCommand): Remove unused locals. - (_showSourceDisassemCommand): Likewise. - (showLayout): Make it static. - (lastLayout): Remove. - -2002-08-24 Stephane Carrez - - * tuiSourceWin.c (tui_show_source_line): New function. - (tuiShowSourceContent): Call it and avoid clearing the window before - redrawing it. - (tuiClearAllSourceWinsContent): Remove. - * tuiSourceWin.h (tuiClearAllSourceWinsContent): Don't declare. - * tuiWin.h (tuiClearWinFocus, tuiClearWinFocusFrom): Don't declare. - * tuiWin.c (tuiClearWinFocus, tuiClearWinFocusFrom): Remove. - (tuiRefreshAll): Don't clear the window. - (_makeVisibleWithNewHeight): Don't clear locator line. - (tuiResizeAll): Remove unused locals. - (_tuiAdjustWinHeights): Likewise. - (_makeInvisibleAndSetNewHeight): Likewise. - (_newHeightOk): Likewise. - * tuiLayout.c (showLayout): Don't clear source windows. - (tuiSetLayout): Don't clear the window. - (_initAndMakeWin): Likewise for status line. - * tuiGeneralWin.c (makeVisible): Don't clear or refresh the window. - (makeWindow): Likewise. - (tuiClearWin): Remove. - * tuiGeneralWin.h (tuiClearWin): Don't declare. - -2002-08-24 Stephane Carrez - - * tuiSourceWin.c (tuiSrcWinIsDisplayed): Remove. - (tuiAsmWinIsDisplayed): Remove. - (tuiShowAllSourceWinsContent): Remove. - (tuiUpdateOnEnd): Remove. - * tuiGeneralWin.c (scrollWinForward): Remove. - (scrollWinBackward): Remove. - (_winResize): Don't declare. - * tui.h (tuiUpdateOnEnd): Don't declare. - (vcatch_errors, va_catch_errors): Likewise. - * tuiSourceWin.h (tuiUpdateOnEnd): Likewise. - (tuiShowAllSourceWinsContent): Likewise. - * tuiGeneralWin.h (scrollWinForward): Likewise. - (scrollWinBackward): Likewise. - -2002-08-24 Stephane Carrez - - * tuiRegs.c (_tuiRegisterFormat): Use gdbarch_print_registers_info. - -2002-08-18 Daniel Jacobowitz - - Fix PR gdb/655 - * tui.c: Disable include. - -2002-03-15 Andrew Cagney - - * tui-out.c (XMALLOC): Delete macro. Update copyright. - -2002-03-01 Andrew Cagney - - * tui-hooks.c: Add FIXME to explain true/false problem. Update - copyright. - * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c: Ditto. - * tuiDisassem.c, tuiGeneralWin.c, tuiIO.c, tuiLayout.c: Ditto. - * tuiRegs.c, tuiSource.c, tuiSourceWin.c, tuiStack.c: Ditto. - * tuiWin.c: Ditto. - - 2002-02-08 Daniel Jacobowitz - * tui-hooks.c: Include before "bfd.h". - * tui.c: Likewise. - * tuiCommand.c: Likewise. - * tuiData.c: Likewise. - * tuiDataWin.c: Likewise. - * tuiDisassem.c: Likewise. - * tuiGeneralWin.c: Likewise. - * tuiIO.c: Likewise. - * tuiLayout.c: Likewise. - * tuiRegs.c: Likewise. - * tuiSource.c: Likewise. - * tuiSourceWin.c: Likewise. - * tuiStack.c: Likewise. - * tuiWin.c: Likewise. - -2002-02-01 Andrew Cagney - - * tuiWin.c (_initialize_tuiWin): Replace NO_FUNCTION with NULL. - -2001-10-20 Andrew Cagney - - * tuiDisassem.c: Include "value.h". - * tuiSourceWin.c: Ditto. - -2001-09-28 Tom Tromey - - * tuiLayout.h (tui_set_layout): Don't declare. - * tui.h (tui_vAddWinToLayout): Don't declare. - (tui_vSetLayoutTo): Likewise. - (tui_set_layout): Declare. - -2001-08-02 Eli Zaretskii - - * tuiSourceWin.c: Use disp_del instead of del. - - * tuiSource.c: Use disp_del instead of del. - - * tuiDisassem.c: Use disp_del instead of del. - -2001-07-31 Stephane Carrez - - * tui.c (tui_enable): Remove call to terminal_save_ours(). - (tui_disable): Likewise. - -2001-07-28 Stephane Carrez - - * tuiWin.c (_initialize_tuiWin): Use specific tui prefix for - set/show configuration variables. - (show_tui_cmd): New function. - (set_tui_cmd): New function. - -2001-07-24 Stephane Carrez - - * tui-hooks.c: New file, gdb hooks for tui. - * tui-out.c: New file, image copied from cli-out.c. - (tui_field_int): Identify "line" fields and keep track of them. - (tui_field_string): Likewise for "file". - (tui_out_new): Use flags = 0 to avoid printing the sources. - -2001-07-23 Stephane Carrez - - * tuiIO.c (tui_cont_sig): Update cursor position on the screen to - leave it in the command window. - (tui_redisplay_readline): Save cursor position to restore the - cursor after we go back from background. - * tuiData.h (TuiCommandInfo): Add start_line member. - -2001-07-23 Stephane Carrez - - * tuiStack.c (tuiUpdateLocatorFilename): Use const char*. - * tuiStack.h (tuiUpdateLocatorFilename): Update prototype. - * tuiWin.c (_initialize_tuiWin): Don't cast table of enum in calls - to add_set_enum_cmd. - * tui.c (tui_show_source): New function. - (tuiGetLowDisassemblyAddress): Use CORE_ADDR for newLow. - (tui_switch_mode): Prep or deprep readline terminal; - make sure the \n we return does not redo the last command. - * tui.h (tui_show_source): Declare. - (tui_out_new, tui_install_hooks, tui_remove_hooks): Likewise. - (tui_active, tui_initialize_io, tui_initialize_readline): Likewise. - -2001-07-22 Stephane Carrez - - * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler - if SIGCONT is defined. - (tui_cont_sig): New function when SIGCONT is defined. - (tui_setup_io): Save tty setting to restore by SIGCONT. - -2001-07-22 Stephane Carrez - - * tui.h (tui_show_assembly): Declare. - (tui_is_window_visible): Declare. - * tui.c (tui_show_assembly): New function. - (tui_is_window_visible): New function. - (tui_get_command_dimension): New function. - -2001-07-21 Stephane Carrez - - * tuiWin.c (tuiRefreshAll): Use clearok to force a refresh. - -2001-07-21 Stephane Carrez - - * tui-file.c (tui_file_fputs): Use tui_puts. - -2001-07-21 Stephane Carrez - - * tuiStack.c (tuiSetLocatorInfo): Cleanup. - * tuiStack.h (tuiGetLocatorFilename): Declare. - * tuiRegs.h (tuiFirstRegElementNoInLine): Declare. - * tuiData.h (addToSourceWindows): Declare. - -2001-07-21 Stephane Carrez - - * tui.c (tui_change_windows): New function. - (tui_delete_other_windows): New function. - (tui_initialize_readline): Bind them to C-X 1 and C-X 2. - (tui_enable): Enable the keypad; call tui_update_variables. - (strcat_to_buf_with_fmt): Remove. - -2001-07-21 Stephane Carrez - - * tui.h: Remove old declarations, add the new ones. - * tui.c (tui_switch_mode): New function. - (tui_initialize_readline): New function. - (tui_enable): New function. - (tui_disable): New function. - (tuiGetLowDisassemblyAddress): Use CORE_ADDR, cleanup. - (tui_vSelectSourceSymtab): Remove. - (tuiInitWindows): Remove. - (_initialize_tui): Remove. - (_tuiReset): Keep but put arround #if 0. - -2001-07-21 Stephane Carrez - - * tuiIO.h: Remove old declarations and add the new ones. - * tuiIO.c: New management for curses and gdb terminal interactions. - (tui_tputs): Remove. - (tuiTermSetup, tuiTermUnsetup): Remove, must use normal curses ops. - (tuiBufferGetc, tui_vStartNewLines, _updateCommandInfo): Remove. - (tui_owns_terminal): Remove. - (tui_redisplay_readline): New function. - (tui_puts): New function. - (tui_prep_terminal): New function. - (tui_deprep_terminal): New function. - (tui_getc): Rename of tuiGetc, simplify and fix. - (tui_setup_io): New function. - (tui_initialize_io): New function. - -2001-07-21 Stephane Carrez - - * tuiRegs.c (tuiDisplayRegistersFrom): Call touchwin. - (_tuiRegisterFormat): Reduce size of format result. - -2001-07-21 Stephane Carrez - - * tuiGeneralWin.c (boxWin): Use the tui configuration variables. - * tuiWin.h: Declare the new variables. - * tuiWin.c (_initialize_tuiWin): Create TUI configuration variables. - (tui_update_variables): New function. - (translate): New function. - (tui_border_kind_enums, tui_border_mode_enums): New tables. - (tui_border_mode_translate): New table. - (tui_border_kind_translate_*): New tables. - (tui_active_border_mode): New variables. - (tui_border_*): New variables. - -2001-07-21 Stephane Carrez - - * tuiWin.c (_parseScrollingArgs): Fix uninitialized variable. - (_makeVisibleWithNewHeight): Use TuiLineOrAddress type. - - * tuiStack.c (tuiShowFrameInfo): Use TuiLineOrAddress type. - (tui_vUpdateLocatorFilename): Remove. - * tuiStack.h: Update prototypes. - - * tuiSourceWin.c (tuiAddrIsDisplayed): New function. - (tuiLineIsDisplayed): Split for address and line. - (tuiUpdateSourceWindow): Use TuiLineOrAddress type. - (tuiUpdateSourceWindowAsIs): Likewise. - (tuiUpdateSourceWindowsWithAddr): Likewise. - (tuiUpdateSourceWindowsWithLine): Likewise. - (tuiHorizontalSourceScroll): Likewise. - (tuiSetIsExecPointAt): Likewise. - (tuiUpdateOnEnd): Likewise. - * tuiSourceWin.h: Update prototypes. - - * tuiSource.c (tuiVerticalSourceScroll): Use TuiLineOrAddress type. - (tuiShowSource): Likewise. - (tuiVerticalSourceScroll): Likewise. - * tuiSource.h (tuiShowSource): Update prototype. - - * tuiDisassem.c (tuiSetDisassemContent): Use CORE_ADDR for address. - (tuiShowDisassem): Use TuiLineOrAddress type. - (tuiShowDisassemAndUpdateSource): Likewise. - (tuiVerticalDisassemScroll): Likewise. - (tuiShowDisassemAsIs): Remove. - * tuiDisassem.h (tuiSetDisassemContent): Update prototype. - - * tuiData.c (initWinInfo): Use CORE_ADDR for address. - (clearWinDetail): Likewise. - (displayableWinContentOf): Fix address conversion. - (tuiNextWin): Fix crash when the window is not yet created. - (partialWinByName): Likewise. - -2001-07-21 Stephane Carrez - - * tuiSourceWin.h: Remove unused declarations. - * tuiSourceWin.c (tui_vUpdateSourceWindowsWithAddr): Remove. - (tui_vUpdateSourceWindowsWithLine): Remove. - (tui_vAllSetHasBreakAt): Remove. - - * tuiLayout.h (tui_set_layout): Declare. - (tui_vSetLayoutTo): Remove. - (tui_vAddWinToLayout): Remove. - * tuiLayout.c (_tuiLayout_command): Call tui_enable() to force TUI. - (_tuiToggleLayout_command): Remove. - (_tuiToggleSplitLayout_command): Remove. - (_tuiLayout_command): Remove. - (tui_vSetLayoutTo): Remove. - (tui_vAddWinToLayout): Remove. - - * tuiDataWin.h (tui_vCheckDataValues): Remove. - * tuiDataWin.c (tui_vCheckDataValues): Remove. - -2001-07-20 Stephane Carrez - - * tuiWin.c (tuiStrDup): Remove, replaced by xstrdup. - (_parseScrollingArgs): Use xstrdup. - (_tuiScrollForward_command): Call tui_enable() to force TUI mode. - (_tuiScrollBackward_command): Likewise. - (_tuiScrollLeft_command): Likewise. - (_tuiScrollRight_command): Likewise. - (_tuiSetFocus): Likewise. - (_tuiSetFocus_command): Likewise. - (_tuiRefreshAll_command): Likewise. - (_tuiSetTabWidth_command): Likewise. - (_tuiSetWinHeight): Likewise. - (_tuiSetWinHeight_command): Likewise. - (_tuiXDBsetWinHeight): Likewise. - (_tui_vSetFocus): Remove. - (_tui_vSetWinHeight): Remove. - (_tui_vXDBsetWinHeight): Remove. - -2001-07-21 Stephane Carrez - - * tuiCommand.h: Remove unused declarations. - * tuiCommand.c (tuiDispatchCtrlChar): Fix escape sequences. - (tuiIncrCommandCharCountBy): Remove. - (tuiDecrCommandCharCountBy): Remove. - (tuiSetCommandCharCountTo): Remove. - (tuiClearCommandCharCount): Remove. - -2001-07-20 Stephane Carrez - - * tuiWin.c (_initialize_tuiWin): Always define the tui commands; - create the tui class help. - * tuiLayout.c (_initialize_tuiLayout): Always define the tui commands. - * tuiRegs.c (_initialize_tuiRegs): Likewise. - * tuiStack.c (_initialize_tuiStack): Likewise. - -2001-07-19 Stephane Carrez - - * tuiDisassem.c (tuiVerticalDisassemScroll): Use CORE_ADDR. - (tuiVerticalDisassemScroll): Likewise. - (tuiShowDisassemAndUpdateSource): Check for null symtab to - prevent a crash. - -2001-07-18 Stephane Carrez - - * tuiIO.c (_tuiHandleResizeDuringIO): Call tuiRefreshAll. - (tuiRead, tui_vread): Remove. - - * tui.c (va_catch_errors, tuiDo, tuiDoAndReturnToTop): Remove. - (vcatch_errors, _tui_vDo): Remove. - * tui.h (tuiDo, tuiDoAndReturnToTop): Remove. - - * tuiLayout.c (tuiSetLayout): Remove vcatch_errors. - (tui_set_layout): Rename of _tuiSetLayoutTo, public. - (_tuiToggleLayout_command): Merge with _tui_vToggleLayout_command. - (_tuiToggleSplitLayout_command): Merge with _tui_vToggleSplitLayout_command. - (_tuiLayout_command): Call tui_set_layout. - - * tuiRegs.c (_tuiScrollRegsBackward_command): Call tui_scroll. - (_tuiScrollRegsForward_command): Likewise. - (_tuiShowFloat_command): Call _tui_vShowRegisters_commandSupport. - (_tuiShowGeneral_command): Likewise. - (_tuiShowSpecial_command): Likewise. - (_tuiToggleFloatRegs_command): Call tuiToggleFloatRegs. - * tuiWin.c (tui_scroll): Rename of tui_vScroll, update parameters. - (_tuiScrollForward_command): Call tui_scroll. - (_tuiScrollBackward_command): Likewise. - (_tuiScrollLeft_command): Likewise. - (_tuiScrollRight_command): Likewise. - (_tuiSetFocus_command): Call _tuiSetFocus. - (_tuiRefreshAll_command): Call tuiRefreshAll. - (_tuiSetWinHeight_command): Call _tuiSetWinHeight. - (_tuiXDBsetWinHeight_command): Call _tuiXDBsetWinHeight. - * tuiWin.h (tui_scroll): Rename of tui_vScroll, update parameters. - -2001-07-18 Stephane Carrez - - * tuiData.h (TuiLocatorElement): Use CORE_ADDR for address member. - (TuiLineOrAddress): Likewise. - * tuiDisassem.c (tuiGetBeginAsmAddress): Use CORE_ADDR to specify - an address. - (tuiSetDisassemContent): Likewise. - (tuiShowDisassem, tuiShowDisassemAndUpdateSource): Likewise. - * tuiLayout.c (_extractDisplayStartAddr): Likewise. - (tuiSetLayout): Likewise. - * tuiSourceWin.c (tuiDisplayMainFunction): Likewise. - (tuiUpdateSourceWindowsWithAddr): Likewise. - (tuiUpdateSourceWindowsWithLine): Likewise. - (tuiSetHasBreakAt): Likewise. - * tuiStack.c (tuiSetLocatorInfo): Likewise. - (tuiSwitchFilename): Likewise. - (tuiUpdateLocatorInfoFromFrame): Likewise. - (tuiSetLocatorContent): Likewise. - (tuiShowFrameInfo): Likewise. - * tuiDisassem.h: Update prototypes to use CORE_ADDR. - * tuiSourceWin.h: Likewise. - * tuiStack.h: Likewise. - -2001-07-17 Stephane Carrez - - * tuiWin.c: Add missing includes. - (_makeVisibleWithNewHeight): Fix call to find_line_pc. - * tuiLayout.c: Add missing includes. - (_initAndMakeWin): Don't put curses in echo mode. - (_extractDisplayStartAddr): Fix calls to find_line_pc. - (_tuiLayout_command): Missing ',' in warning call. - * tuiSourceWin.c (tuiUpdateSourceWindowsWithLine): Fix calls to - find_line_pc. - (tuiSetHasBreakAt): Check for null source file. - -2001-07-17 Stephane Carrez - - * tuiWin.c (_tuiSetFocus): Replace subsetCompare with subset_compare. - * tuiLayout.c (_tuiSetLayoutTo): Likewise. - * tui.c (_tui_vToggle_command): Likewise. - -2001-07-17 Elena Zannoni - - * tui-file.c: Add include of tuiIO.h, for tuiPuts_unfiltered. - -2001-07-16 Stephane Carrez - - * tuiRegs.c (tuiDisplayRegistersFrom): Set scrollok to FALSE in - each register window. - (tuiCheckRegisterValues): Use REGISTER_RAW_SIZE to obtain the size - of the register to check. - (_tuiRegValueHasChanged): Likewise. - (_tuiRegisterName): Use REGISTER_NAME. - (tui_restore_gdbout): New function. - (_tuiRegisterFormat): Use do_registers_info with gdb_stdout redirected - to a string. - (START_SPECIAL_REGS): Define. - (_tuiGetRegisterRawValue): Use get_saved_register. - (_tuiDisplayRegister): Fix clearing of register window. - -2001-07-17 Stephane Carrez - - * tui-file.h (fputs_unfiltered_hook): Remove. - * tui-file.c (tui_file_flush): Remove fputs_unfiltered_hook. - (tui_file_fputs): Likewise; simplify - -2001-07-16 Stephane Carrez - - * tuiStack.c: Add missing includes. - (tuiShowFrameInfo): Don't crash when there is no symbol table - associated with the pc. - * tuiSource.c (_hasBreak): Check for null source file. - * tuiWin.c (tuiRefreshAll): Check for null winList[type]. - (_tuiSetFocus): Check for null dataWin. - * tuiGeneralWin.c (refreshAll): Check for null list[type]. - -2001-07-16 Stephane Carrez - - * tuiDisassem.c (tuiSetDisassemContent): Use tm_print_insn_info - to disassemble in the curses window. - -2001-07-16 Stephane Carrez - - * tui.h: Cleanup to avoid inclusion of curses includes. - (TuiGenWinInfo, TuiGenWinInfoPtr): Move from here. - * tuiData.h: To here; include curses includes here. - (setTermHeightTo): Rename of setTermHeight to follow reality. - (setTermWidthTo): Likewise with setTermWidth. - -2001-07-14 Stephane Carrez - - * tuiWin.c, tui.c, tuiCommand.c: Use ansi prototype. - tuiIO.c, tuiData.c: Likewise. - tuiDataWin.c, tuiDisassem.c: Likewise. - tuiGeneralWin.c, tuiLayout.c: Likewise. - tuiRegs.c, tuiSource.c: Likewise. - tuiSouceWin.c, tuiStack.c: Likewise. - -2001-07-14 Stephane Carrez - - * tuiWin.c, tuiWin.h, tui.c, tui.h, tuiCommand.c: Add FSF copyright. - tuiCommand.h, tuiIO.c, tuiIO.h, tuiData.h, tuiData.c: Likewise. - tuiDataWin.c, tuiDataWin.h, tuiDisassem.c, tuiDisassem.h: Likewise. - tuiGeneralWin.c, tuiGeneralWin.h, tuiLayout.c, tuiLayout.h: Likewise. - tuiRegs.c, tuiRegs.h, tuiSource.c, tuiSource.h: Likewise. - tuiSouceWin.c, tuiSourceWin.h, tuiStack.c, tuiStack.h: Likewise. - -2001-03-08 Andrew Cagney - - * tuiRegs.c: Use NUM_REGS, not ARCH_NUM_REGS. - -2001-03-06 Kevin Buettner - - * tui-file.h: Update/correct copyright notice. - -Wed Feb 7 19:54:27 2001 Andrew Cagney - - * tui-file.c: Add __FILE__ and __LINE__ parameter to calls to - internal_error. - -2000-12-14 Kevin Buettner - - * tui-file.c, tui.c, tuiData.c, tuiLayout.c: Replace occurrences - of free() with xfree(). - -2000-06-22 Kevin Buettner - - * tuiSourceWin.h: Eliminate use of PARAMS from this file. - -2000-06-20 Kevin Buettner - - * tuiLayout.c: Eliminate use of PARAMS from this file. - -2000-06-17 Kevin Buettner - - * tuiIO.c: Eliminate use of PARAMS from this file. - -Thu May 25 14:46:20 2000 Andrew Cagney - - * tui-file.c: Include "tui.h", "tuiData.h", "tuiIO.h" and - "tuiCommand.h". - (tui_file_fputs): Pass ``file'' and not ``stream'' to - tui_file_adjust_strbuf. - -Thu May 25 16:58:01 2000 Andrew Cagney - - * tui.h: Include when available. - * tui.c, tuiGeneralWin.c: Do not include . - -Mon May 15 17:16:10 2000 Andrew Cagney - - * Makefile.in: Delete. - -Tue Apr 18 15:32:15 2000 Andrew Cagney - - * Makefile.in (distclean, maintainer-clean, realclean, - mostlyclean): New targets. - -Tue Feb 1 00:17:12 2000 Andrew Cagney - - * tui-file.c, tui-file.h, tuiDisassem.c, tuiIO.c, tuiIO.h, - tuiRegs.c: Update to reflect rename of gdb-file / GDB_FILE to - ui-file / ``struct ui_file''. - -Mon Jan 31 18:12:43 2000 Andrew Cagney - - * tui-file.c (enum streamtype, struct tui_stream, tui_file_new, - tui_file_delete, tui_fileopen, tui_sfileopen, tui_file_isatty, - tui_file_rewind, tui_file_put, tui_file_fputs, - tui_file_get_strbuf, tui_file_adjust_strbuf, tui_file_flush, - fputs_unfiltered_hook): Move to here from ../utils.c - - * tui-file.h, tui-file.c: New files. - -Mon Nov 8 17:47:37 1999 Andrew Cagney - - * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c - (tuiSetDisassemContent): Replace gdb_file_init_astring with - tui_sfileopen. Replace gdb_file_get_strbuf with - tui_file_get_strbuf. - -Mon Nov 8 16:54:51 1999 Andrew Cagney - - * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c - (tuiSetDisassemContent): Repace gdb_file_deallocate with - gdb_file_delete. Replace gdb_file_init_astring with tui_sfileopen. - -Fri Sep 17 19:34:38 1999 Andrew Cagney - - * tuiSource.c: Include "source.h". - (open_source_file, find_source_lines): Delete declarations. - -1999-01-26 Jason Molenda (jsm@bugshack.cygnus.com) - - * tui.h: Include stdarg.h instead of varargs.h if we're on an ISO Cish - system. - -Thu Dec 31 12:08:32 1998 David Taylor - - The following changes were made by Jim Blandy , - Edith Epstein , Elena Zannoni - Stan Shebs , and David - Taylor , as part of the project to merge in - changes originally made by HP; HP did not create ChangeLog - entries. - - * Makefile.in: New file; we're merging HP's changes into GDB, and - we've moved the TUI files into a subdirectory, so we need a new - Makefile. - - * tui.c: - #include , if we have it, to get declarations for - the termcap functions on Solaris. - (tgoto): Add external K&R declaration for this; Solaris doesn't - bother to actually declare it in their header files. - (_tuiReset): Ignore the #definition of TIOCGETC if USG is defined; - we'd rather use the USG mechanisms than the Berkeley mechanisms - (TIOCGETC is one of the Berkeley terminal control ioctls). - Apologies if this causes trouble later; this should all be handled - by autoconf... - (strcat_to_buf, strcat_to_buf_with_fmt): New functions, moved here - from ../utils.h. - (tuiFree): replace safe_free with free. - (strcat_to_buf): new function, copied from utils.c. - (tuiInit): Add ignored `argv0' argument, to match the type that - init_ui_hook expects; updated declaration. Call the - initialize_tui_files function constructed above. Initialize - flush_hook to NULL. - (tuiInitWindows): Call tuiSetLocatorContent, to get the first - element of the locator window's content allocated. This seems - wrong, because it must have been initialized somehow in HP's - sources, and we should do it the same way now. But we do get - further before it segfaults. [Postscript: HP didn't bother to - initialize it; they compile - (va_catch_errors, vcatch_errors): Functions moved here from - ../utils.c in HP's sources. They're not used anywhere else. - (xdb_style): Delete this variable, and remove all references to - it. It's always true. - (tuiInit, _tui_vDo): References removed. - - * tui.h: Add prototypes. - Don't #include "gendefs.h"; it's only used in the TUI. - Integrate its contents into this file: - #include here. - (Opaque, OpaqueFuncPtr): Typedefs moved to here. - - * tuiCommand.c: #include "defs.h", so we get the appropriate - definition of GDB_FILE. - - * tuiData.c - (freeWindow): replace safe_free with free. - (tui_version): don't define it here; it's defined in main.c now. - - * tuiDisassem.c - (tuiSetDisassemContent): Call strcat_address_numeric instead of - strcat_address. Simplify the control structure. Use predefined - GDB function to print asm inst address. Use GDB_FILE to collect - output into buffers. - - * tuiIO.c - (tgoto): Add external K&R declaration for this here too. - (tuiGetc, tuiTermSetup, tuiTermUnsetup): Same. - (tuiPuts_unfiltered): change FILE to GDB_FILE. - (tui_tputs): fix prototype for 3rd argument. - - * tuiIO.h (tuiPuts_unfiltered): change declaration. - - * tuiLayout.c - (_tuiSetLayoutTo): for displaying registers, hook up the HP code - that decides which registers to display (i.e. single precision - float, double precision float, general, special). Previously, - only handled TUI_GENERAL_REGS. Now that the code is hooked up, - compiling with -z poses a problem. When the first layout command - is 'layout regs', dataWin->detail is a NULL pointer, and gdb - core dumps. - - * tuiLayout.c (_tuiSetLayoutTo): replace safe_free with free. - - * tuiRegs.c #include "defs.h" earlier, to avoid problems in - . No idea exactly what's conflicting with what, but the - errors went away... - (_tuiRegisterFormat): Change so that function creates a GDB_FILE - object, calls pa_do_strcat_registers_info, copies the register - info into a buffer, and deallocates the GDB_FILE object. Remove - some code that is not executed. Also, call to - pa_do_strcat_registers_info has an additional parameter, - precision. This code requires some new per-target functions that - we don't want to merge. Dyke it out, with #ifdef - TUI_EXTENDED_FORMATTERS. - (_tuiSetSpecialRegsContent): this function was ifdefed out. - Hooked this up. - (_tuiSetGeneralAndSpecialRegsContent): this function was ifdefed - out. Hooked it up. - (IS_64BIT): Just define this to be zero; we're not merging in the - 64-bit support. - (tuiShowRegisters): Comment out all references to the "special" - regs; we don't have a distinction between the "special" and - "non-special" regs in most of our machine descriptions. This code - is PA-specific in other ways as well, and needs to be redesigned - to be portable to other processors. - - * tuiWin.c: #include , to get a declaration for - strchr. - - * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c, tuiDisassem.c, - tuiGeneralWin.c, tuiIO.c, tuiLayout.c, tuiRegs.c, tuiSource.c, - tuiSourceWin.c, tuiStack.c, tuiWin.c: New files (from HP). Changed - bool to int throughout. Re-indented, GNU style. - - * tui.h, tuiCommand.h, tuiData.h, tuiDataWin.h, tuiDisassem.h, - tuiGeneralWin.h, tuiIO.h, tuiLayout.h, tuiRegs.h, tuiSource.h, - tuiSourceWin.h, tuiStack.h, tuiWin.h: new files (from HP). - Changed bool to int throughout. diff --git a/gdb/utils.c b/gdb/utils.c index 5868465b83e..ba936d508c2 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -96,6 +96,8 @@ static void vfprintf_maybe_filtered (struct ui_file *, const char *, static void fputs_maybe_filtered (const char *, struct ui_file *, int); +static void do_my_cleanups (struct cleanup **, struct cleanup *); + #if defined (USE_MMALLOC) && !defined (NO_MMCHECK) static void malloc_botch (void); #endif @@ -311,7 +313,7 @@ do_exec_error_cleanups (struct cleanup *old_chain) do_my_cleanups (&exec_error_cleanup_chain, old_chain); } -void +static void do_my_cleanups (struct cleanup **pmy_chain, struct cleanup *old_chain) { diff --git a/gdb/version.in b/gdb/version.in index e304c64dcb9..1e51b217313 100644 --- a/gdb/version.in +++ b/gdb/version.in @@ -1 +1 @@ -2003-12-23-cvs +2004-01-12-cvs diff --git a/gdb/w89k-rom.c b/gdb/w89k-rom.c deleted file mode 100644 index 331358bce21..00000000000 --- a/gdb/w89k-rom.c +++ /dev/null @@ -1,311 +0,0 @@ -/* Remote target glue for the WinBond ROM monitor running on the "Cougar" - W89k eval board. - - Copyright 1995, 1998, 2000, 2001 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "gdbcore.h" -#include "target.h" -#include "monitor.h" -#include "serial.h" -#include "xmodem.h" -#include "regcache.h" - - -static void w89k_open (char *args, int from_tty); - -/* - * this array of registers need to match the indexes used by GDB. The - * whole reason this exists is cause the various ROM monitors use - * different strings than GDB does, and doesn't support all the - * registers either. So, typing "info reg sp" becomes a "r30". - */ - -static char *w89k_regnames[NUM_REGS] = -{ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", - "SAR", "PC", NULL, NULL, NULL, "EIEM", "IIR", "IVA", - "IOR", "IPSW", NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, - "CCR", NULL, NULL, "TR0", "TR1", -}; - -static void -w89k_supply_register (char *regname, int regnamelen, char *val, int vallen) -{ - int numregs; - int regno; - - numregs = 1; - regno = -1; - - if (regnamelen == 2) - switch (regname[0]) - { - case 'r': - numregs = 4; - switch (regname[1]) - { - case '0': - regno = R0_REGNUM; - break; - case '4': - regno = R0_REGNUM + 4; - break; - case '8': - regno = R0_REGNUM + 8; - break; - } - break; - case 'P': - if (regname[1] == 'C') - regno = PC_REGNUM; - break; - } - else if (regnamelen == 3) - switch (regname[0]) - { - case 'r': - numregs = 4; - if (regname[1] == '1' && regname[2] == '2') - regno = R0_REGNUM + 12; - else if (regname[1] == '1' && regname[2] == '6') - regno = R0_REGNUM + 16; - else if (regname[1] == '2' && regname[2] == '0') - regno = R0_REGNUM + 20; - else if (regname[1] == '2' && regname[2] == '4') - regno = R0_REGNUM + 24; - else if (regname[1] == '2' && regname[2] == '8') - regno = R0_REGNUM + 28; - break; - case 'R': - if (regname[1] == 'C' && regname[2] == 'R') - regno = RCR_REGNUM; - break; - case 'C': - if (regname[1] == 'C' && regname[2] == 'R') - regno = CCR_REGNUM; - break; - case 'S': - if (regname[1] == 'A' && regname[2] == 'R') - regno = SAR_REGNUM; - break; - case 'I': - if (regname[1] == 'I' && regname[2] == 'R') - regno = IIR_REGNUM; - else if (regname[1] == 'O' && regname[2] == 'R') - regno = IOR_REGNUM; - break; - case 'T': - numregs = 4; - if (regname[1] == 'R') - if (regname[2] == '0') - regno = TR0_REGNUM; - else if (regname[2] == '4') - regno = TR0_REGNUM + 4; - break; - } - else if (regnamelen == 4) - switch (regname[0]) - { - case 'E': - if (regname[1] == 'I') - if (regname[2] == 'E' && regname[3] == 'M') - regno = EIEM_REGNUM; - break; - case 'I': - if (regname[1] == 'P' && regname[2] == 'S' && regname[3] == 'W') - regno = IPSW_REGNUM; - break; - } - else if (regnamelen == 5) - switch (regname[0]) - { - case 'I': - if (regname[1] == 'A' - && regname[2] == 'O' - && regname[3] == 'Q' - && regname[4] == 'B') - regno = PCOQ_TAIL_REGNUM; - break; - } - - if (regno >= 0) - while (numregs-- > 0) - val = monitor_supply_register (regno++, val); -} - -static int hashmark = 1; /* flag set by "set hash" */ - -extern struct monitor_ops w89k_cmds; /* fwd decl */ - -static void -w89k_load (struct serial *desc, char *file, int hashmark) -{ - bfd *abfd; - asection *s; - char *buffer; - int i; - - buffer = alloca (XMODEM_PACKETSIZE); - - abfd = bfd_openr (file, 0); - if (!abfd) - { - printf_filtered ("Unable to open file %s\n", file); - return; - } - - if (bfd_check_format (abfd, bfd_object) == 0) - { - printf_filtered ("File is not an object file\n"); - return; - } - - for (s = abfd->sections; s; s = s->next) - if (s->flags & SEC_LOAD) - { - bfd_size_type section_size; - - printf_filtered ("%s\t: 0x%4x .. 0x%4x ", s->name, s->vma, - s->vma + s->_raw_size); - gdb_flush (gdb_stdout); - - monitor_printf (w89k_cmds.load, s->vma); - if (w89k_cmds.loadresp) - monitor_expect (w89k_cmds.loadresp, NULL, 0); - - xmodem_init_xfer (desc); - - section_size = bfd_section_size (abfd, s); - - for (i = 0; i < section_size; i += XMODEM_DATASIZE) - { - int numbytes; - - numbytes = min (XMODEM_DATASIZE, section_size - i); - - bfd_get_section_contents (abfd, s, buffer + XMODEM_DATAOFFSET, i, - numbytes); - - xmodem_send_packet (desc, buffer, numbytes, hashmark); - - if (hashmark) - { - putchar_unfiltered ('#'); - gdb_flush (gdb_stdout); - } - } /* Per-packet (or S-record) loop */ - - xmodem_finish_xfer (desc); - - monitor_expect_prompt (NULL, 0); - - putchar_unfiltered ('\n'); - } /* Loadable sections */ - - if (hashmark) - putchar_unfiltered ('\n'); -} - -/* - * Define the monitor command strings. Since these are passed directly - * through to a printf style function, we need can include formatting - * strings. We also need a CR or LF on the end. - */ - -static struct target_ops w89k_ops; - -static char *w89k_inits[] = -{"\n", NULL}; - -static struct monitor_ops w89k_cmds; -static void -init_w89k_cmds (void) -{ - w89k_cmds.flags = MO_GETMEM_NEEDS_RANGE | MO_FILL_USES_ADDR; /* flags */ - w89k_cmds.init = w89k_inits; /* Init strings */ - w89k_cmds.cont = "g\n"; /* continue command */ - w89k_cmds.step = "t\n"; /* single step */ - w89k_cmds.stop = "\003"; /* Interrupt char (^C) */ - w89k_cmds.set_break = "bp %x\n"; /* set a breakpoint */ - w89k_cmds.clr_break = "bc %x\n"; /* clear a breakpoint */ - w89k_cmds.clr_all_break = "bc *\n"; /* clear all breakpoints */ - w89k_cmds.fill = "f %x %x %x\n"; /* memory fill cmd */ - w89k_cmds.setmem.cmdb = "eb %x %x\n"; /* setmem.cmdb (addr, value) */ - w89k_cmds.setmem.cmdw = "eh %x %x\n"; /* setmem.cmdw (addr, value) */ - w89k_cmds.setmem.cmdl = "ew %x %x\n"; /* setmem.cmdl (addr, value) */ - w89k_cmds.setmem.cmdll = NULL; /* setmem.cmdll (addr, value) */ - w89k_cmds.setmem.resp_delim = NULL; /* setreg.resp_delim */ - w89k_cmds.setmem.term = NULL; /* setreg.term */ - w89k_cmds.setmem.term_cmd = NULL; /* setreg.term_cmd */ - w89k_cmds.getmem.cmdb = "db %x %x\n"; /* getmem.cmdb (startaddr, endaddr) */ - w89k_cmds.getmem.cmdw = "dh %x %x\n"; /* getmem.cmdw (startaddr, endaddr) */ - w89k_cmds.getmem.cmdl = "dw %x %x\n"; /* getmem.cmdl (startaddr, endaddr) */ - w89k_cmds.getmem.cmdll = NULL; /* getmem.cmdll (startaddr, endaddr) */ - w89k_cmds.getmem.resp_delim = " "; /* getmem.resp_delim */ - w89k_cmds.getmem.term = NULL; /* getmem.term */ - w89k_cmds.getmem.term_cmd = NULL; /* getmem.term_cmd */ - w89k_cmds.setreg.cmd = "r %s %x\n"; /* setreg.cmd (name, value) */ - w89k_cmds.setreg.resp_delim = NULL; /* setreg.resp_delim */ - w89k_cmds.setreg.term = NULL; /* setreg.term */ - w89k_cmds.setreg.term_cmd = NULL; /* setreg.term_cmd */ - w89k_cmds.getreg.cmd = "r %s\n"; /* getreg.cmd (name) */ - w89k_cmds.getreg.resp_delim = "\r"; /* getreg.resp_delim */ - w89k_cmds.getreg.term = NULL; /* getreg.term */ - w89k_cmds.getreg.term_cmd = NULL; /* getreg.term_cmd */ - w89k_cmds.dump_registers = "r\n"; /* dump_registers */ - w89k_cmds.register_pattern = "\\(\\w+\\)\\( +[0-9a-fA-F]+\\b\\)+"; - w89k_cmds.supply_register = w89k_supply_register; /* supply_register */ - w89k_cmds.load_routine = w89k_load; /* load routine */ - w89k_cmds.load = "u %x\n"; /* download command */ - w89k_cmds.loadresp = "\021"; /* load response (^Q) */ - w89k_cmds.prompt = "ROM>"; /* monitor command prompt */ - w89k_cmds.line_term = "\n"; /* end-of-line terminator */ - w89k_cmds.cmd_end = NULL; /* optional command terminator */ - w89k_cmds.target = &w89k_ops; /* target operations */ - w89k_cmds.stopbits = SERIAL_1_STOPBITS; /* number of stop bits */ - w89k_cmds.regnames = w89k_regnames; /* register names */ - w89k_cmds.magic = MONITOR_OPS_MAGIC; /* magic */ -} /* init_w89k_cmds */ - -static void -w89k_open (char *args, int from_tty) -{ - monitor_open (args, &w89k_cmds, from_tty); -} - -void -_initialize_w89k (void) -{ - init_w89k_cmds (); - init_monitor_ops (&w89k_ops); - - w89k_ops.to_shortname = "w89k"; - w89k_ops.to_longname = "WinBond's debug monitor for the W89k Eval board"; - w89k_ops.to_doc = "Debug on a WinBond W89K eval board.\n\ -Specify the serial device it is connected to (e.g. /dev/ttya)."; - w89k_ops.to_open = w89k_open; - - add_target (&w89k_ops); -} diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c index 358bdf7a9f5..8b26916e2b7 100644 --- a/gdb/win32-nat.c +++ b/gdb/win32-nat.c @@ -76,8 +76,8 @@ enum | CONTEXT_EXTENDED_REGISTERS static unsigned dr[8]; -static int debug_registers_changed = 0; -static int debug_registers_used = 0; +static int debug_registers_changed; +static int debug_registers_used; /* The string sent by cygwin when it processes a signal. FIXME: This should be in a cygwin include file. */ @@ -108,6 +108,7 @@ typedef struct thread_info_struct HANDLE h; char *name; int suspend_count; + int reload_context; CONTEXT context; STACKFRAME sf; } @@ -228,7 +229,6 @@ check (BOOL ok, const char *file, int line) GetLastError ()); } - /* Find a thread record given a thread id. If get_context then also retrieve the context for this thread. */ @@ -246,19 +246,7 @@ thread_rec (DWORD id, int get_context) th->suspend_count = SuspendThread (th->h) + 1; else if (get_context < 0) th->suspend_count = -1; - - th->context.ContextFlags = CONTEXT_DEBUGGER_DR; - GetThreadContext (th->h, &th->context); - if (id == current_event.dwThreadId) - { - /* Copy dr values from that thread. */ - dr[0] = th->context.Dr0; - dr[1] = th->context.Dr1; - dr[2] = th->context.Dr2; - dr[3] = th->context.Dr3; - dr[6] = th->context.Dr6; - dr[7] = th->context.Dr7; - } + th->reload_context = 1; } return th; } @@ -349,6 +337,25 @@ do_child_fetch_inferior_registers (int r) char *context_offset = ((char *) ¤t_thread->context) + mappings[r]; long l; + if (!current_thread) + return; /* Windows sometimes uses a non-existent thread id in its + events */ + + if (current_thread->reload_context) + { + thread_info *th = current_thread; + th->context.ContextFlags = CONTEXT_DEBUGGER_DR; + GetThreadContext (th->h, &th->context); + /* Copy dr values from that thread. */ + dr[0] = th->context.Dr0; + dr[1] = th->context.Dr1; + dr[2] = th->context.Dr2; + dr[3] = th->context.Dr3; + dr[6] = th->context.Dr6; + dr[7] = th->context.Dr7; + current_thread->reload_context = 0; + } + #define I387_ST0_REGNUM I386_ST0_REGNUM if (r == I387_FISEG_REGNUM) @@ -376,13 +383,18 @@ static void child_fetch_inferior_registers (int r) { current_thread = thread_rec (PIDGET (inferior_ptid), TRUE); - do_child_fetch_inferior_registers (r); + /* Check if current_thread exists. Windows sometimes uses a non-existent + thread id in its events */ + if (current_thread) + do_child_fetch_inferior_registers (r); } static void do_child_store_inferior_registers (int r) { - if (r >= 0) + if (!current_thread) + /* Windows sometimes uses a non-existent thread id in its events */; + else if (r >= 0) regcache_collect (r, ((char *) ¤t_thread->context) + mappings[r]); else { @@ -396,7 +408,10 @@ static void child_store_inferior_registers (int r) { current_thread = thread_rec (PIDGET (inferior_ptid), TRUE); - do_child_store_inferior_registers (r); + /* Check if current_thread exists. Windows sometimes uses a non-existent + thread id in its events */ + if (current_thread) + do_child_store_inferior_registers (r); } static int psapi_loaded = 0; @@ -1179,7 +1194,7 @@ child_continue (DWORD continue_status, int id) th->suspend_count = 0; if (debug_registers_changed) { - /* Only change the value of the debug reisters */ + /* Only change the value of the debug registers */ th->context.ContextFlags = CONTEXT_DEBUG_REGISTERS; th->context.Dr0 = dr[0]; th->context.Dr1 = dr[1]; @@ -1197,6 +1212,19 @@ child_continue (DWORD continue_status, int id) return res; } +/* Called in pathological case where Windows fails to send a + CREATE_PROCESS_DEBUG_EVENT after an attach. */ +DWORD +fake_create_process (void) +{ + current_process_handle = OpenProcess (PROCESS_ALL_ACCESS, FALSE, + current_event.dwProcessId); + main_thread_id = current_event.dwThreadId; + current_thread = child_add_thread (main_thread_id, + current_event.u.CreateThread.hThread); + return main_thread_id; +} + /* Get the next event from the child. Return 1 if the event requires handling by WFI (or whatever). */ @@ -1205,7 +1233,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) { BOOL debug_event; DWORD continue_status, event_code; - thread_info *th = NULL; + thread_info *th; static thread_info dummy_thread_info; int retval = 0; @@ -1219,6 +1247,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) event_code = current_event.dwDebugEventCode; ourstatus->kind = TARGET_WAITKIND_SPURIOUS; + th = NULL; switch (event_code) { @@ -1228,7 +1257,17 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) (unsigned) current_event.dwThreadId, "CREATE_THREAD_DEBUG_EVENT")); if (saw_create != 1) - break; + { + if (!saw_create && attach_flag) + { + /* Kludge around a Windows bug where first event is a create + thread event. Caused when attached process does not have + a main thread. */ + retval = ourstatus->value.related_pid = fake_create_process (); + saw_create++; + } + break; + } /* Record the existence of this thread */ th = child_add_thread (current_event.dwThreadId, current_event.u.CreateThread.hThread); @@ -1244,10 +1283,11 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) (unsigned) current_event.dwProcessId, (unsigned) current_event.dwThreadId, "EXIT_THREAD_DEBUG_EVENT")); - if (saw_create != 1) - break; - child_delete_thread (current_event.dwThreadId); - th = &dummy_thread_info; + if (current_event.dwThreadId != main_thread_id) + { + child_delete_thread (current_event.dwThreadId); + th = &dummy_thread_info; + } break; case CREATE_PROCESS_DEBUG_EVENT: @@ -1263,12 +1303,10 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) } current_process_handle = current_event.u.CreateProcessInfo.hProcess; + if (main_thread_id) + child_delete_thread (main_thread_id); main_thread_id = current_event.dwThreadId; /* Add the main thread */ -#if 0 - th = child_add_thread (current_event.dwProcessId, - current_event.u.CreateProcessInfo.hProcess); -#endif th = child_add_thread (main_thread_id, current_event.u.CreateProcessInfo.hThread); retval = ourstatus->value.related_pid = current_event.dwThreadId; @@ -1353,8 +1391,8 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus) CHECK (child_continue (continue_status, -1)); else { - current_thread = th ? : thread_rec (current_event.dwThreadId, TRUE); inferior_ptid = pid_to_ptid (retval); + current_thread = th ?: thread_rec (current_event.dwThreadId, TRUE); } out: @@ -1569,10 +1607,9 @@ child_attach (char *args, int from_tty) } if (has_detach_ability ()) - { - attach_flag = 1; - DebugSetProcessKillOnExit (FALSE); - } + DebugSetProcessKillOnExit (FALSE); + + attach_flag = 1; if (from_tty) { @@ -1694,6 +1731,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env) if (new_console) flags |= CREATE_NEW_CONSOLE; + attach_flag = 0; + args = alloca (strlen (toexec) + strlen (allargs) + 2); strcpy (args, toexec); strcat (args, " "); @@ -1895,7 +1934,8 @@ child_kill_inferior (void) CHECK (CloseHandle (current_process_handle)); /* this may fail in an attached process so don't check. */ - (void) CloseHandle (current_thread->h); + if (current_thread && current_thread->h) + (void) CloseHandle (current_thread->h); target_mourn_inferior (); /* or just child_mourn_inferior? */ } @@ -2147,7 +2187,6 @@ cygwin_get_dr6 (void) return dr[6]; } - /* Determine if the thread referenced by "pid" is alive by "polling" it. If WaitForSingleObject returns WAIT_OBJECT_0 it means that the pid has died. Otherwise it is assumed to be alive. */ @@ -2199,65 +2238,65 @@ core_dll_symbols_add (char *dll_name, DWORD base_addr) } } - register_loaded_dll (dll_name, base_addr + 0x1000); - solib_symbols_add (dll_name, 0, (CORE_ADDR) base_addr + 0x1000); + register_loaded_dll (dll_name, base_addr + 0x1000); + solib_symbols_add (dll_name, 0, (CORE_ADDR) base_addr + 0x1000); -out: - return 1; -} + out: + return 1; + } -typedef struct -{ - struct target_ops *target; - bfd_vma addr; -} map_code_section_args; + typedef struct + { + struct target_ops *target; + bfd_vma addr; + } map_code_section_args; -static void -map_single_dll_code_section (bfd * abfd, asection * sect, void *obj) -{ - int old; - int update_coreops; - struct section_table *new_target_sect_ptr; + static void + map_single_dll_code_section (bfd * abfd, asection * sect, void *obj) + { + int old; + int update_coreops; + struct section_table *new_target_sect_ptr; - map_code_section_args *args = (map_code_section_args *) obj; - struct target_ops *target = args->target; - if (sect->flags & SEC_CODE) - { - update_coreops = core_ops.to_sections == target->to_sections; + map_code_section_args *args = (map_code_section_args *) obj; + struct target_ops *target = args->target; + if (sect->flags & SEC_CODE) + { + update_coreops = core_ops.to_sections == target->to_sections; - if (target->to_sections) - { - old = target->to_sections_end - target->to_sections; - target->to_sections = (struct section_table *) - xrealloc ((char *) target->to_sections, - (sizeof (struct section_table)) * (1 + old)); - } - else - { - old = 0; - target->to_sections = (struct section_table *) - xmalloc ((sizeof (struct section_table))); - } - target->to_sections_end = target->to_sections + (1 + old); + if (target->to_sections) + { + old = target->to_sections_end - target->to_sections; + target->to_sections = (struct section_table *) + xrealloc ((char *) target->to_sections, + (sizeof (struct section_table)) * (1 + old)); + } + else + { + old = 0; + target->to_sections = (struct section_table *) + xmalloc ((sizeof (struct section_table))); + } + target->to_sections_end = target->to_sections + (1 + old); - /* Update the to_sections field in the core_ops structure - if needed. */ - if (update_coreops) - { - core_ops.to_sections = target->to_sections; - core_ops.to_sections_end = target->to_sections_end; - } - new_target_sect_ptr = target->to_sections + old; - new_target_sect_ptr->addr = args->addr + bfd_section_vma (abfd, sect); - new_target_sect_ptr->endaddr = args->addr + bfd_section_vma (abfd, sect) + - bfd_section_size (abfd, sect);; - new_target_sect_ptr->the_bfd_section = sect; - new_target_sect_ptr->bfd = abfd; - } -} + /* Update the to_sections field in the core_ops structure + if needed. */ + if (update_coreops) + { + core_ops.to_sections = target->to_sections; + core_ops.to_sections_end = target->to_sections_end; + } + new_target_sect_ptr = target->to_sections + old; + new_target_sect_ptr->addr = args->addr + bfd_section_vma (abfd, sect); + new_target_sect_ptr->endaddr = args->addr + bfd_section_vma (abfd, sect) + + bfd_section_size (abfd, sect);; + new_target_sect_ptr->the_bfd_section = sect; + new_target_sect_ptr->bfd = abfd; + } + } -static int -dll_code_sections_add (const char *dll_name, int base_addr, struct target_ops *target) + static int + dll_code_sections_add (const char *dll_name, int base_addr, struct target_ops *target) { bfd *dll_bfd; map_code_section_args map_args; diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c index 4ed859bc727..98d30aaa258 100644 --- a/gdb/x86-64-linux-nat.c +++ b/gdb/x86-64-linux-nat.c @@ -1,7 +1,6 @@ /* Native-dependent code for GNU/Linux x86-64. - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. - + Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -67,6 +66,7 @@ static int x86_64_linux_gregset64_reg_offset[] = R12 * 8, R13 * 8, R14 * 8, R15 * 8, /* ... %r15 */ RIP * 8, EFLAGS * 8, /* %rip, %eflags */ + CS * 8, SS * 8, /* %cs, %ss */ DS * 8, ES * 8, /* %ds, %es */ FS * 8, GS * 8 /* %fs, %gs */ }; diff --git a/gdb/x86-64-linux-tdep.c b/gdb/x86-64-linux-tdep.c index 71a5364f0e6..fee1233f4fc 100644 --- a/gdb/x86-64-linux-tdep.c +++ b/gdb/x86-64-linux-tdep.c @@ -1,7 +1,6 @@ /* Target-dependent code for GNU/Linux running on x86-64, for GDB. - Copyright 2001, 2003 Free Software Foundation, Inc. - + Copyright 2001, 2003, 2004 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -69,6 +68,7 @@ static int user_to_gdb_regmap[] = USER_R8, USER_R9, USER_R10, USER_R11, USER_R12, USER_R13, USER_R14, USER_R15, USER_RIP, USER_EFLAGS, + USER_CS, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS }; @@ -254,13 +254,15 @@ static int x86_64_linux_sc_reg_offset[] = 7 * 8, /* %r15 */ 16 * 8, /* %rip */ 17 * 8, /* %eflags */ - -1, /* %ds */ - -1, /* %es */ - /* FIXME: kettenis/2002030531: The registers %fs and %gs are + /* FIXME: kettenis/2002030531: The registers %cs, %fs and %gs are available in `struct sigcontext'. However, they only occupy two bytes instead of four, which makes using them here rather difficult. Leave them out for now. */ + -1, /* %cs */ + -1, /* %ss */ + -1, /* %ds */ + -1, /* %es */ -1, /* %fs */ -1 /* %gs */ }; diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c index 56b1e9bea85..fcb29edc257 100644 --- a/gdb/x86-64-tdep.c +++ b/gdb/x86-64-tdep.c @@ -1,6 +1,6 @@ -/* Target-dependent code for the x86-64 for GDB, the GNU debugger. +/* Target-dependent code for AMD64. - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -40,15 +40,22 @@ #include "x86-64-tdep.h" #include "i387-tdep.h" +/* Note that the AMD64 architecture was previously known as x86-64. + The latter is (forever) engraved into the canonical system name as + returned bu config.guess, and used as the name for the AMD64 port + of GNU/Linux. The BSD's have renamed their ports to amd64; they + don't like to shout. For GDB we prefer the amd64_-prefix over the + x86_64_-prefix since it's so much easier to type. */ + /* Register information. */ -struct x86_64_register_info +struct amd64_register_info { char *name; struct type **type; }; -static struct x86_64_register_info x86_64_register_info[] = +static struct amd64_register_info amd64_register_info[] = { { "rax", &builtin_type_int64 }, { "rbx", &builtin_type_int64 }, @@ -70,12 +77,14 @@ static struct x86_64_register_info x86_64_register_info[] = { "r15", &builtin_type_int64 }, { "rip", &builtin_type_void_func_ptr }, { "eflags", &builtin_type_int32 }, + { "cs", &builtin_type_int32 }, + { "ss", &builtin_type_int32 }, { "ds", &builtin_type_int32 }, { "es", &builtin_type_int32 }, { "fs", &builtin_type_int32 }, { "gs", &builtin_type_int32 }, - /* %st0 is register number 22. */ + /* %st0 is register number 24. */ { "st0", &builtin_type_i387_ext }, { "st1", &builtin_type_i387_ext }, { "st2", &builtin_type_i387_ext }, @@ -93,7 +102,7 @@ static struct x86_64_register_info x86_64_register_info[] = { "fooff", &builtin_type_int32 }, { "fop", &builtin_type_int32 }, - /* %xmm0 is register number 38. */ + /* %xmm0 is register number 40. */ { "xmm0", &builtin_type_v4sf }, { "xmm1", &builtin_type_v4sf }, { "xmm2", &builtin_type_v4sf }, @@ -114,16 +123,16 @@ static struct x86_64_register_info x86_64_register_info[] = }; /* Total number of registers. */ -#define X86_64_NUM_REGS \ - (sizeof (x86_64_register_info) / sizeof (x86_64_register_info[0])) +#define AMD64_NUM_REGS \ + (sizeof (amd64_register_info) / sizeof (amd64_register_info[0])) /* Return the name of register REGNUM. */ static const char * -x86_64_register_name (int regnum) +amd64_register_name (int regnum) { - if (regnum >= 0 && regnum < X86_64_NUM_REGS) - return x86_64_register_info[regnum].name; + if (regnum >= 0 && regnum < AMD64_NUM_REGS) + return amd64_register_info[regnum].name; return NULL; } @@ -132,17 +141,17 @@ x86_64_register_name (int regnum) register REGNUM. */ static struct type * -x86_64_register_type (struct gdbarch *gdbarch, int regnum) +amd64_register_type (struct gdbarch *gdbarch, int regnum) { - gdb_assert (regnum >= 0 && regnum < X86_64_NUM_REGS); + gdb_assert (regnum >= 0 && regnum < AMD64_NUM_REGS); - return *x86_64_register_info[regnum].type; + return *amd64_register_info[regnum].type; } /* DWARF Register Number Mapping as defined in the System V psABI, section 3.6. */ -static int x86_64_dwarf_regmap[] = +static int amd64_dwarf_regmap[] = { /* General Purpose Registers RAX, RDX, RCX, RBX, RSI, RDI. */ X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, 2, 1, @@ -179,19 +188,19 @@ static int x86_64_dwarf_regmap[] = X86_64_ST0_REGNUM + 6, X86_64_ST0_REGNUM + 7 }; -static const int x86_64_dwarf_regmap_len = - (sizeof (x86_64_dwarf_regmap) / sizeof (x86_64_dwarf_regmap[0])); +static const int amd64_dwarf_regmap_len = + (sizeof (amd64_dwarf_regmap) / sizeof (amd64_dwarf_regmap[0])); /* Convert DWARF register number REG to the appropriate register number used by GDB. */ static int -x86_64_dwarf_reg_to_regnum (int reg) +amd64_dwarf_reg_to_regnum (int reg) { int regnum = -1; - if (reg >= 0 || reg < x86_64_dwarf_regmap_len) - regnum = x86_64_dwarf_regmap[reg]; + if (reg >= 0 || reg < amd64_dwarf_regmap_len) + regnum = amd64_dwarf_regmap[reg]; if (regnum == -1) warning ("Unmapped DWARF Register #%d encountered\n", reg); @@ -203,7 +212,7 @@ x86_64_dwarf_reg_to_regnum (int reg) needs any special handling. */ static int -x86_64_convert_register_p (int regnum, struct type *type) +amd64_convert_register_p (int regnum, struct type *type) { return i386_fp_regnum_p (regnum); } @@ -261,6 +270,19 @@ amd64_merge_classes (enum amd64_reg_class class1, enum amd64_reg_class class2) static void amd64_classify (struct type *type, enum amd64_reg_class class[2]); +/* Return non-zero if TYPE is a non-POD structure or union type. */ + +static int +amd64_non_pod_p (struct type *type) +{ + /* ??? A class with a base class certainly isn't POD, but does this + catch all non-POD structure types? */ + if (TYPE_CODE (type) == TYPE_CODE_STRUCT && TYPE_N_BASECLASSES (type) > 0) + return 1; + + return 0; +} + /* Classify TYPE according to the rules for aggregate (structures and arrays) and union types, and store the result in CLASS. */ @@ -272,7 +294,7 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2]) /* 1. If the size of an object is larger than two eightbytes, or in C++, is a non-POD structure or union type, or contains unaligned fields, it has class memory. */ - if (len > 16) + if (len > 16 || amd64_non_pod_p (type)) { class[0] = class[1] = AMD64_MEMORY; return; @@ -309,6 +331,10 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2]) int pos = TYPE_FIELD_BITPOS (type, i) / 64; enum amd64_reg_class subclass[2]; + /* Ignore static fields. */ + if (TYPE_FIELD_STATIC (type, i)) + continue; + gdb_assert (pos == 0 || pos == 1); amd64_classify (subtype, subclass); @@ -468,7 +494,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct type *type, static CORE_ADDR amd64_push_arguments (struct regcache *regcache, int nargs, - struct value **args, CORE_ADDR sp) + struct value **args, CORE_ADDR sp, int struct_return) { static int integer_regnum[] = { @@ -492,6 +518,10 @@ amd64_push_arguments (struct regcache *regcache, int nargs, int sse_reg = 0; int i; + /* Reserve a register for the "hidden" argument. */ + if (struct_return) + integer_reg++; + for (i = 0; i < nargs; i++) { struct type *type = VALUE_TYPE (args[i]); @@ -592,15 +622,15 @@ amd64_push_arguments (struct regcache *regcache, int nargs, } static CORE_ADDR -x86_64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, - struct regcache *regcache, CORE_ADDR bp_addr, - int nargs, struct value **args, CORE_ADDR sp, - int struct_return, CORE_ADDR struct_addr) +amd64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, + struct regcache *regcache, CORE_ADDR bp_addr, + int nargs, struct value **args, CORE_ADDR sp, + int struct_return, CORE_ADDR struct_addr) { char buf[8]; /* Pass arguments. */ - sp = amd64_push_arguments (regcache, nargs, args, sp); + sp = amd64_push_arguments (regcache, nargs, args, sp, struct_return); /* Pass "hidden" argument". */ if (struct_return) @@ -626,9 +656,9 @@ x86_64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, /* The maximum number of saved registers. This should include %rip. */ -#define X86_64_NUM_SAVED_REGS X86_64_NUM_GREGS +#define AMD64_NUM_SAVED_REGS X86_64_NUM_GREGS -struct x86_64_frame_cache +struct amd64_frame_cache { /* Base address. */ CORE_ADDR base; @@ -636,7 +666,7 @@ struct x86_64_frame_cache CORE_ADDR pc; /* Saved registers. */ - CORE_ADDR saved_regs[X86_64_NUM_SAVED_REGS]; + CORE_ADDR saved_regs[AMD64_NUM_SAVED_REGS]; CORE_ADDR saved_sp; /* Do we have a frame? */ @@ -645,13 +675,13 @@ struct x86_64_frame_cache /* Allocate and initialize a frame cache. */ -static struct x86_64_frame_cache * -x86_64_alloc_frame_cache (void) +static struct amd64_frame_cache * +amd64_alloc_frame_cache (void) { - struct x86_64_frame_cache *cache; + struct amd64_frame_cache *cache; int i; - cache = FRAME_OBSTACK_ZALLOC (struct x86_64_frame_cache); + cache = FRAME_OBSTACK_ZALLOC (struct amd64_frame_cache); /* Base address. */ cache->base = 0; @@ -660,7 +690,7 @@ x86_64_alloc_frame_cache (void) /* Saved registers. We initialize these to -1 since zero is a valid offset (that's where %rbp is supposed to be stored). */ - for (i = 0; i < X86_64_NUM_SAVED_REGS; i++) + for (i = 0; i < AMD64_NUM_SAVED_REGS; i++) cache->saved_regs[i] = -1; cache->saved_sp = 0; @@ -683,8 +713,8 @@ x86_64_alloc_frame_cache (void) to have no prologue and thus no valid frame pointer in %rbp. */ static CORE_ADDR -x86_64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, - struct x86_64_frame_cache *cache) +amd64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, + struct amd64_frame_cache *cache) { static unsigned char proto[3] = { 0x48, 0x89, 0xe5 }; unsigned char buf[3]; @@ -722,12 +752,12 @@ x86_64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, /* Return PC of first real instruction. */ static CORE_ADDR -x86_64_skip_prologue (CORE_ADDR start_pc) +amd64_skip_prologue (CORE_ADDR start_pc) { - struct x86_64_frame_cache cache; + struct amd64_frame_cache cache; CORE_ADDR pc; - pc = x86_64_analyze_prologue (start_pc, 0xffffffffffffffff, &cache); + pc = amd64_analyze_prologue (start_pc, 0xffffffffffffffff, &cache); if (cache.frameless_p) return start_pc; @@ -737,22 +767,22 @@ x86_64_skip_prologue (CORE_ADDR start_pc) /* Normal frames. */ -static struct x86_64_frame_cache * -x86_64_frame_cache (struct frame_info *next_frame, void **this_cache) +static struct amd64_frame_cache * +amd64_frame_cache (struct frame_info *next_frame, void **this_cache) { - struct x86_64_frame_cache *cache; + struct amd64_frame_cache *cache; char buf[8]; int i; if (*this_cache) return *this_cache; - cache = x86_64_alloc_frame_cache (); + cache = amd64_alloc_frame_cache (); *this_cache = cache; cache->pc = frame_func_unwind (next_frame); if (cache->pc != 0) - x86_64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache); + amd64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache); if (cache->frameless_p) { @@ -784,7 +814,7 @@ x86_64_frame_cache (struct frame_info *next_frame, void **this_cache) /* Adjust all the saved registers such that they contain addresses instead of offsets. */ - for (i = 0; i < X86_64_NUM_SAVED_REGS; i++) + for (i = 0; i < AMD64_NUM_SAVED_REGS; i++) if (cache->saved_regs[i] != -1) cache->saved_regs[i] += cache->base; @@ -792,11 +822,11 @@ x86_64_frame_cache (struct frame_info *next_frame, void **this_cache) } static void -x86_64_frame_this_id (struct frame_info *next_frame, void **this_cache, - struct frame_id *this_id) +amd64_frame_this_id (struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) { - struct x86_64_frame_cache *cache = - x86_64_frame_cache (next_frame, this_cache); + struct amd64_frame_cache *cache = + amd64_frame_cache (next_frame, this_cache); /* This marks the outermost frame. */ if (cache->base == 0) @@ -806,13 +836,13 @@ x86_64_frame_this_id (struct frame_info *next_frame, void **this_cache, } static void -x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache, - int regnum, int *optimizedp, - enum lval_type *lvalp, CORE_ADDR *addrp, - int *realnump, void *valuep) +amd64_frame_prev_register (struct frame_info *next_frame, void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, void *valuep) { - struct x86_64_frame_cache *cache = - x86_64_frame_cache (next_frame, this_cache); + struct amd64_frame_cache *cache = + amd64_frame_cache (next_frame, this_cache); gdb_assert (regnum >= 0); @@ -830,7 +860,7 @@ x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache, return; } - if (regnum < X86_64_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1) + if (regnum < AMD64_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1) { *optimizedp = 0; *lvalp = lval_memory; @@ -849,17 +879,17 @@ x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache, optimizedp, lvalp, addrp, realnump, valuep); } -static const struct frame_unwind x86_64_frame_unwind = +static const struct frame_unwind amd64_frame_unwind = { NORMAL_FRAME, - x86_64_frame_this_id, - x86_64_frame_prev_register + amd64_frame_this_id, + amd64_frame_prev_register }; static const struct frame_unwind * -x86_64_frame_sniffer (struct frame_info *next_frame) +amd64_frame_sniffer (struct frame_info *next_frame) { - return &x86_64_frame_unwind; + return &amd64_frame_unwind; } @@ -869,10 +899,10 @@ x86_64_frame_sniffer (struct frame_info *next_frame) 64-bit variants. This would require using identical frame caches on both platforms. */ -static struct x86_64_frame_cache * -x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache) +static struct amd64_frame_cache * +amd64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache) { - struct x86_64_frame_cache *cache; + struct amd64_frame_cache *cache; struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); CORE_ADDR addr; char buf[8]; @@ -881,14 +911,14 @@ x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache) if (*this_cache) return *this_cache; - cache = x86_64_alloc_frame_cache (); + cache = amd64_alloc_frame_cache (); frame_unwind_register (next_frame, X86_64_RSP_REGNUM, buf); cache->base = extract_unsigned_integer (buf, 8) - 8; addr = tdep->sigcontext_addr (next_frame); gdb_assert (tdep->sc_reg_offset); - gdb_assert (tdep->sc_num_regs <= X86_64_NUM_SAVED_REGS); + gdb_assert (tdep->sc_num_regs <= AMD64_NUM_SAVED_REGS); for (i = 0; i < tdep->sc_num_regs; i++) if (tdep->sc_reg_offset[i] != -1) cache->saved_regs[i] = addr + tdep->sc_reg_offset[i]; @@ -898,38 +928,38 @@ x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache) } static void -x86_64_sigtramp_frame_this_id (struct frame_info *next_frame, - void **this_cache, struct frame_id *this_id) +amd64_sigtramp_frame_this_id (struct frame_info *next_frame, + void **this_cache, struct frame_id *this_id) { - struct x86_64_frame_cache *cache = - x86_64_sigtramp_frame_cache (next_frame, this_cache); + struct amd64_frame_cache *cache = + amd64_sigtramp_frame_cache (next_frame, this_cache); (*this_id) = frame_id_build (cache->base + 16, frame_pc_unwind (next_frame)); } static void -x86_64_sigtramp_frame_prev_register (struct frame_info *next_frame, - void **this_cache, - int regnum, int *optimizedp, - enum lval_type *lvalp, CORE_ADDR *addrp, - int *realnump, void *valuep) +amd64_sigtramp_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, void *valuep) { /* Make sure we've initialized the cache. */ - x86_64_sigtramp_frame_cache (next_frame, this_cache); + amd64_sigtramp_frame_cache (next_frame, this_cache); - x86_64_frame_prev_register (next_frame, this_cache, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + amd64_frame_prev_register (next_frame, this_cache, regnum, + optimizedp, lvalp, addrp, realnump, valuep); } -static const struct frame_unwind x86_64_sigtramp_frame_unwind = +static const struct frame_unwind amd64_sigtramp_frame_unwind = { SIGTRAMP_FRAME, - x86_64_sigtramp_frame_this_id, - x86_64_sigtramp_frame_prev_register + amd64_sigtramp_frame_this_id, + amd64_sigtramp_frame_prev_register }; static const struct frame_unwind * -x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame) +amd64_sigtramp_frame_sniffer (struct frame_info *next_frame) { CORE_ADDR pc = frame_pc_unwind (next_frame); char *name; @@ -939,7 +969,7 @@ x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame) { gdb_assert (gdbarch_tdep (current_gdbarch)->sigcontext_addr); - return &x86_64_sigtramp_frame_unwind; + return &amd64_sigtramp_frame_unwind; } return NULL; @@ -947,24 +977,24 @@ x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame) static CORE_ADDR -x86_64_frame_base_address (struct frame_info *next_frame, void **this_cache) +amd64_frame_base_address (struct frame_info *next_frame, void **this_cache) { - struct x86_64_frame_cache *cache = - x86_64_frame_cache (next_frame, this_cache); + struct amd64_frame_cache *cache = + amd64_frame_cache (next_frame, this_cache); return cache->base; } -static const struct frame_base x86_64_frame_base = +static const struct frame_base amd64_frame_base = { - &x86_64_frame_unwind, - x86_64_frame_base_address, - x86_64_frame_base_address, - x86_64_frame_base_address + &amd64_frame_unwind, + amd64_frame_base_address, + amd64_frame_base_address, + amd64_frame_base_address }; static struct frame_id -x86_64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame) +amd64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame) { char buf[8]; CORE_ADDR fp; @@ -978,7 +1008,7 @@ x86_64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame) /* 16 byte align the SP per frame requirements. */ static CORE_ADDR -x86_64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) +amd64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) { return sp & -(CORE_ADDR)16; } @@ -989,8 +1019,8 @@ x86_64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) registers in REGSET. */ static void -x86_64_supply_fpregset (const struct regset *regset, struct regcache *regcache, - int regnum, const void *fpregs, size_t len) +amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, + int regnum, const void *fpregs, size_t len) { const struct gdbarch_tdep *tdep = regset->descr; @@ -1002,8 +1032,8 @@ x86_64_supply_fpregset (const struct regset *regset, struct regcache *regcache, by SECT_NAME and SECT_SIZE. */ static const struct regset * -x86_64_regset_from_core_section (struct gdbarch *gdbarch, - const char *sect_name, size_t sect_size) +amd64_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, size_t sect_size) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); @@ -1013,7 +1043,7 @@ x86_64_regset_from_core_section (struct gdbarch *gdbarch, { tdep->fpregset = XMALLOC (struct regset); tdep->fpregset->descr = tdep; - tdep->fpregset->supply_regset = x86_64_supply_fpregset; + tdep->fpregset->supply_regset = amd64_supply_fpregset; } return tdep->fpregset; @@ -1041,14 +1071,14 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_long_long_bit (gdbarch, 64); set_gdbarch_ptr_bit (gdbarch, 64); - /* In contrast to the i386, on the x86-64 a `long double' actually - takes up 128 bits, even though it's still based on the i387 - extended floating-point format which has only 80 significant bits. */ + /* In contrast to the i386, on AMD64 a `long double' actually takes + up 128 bits, even though it's still based on the i387 extended + floating-point format which has only 80 significant bits. */ set_gdbarch_long_double_bit (gdbarch, 128); - set_gdbarch_num_regs (gdbarch, X86_64_NUM_REGS); - set_gdbarch_register_name (gdbarch, x86_64_register_name); - set_gdbarch_register_type (gdbarch, x86_64_register_type); + set_gdbarch_num_regs (gdbarch, AMD64_NUM_REGS); + set_gdbarch_register_name (gdbarch, amd64_register_name); + set_gdbarch_register_type (gdbarch, amd64_register_type); /* Register numbers of various important registers. */ set_gdbarch_sp_regnum (gdbarch, X86_64_RSP_REGNUM); /* %rsp */ @@ -1056,53 +1086,53 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_ps_regnum (gdbarch, X86_64_EFLAGS_REGNUM); /* %eflags */ set_gdbarch_fp0_regnum (gdbarch, X86_64_ST0_REGNUM); /* %st(0) */ - /* The "default" register numbering scheme for the x86-64 is - referred to as the "DWARF Register Number Mapping" in the System - V psABI. The preferred debugging format for all known x86-64 - targets is actually DWARF2, and GCC doesn't seem to support DWARF - (that is DWARF-1), but we provide the same mapping just in case. - This mapping is also used for stabs, which GCC does support. */ - set_gdbarch_stab_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum); - set_gdbarch_dwarf_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum); - set_gdbarch_dwarf2_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum); + /* The "default" register numbering scheme for AMD64 is referred to + as the "DWARF Register Number Mapping" in the System V psABI. + The preferred debugging format for all known AMD64 targets is + actually DWARF2, and GCC doesn't seem to support DWARF (that is + DWARF-1), but we provide the same mapping just in case. This + mapping is also used for stabs, which GCC does support. */ + set_gdbarch_stab_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum); + set_gdbarch_dwarf_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum); + set_gdbarch_dwarf2_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum); /* We don't override SDB_REG_RO_REGNUM, since COFF doesn't seem to - be in use on any of the supported x86-64 targets. */ + be in use on any of the supported AMD64 targets. */ /* Call dummy code. */ - set_gdbarch_push_dummy_call (gdbarch, x86_64_push_dummy_call); - set_gdbarch_frame_align (gdbarch, x86_64_frame_align); + set_gdbarch_push_dummy_call (gdbarch, amd64_push_dummy_call); + set_gdbarch_frame_align (gdbarch, amd64_frame_align); set_gdbarch_frame_red_zone_size (gdbarch, 128); - set_gdbarch_convert_register_p (gdbarch, x86_64_convert_register_p); + set_gdbarch_convert_register_p (gdbarch, amd64_convert_register_p); set_gdbarch_register_to_value (gdbarch, i387_register_to_value); set_gdbarch_value_to_register (gdbarch, i387_value_to_register); set_gdbarch_return_value (gdbarch, amd64_return_value); - /* Override, since this is handled by x86_64_extract_return_value. */ + /* Override, since this is handled by amd64_extract_return_value. */ set_gdbarch_extract_struct_value_address (gdbarch, NULL); - set_gdbarch_skip_prologue (gdbarch, x86_64_skip_prologue); + set_gdbarch_skip_prologue (gdbarch, amd64_skip_prologue); /* Avoid wiring in the MMX registers for now. */ set_gdbarch_num_pseudo_regs (gdbarch, 0); tdep->mm0_regnum = -1; - set_gdbarch_unwind_dummy_id (gdbarch, x86_64_unwind_dummy_id); + set_gdbarch_unwind_dummy_id (gdbarch, amd64_unwind_dummy_id); /* FIXME: kettenis/20021026: This is ELF-specific. Fine for now, - since all supported x86-64 targets are ELF, but that might change + since all supported AMD64 targets are ELF, but that might change in the future. */ set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section); - frame_unwind_append_sniffer (gdbarch, x86_64_sigtramp_frame_sniffer); - frame_unwind_append_sniffer (gdbarch, x86_64_frame_sniffer); - frame_base_set_default (gdbarch, &x86_64_frame_base); + frame_unwind_append_sniffer (gdbarch, amd64_sigtramp_frame_sniffer); + frame_unwind_append_sniffer (gdbarch, amd64_frame_sniffer); + frame_base_set_default (gdbarch, &amd64_frame_base); /* If we have a register mapping, enable the generic core file support. */ if (tdep->gregset_reg_offset) set_gdbarch_regset_from_core_section (gdbarch, - x86_64_regset_from_core_section); + amd64_regset_from_core_section); } diff --git a/gdb/x86-64-tdep.h b/gdb/x86-64-tdep.h index 17d2cdfa441..4aa0e7faf9f 100644 --- a/gdb/x86-64-tdep.h +++ b/gdb/x86-64-tdep.h @@ -1,8 +1,6 @@ /* Target-dependent code for the x86-64. - Copyright 2001, 2003 - Free Software Foundation, Inc. - + Copyright 2001, 2003, 2004 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -40,12 +38,12 @@ struct regcache; #define X86_64_RSP_REGNUM 7 /* %rsp */ #define X86_64_RIP_REGNUM 16 /* %rip */ #define X86_64_EFLAGS_REGNUM 17 /* %eflags */ -#define X86_64_ST0_REGNUM 22 /* %st0 */ -#define X86_64_XMM0_REGNUM 38 /* %xmm0 */ -#define X86_64_XMM1_REGNUM 39 /* %xmm1 */ +#define X86_64_ST0_REGNUM 24 /* %st0 */ +#define X86_64_XMM0_REGNUM 40 /* %xmm0 */ +#define X86_64_XMM1_REGNUM 41 /* %xmm1 */ /* Number of general purpose registers. */ -#define X86_64_NUM_GREGS 22 +#define X86_64_NUM_GREGS 24 void x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch); diff --git a/include/ChangeLog b/include/ChangeLog index 670fe38b312..ee8677e16fb 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,18 @@ +2004-01-12 Ian Lance Taylor + + * demangle.h (enum demangle_component_type): Define. + (struct demangle_operator_info): Declare. + (struct demangle_builtin_type_info): Declare. + (struct demangle_component): Define. + (cplus_demangle_fill_component): Declare. + (cplus_demangle_fill_name): Declare. + (cplus_demangle_fill_builtin_type): Declare. + (cplus_demangle_fill_operator): Declare. + (cplus_demangle_fill_extended_operator): Declare. + (cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare. + (cplus_demangle_v3_components): Declare. + (cplus_demangle_print): Declare. + 2003-12-19 Andreas Tobler * include/fibheap.h (fibnode): Use __extension__ for @@ -8,43 +23,6 @@ * include/fibheap.h (fibnode): Use unsigned long int for bit-fields if __GNUC__ is defined. -2003-12-04 H.J. Lu - - * bfdlink.h (bfd_link_info): Change relax_finalizing to - need_relax_finalize. - -2003-12-03 Alan Modra - - * bfdlink.h (struct bfd_link_hash_entry): Rename "next" to "und_next". - -2003-12-02 Alan Modra - - * bfdlink.h (struct bfd_link_info): Remove mpc860c0 field. - -2003-11-18 Maciej W. Rozycki - - * opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB. - -2003-11-14 Nick Clifton - - * dis-asm.h (struct disassemble_info): Add new field - 'symbol_is_valid' which is a function which can tell the - disassembler to skip certain symbols as they should not be - displayed to the user. - (arm_symbol_is_valid): New prototype. This is the ARM - specific function for the symbol_is_valid field. - (generic_symbol_is_valid): New prototype. This is the default - function pointed to by the symbol_is_valid field. - -2003-11-06 Bruno Rohee - - * hp-symtab.h: Fix "the the" typo. - -2003-10-24 H.J. Lu - - * bfdlink.h (bfd_elf_version_expr): Add "symbol" and remove - "wildcard". - 2003-10-22 Joseph S. Myers * obstack.h: Merge the following change from gnulib: @@ -60,23 +38,6 @@ definiens of the fast variant; that way, we'll be more likely to catch future bugs in the fast variants. -2003-10-22 Jakub Jelinek - - * bfdlink.h (struct bfd_elf_version_expr): Remove match field. - Add wildcard and mask fields. - (BFD_ELF_VERSION_C_TYPE): Define. - (BFD_ELF_VERSION_CXX_TYPE): Likewise. - (BFD_ELF_VERSION_JAVA_TYPE): Likewise. - (struct bfd_elf_version_expr_head): New. - (struct bfd_elf_version_tree): Add match field. - Change type of globals and locals fields - to struct bfd_elf_version_expr_head. - -2003-10-14 Bob Wilson - - * elf/xtensa.h: Formatting. Fix comments about property section - names for linkonce sections. - 2003-09-22 Andrew Cagney * floatformat.h (struct floatformat): Add field "is_valid". @@ -94,27 +55,6 @@ * floatformat.h (floatformat_is_valid): Add prototype. -2003-08-27 Andrew Cagney - - * dis-asm.h (init_disassemble_info): Declare. - (INIT_DISASSEMBLE_INFO): Redefine as a call to - init_disassemble_info. - (INIT_DISASSEMBLE_INFO_NO_ARCH): Ditto. - -2003-08-20 Nick Clifton - - * bfdlink.h (enum report_method): New enum. Describes how to - report something. - (struct bfd_link_info): Delete fields 'no_undefined' and - 'allow_shlib_undefined'. Replace with - 'unresolved_symbols_in_objects' and - 'unresolved_symbols_in_shared_libs'. - -2003-08-07 Alan Modra - - * bfdlink.h: Remove PARAMS macro. Replace PTR with void *. - * dis-asm.h: Likewise. - 2003-07-09 Bob Wilson * xtensa-config.h: Undef all macros before defining them. @@ -131,15 +71,6 @@ * xtensa-config.h: New file imported from binutils. -2003-06-30 Bob Wilson - - * xtensa-config.h (XCHAL_HAVE_CONST16, XCHAL_HAVE_ABS, - XCHAL_HAVE_ADDX, XCHAL_HAVE_L32R): Define. - -2003-06-25 Alan Modra - - * bfdlink.h: Correct spelling of "relocatable". - 2003-06-22 Zack Weinberg * safe-ctype.h (HC_UNKNOWN, HC_ASCII, HC_EBCDIC): Rename to @@ -155,25 +86,6 @@ * ansidecl.h: Delete HAVE_LONG_DOUBLE GCC bootstrap support. -2003-05-23 Jakub Jelinek - - * bfdlink.h (struct bfd_link_info): Add execstack and noexecstack. - * elf/common.h (PT_GNU_STACK): Define. - -2003-06-03 H.J. Lu - - * bfdlink.h (LD_DEFINITION_IN_DISCARDED_SECTION): New. - -2003-05-30 Ulrich Drepper - Jakub Jelinek - - * bfdlink.h (struct bfd_link_info): Add pie and executable - bits. - -2003-05-21 Nick Clifton - - * bfdlink.h (struct bfd_link_hash_table): Fix typo in comment. - 2003-05-15 Jim Blandy * libiberty.h (hex_value): Make the value an unsigned int, to @@ -181,43 +93,11 @@ than int --- like bfd_vma, on some platforms. (_hex_value): Update declaration. -2003-05-09 Alan Modra - - * xtensa-isa-internal.h (xtensa_isa_module_struct): Remove const on - gen_num_opcodes_fn return type. - 2003-05-07 Jason Merrill * hashtab.h (iterative_hash): Prototype. (iterative_hash_object): New macro. -2003-04-28 H.J. Lu - - * bfdlink.h (bfd_link_info): Add relax_finalizing. - -2003-04-23 H.J. Lu - - * bfdlink.h (bfd_link_callbacks): Add error_handler. - -2003-04-04 Svein E. Seldal - - * coff/tic4x.h: Namespace cleanup. Replace s/c4x/tic4x - and s/c3x/tic3x/ - * coff/tc-tic4x.h: Ditto - * opcode/tic4x.h: Ditto - -2003-04-02 Bob Wilson - - * xtensa-config.h: Remove comment indicating that this is a - generated file. - -2003-04-01 Bob Wilson - - * dis-asm.h (print_insn_xtensa): Declare. - * xtensa-config.h: New file. - * xtensa-isa-internal.h: Likewise. - * xtensa-isa.h: Likewise. - 2003-03-17 Kaveh R. Ghazi * ansidecl.h (ATTRIBUTE_NONNULL, ATTRIBUTE_NULL_PRINTF, @@ -242,10 +122,6 @@ * libiberty.h (lrealpath): Add declaration. -2003-01-31 Grant Grundler - - * hppa.h (ldwa, ldda): Add ordered opcodes. - 2003-01-26 Daniel Jacobowitz * hashtab.h (htab_alloc_with_arg, htab_free_with_arg): Add new types. @@ -253,15 +129,6 @@ (htab_create_alloc_ex): New prototype. (htab_set_functions_ex): New prototype. -2003-01-25 Jakub Jelinek - - * elf/sparc.h: Add TLS relocs. Move R_SPARC_REV32 to 252. - -2003-01-20 Svein E. Seldal - - * coff/tic4x.h (TICOFF_TARGET_MACHINE_GET): Fixed define bug - * coff/ti.h (TICOFF_TARGET_MACHINE_GET): Added macros - 2002-07-17 Geoffrey Keating * splay-tree.h (GTY): Define if undefined. @@ -270,31 +137,6 @@ (struct splay_tree_s): Likewise. Make allocate_data a PTR, not a void *. -2002-01-02 Ben Elliston - - * dis-asm.h (print_insn_iq2000): Declare. - -2002-12-24 Dmitry Diky - - * dis-asm.h: Add msp430 disassembler prototype. - -2002-12-27 Chris Demetriou - - * dis-asm.h (print_mips_disassembler_options): Prototype. - -2002-12-23 Alan Modra - - * bfdlink.h (struct bfd_link_info): Add "strip_discarded". - -2002-12-20 Alan Modra - - * bfdlink.h (struct bfd_link_info): Replace bfd_boolean fields with - bit-fields. Rearrange to put all like types together. - -2002-11-30 Alan Modra - - * bfdlink.h: Replace boolean with bfd_boolean. Formatting. - 2002-11-23 Simon Burge * libiberty.h (basename): Add NetBSD to the list. @@ -303,17 +145,6 @@ * libiberty.h (make_relative_prefix): Add prototype. -2002-11-16 Klee Dienes - - * opcode/m88k.h (INSTAB): Remove 'next' field. - (instruction): Remove definition; replace with extern declaration - and mark as const. - -2002-11-14 Egor Duda - - * bfdlink.h (struct bfd_link_info): Add new boolean - field pei386_runtime_pseudo_reloc. - 2002-10-26 Roger Sayle * partition.h: Close the extern "C" scope when compiling with C++. @@ -334,70 +165,11 @@ * getopt.h: getopt is in unistd.h (based on SUSv2). -2002-09-26 Jakub Jelinek - - * elf/x86-64.h: Add TLS relocs. - -2002-09-26 Andrew Cagney - - * regs/: Delete directory. - 2002-09-19 Alexandre Oliva * libiberty.h (asprintf, vasprintf): Don't declare them if the corresponding HAVE_DECL_ macro is 1. -2002-09-19 Jakub Jelinek - - * elf/i386.h (R_386_TLS_TPOFF, R_386_TLS_IE, R_386_TLS_GOTIE): - Define. - -2002-09-19 Nathan Tallent - - * dis-asm.h: Remove (errant) trailing semicolon (;) from the - extern "C" { } declaration. - -2002-09-04 Nick Clifton - - * dis-asm.h (print_ppc_disassembler_options): Prototype. - -2002-08-28 Michael Hayes - - * coff/internal.h: Add new relocation types. - * coff/ti.h: Add file-header flags for tic4x code. - * dis-asm.h: Add standard disassembler for tic4x. - * opcode/tic4x.h: New file. - * coff/tic4x.h: New file - -2002-08-07 H.J. Lu - - * bfdlink.h (bfd_link_info): Add allow_undefined_version. - (bfd_elf_version_expr): Add symver and script. - -2002-07-31 Ian Dall - - * bfdlink.h (bfd_link_common_skip_ar_symbols): New enum. - (struct bfd_link_info): Add new field 'common_skip_ar_symbols'. - -2002-07-25 Richard Sandiford - - * opcode/mips.h (CPU_R2000): Remove. - -2002-07-19 Denis Chertykov - Matthew Green - - * dis-asm.h (print_insn_ip2k): Declare. - -2002-07-10 Jakub Jelinek - - * elf/common.h (SHT_GNU_LIBLIST, DT_GNU_PRELINKED, - DT_GNU_CONFLICT*, DT_GNU_LIBLIST*): Define. - -2002-07-01 Alan Modra - - * bfdlink.h (struct bfd_sym_chain): Declare. - (struct bfd_link_info): Add gc_sym_list. Formatting fixes. - 2002-06-25 Alan Modra * demangle.h: #include "ansidecl.h" rather than #include . @@ -412,22 +184,6 @@ * libiberty.h (basename): Don't declare if HAVE_DECL_BASENAME. * getopt.h (getopt): Don't declare if HAVE_DECL_GETOPT. -2002-06-18 Dave Brolley - - From Catherine Moore: - * dis-asm.h (print_insn_frv): New prototype. - -2002-06-09 Andrew Cagney - - * remote-sim.h: Move to directory gdb/. - * callback.h: Move to directory gdb/. - -2002-06-07 Charles Wilson - - * bfdlink.h (struct bfd_link_info): Change type of - pei386_auto_import field to int so that -1 can mean enabled by - default and 1 can mean enabled by command line switch. - 2002-06-06 DJ Delorie * hashtab.h (htab): Rearrange new members for backward @@ -455,33 +211,6 @@ (htab_create): Replace with #define. (htab_try_create): Delete. -2002-05-31 Michal Ludvig - - * elf/dwarf2.h (DW_CFA_low_user, DW_CFA_high_user): Renamed - to DW_CFA_lo_user, DW_CFA_hi_user respectively. - -2002-05-28 Kuang Hwa Lin - - * dis-asm.h: Prototype print_insn_dlx. - -2002-05-23 Andrew Cagney - - * sim-d10v.h: Delete file. Moved to include/gdb/. - -2002-05-23 Jakub Jelinek - - * elf/common.h (PT_TLS, SHF_TLS, STT_TLS, DF_STATIC_TLS): Define. - * elf/ia64.h (R_IA64_LTOFF_TPREL22): Renamed from R_IA64_LTOFF_TP22. - * elf/i386.h: Add TLS relocs. - -2002-05-21 H.J. Lu (hjl@gnu.org) - - * bfdlink.h (bfd_link_info): Add allow_multiple_definition. - -2002-05-17 J"orn Rennecke - - * dis-asm.h (print_insn_shl, print_insn_sh64l): Remove prototype. - 2002-04-16 David S. Miller * xregex2.h (__restrict_arr): Define to __restrict on GCC @@ -491,15 +220,11 @@ * dyn-string.h: Also allow IN_GLIBCPP_V3 to redefine names. -2002-03-10 Daniel Jacobowitz - - * gdb: New directory. - 2002-03-06 Andrew Cagney * floatformat.h (floatformat_arm_ext): Delete declaration. -2002-02-21 Jim Blandy +2002-02-22 Jim Blandy Allow the user to specify functions for allocating memory for splay tree roots and nodes. @@ -509,25 +234,6 @@ `allocate_data'. (splay_tree_new_with_allocator): New function declaration. -2002-02-15 Alan Modra - - Support arbitrary length fill patterns. - * bfdlink.h (enum bfd_link_order_type): Remove bfd_fill_link_order. - (struct bfd_link_order): Remove fill. Add data.size. - -2002-02-08 Alexandre Oliva - - Contribute sh64-elf. - 2000-11-25 Hans-Peter Nilsson - * dis-asm.h (print_insn_sh64): New prototype. - (print_insn_sh64l): New prototype. - (print_insn_sh64x_media): New prototype. - -2002-02-05 Frank Ch. Eigler - - * dis-asm.h (disassemble_info): New field `insn_sets'. - (INIT_DISASSEMBLE_INFO): Clear it. - 2002-02-05 Jason Merrill * demangle.h (cplus_demangle_v3): Add "options" parm. @@ -539,48 +245,15 @@ * demangle.h (cplus_demangle_v3_type): New prototype. -2002-01-31 Ivan Guzvinec - - * dis-asm.h : Add support for or32 targets - 2002-01-28 Kaveh R. Ghazi * libiberty.h (C_alloca): Add ATTRIBUTE_MALLOC. -2002-01-27 David O'Brien - - * cgen.h (BFD_VERSION): Use BFD_VERSION_DATE instead. - -2001-12-14 Nick Clifton - - * dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialise the - disassembler_options field (to NULL). - -2001-12-13 Jakub Jelinek - - * bfdlink.h (struct bfd_link_info): Add eh_frame_hdr field. - -2001-12-07 Geoffrey Keating - - * dis-asm.h (print_insn_xstormy16): Declare. - 2001-12-06 Richard Henderson * demangle.h (no_demangling): New. (NO_DEMANGLING_STYLE_STRING): New. -2001-11-14 Alan Modra - - * dis-asm.h (print_insn_i386): Declare. - -2001-11-11 Timothy Wall - - * dis-asm.h: Fix comment to refer to octets rather than bytes. - -2001-10-30 Hans-Peter Nilsson - - * dis-asm.h (print_insn_mmix): Add prototype. - 2001-10-24 Neil Booth * safe-ctype.h (_sch_isbasic, IS_ISOBASIC): New. @@ -592,19 +265,11 @@ * libiberty.h (_hex_value): Const-ify. (hex_init): Delete. -2001-10-16 Christopher Faylor - - * filenames.h: Add cygwin to the list of dosish style path systems. - 2001-10-07 Kaveh R. Ghazi * demangle.h (demangler_engine): Const-ify. * libiberty.h (buildargv): Likewise. -2001-10-03 Vassili Karpov - - * bfdlink.h (struct bfd_link_info): Add nocopyreloc field. - 2001-09-24 Kaveh R. Ghazi * libiberty.h (reconcat): New function. @@ -634,24 +299,6 @@ * ansidecl.h (VA_OPEN, VA_CLOSE): Allow multiple uses. -2001-08-25 Nick Clifton - - * bfdlink.h (struct bfd_link_info): Change 'spare_dynamic_tags' to - unsigned to remove a compile time warning message. - -2001-08-24 H.J. Lu - - * bfdlink.h (bfd_link_hash_table_type): New. The linker hash - table type, bfd_link_generic_hash_table and - bfd_link_elf_hash_table. - (bfd_link_hash_table): Add a new field, type, for the linker - hash table type. - -2001-08-23 Jakub Jelinek - - * bfdlink.h (struct bfd_link_info): Add combreloc and - spare_dynamic_tags fields. - 2001-08-23 Lars Brinkhoff * dyn-string.h, fibheap.h, partition.h, sort.h, splay-tree.h: @@ -662,10 +309,6 @@ * fibheap.h: Tidy formatting. (fibnode_t): Limit degree to 31 bits to avoid warning. -2001-08-20 Daniel Berlin - - * fibheap.h: New file. Fibonacci heap. - 2001-08-20 Andrew Cagney * floatformat.h (floatformat_arm_ext): Document as deprecated. @@ -674,6 +317,10 @@ (floatformat_ia64_spill_big, floatformat_ia64_quad_big) (floatformat_m88110_harris_ext): Declare. +2001-08-20 Daniel Berlin + + * fibheap.h: New file. Fibonacci heap. + 2001-08-18 Zack Weinberg * ansidecl.h: Reorganize for readability, remove documentation @@ -696,11 +343,6 @@ (re_comp): Define to xre_comp. (re_exec): Define to xre_exec. -2001-08-02 Charles Wilson - - * bfdlink.h (struct bfd_link_info): add new boolean - field pei386_auto_import. - 2001-07-18 Andreas Jaeger * xregex2.h: Place under LGPL version 2.1. @@ -710,10 +352,6 @@ * xregex.h: New file to support libiberty regex. * xregex2.h: Ditto. -2001-06-15 Hans-Peter Nilsson - - * bfdlink.h (struct bfd_link_info): New member export_dynamic. - 2001-05-16 Matt Kraai * partition.h: Fix misspelling of `implementation'. @@ -733,18 +371,10 @@ * splay-tree.h (splay_tree_max): New function. (splay_tree_min): Likewise. -2001-04-27 Johan Rydberg - - * dis-asm.h (print_insn_openrisc): Add prototype. - 2001-04-15 Daniel Berlin * ternary.h: New file - Ternary search tree header. -2001-04-13 Jakub Jelinek - - * bfdlink.h (bfd_link_discard): Add discard_sec_merge. - 2001-04-03 Zack Weinberg * ansidecl.h: All logic from gcc/gansidecl.h moved here. @@ -786,46 +416,17 @@ * safe-ctype.h (_sch_test): Cast enum bit to unsigned short int for pcc compatibility. -2001-02-18 lars brinkhoff - - * dis-asm.h: Add PDP-11 target. - -2001-02-09 Martin Schwidefsky - - * dis-asm.h: Add linux target for S/390. - -2001-01-11 Peter Targett - - * dis-asm.h (arc_get_disassembler): Correct declaration. - -2001-01-09 Philip Blundell - - * bin-bugs.h (REPORT_BUGS_TO): Set to `bug-binutils@gnu.org'. - 2000-12-18 Joseph S. Myers * COPYING: Update to current ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references to 19yy as example year in copyright notice). -2000-12-19 Hans-Peter Nilsson - - * dis-asm.h (struct disassemble_info): New member "section". - (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize private_data member. - Initialize section member. - 2000-12-16 Herman A.J. ten Brugge * safe-ctype.h: Make code work on all targets and not just on targets where a char is 8 bits. -2000-12-10 Fred Fish - - * bfdlink.h (struct bfd_link_info): Add new allow_shlib_undefined - member to struct for systems where it is normal to have undefined - symbols in shared libraries at runtime and the runtime linker - takes care of redirecting them. - 2000-12-07 Zack Weinberg * safe-ctype.h: New file. @@ -856,19 +457,10 @@ * hashtab.h: Change void * to PTR where necessary. -2000-10-11 Mark Mitchell +2000-09-10 Mark Mitchell * splay-tree.h (splay_tree_predecessor): Declare. -2000-09-29 Hans-Peter Nilsson - - * dis-asm.h: Declare cris_get_disassembler, not print_insn_cris. - Fix typo in comment. - -2000-09-28 John David Anglin - - * alloca-conf.h: New file (copied from libiberty). - 2000-09-05 John David Anglin * md5.h (md5_uint32): Choose via INT_MAX instead of UINT_MAX. @@ -886,31 +478,6 @@ * libiberty.h (ARRAY_SIZE): New macro. -2000-07-29 Nick Clifton - - * os9k.h: Add copyright notice. - Fix formatting. - -2000-07-22 Jason Eckhardt - - * dis-asm.h (print_insn_i860): Add prototype. - -2000-07-20 H.J. Lu - - * bfdlink.h (bfd_link_info): Add new_dtags. - -2000-07-20 Hans-Peter Nilsson - - * dis-asm.h (print_insn_cris): Declare. - -2000-07-19 H.J. Lu (hjl@gnu.org) - - * bfdlink.h (bfd_link_info): Add flags and flags_1. - -2000-06-05 DJ Delorie - - * MAINTAINERS: new - 2000-06-21 Alex Samuel * dyn-string.h (dyn_string_init, dyn_string_new, @@ -926,16 +493,6 @@ dyn_string_append_char, dyn_string_substring): Change return type to int. -2000-06-18 Stephane Carrez - - * dis-asm.h (print_insn_m68hc12): Define. - (print_insn_m68hc11): Likewise. - -2000-06-18 Nick Clifton - - * os9k.h: Change values of MODSYNC and CRCCON due to bug report - from Russ Magee . - 2000-06-07 Kaveh R. Ghazi * demangle.h (demangling_styles): Remove trailing comma in enum. @@ -958,27 +515,12 @@ Tue May 30 16:53:34 2000 Andrew Cagney * floatformat.h (struct floatformat): Add field name. -2000-05-26 Eli Zaretskii - - * filenames.h: New file. - (HAVE_DOS_BASED_FILE_SYSTEM, IS_DIR_SEPARATOR) - (IS_ABSOLUTE_PATH, FILENAME_CMP): New macros. - 2000-05-23 Kaveh R. Ghazi * getopt.h (getopt): Also check HAVE_DECL_* when prototyping. * libiberty.h (basename): Likewise. -2000-05-17 S. Bharadwaj Yadavalli - Rick Gorton - - * bfdlink.h (struct bfd_link_info): Add emitrelocations flag. - -2000-05-08 Alan Modra - - * dis-asm.h (print_insn_tic54x): Declare. - 2000-05-06 Zack Weinberg * ansidecl.h: #define __extension__ to nothing if @@ -1013,11 +555,6 @@ Thu May 4 17:15:26 2000 Philippe De Muyter * sort.h: New file. -Fri Apr 21 13:20:53 2000 Richard Henderson - David Mosberger - - * dis-asm.h (print_insn_ia64): Declare. - Tue Apr 18 16:22:30 2000 Richard Kenner * hashtab.h (enum insert_option): New type. @@ -1032,24 +569,12 @@ Tue Apr 18 16:22:30 2000 Richard Kenner * splay-tree.h (splay_tree_remove): Declare. -2000-04-04 Alan Modra - - * bin-bugs.h (REPORT_BUGS_TO): Remove translated part. - -2000-04-03 Alan Modra - - * bin-bugs.h: New file. - 2000-03-30 Mark Mitchell * hashtab.h (hashval_t): New type. (htab_find_with_hash): Use it as an argument. (htab_find_slot_with_hash): Likewise. -2000-03-27 Denis Chertykov - - * dis-asm.h (print_insn_avr): Declare. - 2000-03-14 Bernd Schmidt * hashtab.h (htab_trav): Modify type so that first arg is of type @@ -1077,1657 +602,13 @@ Tue Apr 18 16:22:30 2000 Richard Kenner (hash_table_entry_t): Discard; just use void * for element type. -2000-03-01 H.J. Lu - - * bfdlink.h (bfd_link_callbacks): Add a boolean arg to - the undefined_symbol callback. - -2000-02-23 Linas Vepstas - - * dis-asm.h (print_insn_i370): Declare. - -Tue Feb 22 15:19:54 2000 Andrew Cagney - - * remote-sim.h (sim_trace): Document return values. - (sim_set_trace): Declare. Deprecate. - -2000-02-21 Alan Modra - - * dis-asm.h (struct disassemble_info): Change `length' param of - read_memory_func to unsigned. Change type of `buffer_length' and - `octets_per_byte' to unsigned. - (buffer_read_memory): Change `length' param to unsigned. - -2000-02-16 Nick Clifton - - * dis-asm.h: Add prototypes for ARM register name functions. - -Wed Feb 9 18:45:49 2000 Andrew Cagney - - * wait.h: Delete. No longer used by GDB. - -Tue Feb 8 17:01:13 2000 Andrew Cagney - - * remote-sim.h (sim_resume): Clarify use of SIGGNAL. - (sim_stop_reason): Clarify meaning of sim_signalled. - -2000-02-03 Timothy Wall - - * dis-asm.h (struct disassemble_info): Added octets_per_byte - field and initialize it to one (1). - -2000-01-27 Nick Clifton - - * dis-asm.h: Add prototype for disassembler_usage(). - Add prototype for arm_disassembler_options(). - Remove prototype for arm_toggle_regnames(). - Add prototype for parse_arm_disassembler_option(). - Sat Jan 1 19:06:52 2000 Hans-Peter Nilsson * symcat.h (STRINGX) [!__STDC__ || ALMOST_STDC]: Change "?" to "s" to stringify argument s. -Wed Dec 15 11:22:56 1999 Jeffrey A Law (law@cygnus.com) - - * hp-symtab.h (HP_LANGUAGE_FORTRAN): New enumeration constant. - (HP_LANGUAGE_F77): Define using HP_LANGUAGE_FORTRAN. - -1999-12-15 Doug Evans - - * dis-asm.h: Enclose in extern "C" ifdef __cplusplus. - -1999-12-05 Mark Mitchell - - * splay-tree.h (struct splay_tree_node): Rename to ... - (struct splay_tree_node_s): ... this. - (struct splay_tree): Rename to ... - (struct splay_tree_s): ... this. - -1999-11-30 Kaveh R. Ghazi - - * ansidecl.h (ATTRIBUTE_MALLOC): New macro. - - * libiberty.h (buildargv, dupargv, concat, choose_temp_base, - make_temp_file, xmalloc, xcalloc, xstrdup, xmemdup): Add - ATTRIBUTE_MALLOC. - (xatexit): Remove __GNUC__ check, add ATTRIBUTE_NORETURN. - -1999-11-28 Kaveh R. Ghazi - - * libiberty.h: Include stdarg.h when ANSI_PROTOTYPES is defined. - (asprintf, vasprintf): Provide declarations. - -Wed Nov 10 12:43:21 1999 Philippe De Muyter - Kaveh R. Ghazi - - * ansidecl.h: Define and test `GCC_VERSION', not `HAVE_GCC_VERSION'. - -1999-11-04 Jimmy Guo - - * hp-symtab.h (dntt_type_fparam): Add doc_ranges, misc_kind - fields, change location type to CORE_ADDR from int. - (dntt_type_const): Name the 5th field location_type. - -Sun Oct 24 19:11:32 1999 Andrew Cagney - - * sim-d10v.h (SIM_D10V_TS2_DMAP_REGNUM): Define. - -1999-10-23 08:51 -0700 Zack Weinberg - - * hashtab.h: Give hash_table_t a struct tag. Add prototypes - for clear_hash_table_slot and traverse_hash_table. Correct - prototype of all_hash_table_collisions. - -Sat Oct 23 19:00:13 1999 Andrew Cagney - - * sim-d10v.h: New file. - -Fri Oct 15 01:47:51 1999 Vladimir Makarov - - * hashtab.h: New file. - -1999-10-10 Kaveh R. Ghazi - - * ansidecl.h (HAVE_GCC_VERSION): New macro. Use it instead of - explicitly testing __GNUC__ and __GNUC_MINOR__. - - (ATTRIBUTE_PRINTF): Use `__format__', not `format'. - -1999-09-25 Kaveh R. Ghazi - - * libiberty.h (make_temp_file): Add a prototype. - -Tue Sep 14 00:35:02 1999 Marc Espie - - * libiberty.h (basename): OpenBSD has a correct prototype. - (xrealloc): Remove outdated comment. - -1999-09-07 Jeff Garzik - - * libiberty.h (xmemdup): Add prototype for new function. - -1999-09-04 Steve Chamberlain - - * dis-asm.h (print_insn_pj): Declare. - -1999-09-01 Kaveh R. Ghazi - - * obstack.h (obstack_grow, obstack_grow0): Move (char*) casts - in calls to `_obstack_memcpy' from here ... - - (_obstack_memcpy): ... to here, except in the __STDC__ case which - doesn't need it. - -1999-08-30 Kaveh R. Ghazi - - * libiberty.h (getpwd): Prototype. - -1999-08-01 Mark Mitchell - - * splay-tree.h (splay_tree_insert): Return the new node. - -1999-07-11 Ian Lance Taylor - - * ansidecl.h: Copy attribute support macros from egcs. - -1999-06-22 Mark Mitchell - - * bfdlink.h (struct bfd_link_hash_entry): Add init_function and - fini_function. - -1999-06-20 Mark Mitchell - - * mips.h (Elf32_Internal_Msym): New structure. - (Elf32_External_Msym): Likewise. - (ELF32_MS_REL_INDEX): New macro. - (ELF32_MS_FLAGS): Likewise. - (ELF32_MS_INFO): Likewise. - -1999-06-14 Nick Clifton - - * dis-asm.h (arm_toggle_regnames): New prototype. - (struct diassemble_info): New field: disassembler_options. - -1999-04-11 Richard Henderson - - * bfdlink.h (bfd_elf_version_expr): Rename `match' to `pattern'. - Add `match' callback function. - -1999-04-10 Richard Henderson - - * bfdlink.h (bfd_link_info): Add no_undefined. - -1999-04-08 Nick Clifton - - * dis-asm.h: Add prototype for print_insn_mcore. - -1999-04-02 Mark Mitchell - - * splay-tree.h (splay_tree_compare_pointers): Declare. - -1999-03-30 Mark Mitchell - - * splay-tree.h (splay_tree_compare_ints): Declare. - -Wed Mar 24 12:46:29 1999 Andrew Cagney - - * libiberty.h (basename): Cygwin{,32} should have the prototype. - -1999-02-22 Jim Lemke - - * bfdlink.h (bfd_link_info): add field "mpc860c0". - -Mon Feb 1 21:05:46 1999 Catherine Moore - - * dis-asm.h (print_insn_i386_att): Declare. - (print_insn_i386_intel): Declare. - -1998-12-30 Michael Meissner - - * dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Cast STREAM and - FPRINTF_FUNC to avoid compiler warnings. - -Wed Dec 30 16:07:14 1998 David Taylor - - * dis-asm.h: change void * to PTR (two places). - -Mon Dec 14 09:53:31 1998 Kaveh R. Ghazi - - * demangle.h: Don't check IN_GCC anymore. - * splay-tree.h: Likewise. - -Tue Dec 8 00:30:31 1998 Elena Zannoni - - The following changes were made by Elena Zannoni - and Edith Epstein - as part of a project to merge in - changes made by HP; HP did not create ChangeLog entries. - - * dis-asm.h (struct disassemble_info): change the type of stream - from FILE* to void*, for use with gdb's new type GDB_FILE. - (fprintf_ftype): change FILE* parameter type to void*. - - * demangle.h: (DMGL_EDG): new macro for Kuck and Associates - (DMGL_STYLE_MASK): modify to include Kuck and Assoc style - (demangling_styles): add new edg_demangling style - (EDG_DEMANGLING_STYLE_STRING): new macro - (EDG_DEMANGLING): new macro - (DMGL_HP): new macro, for HP/aCC compiler. - (DMGL_STYLE_MASK): modify to include new HP's style. - (demangling_styles): add new hp_demangling value. - (HP_DEMANGLING_STYLE_STRING): new macro. - (ARM_DEMANGLING): coerce to int. - (HP_DEMANGLING): new macro. - - * hp-symtab.h: rewritten, from HP. - (quick_procedure): change type of language field to unsigned int - (quick_module): change type of language field to unsigned int - (struct dntt_type_svar): add field thread_specific. - (hp_language): add languages modcal and dmpascal. - -Fri Nov 20 13:14:00 1998 Andrew Cagney - - * libiberty.h (basename): Add prototype for FreeBSD. - -Fri Nov 13 19:19:11 1998 Kaveh R. Ghazi - - * libiberty.h: Prototype xcalloc. - -Sun Nov 8 17:42:25 1998 Kaveh R. Ghazi - - * ansidecl.h: Wrap problematic macros with !IN_GCC. - - * demangle.h: Never define PARAMS(). - * splay-tree.h: Likewise. - -Sat Nov 7 18:30:20 1998 Peter Schauer - - * dis-asm.h (print_insn_vax): Declare. - -Sat Nov 7 16:04:03 1998 Kaveh R. Ghazi - - * demangle.h: Don't include gansidecl.h. - * splay-tree.h: Likewise. - -1998-10-26 16:03 Ulrich Drepper - - * bfdlink.h (struct bfd_link_info): Add new field optimize. - -Thu Oct 22 19:58:00 1998 Kaveh R. Ghazi - - * splay-tree.h: Wrap function pointer parameter declarations in - PARAMS() macro. - -1998-10-21 Mark Mitchell - - * splay-tree.h: New file. - -Fri Oct 9 00:02:03 1998 Jeffrey A Law (law@cygnus.com) - - * Merge devo and egcs include directories. - -Sat Sep 5 12:16:33 1998 Jeffrey A Law (law@cygnus.com) - - * getopt.h, obstack.h: Updated from gcc. - -1998-08-03 Jason Molenda (jsm@bugshack.cygnus.com) - - * libiberty.h (xexit): Change decl to use modern GCC attribute - to indicate exit does not return. - -Mon Jun 1 13:48:32 1998 Jason Molenda (crash@bugshack.cygnus.com) - - * obstack.h: Update to latest FSF version. - -Tue Feb 24 13:05:02 1998 Doug Evans - - * dis-asm.h (disassemble_info): Member `symbol' renamed to `symbols' - and made an "asymbol **". New member num_symbols. - (INIT_DISASSEMBLE_INFO_NO_ARCH): Update. - -Tue Feb 17 12:32:18 1998 Andrew Cagney - - * remote-sim.h (sim_fetch_register, sim_store_register): Add - register length parameter. Functions return actual length of - register. - -Thu Feb 12 16:29:01 1998 Ian Lance Taylor - - * getopt.h: Update to latest FSF version. - -Wed Feb 11 16:56:06 1998 Doug Evans - - * symcat.h: New file. - -Mon Feb 2 17:13:31 1998 Steve Haworth - - * dis-asm.h (print_insn_tic30): Declare. - -Thu Jan 22 16:23:59 1998 Fred Fish - - * dis-asm.h: Add flag INSN_HAS_RELOC to tell disassembly - function there is a reloc on this line. - -Mon Dec 8 11:22:23 1997 Nick Clifton - - * dis-asm.h: Remove prototype of disasm_symaddr() as this function - no longer exists. - -Tue Dec 2 10:20:53 1997 Nick Clifton - - * dis-asm.h (disasm_symaddr): New prototype. - -Mon Dec 1 11:29:35 1997 Doug Evans - - * callback.h (CB_SYSCALL): Comment out arg names in prototypes. - -Wed Nov 26 16:47:58 1997 Michael Meissner - - * callback.h (CB_SYSCALL): Consistantly use names for prototype - arguments. - -Wed Nov 26 11:39:30 1997 Doug Evans - - * callback.h (CB_SYSCALL): Change byte count arguments to - {read,write}_mem to `int'. New member `magic'. - (CB_SYSCALL_MAGIC,CB_SYSCALL_INIT): New macros. - -Tue Nov 25 01:35:52 1997 Doug Evans - - * callback.h (struct stat): Move forward decl up. - (host_callback): Pass stat struct pointer to stat,fstat. - (CB_SYS_nnn): Reorganize. - (CB_SYSCALL): New members p1,p2. - (cb_host_to_target_stat): Delete fourth arg. - -Sat Nov 22 23:34:15 1997 Andrew Cagney - - * remote-sim.h (sim_stop_reason): Clarify sim_signalled SIGRC - argument. - -Mon Nov 17 14:00:51 1997 Doug Evans - - * callback.h (CB_TARGET_DEFS_MAP): Renamed from target_defs_map. - (host_callback): Add stat, fstat, syscall_map, errno_map, open_map, - signal_map, stat_map. - (errn_map,open_map): Renamed to cb_init_foo_map. - (cb_host_to_target_errno,cb_target_to_host_open): Renamed from - host_to_target_errno,target_to_host_open. - (cb_read_target_syscall_maps): Add prototype. - (cb_target_to_host_syscall): Likewise. - (cb_host_to_target_stat): Likewise. - (cb_syscall): Likewise. - (CB_SYS_{exit,open,close,read,write,lseek,unlink,getpid,kill,fstat, - argvlen,argv,chdir,stat,chmod,utime,time}): Define. - (CB_SYSCALL): New type. - (CB_RC): New enum. - -Fri Nov 7 10:34:09 1997 Rob Savoye - - * libiberty.h: Add extern "C" { so it can be used with C++ - programs. - * remote-sim.h: Add extern "C" { so it can be used with C++ - programs. - -Tue Oct 14 16:07:51 1997 Nick Clifton - - * dis-asm.h (struct disassemble_info): New field - 'symbol_at_address_func'. - (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialise new field with - generic_symbol_at_address. - -Mon Oct 13 10:17:15 1997 Andrew Cagney - - * remote-sim.h: Clarify sim_read, sim_write MEM argument. - -Wed Sep 24 18:03:10 1997 Stu Grossman - - * remote-sim.h (SIM_RC): Add a bunch of new return codes for - breakpoint stuff. - * Add functions to tell the simulator to set/clear/enable/disable - intrinsic breakpoints. - -Thu Aug 28 19:41:42 1997 Andrew Cagney - - * libiberty.h (dupargv): Add prototype. - -Tue Aug 26 12:25:49 1997 Andrew Cagney - - * remote-sim.h (sim_create_inferior): Add ABFD arg. Document. - -Mon Aug 25 10:50:51 1997 Andrew Cagney - - * remote-sim.h (sim_open): Add ABFD arg. Document. - -Fri Aug 8 16:43:56 1997 Doug Evans - - * dis-asm.h (arc_get_disassembler): Declare. - -Wed Jul 30 11:39:50 1997 Per Bothner - - * demangle.h (DMGL_JAVA): New option to request Java demangling. - -Tue Jul 22 17:59:54 1997 Ian Lance Taylor - - * libiberty.h (PEXECUTE_*): Define. - (pexecute, pwait): Declare. - -Fri Jun 6 13:02:33 1997 Andrew Cagney - - * remote-sim.h (sim_kill): Mark as depreciated. - -Fri May 23 13:43:41 1997 Fred Fish - - * bfdlink.h (struct bfd_link_info): Add task_link member. - -Thu May 22 11:32:49 1997 Andrew Cagney - - * remote-sim.h: Review documentation. Clarify restrictions on - when functions can be called. - -Wed May 21 16:47:53 1997 Andrew Cagney - - * remote-sim.h (sim_set_profile_size): Add prototype, document as - depreciated. - -Tue May 20 09:32:22 1997 Andrew Cagney - - * remote-sim.h (sim_open): Add callback struct. - (sim_set_callbacks): Drop SIM_DESC argument. Document. - (sim_size): Remove recently added SIM_DESC argument. Document. - -Mon May 19 19:14:44 1997 Andrew Cagney - - * remote-sim.h: Pass SD into sim_size. - -Thu May 15 01:24:16 1997 Mark Alexander - - * obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun, - obstack_freefun): Eliminate compile warnings in gdb. - -Tue Apr 22 10:24:34 1997 Fred Fish - - * floatformat.h (floatformat_byteorders): Add comments for previous - formats and add floatformat_littlebyte_bigword, primarily for ARM. - Add declaration for floatformat_ieee_double_littlebyte_bigword. - -Fri Apr 18 13:04:49 1997 Andrew Cagney - - * remote-sim.h (sim_stop): New interface - asynchronous - notification of a request to stop / suspend the running - simulation. - - * remote-sim.h (enum sim_stop): Add sim_running and sim_polling as - states for use internal to simulators. - - * callback.h (struct host_callback_strut): Put a magic number at - the end of the struct to allow basic checking. - (struct host_callback_struct ): Add poll_quit - so - that the console etc can be polled at regular intervals. - -Thu Apr 17 02:17:12 1997 Doug Evans - - * remote-sim.h (struct _bfd): Declare. - (sim_load): Return SIM_RC. New arg `abfd'. - (sim_create_inferior): Return SIM_RC. Delete arg `start_address'. - -Wed Apr 2 17:09:12 1997 Andrew Cagney - - * remote-sim.h (sim_trace, sim_size): Make these global. They - will go away shortly. - -Wed Apr 2 15:23:49 1997 Doug Evans - - * remote-sim.h (SIM_OPEN_KIND, SIM_RC): New enums. - (sim_open): New argument `kind'. - -Wed Apr 2 14:45:51 1997 Ian Lance Taylor - - * COPYING: Update FSF address. - -Fri Mar 28 15:29:54 1997 Mike Meissner - - * callback.h (top level): Include stdarg.h or varargs.h if - va_start is not defined. - (host_callback_struct): Make {,e}vprintf_filtered take a va_list - instead of void *, since va_list might be an array or structure - type. - -Fri Mar 28 15:44:41 1997 H.J. Lu - - * libiberty.h (basename): Add prototype for glibc and linux. - -Mon Mar 17 19:22:12 1997 Ian Lance Taylor - - * objalloc.h: New file. - -Mon Mar 17 14:57:55 1997 Andrew Cagney - - * remote-sim.h: New file, copied in from gdb/remote-sim.h. One - day this will be placed in a directory of its own. - -Sat Mar 15 19:00:14 1997 Ian Lance Taylor - - * obstack.h: Update to current FSF version. - -Thu Mar 6 15:46:59 1997 Andrew Cagney - - * callback.h (struct host_callback_struct): Add callbacks - - flush_stdout, write_stderr, flush_stderr, vprintf_filtered, - evprintf_filtered. Delete redundant callbacks - printf_filtered. - -Thu Feb 27 23:18:27 1997 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_info): Remove lprefix and lprefix_len - fields. - -Tue Feb 25 00:10:49 1997 Ian Lance Taylor - - * dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize - bytes_per_chunk and display_endian. - -Mon Feb 24 17:47:02 1997 Ian Lance Taylor - - From Eric Youngdale : - * bfdlink.h (struct bfd_elf_version_expr): Define. - (struct bfd_elf_version_deps): Define. - (struct bfd_elf_version_tree): Define. - -Thu Feb 6 14:20:01 1997 Martin M. Hunt - - * dis-asm.h: (disassemble_info): Add new fields - bytes_per_chunk and display_endian to control the - display of raw instructions. - -Fri Dec 27 22:17:37 1996 Fred Fish - - * dis-asm.h (print_insn_tic80): Declare. - -Sun Dec 8 17:11:12 1996 Doug Evans - - * callback.h (host_callback): New member `error'. - -Wed Nov 20 00:40:23 1996 Doug Evans - - * callback.h: New file, moved here from gdb. - -Mon Nov 18 16:34:00 1996 Dawn Perchik - - * libiberty.h: Checkin again; last checkin failed due to sticky tag. - -Wed Nov 13 08:22:00 1996 Dawn Perchik - - * libiberty.h: Revert last commit due to conflicts with hpux - system headers. - -Tue Nov 12 16:31:00 1996 Dawn Perchik - - * libiberty.h: Move prototypes from argv.c here. - -Thu Oct 31 14:56:18 1996 Doug Evans - - * ansidecl.h (VPARAMS,VA_START): Define. - -Fri Oct 25 12:08:04 1996 Ian Lance Taylor - - * dis-asm.h (disassemble_info): Add bytes_per_line field. - (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize bytes_per_line field. - -Thu Oct 24 17:10:01 1996 Ian Lance Taylor - - * dis-asm.h (disassemble_info): Add symbol field. - (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize symbol field. - -Thu Oct 17 11:17:40 1996 Doug Evans - - * dis-asm.h (print_insn_m32r): Declare. - -Mon Oct 14 23:56:52 1996 Ian Lance Taylor - - * libiberty.h: Declare parameter types for xmalloc and xrealloc. - -Thu Oct 3 13:45:27 1996 Ian Lance Taylor - - * fnmatch.h: New file. - -Thu Oct 3 10:33:14 1996 Jeffrey A Law (law@cygnus.com) - - * dis-asm.h (print_insn_mn10x00): Delete declaration. - (print_insn_mn10200, print_insn_mn10300): Declare. - -Wed Oct 2 21:24:43 1996 Jeffrey A Law (law@cygnus.com) - - * dis-asm.h (print_insn_mn10x00): Declare. - -Mon Sep 30 13:56:11 1996 Fred Fish - - * libiberty.h: Remove #ifndef PRIVATE_XMALLOC. - -Sat Aug 31 13:27:06 1996 Jeffrey A Law (law@cygnus.com) - - * dis-asm.h (print_insn_v850): Declare. - -Tue Aug 13 16:10:30 1996 Stu Grossman (grossman@critters.cygnus.com) - - * obstack.h: Change bcopy to memcpy. Works better on Posix - systems, which generally lack bcopy. - -Mon Aug 12 17:03:18 1996 Stu Grossman (grossman@critters.cygnus.com) - - * ansidecl.h: Change WIN32 to _WIN32. - -Fri Jul 26 13:58:18 1996 Ian Lance Taylor - - * dis-asm.h: Add flavour field. - (print_insn_alpha): Declare. - (print_insn_alpha_osf, print_insn_alpha_vms): Don't declare. - (INIT_DISASSEMBLE_INFO): Initialize flavour field. - -Tue Jul 23 17:37:58 1996 Fred Fish - - * libiberty.h (PRIVATE_XMALLOC): Enclose xmalloc/xrealloc - definitions inside #ifndef so that programs that want to - can define PRIVATE_XMALLOC and then define xmalloc and - xrealloc anyway they want. - (basename): Document in source that we can't declare the - parameter type because it is declared inconsistently across - different systems. - -Mon Jul 22 13:16:13 1996 Richard Henderson - - * dis-asm.h (print_insn_alpha): Don't declare. - (print_insn_alpha_osf, print_insn_alpha_vms): Declare. - -Wed Jul 17 14:45:12 1996 Martin M. Hunt - - * dis-asm.h: (print_insn_d10v): Declare. - -Mon Jul 15 16:55:38 1996 Stu Grossman (grossman@critters.cygnus.com) - - * dis-asm.h: Get rid of decls for print_insn_i8086, - print_insn_sparc64 and print_insn_sparclite. - * (INIT_DISASSEMBLE_INFO): Split into two pieces. One, - INIT_DISASSEMBLE_INFO_NO_ARCH inits everything except for endian, - mach, and arch. - -Fri Jul 12 10:19:27 1996 Stu Grossman (grossman@critters.cygnus.com) - - * dis-asm.h (print_insn_i8086): Declare. - -Wed Jul 3 16:02:39 1996 Stu Grossman (grossman@critters.cygnus.com) - - * dis-asm.h (print_insn_sparclite): Declare. - -Tue Jun 18 16:02:46 1996 Jeffrey A. Law - - * dis-asm.h (print_insn_h8300s): Declare. - -Tue Jun 18 15:11:33 1996 Klaus Kaempf - - * fopen-vms.h: New file. - -Tue Jun 4 18:58:16 1996 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_info): Add notice_all field. - -Fri Apr 26 10:33:12 1996 Doug Evans - - * demangle.h (#ifdef IN_GCC): #include "gansidecl.h". - (PROTO,PTR,const): Delete. - -Mon Apr 22 17:27:42 1996 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_info): Add traditional_format field. - -Mon Apr 15 15:16:56 1996 Doug Evans - - * libiberty.h (choose_temp_base): Add prototype. - -Tue Mar 12 17:29:46 1996 Ian Lance Taylor - - * bfdlink.h (bfd_wrapped_link_hash_lookup): Declare. - (struct bfd_link_info): Add wrap_hash field. - -Wed Feb 14 16:49:17 1996 Martin Anantharaman - - * ieee.h (ieee_record_enum_type): Define - ieee_external_reference_info_enum. - -Fri Feb 2 17:09:25 1996 Doug Evans - - * dis-asm.h (DISASM_RAW_INSN): Delete. - -Tue Jan 23 09:21:47 1996 Doug Evans - - * dis-asm.h (INIT_DISASSEMBLE_INFO): Set endian to BFD_ENDIAN_UNKNOWN. - New argument FPRINTF_FUNC. - -Mon Jan 22 16:37:59 1996 Doug Evans - - * dis-asm.h (disassemble_info): New members arch, mach, endian. - (INIT_DISASSEMBLE_INFO): Initialize them. - (DISASM_RAW_INSN{,FLAG}): Define. - -Thu Jan 18 11:32:38 1996 Ian Lance Taylor - - * demangle.h (cplus_demangle_opname): Change opname parameter to - const char *. - (cplus_mangle_opname): Change return type and opname parameter to - const char *. - -Fri Jan 5 00:01:22 1996 Ian Lance Taylor - - * ieee.h (enum ieee_record): Add ieee_asn_record_enum, - ieee_at_record_enum, ieee_ty_record_enum, ieee_atn_record_enum, - ieee_bb_record_enum, and ieee_be_record_enum. - -Wed Jan 3 13:12:09 1996 Fred Fish - - * obstack.h: Update copyright to 1996. - (_obstack_memory_used): Declare. - (obstack_memory_used): Define macro. - -Thu Dec 28 11:42:12 1995 Ian Lance Taylor - - * libiberty.h (xstrdup): Declare. - -Thu Dec 21 14:47:17 1995 Michael Meissner - - * wait.h: Protect all macros with #ifndef. - -Tue Oct 24 21:45:40 1995 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_info): Add static_link field. - -Tue Sep 12 16:28:04 1995 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_callbacks): Add symbol parameter to - warning callback. - -Fri Sep 1 13:11:51 1995 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_callbacks): Change warning callback - to take BFD, section, and address arguments. - -Thu Aug 31 16:45:12 1995 steve chamberlain - - * bfdlink.h (struct bfd_link_info): Remove PE stuff. - -Tue Aug 22 03:18:23 1995 Ken Raeburn - - * libiberty.h: Declare xstrerror. From Pat Rankin. - -Mon Aug 21 18:11:36 1995 steve chamberlain - - * bfdlink.h (struct bfd_link_info): Remove PE stuff. - -Wed Aug 2 08:14:12 1995 Doug Evans - - * dis-asm.h (print_insn_sparc64): Declare. - -Mon Jul 10 13:26:49 1995 Eric Youngdale - - * bfdlink.h (struct bfd_link_info): Add new field symbolic. - -Sun Jul 2 17:48:40 1995 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_info): Change type of base_file to - PTR. - -Thu Jun 29 00:02:45 1995 Steve Chamberlain - - * bfdlink.h (struct bfd_link_info): Added base_file member. - -Tue Jun 20 16:40:04 1995 Steve Chamberlain - - * ansidecl.h: win32s is ANSI enough. - -Thu May 18 04:25:50 1995 Ken Raeburn - - Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * dis-asm.h (print_insn_arm): Delete declaration. - (print_insn_{little,big}_arm): New declarations. - - * floatformat.h (floatformat_arm_ext): Declare. - -Sat May 13 10:14:08 1995 Steve Chamberlain - - * bfdlink.h (subsytem, stack_heap_parameters): New. - -Thu May 4 14:36:42 1995 Jason Merrill - - * demangle.h: Don't include ansidecl.h if IN_GCC. - -Tue Feb 21 00:37:28 1995 Jeff Law (law@snake.cs.utah.edu) - - * hp-symtab.h: Don't use bitfield enumerations, the HP C compiler - does not handle them correctly. - -Thu Feb 9 14:20:27 1995 Ian Lance Taylor - - * libiberty.h (basename): Don't declare parameter type; some - systems have this in their header files. - -Wed Feb 8 17:35:38 1995 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_hash_entry): Change format of common - symbol information, to remove restrictions on maximum size and - alignment power, by using a pointer to a structure instead. - -Mon Feb 6 14:55:32 1995 Ian Lance Taylor - - * bfdlink.h (enum bfd_link_hash_type): Rename bfd_link_hash_weak - to bfd_link_hash_undefweak. Add bfd_link_hash_defweak. - -Mon Jan 16 21:00:23 1995 Stan Shebs - - * dis-asm.h (GDB_INIT_DISASSEMBLE_INFO, etc): Remove all - GDB-specific definitions. - -Sun Jan 15 18:39:35 1995 Steve Chamberlain - - * dis-asm.h (print_insn_w65): Declare. - -Thu Jan 12 17:51:17 1995 Ken Raeburn - - * libiberty.h (hex_p): Fix sense of test. - -Wed Jan 11 22:36:40 1995 Ken Raeburn - - * libiberty.h (_hex_array_size, _hex_bad, _hex_value, hex_init, - hex_p, hex_value): New macros and declarations, for hex.c. - -Fri Jan 6 17:44:14 1995 Ian Lance Taylor - - * dis-asm.h: Make idempotent. - -Wed Dec 14 13:08:43 1994 Stan Shebs - - * progress.h: New file, empty definitions for progress macros. - -Fri Nov 25 00:14:05 1994 Jeff Law (law@snake.cs.utah.edu) - - * hp-symtab.h: New file describing the debug symbols emitted - by the HP C compilers. - -Fri Nov 11 15:48:37 1994 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_hash_entry): Change u.c.size from 24 - to 26 bits, and change u.c.alignment_power from 8 to 6 bits. 6 - bit in the alignment power is enough for a 64 bit address space. - -Mon Oct 31 13:02:51 1994 Stan Shebs (shebs@andros.cygnus.com) - - * demangle.h (cplus_mangle_opname): Declare. - -Tue Oct 25 11:38:02 1994 Ian Lance Taylor - - * bfdlink.h (struct bfd_link_callbacks): Fix comments for - multiple_common field. - -Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org) - - * dis-asm.h: Add support for the ARM. - -Wed Aug 10 12:51:41 1994 Doug Evans (dje@canuck.cygnus.com) - - * libiberty.h (strsignal): Document its existence even if we - can't declare it. - -Tue Aug 2 14:40:03 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * os9k.h: Remove u_int16, u_int32, and owner_id typedefs and - expand their uses. Those names conflict with Mach headers. - -Fri Jul 22 14:17:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * bfdlink.h (struct bfd_link_hash_entry): Change u.c.size into a - bitfield. Add field u.c.alignment_power. - -Sun Jul 10 00:26:39 1994 Ian Dall (dall@hfrd.dsto.gov.au) - - * dis-asm.h: Add print_insn_ns32k declaration. - -Mon Jun 20 17:13:29 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * bfdlink.h (bfd_link_hash_table): Make creator a const pointer. - -Sat Jun 18 16:09:32 1994 Stan Shebs (shebs@andros.cygnus.com) - - * demangle.h (cplus_demangle_opname): Declare. - -Thu Jun 16 15:19:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (struct bfd_link_info): Add new field shared. - -Mon Jun 6 14:39:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (struct bfd_link_hash_entry): Remove written field: - not needed for all backends. - -Thu Apr 28 19:06:50 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * dis-asm.h (disassembler): Declare. - -Fri Apr 1 00:38:17 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu) - - * obstack.h: Delete use of IN_GCC to control whether - stddef.h or gstddef.h is included. - -Tue Mar 22 13:06:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (enum bfd_link_order_type): Add bfd_data_link_order. - (struct bfd_link_order): Add data field to union. - -Mon Mar 21 18:45:26 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (struct bfd_link_callbacks): Change bitsize argument - to add_to_set to reloc. Remove bitsize argument from constructor. - Comment that reloc_overflow, reloc_dangerous and unattached_reloc - must handle NULL pointers for reloc location. - (enum bfd_link_order_type): Add bfd_section_reloc_link_order and - bfd_symbol_reloc_link_order. - (struct bfd_link_order): Add reloc field to union. - (struct bfd_link_order_reloc): Define. - -Mon Mar 14 12:27:50 1994 Ian Lance Taylor (ian@cygnus.com) - - * ieee-float.h: Removed; no longer used. - -Tue Mar 1 18:10:49 1994 Kung Hsu (kung@mexican.cygnus.com) - - * os9k.h: os9000 target specific header file, the header of the - object file is used now. - -Sun Feb 27 21:52:26 1994 Jim Kingdon (kingdon@deneb.cygnus.com) - - * floatformat.h: New file, intended to replace ieee-float.h. - -Sun Feb 20 17:15:42 1994 Ian Lance Taylor (ian@lisa.cygnus.com) - - * ansidecl.h (ANSI_PROTOTYPES): Define if using ANSI prototypes. - -Wed Feb 16 01:07:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libiberty.h: Don't declare strsignal, to avoid conflicts with - Solaris system header files. - -Sat Feb 12 22:11:32 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * libiberty.h (xexit): Use __volatile__ to avoid losing if - compiling with gcc -traditional. - -Thu Feb 10 14:05:41 1994 Ian Lance Taylor (ian@cygnus.com) - - * libiberty.h: New file. Declares functions provided by - libiberty. - -Tue Feb 8 05:19:52 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - Handle obstack_chunk_alloc returning NULL. This allows - obstacks to be used by libraries, without forcing them - to call exit or longjmp. - * obstack.h (struct obstack): Add alloc_failed flag. - _obstack_begin, _obstack_begin_1): Declare to return int, not void. - (obstack_finish): If alloc_failed, return NULL. - (obstack_base, obstack_next_free, objstack_object_size): - If alloc_failed, return 0. - (obstack_grow, obstack_grow0, obstack_1grow, obstack_ptr_grow, - obstack_int_grow, obstack_blank): If alloc_failed, do nothing that - could corrupt the obstack. - -Mon Jan 24 15:06:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (struct bfd_link_callbacks): Add name, reloc_name and - addend argments to reloc_overflow callback. - -Fri Jan 21 19:13:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * dis-asm.h (print_insn_big_powerpc, print_insn_little_powerpc, - print_insn_rs6000): Declare. - -Thu Jan 6 14:15:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfdlink.h (struct bfd_link_callbacks): Add bitsize argument to - add_to_set field. Add new callback named constructor. - -Thu Dec 30 10:44:06 1993 Ian Lance Taylor (ian@rtl.cygnus.com) - - * bfdlink.h: New file for new BFD linker backend routines. - -Mon Nov 29 10:43:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * dis-asm.h (enum dis_insn_tyupe): Remove non-ANSI trailing comma. - -Sat Oct 2 20:42:26 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * dis-asm.h: Move comment to right place. - -Mon Aug 9 19:03:35 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * obstack.h (obstack_chunkfun, obstack_freefun): Add defns from - previous version. Are these Cygnus local changes? - -Fri Aug 6 17:05:47 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * getopt.h, obstack.h: Update to latest FSF version. - -Mon Aug 2 14:45:29 1993 John Gilmore (gnu@cygnus.com) - - * dis-asm.h: Move enum outside of struct defn to avoid warnings. - -Mon Aug 2 08:49:30 1993 Stu Grossman (grossman at cygnus.com) - - * wait.h (WEXITSTATUS, WSTOPSIG): Mask down to 8 bits. This is - for systems that store stuff into the high 16 bits of a wait - status. - -Fri Jul 30 18:38:02 1993 John Gilmore (gnu@cygnus.com) - - * dis-asm.h: Add new fields insn_info_valid, branch_delay_insns, - data_size, insn_type, target, target2. These are used to return - information from the instruction decoders back to the calling - program. Add comments, make more readable. - -Mon Jul 19 22:14:14 1993 Fred Fish (fnf@deneb.cygnus.com) - - * nlm: New directory containing NLM/NetWare includes. - -Thu Jul 15 12:10:04 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * dis-asm.h (struct disassemble_info): New field application_data. - -Thu Jul 15 12:41:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * dis-asm.h: Added declaration of print_insn_m88k. - -Fri Jul 2 10:31:59 1993 Ian Lance Taylor (ian@cygnus.com) - - * ansidecl.h: Use ANSI macros if __mips and _SYSTYPE_SVR4 are - defined, since RISC/OS cc handles ANSI declarations in SVR4 mode - but does not define __STDC__. - -Sun Jun 20 18:27:52 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * dis-asm.h: Don't need to include ansidecl.h any more. - -Fri Jun 18 03:22:10 1993 John Gilmore (gnu@cygnus.com) - - * oasys.h: Eliminate "int8_type", "int16_type", "int32_type", and - their variants. These changes are coordinated with corresponding - changes in ../bfd/oasys.c. - -Wed Jun 16 10:43:08 1993 Fred Fish (fnf@cygnus.com) - - * bfd.h: Note that it has been removed. - -Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - Support for H8/300-H - * dis-asm.h (print_insn_h8300, print_insn_h8300h): Declare it. - -Tue Jun 1 07:35:03 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * ansidecl.h (const): Don't define it if it's already defined. - -Thu May 27 18:19:51 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * dis-asm.h (print_insn_hppa): Declare it. - - * bfd.h: Moved to bfd directory. Small stub here includes it - without requiring "-I../bfd". - -Thu Apr 29 12:06:13 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * bfd.h: Updated with BSF_FUNCTION. - -Mon Apr 26 18:15:50 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h, dis-asm.h: Updated with Hitachi SH. - -Fri Apr 23 18:41:38 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h: Updated with alpha changes. - * dis-asm.h: Added alpha. - -Fri Apr 16 17:35:30 1993 Jim Kingdon (kingdon@cygnus.com) - - * bfd.h: Update for signed bfd_*get_*. - -Thu Apr 15 09:24:21 1993 Jim Kingdon (kingdon@cygnus.com) - - * bfd.h: Updated for file_truncated error. - -Thu Apr 8 10:53:47 1993 Ian Lance Taylor (ian@cygnus.com) - - * ansidecl.h: If no ANSI, define const to be empty. - -Thu Apr 1 09:00:10 1993 Jim Kingdon (kingdon@cygnus.com) - - * dis-asm.h: Declare a29k and i960 print_insn_*. - - * dis-asm.h: Add print_address_func and related stuff. - - * dis-asm.h (dis_asm_read_memory): Fix prototype. - -Wed Mar 31 17:40:16 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * dis-asm.h: Add print_insn_sparc. - -Wed Mar 31 17:51:42 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd.h: Updated for BFD_RELOC_MIPS_GPREL and bfd_[gs]et_gp_size - prototypes. - -Wed Mar 31 16:35:12 1993 Stu Grossman (grossman@cygnus.com) - - * dis-asm.h: (disassemble_info): Fix typo in prototype of - dis_asm_memory_error(). - -Tue Mar 30 19:09:23 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * dis-asm.h (disassembler_info): Add read_memory_func, - memory_error_func, buffer, and length. - ({GDB_,}INIT_DISASSEMBLE_INFO): Set them. - print_insn_*: Remove second argument. - -Tue Mar 30 14:48:55 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h: Update for lma field of section. - -Tue Mar 30 12:22:55 1993 Jim Kingdon (kingdon@cygnus.com) - - * ansidecl.h: Use ANSI versions on AIX regardless of __STDC__. - -Fri Mar 19 14:49:49 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * dis-asm.h: Add h8500. - -Thu Mar 18 13:49:09 1993 Per Bothner (bothner@rtl.cygnus.com) - - * ieee-float.h: Moved from ../gdb. - * dis-asm.h: New file. Interface to dis-assembler. - -Thu Mar 11 10:52:57 1993 Fred Fish (fnf@cygnus.com) - - * demangle.h (DMGL_NO_OPTS): Add define (set to 0) to use - in place of bare 0, for readability reasons. - -Tue Mar 2 17:50:11 1993 Fred Fish (fnf@cygnus.com) - - * demangle.h: Replace all references to cfront with ARM. - -Tue Feb 23 12:21:14 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd.h: Update for new elements in JUMP_TABLE. - -Tue Feb 16 00:51:30 1993 John Gilmore (gnu@cygnus.com) - - * bfd.h: Update for BFD_VERSION 2.1. - -Tue Jan 26 11:49:20 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd.h: Update for SEC_IS_COMMON flag. - -Tue Jan 19 12:25:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.h: Update for bfd_asymbol_value bug fix. - -Fri Jan 8 16:37:18 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.h: Update to include ECOFF tdata and target_flavour. - -Sun Dec 27 17:52:30 1992 Fred Fish (fnf@cygnus.com) - - * bfd.h: Add declaration for bfd_get_size(). - -Tue Dec 22 22:42:46 1992 Fred Fish (fnf@cygnus.com) - - * demangle.h: Protect file from multiple inclusions with - #if !defined(DEMANGLE_H)...#define DEMANGLE_H...#endif. - -Mon Dec 21 21:25:50 1992 Stu Grossman (grossman at cygnus.com) - - * bfd.h: Update to get hppa_core_struct from bfd.c. - -Thu Dec 17 00:42:35 1992 John Gilmore (gnu@cygnus.com) - - * bfd.h: Update to get tekhex tdata name change from bfd. - -Mon Nov 9 23:55:42 1992 John Gilmore (gnu@cygnus.com) - - * ansidecl.h: Update comments to discourage use of EXFUN. - -Thu Nov 5 16:35:44 1992 Ian Lance Taylor (ian@cygnus.com) - - * bfd.h: Update to bring in SEC_SHARED_LIBRARY. - -Thu Nov 5 03:21:32 1992 John Gilmore (gnu@cygnus.com) - - * bfd.h: Update to match EXFUN, bfd_seclet_struct, and SDEF - cleanups in bfd. - -Wed Nov 4 07:28:05 1992 Ken Raeburn (raeburn@cygnus.com) - - * bout.h (N_CALLNAME, N_BALNAME): Define as char-type values, so - widening works consistently. - -Fri Oct 16 03:17:08 1992 John Gilmore (gnu@cygnus.com) - - * getopt.h: Update to Revised Standard FSF Version. - -Thu Oct 15 21:43:22 1992 K. Richard Pixley (rich@sendai.cygnus.com) - - * getopt.h (struct option): use the provided enum for has_arg. - - * demangle.h (AUTO_DEMANGLING, GNU_DEMANGLING, - LUCID_DEMANGLING): ultrix compilers require enums to be - enums and ints to be ints and casts where they meet. cast some - enums into ints. - -Thu Oct 15 04:35:51 1992 John Gilmore (gnu@cygnus.com) - - * bfd.h: Update after comment changes. - -Thu Oct 8 09:03:02 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h (bfd_get_symbol_leading_char): new macro for getting in xvec - -Thu Sep 3 09:10:50 1992 Stu Grossman (grossman at cygnus.com) - - * bfd.h (struct reloc_howto_struct): size needs to be signed if - it's going to hold negative values. - -Sun Aug 30 17:50:27 1992 Per Bothner (bothner@rtl.cygnus.com) - - * demangle.h: New file, moved from ../gdb. Made independent - of gdb. Allow demangling style option to be passed as a - parameter to cplus_demangle(), but using the - current_demangling_style global as the default. - -Sat Aug 29 10:07:55 1992 Fred Fish (fnf@cygnus.com) - - * obstack.h: Merge comment change from current FSF version. - -Thu Aug 27 12:59:29 1992 Brendan Kehoe (brendan@cygnus.com) - - * bfd.h: add we32k - -Tue Aug 25 15:07:47 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h: new after Z8000 stuff - -Mon Aug 17 09:01:23 1992 Ken Raeburn (raeburn@cygnus.com) - - * bfd.h: Regenerated after page/segment size changes. - -Sat Aug 1 13:46:31 1992 Fred Fish (fnf@cygnus.com) - - * obstack.h: Merge changes from current FSF version. - -Mon Jul 20 21:06:23 1992 Fred Fish (fnf@cygnus.com) - - * obstack.h (area_id, flags): Remove, replace with extra_arg, - use_extra_arg, and maybe_empty_object. - * obstack.h (OBSTACK_MAYBE_EMPTY_OBJECT, OBSTACK_MMALLOC_LIKE): - Remove, replaced by maybe_empty_object and use_extra_arg bitfields. - * obstack.h (obstack_full_begin, _obstack_begin): Remove area_id - and flags arguments. - * obstack.h (obstack_alloc_arg): New macro to set extra_arg. - -Thu Jul 16 08:12:44 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.h: new after adding BFD_IS_RELAXABLE - -Sat Jul 4 03:22:23 1992 John Gilmore (gnu at cygnus.com) - - * bfd.h: Regen after adding BSF_FILE. - -Mon Jun 29 14:18:36 1992 Fred Fish (fnf at sunfish) - - * obstack.h: Convert bcopy() use to memcpy(), which is more - portable, more standard, and can take advantage of gcc's builtin - functions for increased performance. - -Thu Jun 25 04:46:08 1992 John Gilmore (gnu at cygnus.com) - - * ansidecl.h (PARAMS): Incorporate this macro from gdb's defs.h. - It's a cleaner way to forward-declare function prototypes. - -Fri Jun 19 15:46:32 1992 Stu Grossman (grossman at cygnus.com) - - * bfd.h: HPPA merge. - -Tue Jun 16 21:30:56 1992 K. Richard Pixley (rich@cygnus.com) - - * getopt.h: gratuitous white space changes merged from other prep - releases. - -Thu Jun 11 01:10:55 1992 John Gilmore (gnu at cygnus.com) - - * bfd.h: Regen'd from bfd.c after removing elf_core_tdata_struct. - -Mon May 18 17:29:03 1992 K. Richard Pixley (rich@cygnus.com) - - * getopt.h: merged changes from make-3.62.11. - - * getopt.h: merged changes from grep-1.6 (alpha). - -Fri May 8 14:53:32 1992 K. Richard Pixley (rich@cygnus.com) - - * getopt.h: merged changes from bison-1.18. - -Sat Mar 14 17:25:20 1992 Fred Fish (fnf@cygnus.com) - - * obstack.h: Add "area_id" and "flags" members to obstack - structure. Add obstack_chunkfun() and obstack_freefun() to - set functions explicitly. Convert maybe_empty_object to - a bit in "flags". - -Thu Feb 27 22:01:02 1992 Per Bothner (bothner@cygnus.com) - - * wait.h (WIFSTOPPED): Add IBM rs6000-specific version. - -Fri Feb 21 20:49:20 1992 John Gilmore (gnu at cygnus.com) - - * obstack.h: Add obstack_full_begin. - * bfd.h, obstack.h: Protolint. - -Thu Jan 30 01:18:42 1992 John Gilmore (gnu at cygnus.com) - - * bfd.h: Remove comma from enum declaration. - -Mon Jan 27 22:01:13 1992 Steve Chamberlain (sac at cygnus.com) - - * bfd.h : new target entr, bfd_relax_section - -Wed Dec 18 17:19:44 1991 Stu Grossman (grossman at cygnus.com) - - * bfd.h, ieee.h: ANSIfy enums. - -Thu Dec 12 20:59:56 1991 John Gilmore (gnu at cygnus.com) - - * fopen-same.h, fopen-bin.h: New files for configuring - whether fopen distinguishes binary files or not. For use - by host-dependent config files. - -Sat Nov 30 20:46:43 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * bfd.h: change the documentation format. - - * created coff, elf and opcode and aout directories. Moved: - - aout64.h ==> aout/aout64.h - ar.h ==> aout/ar.h - a.out.encap.h ==> aout/encap.h - a.out.host.h ==> aout/host.h - a.out.hp.h ==> aout/hp.h - a.out.sun4.h ==> aout/sun4.h - ranlib.h ==> aout/ranlib.h - reloc.h ==> aout/reloc.h - stab.def ==> aout/stab.def - stab.gnu.h ==> aout/stab_gnu.h - - coff-a29k.h ==> coff/a29k.h - coff-h8300.h ==> coff/h8300.h - coff-i386.h ==> coff/i386.h - coff-i960.h ==> coff/i960.h - internalcoff.h ==> coff/internal.h - coff-m68k.h ==> coff/m68k.h - coff-m88k.h ==> coff/m88k.h - coff-mips.h ==> coff/mips.h - coff-rs6000.h ==> coff/rs6000.h - - elf-common.h ==> elf/common.h - dwarf.h ==> elf/dwarf.h - elf-external.h ==> elf/external.h - elf-internal.h ==> elf/internal.h - - a29k-opcode.h ==> opcode/a29k.h - arm-opcode.h ==> opcode/arm.h - h8300-opcode.h ==> opcode/h8300.h - i386-opcode.h ==> opcode/i386.h - i860-opcode.h ==> opcode/i860.h - i960-opcode.h ==> opcode/i960.h - m68k-opcode.h ==> opcode/m68k.h - m88k-opcode.h ==> opcode/m88k.h - mips-opcode.h ==> opcode/mips.h - np1-opcode.h ==> opcode/np1.h - ns32k-opcode.h ==> opcode/ns32k.h - pn-opcode.h ==> opcode/pn.h - pyr-opcode.h ==> opcode/pyr.h - sparc-opcode.h ==> opcode/sparc.h - tahoe-opcode.h ==> opcode/tahoe.h - vax-opcode.h ==> opcode/vax.h - - - -Wed Nov 27 10:38:31 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * internalcoff.h: (internal_scnhdr) took out #def dependency, now - s_nreloc and s_nlnno are always long. (internal_reloc): allways - has an offset field now. - -Fri Nov 22 08:12:58 1991 John Gilmore (gnu at cygnus.com) - - * coff-rs6000.h: Lint; use unsigned chars for external fields. - * internalcoff.h: Lint; cast storage classes to signed char. - -Thu Nov 21 21:01:05 1991 Per Bothner (bothner at cygnus.com) - - * stab.def: Remove the GNU extended type codes (e.g. N_SETT). - * aout64.h: The heuristic for distinguishing between - sunos-style and bsd-style ZMAGIC files (wrt. where the - text segment starts) is moved into (the default definition of) - the macro N_HEADER_IN_TEXT. This definition is only used - if no other definition is used - e.g. bfd/newsos3.c defines - N_HEADER_IN_TEXT(x) to be always 0 (as before). - -Thu Nov 21 11:53:03 1991 John Gilmore (gnu at cygnus.com) - - * aout64.h (N_TXTADDR, N_TXTOFF, N_TXTSIZE): New definitions - that should handle all uses. LOGICAL_ versions deleted. - Eliminate N_HEADER_IN_TEXT, using a_entry to determine which - kind of zmagic a.out file we are looking at. - * coff-rs6000.h: Typo. - -Tue Nov 19 18:43:37 1991 Per Bothner (bothner at cygnus.com) - - (Note: This is a revised entry, as was aout64.h.) - * aout64.h: Some cleanups of N_TXTADDR and N_TXTOFF: - Will now work for both old- and new-style ZMAGIC files, - depending on N_HEADER_IN_TEXT macro. - Add LOGICAL_TXTADDR, LOICAL_TXTOFF and LOGICAL_TXTSIZE - that don't count the exec header as part - of the text segment, to be consistent with bfd. - * a.out.sun4.h: Simplified/fixed for previous change. - -Mon Nov 18 00:02:06 1991 Fred Fish (fnf at cygnus.com) - - * dwarf.h: Update to DWARF draft 5 version from gcc2. - -Thu Nov 14 19:44:59 1991 Per Bothner (bothner at cygnus.com) - - * stab.def: Added defs for extended GNU symbol types, - such as N_SETT. These are normally ifdef'd out (because - of conflicts with a.out.gnu.h), but are used by bfb_stab_name(). - -Thu Nov 14 19:17:03 1991 Fred Fish (fnf at cygnus.com) - - * elf-common.h: Add defines to support ELF symbol table code. - -Mon Nov 11 19:01:06 1991 Fred Fish (fnf at cygnus.com) - - * elf-internal.h, elf-external.h, elf-common.h: Add support for - note sections, which are used in ELF core files to hold copies - of various /proc structures. - -Thu Nov 7 08:58:26 1991 Steve Chamberlain (sac at cygnus.com) - - * internalcoff.h: took out the M88 dependency in the lineno - struct. - * coff-m88k.h: defines GET_LINENO_LNNO and PUT_LINENO_LNNO to use - 32bit linno entries. - * a29k-opcode.h: fixed encoding of mtacc - -Sun Nov 3 11:54:22 1991 Per Bothner (bothner at cygnus.com) - - * bfd.h: Updated from ../bfd/bfd-in.h (q.v). - -Fri Nov 1 11:13:53 1991 John Gilmore (gnu at cygnus.com) - - * internalcoff.h: Add x_csect defines. - -Fri Oct 25 03:18:20 1991 John Gilmore (gnu at cygnus.com) - - * Rename COFF-related files in `coff-ARCH.h' form. - coff-a29k.h, coff-i386.h, coff-i960.h, coff-m68k.h, coff-m88k.h, - coff-mips.h, coff-rs6000.h to be exact. - -Thu Oct 24 22:11:11 1991 John Gilmore (gnu at cygnus.com) - - RS/6000 support, by Metin G. Ozisik, Mimi PhûÎng-ThÄo VÔ, and - John Gilmore. - - * a.out.gnu.h: Update slightly. - * bfd.h: Add new error code, fix doc, add bfd_arch_rs6000. - * internalcoff.h: Add more F_ codes for filehdr. Add - rs/6000-dependent fields to aouthdr. Add storage classes - to syments. Add 6000-specific auxent. Add r_size in reloc. - * rs6000coff.c: New file. - -Thu Oct 24 04:13:20 1991 Fred Fish (fnf at cygnus.com) - - * dwarf.h: New file for dwarf support. Copied from gcc2 - distribution. - -Wed Oct 16 13:31:45 1991 John Gilmore (gnu at cygnus.com) - - * aout64.h: Remove PAGE_SIZE defines; they are target-dependent. - Add N_FN_SEQ for N_FN symbol type used on Sequent machines. - * stab.def: Include N_FN_SEQ in table. - * bout.h: External formats of structures use unsigned chars. - -Fri Oct 11 12:40:43 1991 Steve Chamberlain (steve at cygnus.com) - - * bfd.h:upgrade from bfd.c - * internalcoff.h: add n_name, n_zeroes and n_offset macros - * amdcoff.h: Define OMAGIC and AOUTHDRSZ. - -Fri Oct 11 10:58:06 1991 Per Bothner (bothner at cygnus.com) - - * a.out.host.h: Change SEGMENT_SIZE to 0x1000 for Sony. - * bfd.h (align_power): Add (actually move) comment. - -Tue Oct 8 15:29:32 1991 Per Bothner (bothner at cygnus.com) - - * sys/h-rtbsd.h: Define MISSING_VFPRINT (for binutils/bucomm.c). - -Sun Oct 6 19:24:39 1991 John Gilmore (gnu at cygnus.com) - - * aout64.h: Move struct internal_exec to ../bfd/libaout.h so - it can be shared by all `a.out-family' code. Rename - EXTERNAL_LIST_SIZE to EXTERNAL_NLIST_SIZE. Use basic types - for nlist members, and make strx integral rather than pointer. - More commentary on n_type values. - * bout.h: Provide a struct external_exec rather than an - internal_exec. - * m68kcoff.h: Remove `tagentries' which snuck in from the i960 - COFF port. - -Fri Oct 4 01:25:59 1991 John Gilmore (gnu at cygnus.com) - - * h8300-opcode.h: Remove `_enum' from the typedef for an enum. - * bfd.h: Update to match bfd changes. - - * sys/h-i386mach.h, sysdep.h: Add 386 Mach host support. - -Tue Oct 1 04:58:42 1991 John Gilmore (gnu at cygnus.com) - - * bfd.h, elf-common.h, elf-external.h, elf-internal.h: - Add preliminary ELF support, sufficient for GDB, from Fred Fish. - * sysdep.h, sys/h-amix.h: Support Amiga SVR4. - - * sys/h-vaxult.h: Make it work. (David Taylor ) - * a.out.vax.h: Remove unused and confusing file. - -Mon Sep 30 12:52:35 1991 Per Bothner (bothner at cygnus.com) - - * sysdep.h: Define NEWSOS3_SYS, and use it. - -Fri Sep 20 13:38:21 1991 John Gilmore (gnu at cygnus.com) - - * a.out.gnu.h (N_FN): Its value *really is* 0x1F. - Fix it, and add comments warning about or-ing N_EXT with it - and/or N_WARNING. - * aout64.h (N_FN): Fix value, add comments about N_EXT. - * stab.def (table at end): Update to show all the type - values <0x20, including low order bits. Move N_FN to - its rightful place. - -Tue Sep 17 17:41:37 1991 Stu Grossman (grossman at cygnus.com) - - * sys/h-irix3.h: sgi/irix support. - -Tue Sep 17 07:52:59 1991 John Gilmore (gnu at cygint.cygnus.com) - - * stab.def (N_DEFD): Add GNU Modula-2 debug stab, from Andrew - Beers. - -Thu Sep 12 14:12:59 1991 John Gilmore (gnu at cygint.cygnus.com) - - * internalcoff.h (SYMNMLEN, FILNMLEN, DIMNUM): Define these - for internalcoff, separately from the various external coff's. - * amdcoff.h, bcs88kcoff.h, i386coff.h, intel-coff.h, m68kcoff.h, - m88k-bcs.h: Prefix SYMNMLEN, FILNMLEN, and DIMNUM with E_'s for - the external struct definitions. - * ecoff.h: Remove these #define's, kludge no longer needed. - - * sys/h-ultra3.h: Add new Ultracomputer host. - * sysdep.h: Add ULTRA3_SYM1_SYS and use it. - -Tue Sep 10 10:11:46 1991 John Gilmore (gnu at cygint.cygnus.com) - - * i386coff.h (LINESZ): Always 6, not based on sizeof(). - (Fix from Peter Schauer .) - -Wed Sep 4 08:58:37 1991 John Gilmore (gnu at cygint.cygnus.com) - - * a.out.gnu.h, aout64.h: Add N_WARNING. Change N_FN to 0x0E, - to match SunOS and BSD. Add N_COMM as 0x12 for SunOS shared lib - support. - * stab.def: Add N_COMM to table, fix overlap comment. - -Tue Sep 3 06:29:20 1991 John Gilmore (gnu at cygint.cygnus.com) - - Merge with latest FSF versions of these files. - - * stab.gnu.h: Add LAST_UNUSED_STAB_CODE. - * stab.def: Update to GPL2. Move N_WARNING out, since not a - debug symbol. Change comments, and reorder table to numeric - order. Update final table comment. - (N_DSLINE, N_BSLINE): Renumber from 0x66 and 0x68, to 0x46 and 0x48. - - * obstack.h: GPL2. Merge. - -Fri Aug 23 01:54:23 1991 John Gilmore (gnu at cygint.cygnus.com) - - * a.out.gnu.h, a.out.sun4.h: Make SEGMENT_SIZE able to depend - on the particular a.out being examined. - * a.out.sun4.h: Define segment sizes for Sun-3's and Sun-4's. - * FIXME: a.out.gnu.h is almost obsolete. - * FIXME: a.out.sun4.h should be renamed a.out.sun.h now. - -Wed Aug 21 20:32:13 1991 John Gilmore (gnu at cygint.cygnus.com) - - * Start a ChangeLog for the includes directory. - - * a.out.gnu.h (N_FN): Fix value -- was 15, should be 0x1E. - * stab.def: Update allocation table in comments at end, - to reflect reality as I know it. +For older changes see ChangeLog-9103 Local Variables: mode: change-log diff --git a/include/aout/ChangeLog b/include/aout/ChangeLog index 0d054eae3c1..148a020e5cb 100644 --- a/include/aout/ChangeLog +++ b/include/aout/ChangeLog @@ -1,3 +1,7 @@ +2004-01-06 Mark Kettenis + + * stab.def: Add N_PATCH to DO definition. + 2003-03-06 Elias Athanasopoulos * aout64.h (BYTES_IN_WORD): Define if necessary. diff --git a/include/aout/stab.def b/include/aout/stab.def index 67bde35f10d..8188b845fc7 100644 --- a/include/aout/stab.def +++ b/include/aout/stab.def @@ -1,20 +1,20 @@ /* Table of DBX symbol codes for the GNU system. - Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998 + Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998, 2004 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* New stab from Solaris 2. This uses an n_type of 0, which in a.out files overlaps the N_UNDF used for ordinary symbols. In ELF files, the @@ -181,6 +181,9 @@ __define_stab (N_EXCL, 0xc2, "EXCL") /* Modula-2 scope information. Can someone say what info it contains? */ __define_stab (N_SCOPE, 0xc4, "SCOPE") +/* Solaris2: Patch Run Time Checker. */ +__define_stab (N_PATCH, 0xd0, "PATCH") + /* End of a lexical block. Desc matches the N_LBRAC's desc. The value is the address of the end of the text for the block. On Solaris2, the value is relative to the start of the current function. */ @@ -256,7 +259,7 @@ __define_stab (N_LENG, 0xfe, "LENG") | B8 | BA | BC | BE | | C0 LBRAC | C2 EXCL | C4 SCOPE | C6 | | C8 | CA | CC | CE | - | D0 | D2 | D4 | D6 | + | D0 PATCH | D2 | D4 | D6 | | D8 | DA | DC | DE | | E0 RBRAC | E2 BCOMM | E4 ECOMM | E6 | | E8 ECOML | EA WITH | EC | EE | diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog index d18113d52e9..33163834229 100644 --- a/include/coff/ChangeLog +++ b/include/coff/ChangeLog @@ -1,1160 +1,9 @@ -2003-12-02 Graham Reed - - * internal.h (C_WEAKEXT): Add alternative value for AIX 5.2 - based targets. - -2003-08-23 Jason Eckhardt - - * coff/i860.h (COFF860_R_PAIR, COFF860_R_LOW0, COFF860_R_LOW1, - COFF860_R_LOW2, COFF860_R_LOW3, COFF860_R_LOW4, COFF860_R_SPLIT0, - COFF860_R_SPLIT1, COFF860_R_SPLIT2, COFF860_R_HIGHADJ, - COFF860_R_BRADDR): Define new relocation constants and document. - Minor formatting adjustments. - -2003-08-07 Alan Modra - - * ti.h (GET_SCNHDR_NRELOC): Rename PTR param to LOC. - (PUT_SCNHDR_NRELOC, GET_SCNHDR_NLNNO, PUT_SCNHDR_NLNNO): Likewise. - (GET_SCNHDR_FLAGS, PUT_SCNHDR_FLAGS): Likewise. - (GET_SCNHDR_PAGE, PUT_SCNHDR_PAGE): Likewise. - -2003-07-17 Jeff Muizelaar - - * pe.h: (IMAGE_FILE_NET_RUN_FROM_SWAP): Define. - (IMAGE_FILE_MACHINE_WCEMIPSV2): Define. - (IMAGE_FILE_MACHINE_SH3DSP): Define. - (IMAGE_FILE_MACHINE_SH3E): Define. - (IMAGE_FILE_MACHINE_SH5): Define. - (IMAGE_FILE_MACHINE_AM33): Define. - (IMAGE_FILE_MACHINE_POWERPCFP): Define. - (IMAGE_FILE_MACHINE_AXP64): Define. - (IMAGE_FILE_MACHINE_TRICORE): Define. - (IMAGE_FILE_MACHINE_CEF): Define. - (IMAGE_FILE_MACHINE_EBC): Define. - (IMAGE_FILE_MACHINE_AMD64): Define. - (IMAGE_FILE_MACHINE_M32R): Define. - (IMAGE_FILE_MACHINE_CEE): Define. - -2003-07-14 Christian Groessler - - * i860.h (AOUTSZ): Define for i860 coff. - -2003-06-29 Andreas Jaeger - - * xcoff.h (struct __rtinit ): Convert to ISO C90 prototypes. - - * ecoff.h: Convert to ISO C90 prototypes. Replace PTR by void *. - -2003-04-24 Dhananjay Deshpande - - * coff/h8300.h (H8300HNMAGIC, H8300SNMAGIC): New. - (H8300HNBADMAG, H8300SNBADMAG): New. - -2003-04-15 Rohit Kumar Srivastava - - * sh.h: Replace occurrances of 'Hitachi' with 'Renesas'. - * h8300.h: Likewise. - * h8500.h: Likewise. - -2003-03-25 Stan Cox - Nick Clifton - - Contribute support for Intel's iWMMXt chip - an ARM variant: - - * arm.h (ARM_NOTE_SECTION): Define. - -2002-11-30 Alan Modra - - * ecoff.h: Replace boolean with bfd_boolean. - * xcoff.h: Likewise. - -2002-03-18 Tom Rix - - * rs6k64.h: Add U64_TOCMAGIC, AIX 5 64 bit magic number. - -2002-02-01 Tom Rix - - * xcoff.h: Conditionally support for pre AIX 4.3. - -2002-01-31 Ivan Guzvinec - - * or32.h: New file. - -2001-12-24 Tom Rix - - * xcoff.h (xcoff_big_format_p): Make the default archive - format. - (XCOFFARMAG_ELEMENT_SIZE, XCOFFARMAGBIG_ELEMENT_SIZE): Define for - archive header ascii elements. - -2001-12-17 Tom Rix - - * xcoff.h : Add .except and .typchk section string and styp flags. - Fix xcoff_big_format_p macro. - -2001-12-16 Tom Rix - - * xcoff.h : Clean up formatting. - -2002-01-15 Richard Earnshaw - - * arm.h (F_VFP_FLOAT): Define. - -2001-11-11 Timothy Wall - - * ti.h: Move arch-specific stuff from here... - (COFF_ADJUST_SYM_IN/OUT): Optionally put page flag into symbol - value. - * tic54x.h: ...to here. - -2001-10-26 Christian Groessler - - * external.h (GET_LINENO_LNNO): Fix usage of H_GET_32/16. - (PUT_LINENO_LNNO): Likewise with H_PUT_32/16. - -2001-09-21 Nick Clifton - - * ti.h (GET_SCNHDR_PAGE): Fix compile time warning. - -2001-09-18 Alan Modra - - * external.h (GET_LINENO_LNNO): Use H_GET_32/16. - (PUT_LINENO_LNNO): Use H_PUT_32/16. - * m88k.h (GET_LNSZ_SIZE, GET_LNSZ_LNNO, GET_SCN_NRELOC, - GET_SCN_NLINNO): Use H_GET_32. - (PUT_LNSZ_LNNO, PUT_LNSZ_SIZE, PUT_SCN_NRELOC, PUT_SCN_NLINNO): - Use H_PUT_32. - * ti.h: Formatting fixes. Make use of H_GET_* and H_PUT_* throughout. - * xcoff.h: White space changes. - -2001-09-05 Tom Rix - - * xcoff.h : Add XCOFF_SYSCALL32 and XCOFF_SYSCALL64 hash table flags. - -2001-08-27 Andreas Jaeger - - * xcoff.h (struct __rtinit): Make proper prototype for rtl. - -Fri Aug 24 01:18:51 2001 J"orn Rennecke - - * internal.h (R_JMP2, R_JMPL2, R_MOVL2): Comment spelling fix. - -2001-04-05 Tom Rix - - * rs6000.h : move xcoff32 external structures from xcofflink. - * rs6k64.h : move xcoff64 external structures from xcofflink. - * internal.h : promote 32 bit structure elements to 64 bit - for xcoff64 support - * xcoff.h : New file. - -2001-03-23 Nick Clifton - - * a29k.h: Fix compile time warning. - * external.h: Fix compile time warning. - * m88k.h: Fix compile time warning. - -2001-03-13 Nick Clifton - - * external.h: New file. Common structure definitions found in - other COFF header files. - - * a29k.h: Use external.h. - * apollo.h: Use external.h. - * arm.h: Use external.h. - * h8300.h: Use external.h. - * h8500.h: Use external.h. - * i386.h: Use external.h. - * i860.h: Use external.h. - * ia64.h: Use external.h. - * m68k.h: Use external.h. - * m88k.h: Use external.h. - * mcore.h: Use external.h. - * mips.h: Use external.h. - * mipspe.h: Use external.h. - * powerpc.h: Use external.h. - * rs6000.h: Use external.h. - * rs6k64.h: Use external.h. - * sh.h: Use external.h. - * sparc.h: Use external.h. - * tic30.h: Use external.h. - * tic80.h: Use external.h. - * w65.h: Use external.h. - * we32k.h: Use external.h. - * z8k.h: Use external.h. - -2001-02-09 David Mosberger - - * pe.h (PEPAOUTSZ): Rename from PEP64AOUTSZ. - Rename from PEPAOUTHDR. - -2001-01-23 H.J. Lu - - * pe.h (struct external_PEI_DOS_hdr): New. - (struct external_PEI_IMAGE_hdr): New. - -2000-12-11 Alan Modra - - * ti.h (OCTETS_PER_BYTE_POWER): Change #warning to #error. - -2000-12-08 Alan Modra - - * ti.h (OCTETS_PER_BYTE_POWER): Change #warn to #warning. - -2000-06-30 DJ Delorie - - * pe.h: Clarify a comment. - -2000-05-05 Clinton Popetz - - * rs6k64.h (U802TOC64MAGIC): Change to U803XTOCMAGIC. - -2000-04-24 Clinton Popetz - - * rs6k64.h: New file. - -2000-04-17 Timothy Wall - - * ti.h: Load page cleanup. - * intental.h: Add load page field. - -Mon Apr 17 16:44:01 2000 David Mosberger - - * pe.h (PEP64AOUTHDR): New header for PE+. - (PEP64AOUTSZ): New macro. - (IMAGE_SUBSYSTEM_UNKNOWN): New macro. - (IMAGE_SUBSYSTEM_NATIVE): Ditto. - (IMAGE_SUBSYSTEM_WINDOWS_GUI): Ditto. - (IMAGE_SUBSYSTEM_WINDOWS_CUI): Ditto. - (IMAGE_SUBSYSTEM_POSIX_CUI): Ditto. - (IMAGE_SUBSYSTEM_WINDOWS_CE_GUI): Ditto. - (IMAGE_SUBSYSTEM_EFI_APPLICATION): Ditto. - (IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER): Ditto. - (IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER): Ditto. - * internal.h (PE_DEF_FILE_ALIGNMENT): Define only if not defined - already. - * ia64.h: New file. - -2000-04-13 Alan Modra - - * ti.h (ADDR_MASK): Don't use ul suffix on constants. - (PG_MASK): Ditto. - -2000-04-11 Timothy Wall - - * ti.h: Remove load page references until load pages are - reimplemented. - * tic54x.h: Ditto. - -2000-04-07 Timothy Wall - - * internal.h: Fix some comments related to TI COFF (instead of tic80). - * ti.h: New. - * tic54x.h: New. - -Wed Apr 5 22:08:41 2000 J"orn Rennecke - - * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): Define. - -2000-03-15 Kazu Hirata - - * internal.h: Fix a typo in the comment for R_MOVL2. - -2000-02-28 Nick Clifton - - * mipspe.h (MIPS_PE_MAGIC): Define. - * sh.h (SH_PE_MAGIC): Define. - -2000-02-22 Nick Clifton DJ Delorie - - * sh.h: Add Windows CE definitions. - * arm.h: Add Windows CE definitions. - * mipspe.h: New file: Windows CE definitions for MIPS. - * pe.h: Add constants for ILF support. - -2000-01-05 Nick Clifton - - * pe.h: Fix formatting of comments. - (IMAGE_FILE_AGGRESSIVE_WS_TRIM): Define. - (IMAGE_FILE_LARGE_ADDRESS_AWARE): Define. - (IMAGE_FILE_16BIT_MACHINE): Define. - (IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP): Define. - (IMAGE_FILE_UP_SYSTEM_ONLY): Define. - (IMAGE_FILE_MACHINE_UNKNOWN): Define. - (IMAGE_FILE_MACHINE_ALPHA): Define. - (IMAGE_FILE_MACHINE_ALPHA64): Define. - (IMAGE_FILE_MACHINE_I386): Define. - (IMAGE_FILE_MACHINE_IA64): Define. - (IMAGE_FILE_MACHINE_M68K): Define. - (IMAGE_FILE_MACHINE_MIPS16): Define. - (IMAGE_FILE_MACHINE_MIPSFPU): Define. - (IMAGE_FILE_MACHINE_MIPSFPU16): Define. - (IMAGE_FILE_MACHINE_POWERPC): Define. - (IMAGE_FILE_MACHINE_R3000): Define. - (IMAGE_FILE_MACHINE_R4000): Define. - (IMAGE_FILE_MACHINE_R10000): Define. - (IMAGE_FILE_MACHINE_SH3): Define. - (IMAGE_FILE_MACHINE_SH4): Define. - (IMAGE_FILE_MACHINE_THUMB): Define. - -1999-09-20 Alan Modra - - * internal.h: Delete bogus R_PCLONG, duplicate R_RELBYTE and - R_RELWORD, and rewrite some R_* as decimal. - -1999-09-06 Donn Terry - - * internal.h (DTYPE): Define. - * pe.h (struct external_PEI_filehdr): Rename from - external_PE_filehdr. Define even if COFF_IMAGE_WITH_PE is not - defined. - -1999-07-17 Nick Clifton - - * arm.h (F_SOFT_FLOAT): Rename from F_SOFTFLOAT. - -1999-06-21 Philip Blundell - - * arm.h (F_SOFTFLOAT): Define. - -1999-07-05 Nick Clifton - - * arm.h (F_ARM_5): Define. - -Wed Jun 2 18:08:18 1999 Richard Henderson - - * internal.h (BEOS_EXE_IMAGE_BASE, BEOS_DLL_IMAGE_BASE): New. - -Mon May 17 13:35:35 1999 Stan Cox - - * arm.h (F_PIC, F_ARM_2, F_ARM_2a, F_ARM_3, F_ARM_3M, - F_ARM_4, F_ARM_4T, F_APCS26): Changed values to distinguish - F_ARM_2a, F_ARM_3M, F_ARM_4T. - -1999-05-15 Nick Clifton - - * mcore.h (IMAGE_REL_MCORE_RVA): Define. - -1999-04-21 Nick Clifton - - * mcore.h (GET_LINENO_LNNO): New macro. - (PUT_LINENO_LNNO): New macro. - -1999-04-08 Nick Clifton - - * mcore.h: New header file. Defines for Motorola's MCore - processor. - -Sun Dec 6 21:36:37 1998 Mark Elbrecht - - * internal.h (C_WEAKEXT): Define. - -Wed Jan 27 13:35:35 1999 Stan Cox - - * arm.h (F_PIC_INT, F_ARM_2, F_ARM_3, F_ARM_4, F_APCS26): - Changed values to avoid clashing with IMAGE_FILE_* coff header - flag values. - -Wed Apr 1 16:06:15 1998 Nick Clifton - - * internal.h: Document numbers associated with Thumb symbol - types. - -Fri Mar 27 17:16:57 1998 Ian Lance Taylor - - * internal.h (ISPTR, ISFCN, ISARY): Add casts to unsigned long. - -Mon Feb 2 17:10:38 1998 Steve Haworth - - * tic30.h: New file. - -Fri Dec 12 11:49:07 1997 Fred Fish - - * tic80.h (R_MPPCR15W): New relocation type, for 15 bit PC relative - offsets. - -Tue Dec 2 10:21:40 1997 Nick Clifton - - * arm.h (COFFARM): New define. - -Mon Dec 1 20:24:18 1997 J"orn Rennecke - - * sh.h (R_SH_SWITCH8): New. - -Sat Nov 22 15:10:14 1997 Nick Clifton - - * internal.h (C_THUMBEXTFUNC, C_THUMBSTATFUNC): Constants to - define static and external functions. - - * arm.h: Add bits to support PIC and APCS-FLOAT type binaries, - when implemented. - -Fri Oct 3 14:25:17 1997 Fred Fish - - * tic80.h (R_PPL16B): Make constant uppercase for consistency. - -Tue Jul 22 18:18:58 1997 Robert Hoehne - - * go32exe.h: New file. - -Tue Jul 8 12:23:55 1997 Fred Fish - - * tic80.h (TIC80_TARGET_ID): Add define. - * internal.h (struct internal_filehdr): Add f_target_id field. - -Tue Jun 3 16:44:18 1997 Nick Clifton - - * internal.h: Add storage classes for Thumb symbols - -Mon May 26 14:07:55 1997 Ian Lance Taylor - - * tic80.h (R_PPL16B): Correct value. - -Tue May 13 10:21:14 1997 Nick Clifton - - * arm.h (constants): Added new flag bits F_APCS_26 and - F_APCS_SET for the f_flags field of the filehdr structure. Added new - flags: F_APCS26, F_ARM_2, F_ARM_3, F_ARM_7, F_ARM_7T to store - information in the flags field of the internal_f structure used by BFD - routines. - -Sat May 3 08:24:59 1997 Fred Fish - - * internal.h (C_UEXT, C_STATLAB, C_EXTLAB, C_SYSTEM): - New storage classes for TIc80. - -Fri Apr 18 11:52:55 1997 Niklas Hallqvist - - * alpha.h (ALPHA_ECOFF_BADMAG): Recognize *BSD/alpha magic too. - (ALPHA_R_LITERALSLEAZY): Define. - * ecoff.h (ALPHA_MAGIC_BSD): Define. - -Wed Jan 29 11:31:51 1997 Ian Lance Taylor - - * i960.h (R_IPR13, R_ALIGN): Define. - -Mon Jan 27 13:34:30 1997 Ian Lance Taylor - - * internal.h (R_IPRMED, R_OPTCALL, R_OPTCALLX): Move definitions - from here... - * i960.h (R_IPRMED, R_OPTCALL, R_OPTCALLX): ...to here. - -Wed Jan 22 20:10:47 1997 Fred Fish - - * tic80.h (TIC80MAGIC): Renamed to TIC80_AOUTHDR_MAGIC. - -Fri Dec 27 22:05:45 1996 Fred Fish - - * tic80.h: New file for TIc80 support. - -Thu Dec 19 16:18:11 1996 Ian Lance Taylor - - * arm.h (_LIT): Define. - -Fri Jun 28 12:54:38 1996 Ian Lance Taylor - - * pe.h (FILHSZ): Define. - -Wed Jun 26 16:24:26 1996 Ian Lance Taylor - - * All files: Define FILHSZ, AOUTSZ, AOUTHDRSZ, SCNHSZ, SYMESZ, - AUXESZ, LINESZ, RELSZ as numeric constants rather than uses of - sizeof. Define AOUTHDRSZ in all files. - * pe.h (AOUTSZ): Define by adding to AOUTHDRSZ. - -Fri Jun 21 11:17:46 1996 Richard Henderson - - * alpha.h: Add declarations for relocation types added for Alpha - OSF/1 3.0. - -Tue Jun 18 16:04:29 1996 Jeffrey A. Law - - * h8300.h (H8300SMAGIC): Define. - (H8300SBADMAG): Define. - -Mon Jun 10 11:53:28 1996 Jeffrey A Law (law@cygnus.com) - - * internal.h (R_BCC_INV, R_JMP_DEL): New relocations for - relaxing in the H8/300 series. - -Thu May 16 15:49:22 1996 Ian Lance Taylor - - * sh.h (R_SH_CODE, R_SH_DATA, R_SH_LABEL): Define. - -Tue May 7 00:36:39 1996 Jeffrey A Law (law@cygnus.com) - - * internal.h (R_JMPL2): Renamed from R_JMPL_B8 to be - consistent with other similar relocs. - - * internal.h (H8/300 specific relocs): Add comments better - explaining what each reloc is used for. - (R_MOV16B1, R_MOV16B2): Renamed from R_MOVB1 and R_MOVB2. - (R_MOV24B1, R_MOV24B2): Renamed from R_MOVLB1 and R_MOVLB2. - (R_MOVL1, R_MOVL2): New relocs. - -Fri May 3 13:01:12 1996 Jeffrey A Law (law@cygnus.com) - - * internal.h (R_PCRWORD_B): Define for the h8300 relaxing - linker. - -Wed May 1 19:21:03 1996 Ian Lance Taylor - - * internal.h (SCNNMLEN): Define. - (struct internal_scnhdr): Use SCNNMLEN for s_name field. - -Fri Mar 29 13:41:25 1996 Ian Lance Taylor - - * pe.h: Define IMAGE_COMDAT codes. - -Wed Mar 27 17:29:42 1996 Ian Lance Taylor - - * arm.h (union external_auxent): Add x_checksum, x_associated, and - x_comdat fields to x_scn struct. - * i386.h (union external_auxent): Likewise. - * powerpc.h (union external_auxent): Likewise. - * internal.h (union internal_auxent): Likewise. - -Thu Mar 21 16:25:57 1996 David Mosberger-Tang - - * ecoff.h (struct ecoff_find_line): Add caching fields. - -Thu Mar 14 15:22:44 1996 Jeffrey A Law (law@cygnus.com) - - * internal.h (R_MEM_INDIRECT): New reloc for the h8300. - -Fri Feb 9 10:44:11 1996 Ian Lance Taylor - - * aux-coff.h: Rename from aux.h, to avoid problems on hapless DOS - systems which think that aux is a com port. - -Mon Feb 5 18:35:00 1996 Ian Lance Taylor - - * i960.h (F_I960HX): Define. - -Wed Jan 31 13:11:54 1996 Richard Henderson - - * aux.h: New file. - * internal.h, m68k.h: Protect against multiple inclusion. - -Wed Nov 22 13:48:39 1995 Ian Lance Taylor - - * ecoff.h (_RCONST, STYP_RCONST, RELOC_SECTION_RCONST): Define. - (NUM_RELOC_SECTIONS): Update. - * symconst.h (scRConst): Define. - -Tue Nov 14 18:54:29 1995 Ian Lance Taylor - - * internal.h (C_NT_WEAK): Define. - -Thu Nov 9 14:08:30 1995 Ian Lance Taylor - - * rs6000.h (STYP_OVRFLO): Define. - -Tue Nov 7 14:38:45 1995 Kim Knuttila - - * powerpc.h (IMAGE_NT_OPTIONAL_HDR_MAGIC): Added define. - * pe.h: Added defines for file level flags - -Mon Nov 6 17:28:01 1995 Harry Dolan - - * i860.h: New file, based on i386.h. - -Wed Nov 1 15:25:18 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * m68k.h (PAGEMAGICEXECSWAPPED): Define. - (PAGEMAGICPEXECSWAPPED): Define. - (PAGEMAGICPEXECTSHLIB): Define. - (PAGEMAGICPEXECPAGED): Define. - (_COMMENT): DEFINE. - * m88k.h (_COMMENT): Define. - -Wed Oct 18 18:36:19 1995 Geoffrey Noer - - * sym.h: #if 0'd out runtime_pdr struct because it chokes - Visual C++ and there aren't any references to it elsewhere in gdb. - -Mon Oct 16 11:12:24 1995 Ian Lance Taylor - - * rs6000.h (SMALL_AOUTSZ): Define. - - * internal.h (XMC_TD): Define. - -Tue Oct 10 18:41:03 1995 Ian Lance Taylor - - * internal.h (struct internal_aouthdr): Add o_cputype field. - * rs6000.h (AOUTHDR): Rename o_resv1 to o_cputype. - -Mon Oct 9 14:45:46 1995 Ian Lance Taylor - - * rs6000.h (AOUTHDR): Add o_maxdata field. Add comments. - (_PAD, _LOADER): Define. - (STYP_LOADER): Define. - * internal.h (struct internal_aouthdr): Add o_maxdata field. - -Thu Oct 5 10:02:57 1995 Ian Lance Taylor - - * ecoff.h: Define section name macros and STYP macros for various - Alpha sections: .got, .hash, .dynsym, .dynstr, .rel.dyn, .conflic, - .comment, .liblist, .dynamic. - -Wed Oct 4 10:56:35 1995 Kim Knuttila - - * pe.h: Moved DOSMAGIC and NT_SIGNATURE defines here - * powerpc.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines - Also removed other unused defines (various MAGIC ones) - * i386.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines - * arm.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines - * apollo.h: removed unused DEFAULT_* defines - * alpha.h: removed unused DEFAULT_* defines - * h8500.h: removed unused DEFAULT_* defines - * h8300.h: removed unused DEFAULT_* defines - * i960.h: removed unused DEFAULT_* defines - * m88k.h: removed unused DEFAULT_* defines - * we32k.h: removed unused DEFAULT_* defines - * rs6000.h: removed unused DEFAULT_* defines - * mips.h: removed unused DEFAULT_* defines - * m68k.h: removed unused DEFAULT_* defines - * z8k.h: removed unused DEFAULT_* defines - * w65.h: removed unused DEFAULT_* defines - * sparc.h: removed unused DEFAULT_* defines - * sh.h: removed unused DEFAULT_* defines - -Fri Sep 29 08:40:08 1995 Kim Knuttila - - * powerpc.h: Reformatted to GNU coding conventions. - -Wed Sep 27 06:50:50 1995 Kim Knuttila - - * pe.h: added defines for more section characteristics - * powerpc.h (new file): base coff definitions for ppc PE - -Tue Sep 12 12:08:20 1995 Ian Lance Taylor - - * internal.h (struct internal_syment): Change n_numaux field from - char to unsigned char. - -Fri Sep 1 15:39:36 1995 Kazumoto Kojima - - * mips.h (struct rpdr_ext): Define. - -Thu Aug 31 16:51:50 1995 steve chamberlain - - * internal.h (internal_aouthdr, internal_filehdr): - don't indirect the pe stuff. - -Tue Aug 29 14:16:07 1995 steve chamberlain - - * i386.h (NT_DEF_RESERVE, NT_DEF_COMMIT): Make the same - as 'the other' compiler. - * internal.h (NT_IMAGE_BASE): Deleted. - (NT_EXE_IMAGE_BASE, NT_DLL_IMAGE_BASE): New. - (PE_DEF_SECTION_ALIGNMENT, PE_DEF_FILE_ALIGNMENT): New. - (R_IMAGEBASE): New. - -Mon Aug 21 18:12:19 1995 steve chamberlain - - * internal.h: (internal_filehdr): Moved PE stuff into - internal_extra_pe_filehdr. - (internal_aouthdr): Moved PE stuff into - interanl_extra_pe_aouthdr. - -Mon Jul 24 14:05:39 1995 Ian Lance Taylor - - * internal.h: Move R_SH_* relocs from here... - * sh.h: ...to here. - (R_SH_SWITCH16, R_SH_SWITCH32): Define. - (R_SH_USES, R_SH_COUNT, R_SH_ALIGN): Define. - -Thu Jun 29 00:04:25 1995 Steve Chamberlain - - * internal.h (NT_DEF_RESERVE, NT_DEF_COMMIT): Increase a lot. - -Tue May 16 15:08:20 1995 Ken Raeburn - - * internal.h (NT_subsystem, NT_stack_heap): Delete - -Tue May 16 15:08:20 1995 Ken Raeburn - - * internal.h (NT_subsystem, NT_stack_heap): Now extern. - -Sat May 13 10:14:08 1995 Steve Chamberlain - - * pe.h: New file. - * i386.h (NT_SECTION_ALIGNMENT, NT_FILE_ALIGNMENT, - NT_DEF_RESERVE, NT_DEF_COMMIT): New. - * internal.h (internal_filehdr): New fields for PE. - (IMAGE_DATA_DIRECTORY): New. - (internal_aouthdr): New fields for PE. - -Tue Feb 14 17:59:37 1995 Ian Lance Taylor - - * ecoff.h (struct ecoff_fdrtab_entry): Define. - (struct ecoff_find_line): Define. - -Sat Feb 4 14:38:03 1995 David Mosberger-Tang - - * sym.h (struct pdr): field "prof" added. - - * alpha.h (PDR_BITS1_PROF_*): added, macros for PDR_BITS*_RESERVED_* - updated accordingly. - -Sun Jan 15 18:38:33 1995 Steve Chamberlain - - * w65.h: New file. - -Wed Nov 23 22:43:38 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * sh.h (SH_ARCH_MAGIC_BIG, SH_ARCH_MAGIC_LITTLE): New. - (SHBADMAG): Changed to suit. - -Tue Jul 26 17:46:08 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i960.h (F_I960JX): New macro. - -Wed Jul 6 00:48:57 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * alpha.h: Add definitions for alpha file header flags, encoding - the object type of the file. - -Mon Jun 20 13:47:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * ecoff.h (ecoff_swap_tir_in): Remove declaration. - (ecoff_swap_tir_out): Likewise. - (ecoff_swap_rndx_in, ecoff_swap_rndx_out): Likewise. - (struct ecoff_debug_swap): Add new fields: swap_tir_in, - swap_rndx_in, swap_tir_out, swap_rndx_out, read_debug_info. - -Sun Jun 12 03:51:52 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * symconst.h: Pick up SGI define for stIndirect. - -Fri Apr 22 13:05:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (REGINFO): Don't define. - (struct ecoff_reginfo): Don't define. - - * sh.h (SH_ARCH_MAGIC): Rename from SHMAGIC. SHMAGIC is used by - several targets to mean a shared library. - (SHBADMAG): Corresponding change. - -Thu Apr 14 13:00:53 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (RELOC_BITS3_TYPE_BIG): Changed from 0x1e to 0x3e. - (RELOC_BITS3_TYPEHI_LITTLE): Define. - (RELOC_BITS3_TYPEHI_SH_LITTLE): Define. - (MIPS_R_PCREL16): Change value from 8 to 12 to match Irix 4. - (MIPS_R_RELHI): Define. - (MIPS_R_RELLO): Define. - (MIPS_R_SWITCH): Change value from 9 to 22. - -Thu Apr 7 14:19:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (MIPS_R_SWITCH): Define. - -Thu Mar 31 19:28:33 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * internal.h (internal_aouthdr): Added comments for Apollo fields. - -Thu Mar 31 16:28:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (STYP_ECOFF_LIB): Define as used on Irix 4. - -Fri Mar 25 17:16:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (struct ecoff_debug_info): Add adjust field. - (struct ecoff_value_adjust): Define. - -Tue Mar 22 13:22:47 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (MIPS_R_PCREL16): Define. - -Sat Feb 26 10:26:38 1994 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.h: Add casts to avoid warnings from SVR4 cc. - -Mon Feb 21 09:48:46 1994 Ian Lance Taylor (ian@lisa.cygnus.com) - - * sym.h (struct runtime_pdr): Make field adr bfd_vma, not unsigned - long. - (SYMR): Make field value bfd_vma, not long. - -Fri Feb 4 23:35:53 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * rs6000.h (STYP_DEBUG): Define. - -Wed Feb 2 14:31:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * internal.h (union internal_auxent): Change x_csect.x_scnlen into - a union of a long and a pointer to a symbol. XCOFF sometimes uses - this field as a symbol index. - -Mon Jan 10 23:54:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (ecoff_debug_info): Remove fields line_end, - external_dnr_end, external_pdr_end, external_sym_end, - external_opt_end, external_aux_end, ss_end, external_fdr_end. - Replace ifdbase with ifdmap. - -Wed Jan 5 17:05:36 1994 Ken Raeburn (raeburn@deneb.cygnus.com) - - * ecoff.h (STYP_EXTENDESC, STYP_COMMENT, STYP_XDATA, STYP_PDATA): - Define. - -Wed Jan 5 16:58:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (NUM_RELOC_SECTIONS): Define. - -Tue Dec 21 09:24:56 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * sparc.h (struct external_reloc): Rename field r_addend to - r_offset. - -Sat Dec 11 16:12:32 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h (R_DISP7, R_SH_IMM16): New reloc types. - -Tue Nov 23 14:23:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (struct ecoff_debug_swap): Added *_end fields for all - the symbolic information pointers. - - * sym.h: Named the EXTR structure ecoff_extr. - -Fri Nov 19 08:21:18 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * sparc.h (RELSZ): Use correct size. - -Wed Nov 17 17:18:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (struct ecoff_debug_info): Define. - -Tue Nov 2 17:56:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (struct ecoff_debug_swap): Define. - -Thu Oct 28 17:07:50 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * i386.h (I386LYNXMAGIC): Rename to LYNXCOFFMAGIC. - * m68k.h (LYNXCOFFMAGIC): Define. - * sparc.h: New file. - -Tue Oct 19 15:34:50 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * alpha.h (external_aouthdr): Split four byte padding field into - two byte bldrev field and two byte padding field. - - * ecoff.h (_LITA, _PDATA, _XDATA, STYP_LITA): Defined. - -Wed Oct 13 15:52:34 1993 Ken Raeburn (raeburn@cygnus.com) - - Sun Oct 10 17:27:10 1993 Troy Rollo (troy@cbme.unsw.edu.au) - - * internal.h: Added o_sri, o_inlib and o_vid for Apollos as well - as R_DIR16. - - * apollo.h: New file - -Mon Oct 11 17:16:48 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (REGINFO, struct ecoff_reginfo): Define. - -Tue Oct 5 10:52:53 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * rs6000.h: Change non-ASCII characters in comment to octal - escapes. - -Tue Sep 28 03:27:04 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * ecoff.h (_FINI, STYP_ECOFF_FINI): Add to support .fini section. - -Fri Sep 24 11:53:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (BADMAG): Recognize MIPS_MAGIC_LITTLE3 and MIPS_MAGIC_BIG3. - * ecoff.h: Define MIPS_MAGIC_LITTLE3 and MIPS_MAGIC_BIG3. - -Thu Sep 23 21:07:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * mips.h (BADMAG): Recognize MIPS_MAGIC_LITTLE2 and MIPS_MAGIC_BIG2. - * ecoff.h: Define MIPS_MAGIC_LITTLE2 and MIPS_MAGIC_BIG2. - -Thu Sep 16 20:27:21 1993 Jim Kingdon (kingdon@cirdan.cygnus.com) - - * sym.h, symconst.h: Add comment stating these files are not part - of GDB, GAS, etc. In 1991, when we asked rms whether we could - include these files in GDB (although they are copyrighted by - someone besides the FSF), he said it was OK if they were not - considered part of GDB. - -Fri Sep 10 17:40:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (AUX_PUT_ANY): Cast val argument to bfd_vma. - - * alpha.c (external_aouthdr): Need four bytes of padding between - vstamp and tsize. - -Tue Sep 7 14:20:43 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (AUX_GET_ANY, AUX_PUT_ANY): Changed to reflect further - change in bfd swapping routine names. - -Tue Sep 7 10:15:17 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * ecoff.h (AUX_GET_ANY): Change name of _do_getb32 to reflect bfd - changes. - -Fri Aug 13 14:30:32 1993 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.h (RELOC_SECTION_NONE): Define. - -Thu Aug 12 11:24:42 1993 Ian Lance Taylor (ian@cygnus.com) - - * alpha.h (struct external_reloc): Add r_symndx field. - (RELSZ): Correct. - (RELOC_BITS*): Correct. - (ALPHA_R_*): Define. - * ecoff.h (RELOC_SECTION_{XDATA,PDATA,FINI,LITA,ABS}): Define. - (r_extern): Undefine. - * internal.h (struct internal_reloc): Make r_vaddr bfd_vma rather - than long. Add r_extern field. - - * alpha.h (PDR_BITS*): Define. - * sym.h (PDR): Give correct names to new fields. - - * ecoff.h: Moved MIPS reloc definitions from here... - * mips.h: to here. - -Mon Aug 2 16:37:14 1993 Stu Grossman (grossman at cygnus.com) - - * i386.h: Add Lynx magic number. - -Tue Aug 3 11:17:53 1993 Ian Lance Taylor (ian@cygnus.com) - - * alpha.h: Corrected external symbolic debugging structures to - match actual usage. - * internal.h (internal_filehdr, internal_aouthdr, - internal_scnhdr): Changed type of some fields to bfd_vma so they - can hold 64 bits. - * sym.h (HDRR, FDR, PDR, EXTR): Likewise. - (PDR): Added new fields found on Alpha. - * symconst.h (magicSym2): Define; new value found on Alpha. - - * ecoff.h: New file. - * alpha.h, mips.h: Moved common information into ecoff.h. Moved - external structure definitions in from ecoff-ext.h. - * ecoff-ext.h: Removed; information now in alpha.h and mips.h. - -Sun Jul 18 21:43:59 1993 Jim Kingdon (kingdon@rtl.cygnus.com) - - * i386.h: Recognize I386PTXMAGIC. - -Fri Jul 16 09:54:35 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (MIPS_AOUT_{OZ}MAGIC): Renamed from {OZ}MAGIC. - -Thu Jul 15 12:23:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * m88k.h (union external_auxent): Move x_fcn back inside x_fcnary. - ({GET,PUT}_FCN_{LNNOPTR,ENDNDX}): Adjust accordingly. - -Sun Jul 11 18:00:18 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * m68k.h: Define MC68KBCSMAGIC. - -Thu Jun 10 11:46:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (_INIT, STYP_MIPS_INIT): Define (used on Irix4). - (STYP_OTHER_LOAD): Define as STYP_MIPS_INIT. - -Wed Jun 9 15:09:09 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (OMAGIC): Define. - -Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - Support for H8/300-H - * h8300.h: New magic number. - * internal.h: New relocations. - -Mon Apr 26 18:04:47 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h, sh.h: Support for SH. - -Sat Apr 24 21:34:59 1993 Jim Kingdon (kingdon@cygnus.com) - - * a29k.h: Define _LIT. - -Fri Apr 23 18:41:23 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * alpha.h: New file. - -Thu Apr 8 12:36:34 1993 Ian Lance Taylor (ian@cygnus.com) - - * internal.h (C_SHADOW, C_VERSION): Copied in from m88k.h. - * m88k.h, i386.h, we32k.h: Don't define all the storage classes; - they're already in internal.h. - -Wed Apr 7 11:51:24 1993 Jim Kingdon (kingdon@cygnus.com) - - * internal.h: Change n_sclass to unsigned char. - Change C_EFCN to 0xff, change RS/6000 dbx symbols - to no longer be signed. - -Fri Mar 19 14:52:56 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h: Add H8/500 reloc types. - -Wed Mar 17 09:46:03 1993 Ian Lance Taylor (ian@cygnus.com) - - * ecoff-ext.h (AUX_PUT_ANY): Don't use void values in branches of - conditional expression. - -Thu Mar 4 14:12:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * ecoff-ext.h (AUX_GET_*): Rewrote to use new macro AUX_GET_ANY. - (AUX_PUT_*): New macros corresponding to the AUX_GET macros. - (ecoff_swap_tir_out): Added prototype. - - * mips.h (N_BTMASK, N_TMASK, N_BTSHFT, N_TSHIFT): Define; these - are needed to interpret gcc debugging output. - -Tue Feb 9 07:43:27 1993 Ian Lance Taylor (ian@cygnus.com) - - * we32k.h (BTYPE, ISPTR, ISFCN, ISARY, DECREF): Removed - more definitions duplicated in internal.h. - -Wed Feb 3 09:18:24 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (RELOC_BITS3_TYPE_*): Correct for big endian machines. - -Mon Jan 25 11:35:51 1993 Ian Lance Taylor (ian@cygnus.com) - - * internal.h (internal_aouthdr): Added additional fields used only - by MIPS ECOFF. - -Thu Jan 21 10:28:38 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (AOUTHDR): Added additional fields used by ECOFF. - -Tue Jan 19 12:21:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * i386.h, we32k.h (N_*, T_*, DT_*): Removed still more definitions - duplicated in internal.h. - - * mips.h (RELOC_SECTION_*, ECOFF_R_*): Defined constants for ECOFF - relocs. - -Fri Jan 15 18:17:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff-ext.h: Added prototypes for new ECOFF swapping functions. - (opt_ext): New structure. - * mips.h (ZMAGIC): Defined to be 0413. - (_LIB): Defined to be ".lib" - (external_reloc): MIPS ECOFF relocs are only 8 bytes. Added - macros to aid in swapping. - -Fri Jan 8 16:19:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff-ext.h: Added prototypes for ECOFF swapping functions. - * internal.h (internal_scnhdr): Always provide s_align field, not - just on i960. - (internal_reloc): Always provide r_size field, not just on - RS/6000. - * mips.h (_RDATA, _SDATA, _SBSS, _LIT4, _LIT8, STYP_RDATA, - STYP_SDATA, STYP_SBSS, STYP_LIT4, STYP_LIT8): Defined. - (CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB, MIPS_UNMARK_STAB, - STABS_SYMBOL): Moved in from gdb/mipsread.c. - -Wed Jan 6 14:01:46 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * i386.h, we32k.h: removed STYP_* defines, since they duplicated - those in internal.h. - -Tue Dec 29 15:40:07 1992 Ian Lance Taylor (ian@cygnus.com) - - * i386.h: define I386AIXMAGIC for Danbury AIX PS/2 compiler. - -Sat Dec 12 16:07:57 1992 Ian Lance Taylor (ian@cygnus.com) - - * i386.h: don't define BTYPE, ISPTR, ISFCN, ISARY, DECREF: they - are defined in internal.h. - -Thu Nov 12 09:52:01 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h: (internal_reloc): r_offset is now a long. - * z8k.h: slight comment enhancement - -Wed Sep 30 07:46:08 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h: changed z8k reloc types - -Fri Aug 28 10:16:31 1992 Brendan Kehoe (brendan@cygnus.com) - - * we32k.h: new file - -Thu Aug 27 13:00:01 1992 Brendan Kehoe (brendan@cygnus.com) - - * symconst.h: comment out cruft at the end of #endif - -Tue Aug 25 15:06:49 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h: added #define for STYP_LIT, removed from a29k and - h8300. - - * z8k.h: added z8000 support - -Thu Jul 16 16:32:00 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * internal.h: added R_RELLONG_NEG reloc type - -Fri Jun 12 20:11:04 1992 John Gilmore (gnu at cygnus.com) - - * symconst.h: Fix unterminated comment. - -Wed Jun 10 07:57:49 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * i386.h: a.out magic numbers from - mohring@informatik.tu-muenchen.de - -Mon Jun 8 20:13:33 1992 John Gilmore (gnu at cygnus.com) - - * ecoff-ext.h, mips.h: Use unsigned chars everywhere. - (Suggested by Antti Miettinen.) - -Tue Apr 14 15:18:44 1992 John Gilmore (gnu at cygnus.com) - - * sym.h: Add comments. - * symconst.h: Merge with Fred's changes. - -Tue Apr 14 14:30:05 1992 Fred Fish (fnf@cygnus.com) - - * symconst.h: Pick up SGI defines for stStruct, stUnion, stEnum, - langCplusplus, and langCplusplusV2. - -Thu Apr 2 19:47:43 1992 John Gilmore (gnu at cygnus.com) - - * sym.h, symconst.h: MIPS has provided redistributable versions - of these files. Thanks! - * ecoff-ext.h: Add weakext bit to match new sym.h. - -Fri Mar 6 00:10:46 1992 John Gilmore (gnu at cygnus.com) - - * ecoff-ext.h: Add relative file descriptors. - -Thu Feb 27 11:53:04 1992 John Gilmore (gnu at cygnus.com) - - * ecoff-ext.h: New file for external (in-file) form of ecoff - symbol structures. - -Thu Feb 6 11:33:32 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * h8300.h: made the external_lineno l_lnno field 4 bytes wide. - andded GET/PUT_LINENO_LNNO macros - -Sat Nov 30 20:38:35 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * a29k.h, h8300.h, i386.h, i960.h, internal.h, m68k.h, m88k.h, - mips.h, rs6000.h: Move from above coff-.h. +For older changes see ChangeLog-9103 Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 version-control: never End: diff --git a/include/demangle.h b/include/demangle.h index bff266931c8..c3fdb036d53 100644 --- a/include/demangle.h +++ b/include/demangle.h @@ -1,6 +1,6 @@ /* Defs for interface to demanglers. - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002 - Free Software Foundation, Inc. + Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, + 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -164,6 +164,368 @@ enum gnu_v3_dtor_kinds { extern enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor PARAMS ((const char *name)); +/* The V3 demangler works in two passes. The first pass builds a tree + representation of the mangled name, and the second pass turns the + tree representation into a demangled string. Here we define an + interface to permit a caller to build their own tree + representation, which they can pass to the demangler to get a + demangled string. This can be used to canonicalize user input into + something which the demangler might output. It could also be used + by other demanglers in the future. */ + +/* These are the component types which may be found in the tree. Many + component types have one or two subtrees, referred to as left and + right (a component type with only one subtree puts it in the left + subtree). */ + +enum demangle_component_type +{ + /* A name, with a length and a pointer to a string. */ + DEMANGLE_COMPONENT_NAME, + /* A qualified name. The left subtree is a class or namespace or + some such thing, and the right subtree is a name qualified by + that class. */ + DEMANGLE_COMPONENT_QUAL_NAME, + /* A local name. The left subtree describes a function, and the + right subtree is a name which is local to that function. */ + DEMANGLE_COMPONENT_LOCAL_NAME, + /* A typed name. The left subtree is a name, and the right subtree + describes that name as a function. */ + DEMANGLE_COMPONENT_TYPED_NAME, + /* A template. The left subtree is a template name, and the right + subtree is a template argument list. */ + DEMANGLE_COMPONENT_TEMPLATE, + /* A template parameter. This holds a number, which is the template + parameter index. */ + DEMANGLE_COMPONENT_TEMPLATE_PARAM, + /* A constructor. This holds a name and the kind of + constructor. */ + DEMANGLE_COMPONENT_CTOR, + /* A destructor. This holds a name and the kind of destructor. */ + DEMANGLE_COMPONENT_DTOR, + /* A vtable. This has one subtree, the type for which this is a + vtable. */ + DEMANGLE_COMPONENT_VTABLE, + /* A VTT structure. This has one subtree, the type for which this + is a VTT. */ + DEMANGLE_COMPONENT_VTT, + /* A construction vtable. The left subtree is the type for which + this is a vtable, and the right subtree is the derived type for + which this vtable is built. */ + DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE, + /* A typeinfo structure. This has one subtree, the type for which + this is the tpeinfo structure. */ + DEMANGLE_COMPONENT_TYPEINFO, + /* A typeinfo name. This has one subtree, the type for which this + is the typeinfo name. */ + DEMANGLE_COMPONENT_TYPEINFO_NAME, + /* A typeinfo function. This has one subtree, the type for which + this is the tpyeinfo function. */ + DEMANGLE_COMPONENT_TYPEINFO_FN, + /* A thunk. This has one subtree, the name for which this is a + thunk. */ + DEMANGLE_COMPONENT_THUNK, + /* A virtual thunk. This has one subtree, the name for which this + is a virtual thunk. */ + DEMANGLE_COMPONENT_VIRTUAL_THUNK, + /* A covariant thunk. This has one subtree, the name for which this + is a covariant thunk. */ + DEMANGLE_COMPONENT_COVARIANT_THUNK, + /* A Java class. This has one subtree, the type. */ + DEMANGLE_COMPONENT_JAVA_CLASS, + /* A guard variable. This has one subtree, the name for which this + is a guard variable. */ + DEMANGLE_COMPONENT_GUARD, + /* A reference temporary. This has one subtree, the name for which + this is a temporary. */ + DEMANGLE_COMPONENT_REFTEMP, + /* A standard substitution. This holds the name of the + substitution. */ + DEMANGLE_COMPONENT_SUB_STD, + /* The restrict qualifier. The one subtree is the type which is + being qualified. */ + DEMANGLE_COMPONENT_RESTRICT, + /* The volatile qualifier. The one subtree is the type which is + being qualified. */ + DEMANGLE_COMPONENT_VOLATILE, + /* The const qualifier. The one subtree is the type which is being + qualified. */ + DEMANGLE_COMPONENT_CONST, + /* The restrict qualifier modifying a member function. The one + subtree is the type which is being qualified. */ + DEMANGLE_COMPONENT_RESTRICT_THIS, + /* The volatile qualifier modifying a member function. The one + subtree is the type which is being qualified. */ + DEMANGLE_COMPONENT_VOLATILE_THIS, + /* The const qualifier modifying a member function. The one subtree + is the type which is being qualified. */ + DEMANGLE_COMPONENT_CONST_THIS, + /* A vendor qualifier. The left subtree is the type which is being + qualified, and the right subtree is the name of the + qualifier. */ + DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL, + /* A pointer. The one subtree is the type which is being pointed + to. */ + DEMANGLE_COMPONENT_POINTER, + /* A reference. The one subtree is the type which is being + referenced. */ + DEMANGLE_COMPONENT_REFERENCE, + /* A complex type. The one subtree is the base type. */ + DEMANGLE_COMPONENT_COMPLEX, + /* An imaginary type. The one subtree is the base type. */ + DEMANGLE_COMPONENT_IMAGINARY, + /* A builtin type. This holds the builtin type information. */ + DEMANGLE_COMPONENT_BUILTIN_TYPE, + /* A vendor's builtin type. This holds the name of the type. */ + DEMANGLE_COMPONENT_VENDOR_TYPE, + /* A function type. The left subtree is the return type. The right + subtree is a list of ARGLIST nodes. Either or both may be + NULL. */ + DEMANGLE_COMPONENT_FUNCTION_TYPE, + /* An array type. The left subtree is the dimension, which may be + NULL, or a string (represented as DEMANGLE_COMPONENT_NAME), or an + expression. The right subtree is the element type. */ + DEMANGLE_COMPONENT_ARRAY_TYPE, + /* A pointer to member type. The left subtree is the class type, + and the right subtree is the member type. CV-qualifiers appear + on the latter. */ + DEMANGLE_COMPONENT_PTRMEM_TYPE, + /* An argument list. The left subtree is the current argument, and + the right subtree is either NULL or another ARGLIST node. */ + DEMANGLE_COMPONENT_ARGLIST, + /* A template argument list. The left subtree is the current + template argument, and the right subtree is either NULL or + another TEMPLATE_ARGLIST node. */ + DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, + /* An operator. This holds information about a standard + operator. */ + DEMANGLE_COMPONENT_OPERATOR, + /* An extended operator. This holds the number of arguments, and + the name of the extended operator. */ + DEMANGLE_COMPONENT_EXTENDED_OPERATOR, + /* A typecast, represented as a unary operator. The one subtree is + the type to which the argument should be cast. */ + DEMANGLE_COMPONENT_CAST, + /* A unary expression. The left subtree is the operator, and the + right subtree is the single argument. */ + DEMANGLE_COMPONENT_UNARY, + /* A binary expression. The left subtree is the operator, and the + right subtree is a BINARY_ARGS. */ + DEMANGLE_COMPONENT_BINARY, + /* Arguments to a binary expression. The left subtree is the first + argument, and the right subtree is the second argument. */ + DEMANGLE_COMPONENT_BINARY_ARGS, + /* A trinary expression. The left subtree is the operator, and the + right subtree is a TRINARY_ARG1. */ + DEMANGLE_COMPONENT_TRINARY, + /* Arguments to a trinary expression. The left subtree is the first + argument, and the right subtree is a TRINARY_ARG2. */ + DEMANGLE_COMPONENT_TRINARY_ARG1, + /* More arguments to a trinary expression. The left subtree is the + second argument, and the right subtree is the third argument. */ + DEMANGLE_COMPONENT_TRINARY_ARG2, + /* A literal. The left subtree is the type, and the right subtree + is the value, represented as a DEMANGLE_COMPONENT_NAME. */ + DEMANGLE_COMPONENT_LITERAL, + /* A negative literal. Like LITERAL, but the value is negated. + This is a minor hack: the NAME used for LITERAL points directly + to the mangled string, but since negative numbers are mangled + using 'n' instead of '-', we want a way to indicate a negative + number which involves neither modifying the mangled string nor + allocating a new copy of the literal in memory. */ + DEMANGLE_COMPONENT_LITERAL_NEG +}; + +/* Types which are only used internally. */ + +struct demangle_operator_info; +struct demangle_builtin_type_info; + +/* A node in the tree representation is an instance of a struct + demangle_component. Note that the field names of the struct are + not well protected against macros defined by the file including + this one. We can fix this if it ever becomes a problem. */ + +struct demangle_component +{ + /* The type of this component. */ + enum demangle_component_type type; + + union + { + /* For DEMANGLE_COMPONENT_NAME. */ + struct + { + /* A pointer to the name (which need not NULL terminated) and + its length. */ + const char *s; + int len; + } s_name; + + /* For DEMANGLE_COMPONENT_OPERATOR. */ + struct + { + /* Operator. */ + const struct demangle_operator_info *op; + } s_operator; + + /* For DEMANGLE_COMPONENT_EXTENDED_OPERATOR. */ + struct + { + /* Number of arguments. */ + int args; + /* Name. */ + struct demangle_component *name; + } s_extended_operator; + + /* For DEMANGLE_COMPONENT_CTOR. */ + struct + { + /* Kind of constructor. */ + enum gnu_v3_ctor_kinds kind; + /* Name. */ + struct demangle_component *name; + } s_ctor; + + /* For DEMANGLE_COMPONENT_DTOR. */ + struct + { + /* Kind of destructor. */ + enum gnu_v3_dtor_kinds kind; + /* Name. */ + struct demangle_component *name; + } s_dtor; + + /* For DEMANGLE_COMPONENT_BUILTIN_TYPE. */ + struct + { + /* Builtin type. */ + const struct demangle_builtin_type_info *type; + } s_builtin; + + /* For DEMANGLE_COMPONENT_SUB_STD. */ + struct + { + /* Standard substitution string. */ + const char* string; + /* Length of string. */ + int len; + } s_string; + + /* For DEMANGLE_COMPONENT_TEMPLATE_PARAM. */ + struct + { + /* Template parameter index. */ + long number; + } s_number; + + /* For other types. */ + struct + { + /* Left (or only) subtree. */ + struct demangle_component *left; + /* Right subtree. */ + struct demangle_component *right; + } s_binary; + + } u; +}; + +/* People building mangled trees are expected to allocate instances of + struct demangle_component themselves. They can then call one of + the following functions to fill them in. */ + +/* Fill in most component types with a left subtree and a right + subtree. Returns non-zero on success, zero on failure, such as an + unrecognized or inappropriate component type. */ + +extern int +cplus_demangle_fill_component PARAMS ((struct demangle_component *fill, + enum demangle_component_type, + struct demangle_component *left, + struct demangle_component *right)); + +/* Fill in a DEMANGLE_COMPONENT_NAME. Returns non-zero on success, + zero for bad arguments. */ + +extern int +cplus_demangle_fill_name PARAMS ((struct demangle_component *fill, + const char *, int)); + +/* Fill in a DEMANGLE_COMPONENT_BUILTIN_TYPE, using the name of the + builtin type (e.g., "int", etc.). Returns non-zero on success, + zero if the type is not recognized. */ + +extern int +cplus_demangle_fill_builtin_type PARAMS ((struct demangle_component *fill, + const char *typename)); + +/* Fill in a DEMANGLE_COMPONENT_OPERATOR, using the name of the + operator and the number of arguments which it takes (the latter is + used to disambiguate operators which can be both binary and unary, + such as '-'). Returns non-zero on success, zero if the operator is + not recognized. */ + +extern int +cplus_demangle_fill_operator PARAMS ((struct demangle_component *fill, + const char *opname, int args)); + +/* Fill in a DEMANGLE_COMPONENT_EXTENDED_OPERATOR, providing the + number of arguments and the name. Returns non-zero on success, + zero for bad arguments. */ + +extern int +cplus_demangle_fill_extended_operator PARAMS ((struct demangle_component *fill, + int numargs, + struct demangle_component *nm)); + +/* Fill in a DEMANGLE_COMPONENT_CTOR. Returns non-zero on success, + zero for bad arguments. */ + +extern int +cplus_demangle_fill_ctor PARAMS ((struct demangle_component *fill, + enum gnu_v3_ctor_kinds kind, + struct demangle_component *name)); + +/* Fill in a DEMANGLE_COMPONENT_DTOR. Returns non-zero on success, + zero for bad arguments. */ + +extern int +cplus_demangle_fill_dtor PARAMS ((struct demangle_component *fill, + enum gnu_v3_dtor_kinds kind, + struct demangle_component *name)); + +/* This function translates a mangled name into a struct + demangle_component tree. The first argument is the mangled name. + The second argument is DMGL_* options. This returns a pointer to a + tree on success, or NULL on failure. On success, the third + argument is set to a block of memory allocated by malloc. This + block should be passed to free when the tree is no longer + needed. */ + +extern struct demangle_component * +cplus_demangle_v3_components PARAMS ((const char *mangled, + int options, + void **mem)); + +/* This function takes a struct demangle_component tree and returns + the corresponding demangled string. The first argument is DMGL_* + options. The second is the tree to demangle. The third is a guess + at the length of the demangled string, used to initially allocate + the return buffer. The fourth is a pointer to a size_t. On + success, this function returns a buffer allocated by malloc(), and + sets the size_t pointed to by the fourth argument to the size of + the allocated buffer (not the length of the returned string). On + failure, this function returns NULL, and sets the size_t pointed to + by the fourth argument to 0 for an invalid tree, or to 1 for a + memory allocation error. */ + +extern char * +cplus_demangle_print PARAMS ((int options, + const struct demangle_component *tree, + int estimated_length, + size_t *p_allocated_size)); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 713d80d1440..9c7b588e456 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,1914 +1,23 @@ -2003-12-19 Kazuhiro Inaoka - - * elf/m32r.h : Added m32r-linux and PIC support. Add new ABI that - uses RELA. - (R_M32R_16_RELA, R_M32R_32_RELA, R_M32R_24_RELA, - R_M32R_10_PCREL_RELA, R_M32R_18_PCREL_RELA, - R_M32R_26_PCREL_RELA, R_M32R_HI16_ULO_RELA, - R_M32R_HI16_SLO_RELA, R_M32R_LO16_RELA, - R_M32R_SDA16_RELA, R_M32R_RELA_GNU_VTINHERIT, - R_M32R_RELA_GNU_VTENTRY, R_M32R_GOT24, - R_M32R_26_PLTREL, R_M32R_COPY, R_M32R_GLOB_DAT, - R_M32R_JMP_SLOT, R_M32R_RELATIVE, R_M32R_GOTOFF, - R_M32R_GOTPC24, R_M32R_GOT16_HI_ULO, - R_M32R_GOT16_HI_SLO, R_M32R_GOT16_LO, - R_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_SLO, - R_M32R_GOTPC_LO): New relocs. - -2003-12-06 Alan Modra - - From Jan Beulich - * common.h (DT_HIOS): Correct value. - -2003-12-03 Kazuhiro Inaoka - - * elf/m32r.h: Add new machine type m32r2 and instruction modes. - -2003-11-06 Alan Modra - - * ppc.h (R_PPC_RELAX32PC): Define. - -2003-10-22 Alexandre Oliva , - Michael Snyder - - * sh.h (EF_SH4A, EF_SH4AL_DSP, EF_SH4_NOFPU, EF_SH4A_NOFPU): New. - (EF_SH_MERGE_MACH): Combine them. - -2003-10-18 Hans-Peter Nilsson - - * mmix.h (R_MMIX_PUSHJ_STUBBABLE): New reloc number. - (_bfd_mmix_before_linker_allocation): Rename from - _bfd_mmix_prepare_linker_allocated_gregs. - (_bfd_mmix_after_linker_allocation): Rename from - _bfd_mmix_finalize_linker_allocated_gregs. - -2003-10-06 Dave Brolley - - * frv.h (EF_FRV_CPU_FR550): New macro. - -2003-09-30 Chris Demetriou - - * mips.h (E_MIPS_ARCH_64R2): New define. - -2003-09-23 DJ Delorie - - * sh.h (R_SH_SWITCH8, R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY, - R_SH_LOOP_START,R_SH_LOOP_END): Move to "reserved" spaces. - (R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U, - R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U, - R_SH_PSHA, R_SH_PSHL): New. - -2003-09-11 James Cownie - - * dwarf2.h: Add HP dwarf extensions from their hacked gdb - header files (ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz). - -2003-09-04 Nick Clifton - - * v850.h (E_V850E1_ARCH): Define. - -2003-08-21 James Cownie - - * dwarf2.h: Add PGI dwarf extensions. - -2003-08-08 Dmitry Diky - - * msp430.h: Add xW42 and xE42 parts. Sort MPU list according to - gcc order. - -2003-08-07 Alan Modra - - * reloc-macros.h (START_RELOC_NUMBERS) : Remove PARAMS macro. Use - C90 function definition. Formatting. - (RELOC_NUMBER): Remove !__STDC__ code. - -2003-07-28 Eric Christopher - - * ppc.h (R_PPC_RELAX32): New. Fake relocation. - -2003-07-25 H.J. Lu - - * v850.h (SHF_V850_GPREL): New. - (SHF_V850_EPREL): Likewise. - (SHF_V850_R0REL): Likewise. - -2003-07-09 Alexandre Oliva - - 2001-05-16 Alexandre Oliva - * mn10300.h: Introduce GOTPC16, GOTOFF24, GOTOFF16 and - PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32. - Renumbered all relocs. - 2001-04-12 Alexandre Oliva - * mn10300.h (R_MN10300_GOTPC, R_MN10300_GOTOFF, - R_MN10300_PLT32, R_MN10300_GOT32, R_MN10300_GOT24, - R_MN10300_GOT16, R_MN10300_COPY, R_MN10300_GLOB_DAT, - R_MN10300_JMP_SLOT, R_MN10300_RELATIVE): New relocs. - -2003-07-09 Alexandre Oliva - - 2000-04-01 Alexandre Oliva - * mn10300.h (E_MN10300_MACH_AM33_2): Renamed from - E_MN10300_MACH_AM332. - 2000-03-31 Alexandre Oliva - * mn10300.h (E_MN10300_MACH_AM332): Defined. - -2003-07-01 Martin Schwidefsky - - * s390.h (elf_s390_reloc_type): Add long displacement relocations - R_390_20, R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20. - -2003-06-29 Andreas Jaeger - - * mmix.h: Convert to ISO C90 prototypes. - * mips.h: Likewise. - -2003-06-13 Robert Millan - - * common.h (GNU_ABI_TAG_NETBSD): New tag. - (GNU_ABI_TAG_FREEBSD): New tag. - -2003-06-10 Richard Sandiford - - * h8.h (E_H8_MACH_H8300SXN): New flag. - -2003-06-03 Nick Clifton - - * v850.h (R_V850_32): Rename to R_V850_ABS32. - Add R_V850_REL32. - -2003-05-15 Roland McGrath - - * common.h (NT_AUXV, AT_*): New macros. - * external.h (Elf32_External_Auxv, Elf64_External_Auxv): New types. - * internal.h (Elf_Internal_Auxv): New type. - -2003-05-14 Michael Snyder - From Bernd Schmidt - * h8.h (E_H8_MACH_H8300SX): New. - -2003-04-24 Dhananjay Deshpande - - * elf/h8.h (E_H8_MACH_H8300HN, E_H8_MACH_H8300SN): New - -2003-04-23 J"orn Rennecke - - * common.h (EM_SH): Amend comment to refer to SuperH. - -2003-04-22 Kazuhiro Inaoka - - * common.h: Replace references to Mitsubishi M32R with - references to Renesas M32R. - -2003-04-15 Rohit Kumar Srivastava - - * common.h: Replace occurrances of 'Hitachi' with 'Renesas'. - -2003-04-01 Bob Wilson - - * elf/common.h (EM_XTENSA_OLD): Define. - * elf/xtensa.h: New file. - -2003-04-01 Nick Clifton - - * arm.h (ARM_NOTE_SECTION): Include .gnu in the string. - -2003-03-25 Stan Cox - Nick Clifton - - Contribute support for Intel's iWMMXt chip - an ARM variant: - - * arm.h (ARM_NOTE_SECTION): Define. - -2003-03-03 J"orn Rennecke - - * sh.h (EF_SH_MERGE_MACH): Make sure SH2E & SH3/SH3E merge to SH3E, - and SH2E & SH4 merge to SH4, not SH2E. - -2003-02-21 Ian Wienand - - * ia64.h (SHT_IA_64_LOPSREG, SHT_IA_64_HIPSREG, - SHT_IA_64_PRIORITY_INIT): Define. - -2003-02-18 Alan Modra - - * ppc64.h (IS_PPC64_TLS_RELOC): Rename from IS_TLS_RELOC. - - * ppc.h: Replace DTPMOD64, TPREL64, DTPREL64 with DTPMOD32 etc. - (IS_PPC_TLS_RELOC): Define. - -2003-02-10 Nick Clifton - - * arm.h (EF_ARM_MAVERICK_FLOAT): Define. - -2003-02-05 Alan Modra - - * ppc.h: Add TLS relocs. Format. - * ppc64.h: Likewise. - -2003-01-27 Alexandre Oliva - - * mips.h (EF_MIPS_XGOT): Define. - -2003-01-24 Martin Schwidefsky - - * s390.h: Add s390 TLS relocations. - -2003-01-23 Nick Clifton - - * Add sh2e support: - - 2002-04-02 Alexandre Oliva - - * sh.h (EF_SH_MERGE_MACH): Handle SH2E. - - 2002-04-02 Elena Zannoni - - * sh.h (EF_SH2E): New. - -2003-01-23 Alan Modra - - * sh.h: Split out various bits to bfd/elf32-sh64.h. - -2003-01-20 Martin Schwidefsky - - * s390.h: Rename R_390_GOTOFF to R_390_GOTOFF32. Add new gotoff, - gotplt and pltoff relocations. - -2003-01-17 Alan Modra - - * common.h: Formatting, typo fixes. - (DT_ENCODING): Correct value. - -2003-01-17 Fabio Alemagna - - * common.h (ELFOSABI_AROS): Define. - (ELFOSABI_OPENVMS): Likewise. - (ELFOSABI_NSK): Likewise. - -2003-01-16 Alan Modra - - * ppc.h: Split out ppc64 definitions to.. - * pcc64.h: ..here. New file. - (R_PPC64_REL30): Rename from R_PPC64_ADDR30. - -2003-01-13 Dmitry Diky - - * elf/common.h (EM_MSP430): Change e_machine value to officially - assigned. - -2003-01-02 Ben Elliston - - * common.h (EM_IQ2000): Define. - * iq2000.h: New file. - -2002-12-30 Chris Demetriou - - * mips.h (E_MIPS_ARCH_32R2): New define. - -2002-12-24 Dmitry Diky - - * common.h: Define msp430 machine numbers. - * msp430.h: New file. Define msp430 relocs. - -2002-12-20 DJ Delorie - - * xstormy16.h: Add XSTORMY16_12. - -2002-12-16 Andrew MacLeod - - * xstormy16.h (START_RELOC_NUMBERS) Add relocation numbers - for R_XSTORMY16_LO16 and R_XSTORMY16_HI16. - -2002-12-10 James Cownie - - * dwarf2.h (DW_TAG_upc_shared_type, DW_TAG_upc_strict_type, - DW_TAG_upc_relaxed_type, DW_AT_upc_threads_scaled, DW_LANG_Upc): - Define. - -2002-12-01 Stephane Carrez - - * m68hc11.h (EF_M68HC12_MACH, EF_M68HCS12_MACH): Define. - (EF_M68HC11_MACH_MASK, EF_M68HC11_MACH): Define. - (EF_M68HC11_MERGE_MACH, EF_M68HC11_CAN_MERGE_MACH): Define. - -2002-11-30 Alan Modra - - * mmix.h: Replace boolean with bfd_boolean. - * sh.h: Likewise. - -2002-11-28 Alan Modra - - * internal.h (elf32_internal_ehdr, Elf32_Internal_Ehdr, - elf64_internal_ehdr, Elf64_Internal_Ehdr, elf32_internal_phdr, - Elf32_Internal_Phdr, elf64_internal_phdr, Elf64_Internal_Phdr, - elf32_internal_shdr, Elf32_Internal_Shdr, elf64_internal_shdr, - Elf64_Internal_Shdr, elf32_internal_sym, elf64_internal_sym, - Elf32_Internal_Sym, Elf64_Internal_Sym, Elf32_Internal_Note, - elf32_internal_note, elf32_internal_rel, Elf32_Internal_Rel, - elf64_internal_rel, Elf64_Internal_Rel, elf32_internal_rela, - elf64_internal_rela, Elf32_Internal_Rela, Elf64_Internal_Rela, - elf32_internal_dyn, elf64_internal_dyn, Elf32_Internal_Dyn, - Elf64_Internal_Dyn, elf32_internal_verdef, elf64_internal_verdef, - elf32_internal_verdaux, elf64_internal_verdaux, elf32_internal_verneed, - elf64_internal_verneed, elf32_internal_vernaux, elf64_internal_vernaux, - elf32_internal_versym, elf64_internal_versym, Elf32_Internal_Verdef, - Elf64_Internal_Verdef, Elf32_Internal_Verdaux, Elf64_Internal_Verdaux, - Elf32_Internal_Verneed, Elf64_Internal_Verneed, Elf32_Internal_Vernaux, - Elf64_Internal_Vernaux, Elf32_Internal_Versym, Elf64_Internal_Versym, - Elf32_Internal_Syminfo, Elf64_Internal_Syminfo): Delete. - (Elf_Internal_Rel): Delete. - -2002-10-11 Kaz Kojima - - * sh.h: Add SH TLS relocs. - -2002-09-30 Gavin Romig-Koch - Ken Raeburn - Aldy Hernandez - Eric Christopher - Richard Sandiford - - * mips.h (E_MIPS_MACH_4120, E_MIPS_MACH_5400, E_MIPS_MACH_5500): New. - -2002-09-12 Roland McGrath - - * dwarf2.h: Updates from GCC version of thie file: - (enum dwarf_location_atom): DW_OP_calli -> DW_OP_call_ref. - Add DW_OP_GNU_push_tls_address. - (DW_OP_lo_user): Change to 0xe0. - -2002-08-28 Catherine Moore - - * elf/v850.h (R_V850_LONGCALL, R_V850_ALIGN, - R_V850_LONGJUMP): New relocations. - -2002-08-15 Alan Modra - - * i370.h: Define relocs using reloc-macros.h. - -2002-08-13 Stephane Carrez - - * m68hc11.h (E_M68HC12_BANKS, E_M68HC11_I32, E_M68HC11_F64, - EF_M68HC11_ABI): Define for ABI specification. - (STO_M68HC12_FAR, STO_M68HC12_INTERRUPT): Symbol flags for - linker and debugger. - (R_M68HC11_24, R_M68HC11_LO16, R_M68HC11_PAGE): New relocs. - (R_M68HC11_RL_JUMP, R_M68HC11_RL_GROUP): New reloc for linker - relaxation. - -2002-07-15 Denis Chertykov - Frank Ch. Eigler - Ben Elliston - Alan Lehotsky - John Healy - Graham Stott - Jeff Johnston - - * common.h (EM_IP2K): New macro. - (EM_IP2K_OLD): New macro. - * ip2k.h: New file. - -2002-07-01 Matt Thomas - - * vax.h: Rename EF_* to EF_VAX_*. - -2002-06-18 Dave Brolley - - From Catherine Moore, Michael Meissner, Dave Brolley: - * common.h (EM_CYGNUS_FRV): New macro. - * frv.h: New file. - -2002-06-06 Lars Brinkhoff - - * common.h: Change registry@sco.com to registry@caldera.com. - (EM_PDP10, EM_PDP11): Define. - -2002-06-04 Jason Thorpe - - * sh.h (_bfd_sh64_crange_qsort_cmpb, _bfd_sh64_crange_qsort_cmpl) - (_bfd_sh64_crange_bsearch_cmpb, _bfd_sh64_crange_bsearch_cmpl): New - prototypes. - -2002-06-01 Richard Henderson - - * alpha.h (LITUSE_ALPHA_ADDR, LITUSE_ALPHA_BASE, LITUSE_ALPHA_BYTOFF, - LITUSE_ALPHA_JSR, LITUSE_ALPHA_TLSGD, LITUSE_ALPHA_TLSLDM): New. - -2002-05-30 Richard Henderson - - * alpha.h (R_ALPHA_TLSGD, R_ALPHA_TLSLDM, R_ALPHA_DTPMOD64, - R_ALPHA_GOTDTPREL, R_ALPHA_DTPREL64, R_ALPHA_DTPRELHI, - R_ALPHA_DTPRELLO, R_ALPHA_DTPREL16, R_ALPHA_GOTTPREL, R_ALPHA_TPREL64, - R_ALPHA_TPRELHI, R_ALPHA_TPRELLO, R_ALPHA_TPREL16): New. - -2002-05-29 Matt Thomas - - * vax.h: New file - -2002-05-28 Kuang Hwa Lin - - * common.h (EM_DLX): Define. - * dlx.h: New file. - -2002-05-08 Jason Thorpe - - * common.h (NT_GNU_ABI_TAG): Define. - (GNU_ABI_TAG_LINUX): Define. - (GNU_ABI_TAG_HURD): Define. - (GNU_ABI_TAG_SOLARIS): Define. - (NT_NETBSD_IDENT): Define. - (NT_FREEBSD_ABI_TAG): Define. - -2002-04-24 Elena Zannoni - - * dwarf2.h: Add DW_AT_GNU_vector. - -2002-02-13 Matt Fredette - - * m68k.h (EF_M68000): Define. - -2002-02-12 Alan Modra - - * ppc.h (DT_PPC64_OPD, DT_PPC64_OPDSZ): Define. - -2002-02-09 Richard Henderson - - * alpha.h (R_ALPHA_BRSGP): New. - -2002-02-08 Alexandre Oliva - - Contribute sh64-elf. - 2002-01-23 Alexandre Oliva - * sh.h (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16, - R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16, - R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16, - R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16, - R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16, - R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16, - R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16, - R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, - R_SH_GOTPLT10BY8, R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, - R_SH_RELATIVE64): New relocs. - (R_SH_FIRST_INVALID_RELOC_4): Adjust. - 2001-05-16 Alexandre Oliva - * sh.h: Renumbered and renamed some SH5 relocations to match - official numbers and names; moved unmaching ones to the range - 0xf2-0xff. - 2001-01-06 Hans-Peter Nilsson - * sh.h (sh64_get_contents_type): Declare. - (sh64_address_is_shmedia): Likewise. - 2000-12-30 Hans-Peter Nilsson - * sh.h (sh64_elf_crange): New type. - (struct sh64_section_data): New. - (sh64_elf_section_data): New macro. - (EF_SH5): Rename back from EF_SH64. - 2000-12-18 Hans-Peter Nilsson - * sh.h (SHF_SH5_ISA32_MIXED, SHT_SH5_CR_SORTED, - SH64_CRANGES_SECTION_NAME, SH64_CRANGE_SIZE, - SH64_CRANGE_CR_ADDR_OFFSET, SH64_CRANGE_CR_SIZE_OFFSET, - SH64_CRANGE_CR_TYPE_OFFSET): New macros. - 2000-12-12 Hans-Peter Nilsson - * sh.h (EF_SH64): Don't define EF_SH64_ABI64. - 2000-11-27 Hans-Peter Nilsson - * sh.h (EF_SH64_32BIT_ABI, EF_SH64_64BIT_ABI): Delete. - (EF_SH64_ABI64): New. - 2000-11-23 Hans-Peter Nilsson - * sh.h (EF_SH64): Rename from EF_SH5. - (EF_SH64_32BIT_ABI): New. - (EF_SH64_64BIT_ABI): New. - (R_SH_PT_16, R_SH_SHMEDIA_CODE - R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2, - R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16, - R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16, - R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL, - R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL): New - relocs. - 2000-09-01 Ben Elliston - * sh.h (EF_SH5): Define. - -2002-02-01 Hans-Peter Nilsson - - * mmix.h: Tweak comments. - (MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME): New. - [BFD_ARCH_SIZE] (_bfd_mmix_prepare_linker_allocated_gregs, - _bfd_mmix_finalize_linker_allocated_gregs, - _bfd_mmix_check_all_relocs): Provide prototypes. - -2002-01-31 Ivan Guzvinec - - * or32.h: New file. - * common.h: Add support for or32 targets. - -2002-01-28 Jason Merrill - - * dwarf2.h: Sync with gcc version. - -2002-01-16 Alan Modra - - * ppc.h (DT_PPC64_GLINK): Define. - -2002-01-15 Richard Earnshaw - - * arm.h (F_VFP_FLOAT, EF_ARM_VFP_FLOAT): Define. - -2002-01-09 Jason Thorpe - - * common.h: Update copyright years. - (NT_NETBSDCORE_PROCINFO): Define. - (NT_NETBSDCORE_FIRSTMACH): Define. - -2002-01-06 Steve Ellcey - - * ia64.h (ELF_STRING_ia64_unwind_hdr): New Macro for HP-UX. - (SHT_IA_64_HP_OPT_ANOT): Ditto - (PT_IA_64_HP_OPT_ANOT): Ditto - (PT_IA_64_HP_HSL_ANOT): Ditto - (PT_IA_64_HP_STACK): Ditto - (SHN_IA_64_ANSI_COMMON): Ditto - -2001-12-17 Alan Modra - - * external.h (Elf_External_Sym_Shndx): Declare. - * internal.h (struct elf_internal_sym ): Make it an - unsigned int. - * common.h (SHN_BAD): Define. - -2001-12-13 Jakub Jelinek - - * elf/common.h (PT_GNU_EH_FRAME): Define. - -2001-12-11 Alan Modra - - * common.h (SHN_XINDEX): Comment typo fix. - * internal.h (Elf_Internal_Ehdr): Change existing "unsigned short" - size, count and index fields to "unsigned int". - -2001-12-07 Geoffrey Keating - Richard Henderson - - * common.h (EM_XSTORMY16): Define. - * xstormy16.h: New file. - -2001-11-15 Alan Modra - - * common.h (NT_ARCH): Define. Remove incorrect comment. - -2001-11-11 Geoffrey Keating - - * dwarf2.h (dwarf_line_number_ops): Add DWARF 3 opcodes. - -2001-10-30 Hans-Peter Nilsson - - * mmix.h: New file. - -2001-10-23 Alan Modra - - * internal.h: White space changes to keep lines under 80 chars. - -2001-10-16 Jeff Holcomb - - * internal.h (elf_internal_shdr): Make contents a unsigned char *. - -2001-09-18 Alan Modra - - * internal.h (elf_internal_rela): Make r_addend a bfd_vma. - -2001-09-13 Alexandre Oliva - - * common.h (EM_OPENRISC_OLD): Renamed the old EM_OPENRISC entry. - -2001-09-12 Alexandre Oliva - - * common.h (EM_AVR_OLD): Renamed from... - (EM_AVR): this, redefined as in the current ELF standard. - (EM_PJ_OLD): Renamed from... - (EM_PJ): this, redefined as in the current ELF standard. - (EM_R30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300, - EM_MN10200, EM_OPENRISC, EM_ARC_A5, EM_XTENSA): Defined as in - the current ELF standard. - (EM_CYGNUS_ARC): Removed, unused for a long time. - -2001-09-04 Richard Henderson - - * alpha.h (R_ALPHA_OP*, R_ALPHA_IMMED*, R_ALPHA_GPVALUE): Remove. - (R_ALPHA_GPREL16): Rename from R_ALPHA_IMMED_GP_16. - -2001-08-30 Eric Christopher - - * mips.h: Remove E_MIPS_MACH_MIPS32_4K. - -2001-08-29 Jeff Law - - * h8.h (EF_H8_MACH): New mask for encoded machine type. - (E_H8_MACH_H8300, E_H8_MACH_H8300H, E_H8_MACH_H8300S): New - machine types. - -2001-08-26 J"orn Rennecke - - * h8.h: New file. - -2001-08-27 Staffan Ulfberg - - * ppc.h: Add relocs from the 64-bit PowerPC ELF ABI revision 1.2. - -2001-06-30 Daniel Berlin - - * dwarf2.h: Remerge with gcc version, - including all new DWARF 2.1 extensions. - -2001-06-29 James Cownie - - * dwarf2.h: Add DWARF 2.1 attribues. - -2001-06-15 Per Bothner - - * dwarf2.h: Partial merge with gcc version. - (enum dwarf_descrim_list): Fix typo -> dwarf_discrim_list. - (DW_LANG_Java): Use value from dwarf 2.1 draft (also used in gcc). - -2001-05-15 Ralf Baechle - - * common.h: Remove definition of EM_MIPS_RS4_BE. The constant was - never in active use and is used otherwise by the ABI. - -2001-05-11 Jakub Jelinek - - * ia64.h (ELF_STRING_ia64_unwind_once): Define. - (ELF_STRING_ia64_unwind_info_once): Define. - -2001-05-07 Thiemo Seufer - - * external.h: Fix typo. - * mips.h: Add/Extend many comments with reference to the MIPS ELF64 - spec v. 2.4, available at e.g. - ftp://oss.sgi.com/pub/linux/mips/doc/ABI/ELF64.ps. - (EF_MIPS_UCODE): Define. - (EF_MIPS_OPTIONS_FIRST): Define. - (EF_MIPS_ARCH_ASE): Define. - (EF_MIPS_ARCH_ASE_MDMX): Define. - (EF_MIPS_ARCH_ASE_M16): Define. - (SHF_MIPS_ADDR): Renamed SHF_MIPS_ADDR32. - (SHF_MIPS_STRING): Renamed SHF_MIPS_ADDR64. - (SHF_MIPS_NODUPES): Define. - (ELF64_MIPS_R_SSYM): New MIPS ELF 64 relocation info access macro. - (ELF64_MIPS_R_TYPE3): Likewise. - (ELF64_MIPS_R_TYPE2): Likewise. - (ELF64_MIPS_R_TYPE): Likewise. - (OHW_R10KLDL): Define. - -2001-04-24 Todd Fries - - * sparc.h: Fix typo. - -2001-04-20 Johan Rydberg - - * openrisc.h: New file. - * common.h (EM_OPENRISC): New constant. - -2001-04-23 Bo Thorsen - - * x86-64.h: Add vtable support. - -2001-03-23 Nick Clifton - - * mips.h: Remove extraneous whitespace. - -2001-03-22 Hans-Peter Nilsson - - * cris.h: Add leading comment about PC-relative location. - (R_CRIS_COPY, R_CRIS_GLOB_DAT, R_CRIS_JUMP_SLOT, R_CRIS_RELATIVE, - R_CRIS_16_GOT, R_CRIS_32_GOT, R_CRIS_16_GOTPLT, R_CRIS_32_GOTPLT, - R_CRIS_32_GOTREL, R_CRIS_32_PLT_GOTREL, R_CRIS_32_PLT_PCREL): - New relocs. - -2001-02-27 Philip Blundell - - * arm.h: Add new definitions from ARM document SWS ESPC 0003 B-01. - (EF_PIC, et al.): Rename to EF_ARM_xx. - -2001-02-09 Martin Schwidefsky - - * common.h: Add linux target for S/390. - * s390.h: New file. - -2001-01-11 Peter Targett - - * arc.h (E_ARC_MACH_ARC5, E_ARC_MACH_ARC6, E_ARC_MACH_ARC7, - E_ARC_MACH_ARC8): New definitions for cpu types. - - * common.h (EM_ARC): Change comment. - -2000-12-12 Nick Clifton - - * mips.h: Fix formatting. - -2000-12-11 Jeffrey A Law (law@cygnus.com) - - * hppa.h (DT_HP_*): Define relative to OLD_DT_LOOS for hpux - compatibility. - -2000-10-16 Chris Demetriou - - * mips.h (E_MIPS_ARCH_32): New constant. - (E_MIPS_MACH_MIPS32, E_MIPS_MACH_MIPS32_4K): Replace the - former with the latter. - - * mips.h (E_MIPS_ARCH_5, E_MIPS_ARCH_64): New definitions. - - * mips.h (E_MIPS_MACH_SB1): New constant. - -2000-11-30 Jan Hubicka - - * common.h (EM_X86_64): New macro. - * x86-64.h: New file. - -2000-11-27 Hans-Peter Nilsson - - * common.h (e_machine numbers): Clarify comments to describe how - EM_* constants are assigned. Move EM_PJ from official section to - ad-hoc section. - (EM_CRIS): Correct comment to match official description. - (EM_MMIX): Ditto. - -2000-11-22 Nick Clifton - - * common.h (EM_JAVELIN): New machine number. - (EM_FIREPATH): New machine number. - (EM_ZSP): New machine number. - (EM_MMIX): New machine number. - (EM_HUANY): New machine number. - (EM_PRISM): New machine number. - (SHT_GROUP): New section type. - (SHT_SYMTAB_SHNDX): New section type. - (SHF_GROUP): New section flag. - (SHN_XINDEX): New section index. - (GRP_COMDAT): New section group flag. - -2000-11-20 H.J. Lu - - * common.h (ELFOSABI_MONTEREY): Renamed to ... - (ELFOSABI_AIX): This. - -2000-11-16 Richard Henderson - - Update relocations per August psABI docs. - * ia64.h (R_IA64_SEGBASE): Remove. - (R_IA64_LTV*): Renumber to 0x74 to 0x77. - (R_IA64_EPLTMSB, R_IA64_EPLTLSB): Remove. - (R_IA64_TPREL14, R_IA64_TPREL64I): New. - (R_IA64_DTPMOD*): New. - (R_IA64_DTPREL*): New. - -2000-09-29 Hans-Peter Nilsson - - * cris.h (EF_CRIS_UNDERSCORE): New. - -2000-09-27 Alan Modra - - * hppa.h (R_PARISC_DIR14F): Add. - -2000-09-14 Alexandre Oliva - - * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT, - R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): Change - numbers to the range from 160 to 167. - (R_SH_FIRST_INVALID_RELOC): Adjust. - (R_SH_FIRST_INVALID_RELOC_2, R_SH_LAST_INVALID_RELOC_2): - New relocs to fill in the gap. - -2000-09-13 Anders Norlander - - * mips.h (E_MIPS_MACH_4K): New define. - -2000-09-05 Alan Modra - - * hppa.h: Fix a comment. - (R_PARISC_PCREL12F): Define. - (R_PARISC_GNU_VTENTRY): Define. - (R_PARISC_GNU_VTINHERIT): Define. - -2000-09-01 Alexandre Oliva - - * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT, - R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New relocs. - (R_SH_FIRST_INVALID_RELOC): Adjust. - -2000-08-14 Jim Wilson - - * ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, - EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define. - -2000-08-07 Nick Clifton - - * ppc.h: Remove spurious CYGNUS LOCAL comments. - * v850.h: Likewise. - -2000-07-22 Jason Eckhardt - - * i860.h: New file. - (elf_i860_reloc_type): Defined ELF32 i860 relocations. - -2000-07-20 Hans-Peter Nilsson - - common.h (EM_CRIS): New machine number. - cris.h: New file. - -2000-07-19 H.J. Lu - - * common.h (DF_1_NODEFLIB): Renamed from DF_1_NODEPLIB. - -2000-07-19 H.J. Lu - - * common.h (DT_CHECKSUM): Set to 0x6ffffdf8. - (DTF_1_CONFEXP): It is 0x00000002 as suspected. - -2000-07-19 H.J. Lu - - * common.h (DT_FEATURE): Renamed from DT_FEATURE_1. - (DT_CONFIG): New. From Solaris 8. - (DT_DEPAUDIT): Likewise. - (DT_AUDIT): Likewise. - (DT_PLTPAD): Likewise. - (DT_MOVETAB): Likewise. - (DF_1_NODEPLIB): Likewise. - (DF_1_NODUMP): Likewise. - (DF_1_CONLFAT): Likewise. - (DT_CHECKSUM): Likewise. FIXME. Check the value on Solaris 8. - (DTF_1_CONFEXP): Likewise. - -2000-07-18 H.J. Lu - - * common.h (DT_FLAGS_1): Renamed from DT_1_FLAGS. - -2000-07-12 Alan Modra - - * internal.h (struct elf_internal_sym): Update comment for st_other. - -2000-07-10 Alan Modra - - * hppa.h: Add comments to all the relocs. - -2000-06-26 Marek Michalkiewicz - - * avr.h (E_AVR_MACH_AVR5): Define. - -2000-06-18 Stephane Carrez - - * m68hc11.h: New file, definitions for the Motorola 68hc11. - -2000-06-06 Alan Modra - - * reloc-macros.h (START_RELOC_NUMBERS): Don't define initial dummy - -1 valued enum. - (RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC): Append rather than - prepend comma. - (END_RELOC_NUMBERS): Give macro an arg to define as last enum. - - * alpha.h (R_ALPHA_max): Define via END_RELOC_NUMBERS rather than - with EMPTY_RELOC. - * arc.h (R_ARC_max): Likewise. - * avr.h (R_AVR_max): Likewise. - * fr30.h (R_FR30_max): Likewise. - * hppa.h (R_PARISC_UNIMPLEMENTED): Likewise. - * i960.h (R_960_max): Likewise. - * m32r.h (R_M32R_max): Likewise. - * m68k.h (R_68K_max): Likewise. - * mcore.h (R_MCORE_max): Likewise. - * mn10300.h (R_MN10300_MAX): Likewise. - * pj.h (R_PJ_max): Likewise. - * ppc.h (R_PPC_max): Likewise. - * sh.h (R_SH_max): Likewise. - * sparc.h (R_SPARC_max): Likewise. - * v850.h (R_V850_max): Likewise. - - * arm.h (R_ARM_max): Define via END_RELOC_NUMBERS. - * d10v.h (R_D10V_max): Likewise. - * d30v.h (R_D30V_max): Likewise. - * ia64.h (R_IA64_max): Likewise. - * mips.h (R_MIPS_maxext): Likewise. - * mn10200.h (R_MN10200_max): Likewise. - - * i386.h (R_386_max): Remove old RELOC_NUMBER definition, and - define via END_RELOC_NUMBERS. - -2000-06-03 Alan Modra - - * reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for - !__STDC__ case. - (RELOC_NUMBER): Use ansi stringify if ALMOST_STDC defined. - -2000-05-22 Richard Henderson - - * ia64.h (R_IA64_PCREL60B, R_IA64_PCREL21BI): New. - (R_IA64_PCREL22, R_IA64_PCREL64I): New. - -2000-05-02 H.J. Lu - - * common.h (ELFOSABI_NONE): Renamed from ELFOSABI_SYSV. - (ELFOSABI_MODESTO): Defined. - (ELFOSABI_OPENBSD): Likewise. - -2000-04-21 Richard Henderson - David Mosberger - - * ia64.h: New file. - -2000-04-14 H.J. Lu - - * common.h (ELFOSABI_TRUE64): Renamed to ELFOSABI_TRU64. - -2000-04-14 H.J. Lu - - * common.h (ELFOSABI_NETBSD): Defined. - (ELFOSABI_HURD): Likewise. - (ELFOSABI_SOLARIS): Likewise. - (ELFOSABI_MONTEREY): Likewise. - (ELFOSABI_IRIX): Likewise. - (ELFOSABI_FREEBSD): Likewise. - (ELFOSABI_TRUE64): Likewise. - -2000-04-07 Nick Clifton - - * arm-oabi.h: Delete. - * arm.h: Merge in definitions of old reloc numbers from - arm-oabi.h. - -2000-04-06 Nick Clifton - - * arm.h (EF_ARM_SYMSARESORTED): Define. - (EF_ARM_EABIMASK): Define. - (EF_ARM_EABI_VERSION): Define. - (EF_ARM_EABI_UNKNOWN): Define. - (EF_ARM_EABI_VER1): Define. - (PF_ARM_PI): Define. - (PF_ARM_ABS): Define. - -2000-04-05 J"orn Rennecke - - * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): New RELOC_NUMBERs. - -2000-03-27 Denis Chertykov - - * avr.h: New file. AVR ELF support for BFD. - * common.h: Add AVR magic number. - -2000-03-10 Geoffrey Keating - - * mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16, - R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation - numbers. - -2000-02-23 Linas Vepstas - - * i370.h: New file. - -2000-02-22 Nick Clifton - - * common.h (ELF_ST_OTHER): Remove definition. - (ELF32_ST_OTHER): Remove definition. - (ELF64_ST_OTHER): Remove definition. - -2000-02-22 H.J. Lu - - * common.h (ELFOSABI_LINUX): Define. - -2000-02-17 J"orn Rennecke - - * sh.h: (EF_SH_MACH_MASK, EF_SH_UNKNOWN, EF_SH1, EF_SH2): New macros. - (EF_SH3, EF_SH_HAS_DSP, EF_SH_DSP, EF_SH3_DSP): Likewise. - (EF_SH_HAS_FP, EF_SH3E, EF_SH4, EF_SH_MERGE_MACH): Likewise. - -2000-02-03 H.J. Lu - - * arm-oabi.h: Duplicate changes made to arm.h on Jan. 27, - 2000 by Thomas de Lellis . - -2000-01-27 Thomas de Lellis - - * arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC. - (STT_ARM_16BIT): New flag. Denotes a label that was defined in - Thumb block but was does not identify a function. - -2000-01-20 Nick Clifton - - * common.h (EM_MCORE): Fix spelling of Motorola. - * mcore.h (EM_MCORE): Fix spelling of Motorola. - -2000-01-13 Nick Clifton - - * common.h (EM_S370): Change comment - this is now the IBM - System/370. - (EM_IA_64): Change comment - this is now the IA-64. - -2000-01-11 Nick Clifton - - * common.h (DT_ENCODING): Fix definition of this value. - (DT_LOOS): Fix definition of this value. - (DT_HIOS): Fix definition of this value. - (OLD_DT_LOOS): Value of DT_LOOS before Oct 4, 1999 draft - of ELF spec changed it. - (OLD_DT_HIOS): Value of DT_HIOS before Oct 4, 1999 draft - of ELF spec changed it. - -2000-01-10 Egor Duda - - * common.h (NT_WIN32PSTATUS): Define. (cygwin elf core dumps). - -1999-12-28 Nick Clifton - - * mips.h (STO_*): Redefine in terms of STV_* values now in - common.h. - -1999-12-27 Nick Clifton - - * common.h: Upgrade to match Oct4, 1999 Draft ELF ABI Spec. - (EM_MIPS_RS3_LE): New machine number. - (EM_RCE): New machine number. - (EM_MMA): New machine number. - (EM_PCP): New machine number. - (EM_NCPU): New machine number. - (EM_NDR1): New machine number. - (EM_STARCORE): New machine number. - (EM_ME16): New machine number. - (EM_ST100): New machine number. - (EM_TINYJ): New machine number. - (EM_FX66): New machine number. - (EM_ST9PLUS): New machine number. - (EM_ST7): New machine number. - (EM_68HC16): New machine number. - (EM_68HC11): New machine number. - (EM_68HC08): New machine number. - (EM_68HC05): New machine number. - (EM_SVX): New machine number. - (EM_VAX): New machine number. - (PF_MASKOS): Change value. - (SHT_INIT_ARRAY): New value for sh_type field. - (SHT_FINI_ARRAY): New value for sh_type field. - (SHT_PREINIT_ARRAY): New value for sh_type field. - (SHT_HIUSER): Change value. - (SHF_MERGE): New valye for sh_flags field. - (SHF_STRINGS): New valye for sh_flags field. - (SHF_INFO_LINK): New valye for sh_flags field. - (SHF_OS_NONCONFORMING): New valye for sh_flags field. - (SHF_MASKOS): Change value. - (ELF_ST_VISIBILITY): New macro. - (ELF_ST_OTHER): New macro. - (STT_COMMON): New symbol type. - (STV_DEFAULT): Value for symbol visibility. - (STV_INTERNAL): Value for symbol visibility. - (STV_HIDDEN): Value for symbol visibility. - (STV_PROTECTED): Value for symbol visibility. - (DT_RUNPATH): New dynamic section tag. - (DT_FLAGS): New dynamic section tag. - (DT_ENCODING): New dynamic section tag. - (DT_PREINIT_ARRAY): New dynamic section tag. - (DT_PREINIT_ARRAYSZ): New dynamic section tag. - (DT_LOPROC): New dynamic section tag index. - (DT_HIPROC): New dynamic section tag index. - (DF_ORIGIN): Value for dynamic section flag. - (DF_SYMBOLIC): Value for dynamic section flag. - (DF_TEXTREL): Value for dynamic section flag. - (DF_BIND_NOW): Value for dynamic section flag. - -1999-12-09 Fred Fish - - * i960.h (reloc-macros.h): Include using relative dir elf/. - * i386.h (reloc-macros.h): Include using relative dir elf/. - * hppa.h (reloc-macros.h): Include using relative dir elf/. - -1999-12-07 Jim Blandy - - * common.h (NT_PRXFPREG): New definition. - -Wed Dec 1 03:02:15 1999 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (E_MN10300_MACH_AM33): Define. - -Mon Oct 11 22:42:37 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (PF_HP_PAGE_SIZE): Define. - (PF_HP_FAR_SHARED, PF_HP_NEAR_SHARED, PF_HP_CODE): Likewise. - (PF_HP_MODIFY, PF_HP_LAZYSWAP, PF_HP_SBP): Likewise. - -Mon Oct 4 17:42:38 1999 Doug Evans - - * m32r.h (E_M32RX_ARCH): Define. - -1999-09-15 Ulrich Drepper - - * hppa.h: Add DT_HP_GST_SIZE, DT_HP_GST_VERSION, and DT_HP_GST_HASHVAL. - -1999-09-04 Steve Chamberlain - - * pj.h: New file. - * common.h (EM_PJ): Define. - -1999-09-02 Ulrich Drepper - - * hppa.h: Add HPUX specific symbol type definitions. - - * hppa.h: Add HPUX specific dynamic and program header table - specific definitions. - -1999-08-31 Scott Bambrough - - * common.h (NT_TASKSTRUCT): Define. - -1999-07-16 Jakub Jelinek - - * sparc.h (EF_SPARC_SUN_US3): Define in Cheetah extensions - flag (as per SCD2.4.1). - -1999-07-16 Jakub Jelinek - - * sparc.h (ELF64_R_TYPE_DATA): Only use ELF64_R_TYPE bits, not - ELF64_R_SYM bits. - -1999-06-21 Philip Blundell - - * arm.h (EF_SOFT_FLOAT, F_SOFT_FLOAT): Define. - -1999-07-13 Andreas Schwab - - * m68k.h (EF_CPU32): Move definition inside multiple inclusion - guard. - -1999-07-08 Richard Henderson - - * sparc.h (ELF64_R_TYPE_DATA): Sign extend the value. - (ELF64_R_TYPE_INFO): Mask out all but low 24 bits of data. - (DT_SPARC_PLTFMT): Delete. - Based on a patch from Jakub Jelinek. - -Mon Jun 21 16:36:02 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type. - -1999-06-10 Jakub Jelinek - - * sparc.h (R_SPARC_max_std): Define. - -Wed Jun 9 15:16:34 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h: Update with various changes from newest PA ELF - specifications. - -1999-06-03 Ian Lance Taylor - - * common.h (EM_PPC64): Define. - -1999-06-02 Stu Grossman - - * dwarf.h: Add LANG_JAVA. - * dwarf2.h: Add DW_LANG_Java. - -1999-05-29 Nick Clifton - - * common.h (ELFOSABI_ARM): Define. - -1999-05-28 Nick Clifton - - * reloc-macros.h: Update comment. - -1999-05-28 Ian Lance Taylor - - * i960.h: New file. - -1999-05-16 Nick Clifton - - * mcore.h (R_MCORE_COPY): Define. - (R_MCORE_GLOB_DAT): Define. - (R_MCORE_JUMP_SLOT): Define. - -1999-05-15 Nick Clifton - - * mcore.h (R_MCORE_RELATIVE): Define. - -1999-05-05 Catherine Moore - - * m68k.h (EF_CPU32): Define. - -1999-04-21 Nick Clifton - - * reloc-macros.h (START_RELOC_NUMBERS): Prepend an underscore to - fake reloc entry name (if possible), in order to avoid conflicts - with typedefs of the same name. - -1999-04-16 Gavin Romig-Koch - - * mips.h (EF_MIPS_32BITMODE): New. - -1999-04-08 Nick Clifton - - * mcore.h: New header file. Defines for Motorola's MCore - processor. - -1999-04-08 Nick Clifton - - * common.h: Add new constants defined in: "System V Application - Binary Interface - DRAFT - April 29, 1998" found at the web site: - http://www.sco.com/developer/gabi/contents.html - - (EM_MMA): Removed. Replaced with EM_MCORE as Motorolla own this - value. - -1999-03-31 Nick Clifton - - * reloc-macros.h: Fixed to not generate an enum with a trailing - comma. - -1999-03-16 Gavin Romig-Koch - - * mips.h (E_MIPS_MACH_5000): New. - -1999-03-10 Ulrich Drepper - - * common.h: Add definitions for a few more Solaris ELF extensions. - -Thu Feb 18 18:58:26 1999 Ian Lance Taylor - - * external.h: Only use attribute if __GNUC__ is defined. - -1999-02-17 Nick Clifton - - Patch submitted by: Scott Bambrough - - * external.h: struct Elf_External_Versym must be packed on - ARM. Code uses sizeof(Elf_External_Versym) and assumes it is - equal to sizeof(char[2]). Reported by Jim Pick - -1999-02-02 Nick Clifton - - * dwarf2.h (DWARF2_External_ARange): New structure. - (DWARF2_Internal_ARange): New structure. - -Mon Feb 1 11:33:56 1999 Catherine Moore - - * arm.h: Renumber relocs to conform to standard. - (EF_NEW_ABI): Define. - (EF_OLD_ABI): Define. - * arm-oabi.h: New file. - -1999-01-28 Nick Clifton - - * fr30.h: Add R_FR30_GNU_VT{INHERIT,ENTRY} relocs. - -1999-01-27 Nick Clifton - - * dwarf2.h: Add typedefs for structures found in dwarf2 sections. - -1998-12-16 Gavin Romig-Koch - - * mips.h (E_MIPS_MACH_4111): New. - -1998-12-15 Gavin Romig-Koch - - * mips.h (EF_MIPS_ABI,E_MIPS_ABI_O32,E_MIPS_ABI_O64, - E_MIPS_ABI_EABI32,E_MIPS_ABI_EABI64): - -1998-12-03 Nick Clifton - - * fr30.h: Add R_FR30_48 reloc. - -1998-12-02 Ulrich Drepper - - * mips.h: Add external data type for conflict section. - - * mips.h: Add more LL_* options from Irix 6.5. - - * mips.h: Add R_MIPS_JALR and adjust R_MIPS_max appropriately. - -Mon Nov 30 15:25:58 1998 J"orn Rennecke - - * sh.h (elf_sh_reloc_type): Add R_SH_FIRST_INVALID_RELOC, - R_SH_LAST_INVALID_RELOC, R_SH_SWITCH8 and R_SH_max. - -Tue Nov 10 15:12:28 1998 Nick Clifton - - * common.h (EM_CYGNUS_FR30): Reduce to a 16 bit value. - -Tue Nov 10 15:17:28 1998 Catherine Moore - - * d10v.h: Add vtable relocs. - -Wed Nov 4 15:56:50 1998 Nick Clifton - - * common.h (EM_CYGNUS_FR30): New machine number. - - * fr30.h: New file: Definitions for the FR30. - -Fri Oct 30 11:54:15 1998 Catherine Moore - - From Philip Blundell : - * arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC. - (EF_ALIGN8): New flag. - -Tue Oct 20 11:19:50 1998 Ian Lance Taylor - - * common.h (NT_LWPSTATUS): Close comment accidentally left open. - -Mon Oct 19 20:24:11 1998 Catherine Moore - - * sh.h: Add vtable relocs. - -Mon Oct 19 01:44:42 1998 Felix Lee - - * common.h (NT_PSTATUS, NT_FPREGS, NT_PSINFO, - NT_LWPSTATUS,NT_LWPSINFO): added. - * internal.h (Elf_Internal_Note): new structure members. - -Fri Oct 16 14:11:25 1998 Catherine Moore - - * m32r.h: Add vtable relocs. - -Tue Oct 6 09:22:22 1998 Catherine Moore - - * sparc.h: Add vtable relocs. - -Mon Oct 5 09:39:22 1998 Catherine Moore - - * v850.h: Add vtable relocs. - -Sun Oct 4 21:17:51 1998 Ian Lance Taylor - - * i386.h (R_386_max): Change from 252 to 24. - -Mon Sep 21 12:24:44 1998 Catherine Moore - - * i386.h: Change vtable reloc numbers. - -Sun Sep 20 00:54:22 1998 Andreas Schwab - - * m68k.h: Add vtable relocs and R_68K_max. - -Tue Sep 15 09:56:49 CDT 1998 Catherine Moore - - * arm.h: Add vtable relocs. - -Mon Aug 31 11:25:27 1998 Catherine Moore - - * arm.h: Define STT_ARM_TFUNC. Remove ST_THUMB_xxxx - definitions. - -Sat Aug 29 22:25:51 1998 Richard Henderson - - * i386.h: Add vtable relocs. - -1998-08-25 16:42 Ulrich Drepper - - * common.h: Add SYMINFO_* macros to access Elf*_Syminfo information. - - * external.h: Add Elf_External_Syminfo definition. - - * internal.h: Add Elf_Internal_Syminfo, Elf32_Internal_Syminfo, - and Elf64_Syminfo definitions. - -Sun Aug 9 20:26:49 CDT 1998 Catherine Moore - - * arm.h: Add ST_THUMB definitions. - -Wed Aug 5 15:52:35 1998 Nick Clifton - - * arm.h: Add ELF header flags to specify compile time optins: - EF_INTERWORK: New flag. - EF_APCS_26: New flag. - EF_APCS_FLOAT: New flag. - EF_PIC: New flag. - -1998-07-31 21:28 Ulrich Drepper - - * mips.h: Add missing RHF_* constants. - -Fri Jul 31 10:01:40 1998 Catherine Moore - - * arm.h: Add R_ARM_THM_PC9 relocation. - -1998-07-30 16:25 Ulrich Drepper - - * common.h: Add new DT_* entries and there flag macros from Solaris. - -Tue Jul 28 18:14:07 1998 Stan Cox - - * sparc.h: (R_SPARC_REV32): Added for little endian data e.g. sparc 86x. - -Fri Jul 24 11:22:06 1998 Jeffrey A Law (law@cygnus.com) - - * mn10300.h: Add R_MN10300_24 relocation. - -1998-07-24 Ulrich Drepper - - * mips.h: Add MIPS64 relocation names and values. - -Wed Jul 22 19:29:00 Catherine Moore - - * arm.h: Rename relocations. - -1998-07-22 Ulrich Drepper - - * ppc.h: Define enum as elf_ppc_reloc_type. - -Wed Jul 22 16:22:11 1998 Nick Clifton - - * reloc-macros.h: New file. Provides relocation macros: - START_RELOC_NUMBERS, RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC and - END_RELOC_NUMBERS used by other elf header files. - - * alpha.h: Use reloc-macros.h. - * arc.h: Use reloc-macros.h. - * arm.h: Use reloc-macros.h. - * d10v.h: Use reloc-macros.h. - * d30v.h: Use reloc-macros.h. - * hppa.h: Use reloc-macros.h. - * i386.h: Use reloc-macros.h. - * m32r.h: Use reloc-macros.h. - * m68k.h: Use reloc-macros.h. - * mips.h: Use reloc-macros.h. - * mn10200.h: Use reloc-macros.h. - * mn10300.h: Use reloc-macros.h. - * ppc.h: Use reloc-macros.h. - * sh.h: Use reloc-macros.h. - * sparc.h: Use reloc-macros.h. - * v850.h: Use reloc-macros.h. - -1998-07-22 13:07 Ulrich Drepper - - * mn10300.h: Rewrite relocation definition using macros. - * mips.h: Likewise. - * ppc.h: Likewise. - * alpha.h: Likewise. - * arm.h: Likewise. - * d10v.h: Likewise. - * d30v.h: Likewise. - * m32r.h: Likewise. - * m68k.h: Likewise. - * mn10200.h: Likewise. - * sh.h: Likewise. - * sparc.h: Likewise. - -1998-07-21 13:07 Ulrich Drepper - - * arm.h: New file. - * d10v.h: New file. - * d30v.h: New file. - * i386.h: New file. - * m68k.h: New file. - * mn10200.h: New file. - * sh.h: New file. - - * mips.h: Add R_MIPS_* and SHT_MIPS_* entries. - - * mn10300.h: Add R_MN10300_* entries. - - * ppc.h: Add R_PPC_* entries. - -1998-07-20 07:11 Ulrich Drepper - - * mips.h: Add ODK_*, OEX_*, OPAD_*, OHW_*, and OGP_* constants. - Define Elf32_External_Lib. - -1998-07-19 15:24 Ulrich Drepper - - * mips.h (PT_MIPS_OPTIONS): New symbol. - Add lots of DT_MIPS_* symbols. - -Fri Jun 26 10:46:35 1998 Jeffrey A Law (law@cygnus.com) - - * mn10300.h: New file. - -Thu Jun 18 19:27:56 1998 Nick Clifton - - * common.h (EM_960, EM_V800, EM_FR20, EM_RH32, EM_MMA, - EM_OLD_ALPHA): Add these constants. - -Thu Jun 11 17:59:01 1998 Nick Clifton - - * common.h (EM_486, EM_S370): Add these constants. - -Tue Jun 9 09:35:29 1998 Nick Clifton - - * common.h (EM_ARM): Add this constant. - -Wed May 6 09:45:30 1998 Gavin Koch - - * mips.h (EF_MIPS_MACH,E_MIPS_MACH_*): Added. - -Sat Apr 25 18:35:06 1998 Richard Henderson - - * alpha.h (STO_ALPHA_NOPV, STO_ALPHA_STD_GPLOAD): New. - -Wed Apr 15 15:42:45 1998 Richard Henderson - - * common.h (EM_SPARC64): Move and rename to EM_OLD_SPARCV9. - (EM_SPARCV9): New. This is the official ABI name and number. - -Sat Feb 28 17:04:41 1998 Richard Henderson - - * alpha.h (EF_ALPHA_32BIT, EF_ALPHA_CANRELAX): New. - -Mon Dec 15 15:07:49 1997 Nick Clifton - - * m32r.h (EF_M32R_ARCH, E_M32R_ARCH): New flags to - specify machine architecture. - -Fri Dec 5 11:20:08 1997 Nick Clifton - - * v850.h: New constants: SHN_V850_SCOMMON, SHN_V850_TCOMMON, - SHN_V850_ZCOMMON, SHT_V850_SCOMMON, SHT_V850_TCOMMON, - SHT_V850_ZCOMMON to handle v850 common sections. - enum reloc_type renamed to v850_reloc_type to avoid name - conflict. - -Thu Oct 23 13:55:24 1997 Richard Henderson - - * sparc.h (enum elf_sparc_reloc_type): Add UA64 & UA16. - -Thu Oct 23 00:42:04 1997 Richard Henderson - - * sparc.h (DT_SPARC_REGISTER): New macro. - (DT_SPARC_PLTFMT): In support of old sparc64-linux .plts; will - go away soon. - -Tue Sep 30 13:26:58 1997 Doug Evans - - * sparc.h (EF_SPARC_HAL_R1, EF_SPARC_EXT_MASK): New macros. - (EF_SPARCV9_{MM,TSO,PSO,RMO}): New macros. - (SHN_BEFORE,SHN_AFTER): New macros. - (SHF_EXCLUDE,SHF_ORDERED): New macros. - (STT_REGISTER): New macro. - (R_SPARC_GLOB_JMP): Deleted, but slot reserved. - (R_SPARC_{DISP64,PLT64,HIX22,LOX10}): New relocations. - (R_SPARC_{H44,M44,L44,REGISTER}): New relocations. - (ELF64_R_TYPE_{DATA,ID,INFO}): New macros. - -Wed Sep 17 16:41:42 1997 Nick Clifton - - * v850.h: Add R_V850_CALLT_6_7_OFFSET and R_V850_CALLT_16_16_OFFSET. - -Tue Sep 16 14:16:17 1997 Nick Clifton - - * v850.h (reloc_type): Add R_V850_TDA_16_16_OFFSET. - -Wed Sep 3 15:11:14 1997 Richard Henderson - - * mips.h: Correct typo in comment. - -Wed Sep 3 11:25:57 1997 Nick Clifton - - * v850.h (reloc_type): Remove R_V850_16_PCREL. - -Tue Sep 2 17:41:05 1997 Nick Clifton - - * common.h: Remove magic number for V850E. - * common.h: Remove magic number for V850EA. - * v850.h: Add new flags for e_flags field in elf header. - -Mon Aug 25 16:06:47 1997 Nick Clifton - - * common.h (EM_CYGNUS_V850E): backend magic number for v850e. - * common.h (EM_CYGNUS_V850EA): backend magic number for v850ea. - -Mon Aug 18 11:05:23 1997 Nick Clifton - - * v850.h (reloc_type): Add 16 bit PC relative relocation. - -Fri Aug 15 05:10:09 1997 Doug Evans - - * arc.h (enum reloc): Move here from elf32-arc.c. - -Fri Aug 8 17:05:29 1997 Doug Evans - - * arc.h: New file. - * common.h (EM_CYGNUS_ARC): Define. - -Mon Jun 16 14:46:12 1997 Ian Lance Taylor - - * internal.h (Elf_Internal_Ehdr): Change e_phoff and e_shoff from - bfd_signed_vma to bfd_size_type, as they are not signed. - -Wed Mar 5 15:35:26 1997 Doug Evans - - * m32r.h (SHF_M32R_CAN_RELAX): Define. - -Mon Feb 24 17:49:01 1997 Ian Lance Taylor - - * external.h: Dump the 32/64 bit specific forms of the version - structures, and just define them as size independent. - - * common.h (VERSYM_HIDDEN, VERSYM_VERSION): Define. - -Fri Feb 21 13:00:34 1997 Doug Evans - - * m32r.h (enum reloc_type): Add R_M32R_SDA16. - (SHN_M32R_SCOMMON): Define. - -Wed Feb 19 15:35:31 1997 Ian Lance Taylor - - From Eric Youngdale : - * external.h, internal.h, common.h: Added new structures and - definitions for ELF versions. - -Tue Feb 18 17:40:36 1997 Martin M. Hunt - - * common.h (EM_CYGNUS_D30V): Define. - -Mon Jan 27 11:54:44 1997 Doug Evans - - * m32r.h (enum reloc_type): Add R_M32R_HI16_[SU]LO,R_M32R_LO16. - -Fri Jan 3 11:32:51 1997 Michael Meissner - - * v850.h (V850_OTHER_{TDA_BYTE,ERROR}): New bits for the st_other - field. - (SHN_V850_*): Remove v850 specific section indexes, which are not - needed. - (enum reloc_type): Move the v850 relocations here from - elf32-v850.c - -Thu Jan 2 19:30:23 1997 Michael Meissner - - * v850.h: New file, provide V850 specific definitions. - -Tue Dec 31 14:44:32 1996 Ian Lance Taylor - - * common.h (DT_AUXILIARY): Define. - (DT_FILTER): Define. - -Wed Dec 4 05:03:37 1996 Jason Merrill - - * dwarf2.h: Update. - -Tue Nov 26 10:44:47 1996 Ian Lance Taylor - - * mips.h (STO_MIPS16): Define. - -Tue Nov 12 15:45:42 1996 Martin M. Hunt - - * d10v.h: Remove empty file. - -Tue Oct 8 11:31:24 1996 Ian Lance Taylor - - * mips.h (EF_MIPS_ABI2): Define. - -Thu Oct 3 10:01:40 1996 Jeffrey A Law (law@cygnus.com) - - * common.h: Break mn10x00 support into mn10200 and mn10300. - -Wed Oct 2 21:26:43 1996 Jeffrey A Law (law@cygnus.com) - - * common.h (EM_CYGNUS_MN10x00): Define. - -Mon Sep 23 09:18:04 1996 Doug Evans - - * m32r.h: New file. - -Fri Aug 30 17:06:21 1996 Ian Lance Taylor - - * common.h (EM_SH): Define. - -Tue Aug 20 14:47:54 1996 J.T. Conklin - - * common.h (EM_CYGNUS_V850): Define. - -Mon Aug 19 10:59:10 1996 Doug Evans - - * common.h (EM_CYGNUS_M32R): Define. - -Mon Jul 22 18:59:55 1996 Ian Lance Taylor - - * mips.h (SHT_MIPS_IFACE, SHT_MIPS_CONTENT): Define. - (SHT_MIPS_SYMBOL_LIB): Define. - (SHF_MIPS_MERGE, SHF_MIPS_ADDR32, SHF_MIPS_ADDR64): Define. - (SHF_MIPS_NOSTRIP, SHF_MIPS_LOCAL, SHF_MIPS_NAMES): Define. - -Thu Jul 18 19:12:15 1996 Stan Shebs - - * dwarf2.h: New file. - -Jul 18 13:20:39 1996 Martin M. Hunt - - * common.h (EM_CYGNUS_D10V): Define. - * d10v.h: New file. - -Fri Jun 21 12:33:24 1996 Richard Henderson - - * alpha.h: New file. - * common.h (EM_ALPHA): Define. - -Fri May 31 17:28:05 1996 Ian Lance Taylor - - * mips.h (Elf_External_Options, Elf_Internal_Options): Define. - (bfd_mips_elf_swap_options_in): Declare. - (bfd_mips_elf_swap_options_out): Declare. - (ODK_*): Define. - (Elf64_External_RegInfo, Elf64_Internal_RegInfo): Define. - (bfd_mips_elf64_swap_reginfo_in): Declare. - (bfd_mips_elf64_swap_reginfo_out): Declare. - -Thu May 30 12:35:57 1996 Ian Lance Taylor - - * mips.h (E_MIPS_ARCH_4): Define. - -Wed May 29 15:35:33 1996 Ian Lance Taylor - - * mips.h (Elf64_Mips_External_Rel): Define. - (Elf64_Mips_Internal_Rel): Define. - (Elf64_Mips_External_Rela, Elf64_Mips_Internal_Rela): Define. - (RSS_*): Define. - -Mon Apr 22 18:26:30 1996 Doug Evans - - * sparc.h (R_SPARC_[56]): Always define. - -Mon Feb 19 01:55:56 1996 Doug Evans - - * sparc.h (R_SPARC_{PLT32,HIPLT22,LOPLT10,PCPLT32,PCPLT22, - PCPLT10,5,6}): Don't define ifdef SPARC64_OLD_RELOCS. - -Tue Feb 6 11:33:58 1996 Doug Evans - - * sparc.h (enum sparc_elf_reloc_type): Define. - -Wed Jan 17 09:09:16 1996 Doug Evans - - * common.h: Define EM_SPARC32PLUS. - * sparc.h: New file. - -Thu Jan 11 16:27:34 1996 Michael Meissner - - * ppc.h (SHF_EXCLUDE, SHT_ORDERED): New fields from the abi. - -Thu Nov 30 16:47:18 1995 Ian Lance Taylor - - * internal.h (struct elf_segment_map): Add includes_filehdr and - includes_phdrs fields. - -Tue Nov 28 16:58:10 1995 Ian Lance Taylor - - * internal.h (struct elf_segment_map): Define. - -Tue Oct 31 15:19:36 1995 Fred Fish - - * common.h, dwarf.h, external.h, hppa.h, internal.h, - mips.h, ppc.h: Protect against multiple inclusions. - -Thu Sep 21 13:51:58 1995 Michael Meissner - - * ppc.h (EF_PPC_RELOCATABLE_LIB): Add new flag bit. - -Fri Sep 1 15:32:17 1995 Kazumoto Kojima - - * mips.h: Add some definitions used on Irix 5. - -Tue Jun 20 10:18:28 1995 Jeff Law (law@snake.cs.utah.edu) - - * hppa.h (CPU_PA_RISC1_0): Protect from redefinitions. - (CPU_PA_RISC1_1): Likewise. - -Wed Mar 8 18:14:37 1995 Michael Meissner - - * ppc.h: New file for PowerPC support. - -Tue Feb 14 13:59:13 1995 Michael Meissner - - * common.h (EM_PPC): Use offical value of 20, not 17. - (EM_PPC_OLD): Define this to be the old value of EM_PPC. - -Tue Jan 24 09:40:59 1995 Michael Meissner - - * common.h (EM_PPC): New macro, PowerPC machine id. - -Tue Jan 17 10:51:38 1995 Ian Lance Taylor - - * mips.h (SHT_MIPS_MSYM, SHT_MIPS_DWARF, SHT_MIPS_EVENTS): Define. - -Mon Oct 17 13:43:59 1994 Ian Lance Taylor - - * internal.h (Elf_Internal_Shdr): Remove rawdata and size fields. - Add bfd_section field. - -Tue May 24 16:11:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (Elf32_External_gptab): Define. - -Mon May 16 13:22:04 1994 Jeff Law (law@snake.cs.utah.edu) - - * common.h (EM_HPPA): Delete. - (EM_PARISC): Add. - * hppa.h: New file. - -Mon May 9 13:27:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * common.h (SHN_LORESERVE): Rename from SHN_LORESERV. - (ELF32_R_TYPE, ELF32_R_INFO): Don't rely on size of unsigned char. - (ELF64_R_TYPE): Don't rely on size of unsigned long. - -Mon Apr 25 15:53:09 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * internal.h (Elf_Internal_Shdr): Use PTR, not void *. - -Fri Mar 11 00:34:59 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * mips.h (SHN_MIPS_TEXT, SHN_MIPS_DATA): Define. - -Sat Mar 5 14:08:54 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * internal.h: Remove Elf32_*, Elf64_* typedefs. These names - cause conflicts with system headers, e.g. link.h in gdb/solib.c. - Combine 32- and 64-bit versions of *_Internal_Dyn. - * common.h: Replace uses of Elf64_Word, Elf64_Xword typedefs - by their expansion. - * mips.h: Replace uses of Elf32_Word, Elf32_Sword, Elf32_Addr - typedefs by their expansion. Add DT_MIPS_RLD_MAP definition. - -Fri Feb 18 10:39:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * common.h (EM_CYGNUS_POWERPC): Define. This may be temporary, - depending upon how quickly I can find a real PowerPC ABI. - -Mon Feb 7 08:27:13 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * internal.h: Change HOST_64_BIT to BFD_HOST_64_BIT. - -Wed Feb 2 14:12:18 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * common.h: Add comments regarding value of EM_HPPA and how to - pick an unofficial value. - -Wed Nov 17 17:14:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (SHT_MIPS_OPTIONS): Define. - -Mon Nov 8 17:57:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h: Added some more MIPS ABI macro definitions. - -Wed Nov 3 22:07:17 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * common.h (EM_MIPS_RS4_BE): New macro. - -Tue Oct 12 07:28:18 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h: New file. MIPS ABI specific information. - -Mon Jun 21 13:13:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * internal.h: Combined 32- and 64-bit versions of all structures - except *_Internal_Dyn. This will simply the assembler interface, - and some bfd code. - -Tue May 25 02:00:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * external.h, internal.h, common.h: Added 64-bit versions of some - structures and macros. Renamed old versions to put "32" in the - name. Some are unchanged. - -Thu Apr 29 12:12:20 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * common.h (EM_HPPA, NT_VERSION, STN_UNDEF, DT_*): New macros. - * external.h (Elf_External_Dyn): New type. - - * internal.h (Elf_Intenral_Shdr): New field `size'. - (Elf_Internal_Dyn): New type. - -Tue Apr 20 16:03:45 1993 Fred Fish (fnf@cygnus.com) - - * dwarf.h (LANG_CHILL): Change value to one randomly picked in - the user defined range, to reduce probability of collisions. - -Sun Nov 15 09:34:02 1992 Fred Fish (fnf@cygnus.com) - - * dwarf.h (AT_src_coords): Whitespace change only. - * dwarf.h (AT_body_begin, AT_body_end, LANG_MODULA2): - Add from latest gcc. - * dwarf.h (LANG_CHILL): Add as GNU extension. - -Sat Aug 1 13:46:53 1992 Fred Fish (fnf@cygnus.com) - - * dwarf.h: Replace with current version from gcc distribution. - -Fri Jun 19 19:05:09 1992 John Gilmore (gnu at cygnus.com) - - * internal.h: Add real struct tags to all the Type_Defs, so they - can be used in prototypes where the Type_Defs are not known. - -Fri Apr 3 20:58:58 1992 Mark Eichin (eichin at cygnus.com) - - * common.h: added ELF_R_{SYM,TYPE,INFO} for handling relocation - info - added EM_MIPS, and corrected value of EM_860 based on System V ABI - manual. - - * external.h: added Elf_External_{Rel,Rela}. - - * internal.h: added Elf_Internal_{Rel,Rela}. - added rawdata to Elf_Internal_Shdr. - -Sat Nov 30 20:43:59 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * common.h, dwarf.h, external.h, internal.h, ChangeLog; moved from - ../elf- - +2004-01-06 Alexandre Oliva + + 2003-09-18 Alexandre Oliva + * frv.h (EF_FRV_FDPIC): New macro. + (EF_FRV_PIC_FLAGS): Adjust. + 2003-08-08 Alexandre Oliva + * frv.h (R_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_GOTOFF12, + R_FRV_FUNCDESC_GOTOFFLO, R_FRV_FUNCDESC_GOTOFFHI, R_FRV_GOTOFF12, + R_FRV_GOTOFFLO, R_FRV_GOTOFFHI): New. + 2003-08-04 Alexandre Oliva + * frv.h (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO, R_FRV_FUNCDESC, + R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI, R_FRV_FUNCDESC_GOTLO): + New. + + +For older changes see ChangeLog-9103 Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 version-control: never End: diff --git a/include/elf/frv.h b/include/elf/frv.h index 08def62a329..8246a21bd41 100644 --- a/include/elf/frv.h +++ b/include/elf/frv.h @@ -35,6 +35,20 @@ START_RELOC_NUMBERS (elf_frv_reloc_type) RELOC_NUMBER (R_FRV_GPREL32, 8) RELOC_NUMBER (R_FRV_GPRELHI, 9) RELOC_NUMBER (R_FRV_GPRELLO, 10) + RELOC_NUMBER (R_FRV_GOT12, 11) + RELOC_NUMBER (R_FRV_GOTHI, 12) + RELOC_NUMBER (R_FRV_GOTLO, 13) + RELOC_NUMBER (R_FRV_FUNCDESC, 14) + RELOC_NUMBER (R_FRV_FUNCDESC_GOT12, 15) + RELOC_NUMBER (R_FRV_FUNCDESC_GOTHI, 16) + RELOC_NUMBER (R_FRV_FUNCDESC_GOTLO, 17) + RELOC_NUMBER (R_FRV_FUNCDESC_VALUE, 18) + RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFF12, 19) + RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFHI, 20) + RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFLO, 21) + RELOC_NUMBER (R_FRV_GOTOFF12, 22) + RELOC_NUMBER (R_FRV_GOTOFFHI, 23) + RELOC_NUMBER (R_FRV_GOTOFFLO, 24) RELOC_NUMBER (R_FRV_GNU_VTINHERIT, 200) RELOC_NUMBER (R_FRV_GNU_VTENTRY, 201) END_RELOC_NUMBERS(R_FRV_max) @@ -67,6 +81,7 @@ END_RELOC_NUMBERS(R_FRV_max) #define EF_FRV_LIBPIC 0x00001000 /* -mlibrary-pic */ #define EF_FRV_G0 0x00002000 /* -G 0, no small data ptr */ #define EF_FRV_NOPACK 0x00004000 /* -mnopack */ +#define EF_FRV_FDPIC 0x00008000 /* -mfdpic */ #define EF_FRV_CPU_MASK 0xff000000 /* specific cpu bits */ #define EF_FRV_CPU_GENERIC 0x00000000 /* generic FRV */ @@ -78,7 +93,8 @@ END_RELOC_NUMBERS(R_FRV_max) #define EF_FRV_CPU_FR550 0x06000000 /* FRV550 */ /* Mask of PIC related bits */ -#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC) +#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC \ + | EF_FRV_FDPIC) /* Mask of all flags */ #define EF_FRV_ALL_FLAGS (EF_FRV_GPR_MASK | \ diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 42cf9a5e4f5..8f0d6d76359 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3102 +1,17 @@ -2003-10-21 Peter Barada - Bernardo Innocenti +2004-01-12 Anil Paranjpe + + * h8300.h (BITOP): Pass MEMRELAX flag. - * m68k.h: Add MCFv4/MCF5528x support. +2004-01-09 Anil Paranjpe -2003-10-19 Hans-Peter Nilsson - - * mmix.h (JMP_INSN_BYTE): Define. - -2003-09-30 Chris Demetriou - - * mips.h: Document +E, +F, +G, +H, and +I operand types. - Update documentation of I, +B and +C operand types. - (INSN_ISA64R2, ISA_MIPS64R2, CPU_MIPS64R2): New defines. - (M_DEXT, M_DINS): New enum values. - -2003-09-04 Nick Clifton - - * v850.h (PROCESSOR_V850E1): Define. - -2003-08-19 Alan Modra - - * ppc.h (PPC_OPCODE_440): Define. Formatting. Use hex for other - PPC_OPCODE_* defines. - -2003-08-16 Jason Eckhardt - - * i860.h (fmov.ds): Expand as famov.ds. - (fmov.sd): Expand as famov.sd. - (pfmov.ds): Expand as pfamov.ds. - -2003-08-07 Michael Meissner - - * cgen.h: Remove PARAM macro usage in all prototypes. - (CGEN_EXTRACT_INFO): Use void * instead of PTR. - (cgen_print_fn): Ditto. - (CGEN_HW_ENTRY): Ditto. - (CGEN_MAYBE_MULTI_IFLD): Ditto. - (struct cgen_insn): Ditto. - (CGEN_CPU_TABLE): Ditto. - -2003-08-07 Alan Modra - - * alpha.h: Remove PARAMS macro. - * arc.h: Likewise. - * d10v.h: Likewise. - * d30v.h: Likewise. - * i370.h: Likewise. - * or32.h: Likewise. - * pj.h: Likewise. - * ppc.h: Likewise. - * sparc.h: Likewise. - * tic80.h: Likewise. - * v850.h: Likewise. - -2003-07-18 Michael Snyder - - * include/opcode/h8sx.h (DO_MOVA1, DO_MOVA2): Reformatting. - -2003-07-15 Richard Sandiford - - * mips.h (CPU_RM7000): New macro. - (OPCODE_IS_MEMBER): Match CPU_RM7000 against 4650 insns. - -2003-07-09 Alexandre Oliva - - 2000-04-01 Alexandre Oliva - * mn10300.h (AM33_2): Renamed from AM33. - 2000-03-31 Alexandre Oliva - * mn10300.h (AM332, FMT_D3): Defined. - (MN10300_OPERAND_FSREG, MN10300_OPERAND_FDREG): Likewise. - (MN10300_OPERAND_FPCR): Likewise. - -2003-07-01 Martin Schwidefsky - - * s390.h (s390_opcode_cpu_val): Add enum for cpu type z990. - -2003-06-25 Richard Sandiford - - * h8300.h (IMM2_NS, IMM8_NS, IMM16_NS): Remove. - (IMM8U, IMM8U_NS): Define. - (h8_opcodes): Use IMM8U_NS for mov.[wl] #xx:8,@yy. - -2003-06-25 Richard Sandiford - - * h8300.h (h8_opcodes): Fix the mov.l @(dd:32,ERs),ERd and - mov.l ERs,@(dd:32,ERd) entries. - -2003-06-23 H.J. Lu - - * i386.h (i386_optab): Support Intel Precott New Instructions. - -2003-06-10 Gary Hade - - * ppc.h (PPC_OPERAND_DQ): Define. - -2003-06-10 Richard Sandiford - - * h8300.h (IMM4_NS, IMM8_NS): New. - (h8_opcodes): Replace IMM4 with IMM4_NS in mov.b and mov.w entries. - Likewise IMM8 for mov.w and mov.l. Likewise IMM16U for mov.l. - -2003-06-03 Michael Snyder - - * h8300.h (enum h8_model): Add AV_H8S to distinguish from H8H. - (ldc): Split ccr ops from exr ops (which are only available - on H8S or H8SX). - (stc): Ditto. - (andc, orc, xorc): Ditto. - (ldmac, stmac, clrmac, mac): Change access to AV_H8S. - -2003-06-03 Michael Snyder - and Bernd Schmidt - and Alexandre Oliva - * h8300.h: Add support for h8300sx instruction set. - -2003-05-23 Jason Eckhardt - - * i860.h (expand_type): Add XP_ONLY. - (scyc.b): New XP instruction. - (ldio.l): Likewise. - (ldio.s): Likewise. - (ldio.b): Likewise. - (ldint.l): Likewise. - (ldint.s): Likewise. - (ldint.b): Likewise. - (stio.l): Likewise. - (stio.s): Likewise. - (stio.b): Likewise. - (pfld.q): Likewise. - -2003-05-20 Jason Eckhardt - - * i860.h (flush): Set lower 3 bits properly and use 'L' - for the immediate operand type instead of 'i'. - -2003-05-20 Jason Eckhardt - - * i860.h (fzchks): Both S and R bits must be set. - (pfzchks): Likewise. - (faddp): Likewise. - (pfaddp): Likewise. - (fix.ss): Remove (invalid instruction). - (pfix.ss): Likewise. - (ftrunc.ss): Likewise. - (pftrunc.ss): Likewise. - -2003-05-18 Jason Eckhardt - - * i860.h (form, pform): Add missing .dd suffix. - -2003-05-13 Stephane Carrez - - * m68hc11.h (M68HC12_BANK_VIRT): Define to 0x010000 - -2003-04-07 Michael Snyder - - * h8300.h (ldc/stc): Fix up src/dst swaps. - -2003-04-09 J. Grant - - * mips.h: Correct comment typo. - -2003-03-21 Martin Schwidefsky - - * s390.h (s390_opcode_arch_val): Rename to s390_opcode_mode_val. - (S390_OPCODE_ESAME): Rename to S390_OPCODE_ZARCH. - (s390_opcode): Remove architecture. Add modes and min_cpu. - -2003-03-17 D.Venkatasubramanian - - * h8300.h (O_SYS_CMDLINE): New pseudo opcode for command line - processing. - -2003-02-21 Noida D.Venkatasubramanian - - * h8300.h (ldmac, stmac): Replace MACREG with MS32 and MD32. - -2003-01-23 Alan Modra - - * m68hc11.h (cpu6812s): Define. - -2003-01-07 Chris Demetriou - - * mips.h: Fix missing space in comment. - (INSN_ISA1, INSN_ISA2, INSN_ISA3, INSN_ISA4, INSN_ISA5) - (INSN_ISA32, INSN_ISA32R2, INSN_ISA64): Shift values right - by four bits. - -2003-01-02 Chris Demetriou - - * mips.h: Update copyright years to include 2002 (which had - been missed previously) and 2003. Make comments about "+A", - "+B", and "+C" operand types more descriptive. - -2002-12-31 Chris Demetriou - - * mips.h: Note that the "+D" operand type name is now used. - -2002-12-30 Chris Demetriou - - * mips.h: Document "+" as the start of two-character operand - type names, and add new "K", "+A", "+B", and "+C" operand types. - (OP_MASK_INSMSB, OP_SH_INSMSB, OP_MASK_EXTMSB) - (OP_SH_EXTMSB, INSN_ISA32R2, ISA_MIPS32R2, CPU_MIPS32R2): New - defines. - -2002-12-24 Dmitry Diky - - * msp430.h: New file. Defines msp430 opcodes. - -2002-12-30 D.Venkatasubramanian - - * h8300.h: Added some more pseudo opcodes for system call - processing. - -2002-12-19 Chris Demetriou - - * mips.h (OP_OP_COP0, OP_OP_COP1, OP_OP_COP2, OP_OP_COP3) - (OP_OP_LWC1, OP_OP_LWC2, OP_OP_LWC3, OP_OP_LDC1, OP_OP_LDC2) - (OP_OP_LDC3, OP_OP_SWC1, OP_OP_SWC2, OP_OP_SWC3, OP_OP_SDC1) - (OP_OP_SDC2, OP_OP_SDC3): Define. - -2002-12-16 Alan Modra - - * hppa.h (completer_chars): #if 0 out. - - * ns32k.h (struct ns32k_opcode): Constify "name", "operands" and - "default_args". - (struct not_wot): Constify "args". - (struct not): Constify "name". - (numopcodes): Delete. - (endop): Delete. - -2002-12-13 Alan Modra - - * pj.h (pj_opc_info_t): Add union. - -2002-12-04 David Mosberger - - * ia64.h: Fix copyright message. - (IA64_OPND_AR_CSD): New operand kind. - -2002-12-03 Richard Henderson - - * ia64.h (enum ia64_opnd): Add IA64_OPND_LDXMOV. - -2002-12-03 Alan Modra - - * cgen.h (struct cgen_maybe_multi_ifield): Add "const PTR p" to union. - Constify "leaf" and "multi". - -2002-11-19 Klee Dienes - - * h8300.h (h8_opcode): Remove 'noperands', 'idx', and 'size' - fields. - (h8_opcodes). Modify initializer and initializer macros to no - longer initialize the removed fields. - -2002-11-19 Svein E. Seldal - - * tic4x.h (c4x_insts): Fixed LDHI constraint - -2002-11-18 Klee Dienes - - * h8300.h (h8_opcode): Remove 'length' field. - (h8_opcodes): Mark as 'const' (both the declaration and - definition). Modify initializer and initializer macros to no - longer initialize the length field. - -2002-11-18 Klee Dienes - - * arc.h (arc_ext_opcodes): Declare as extern. - (arc_ext_operands): Declare as extern. - * i860.h (i860_opcodes): Declare as const. - -2002-11-18 Svein E. Seldal - - * tic4x.h: File reordering. Added enhanced opcodes. - -2002-11-16 Svein E. Seldal - - * tic4x.h: Major rewrite of entire file. Define instruction - classes, and put each instruction into a class. - -2002-11-11 Svein E. Seldal - - * tic4x.h: Added new opcodes and corrected some bugs. Add support - for new DSP types. - -2002-10-14 Alan Modra - - * cgen.h: Test __BFD_H_SEEN__ rather than BFD_VERSION_DATE. - -2002-09-30 Gavin Romig-Koch - Ken Raeburn - Aldy Hernandez - Eric Christopher - Richard Sandiford - - * mips.h: Update comment for new opcodes. - (OP_MASK_VECBYTE, OP_SH_VECBYTE): New. - (OP_MASK_VECALIGN, OP_SH_VECALIGN): New. - (INSN_4111, INSN_4120, INSN_5400, INSN_5500): New. - (CPU_VR4120, CPU_VR5400, CPU_VR5500): New. - (OPCODE_IS_MEMBER): Handle the new CPU_* values and INSN_* flags. - Don't match CPU_R4111 with INSN_4100. - -2002-08-19 Elena Zannoni - - From matthew green - - * ppc.h (PPC_OPCODE_SPE): New opcode flag for Powerpc e500 - instructions. - (PPC_OPCODE_ISEL, PPC_OPCODE_BRLOCK, PPC_OPCODE_PMR, - PPC_OPCODE_CACHELCK, PPC_OPCODE_RFMCI): New opcode flags for the - e500x2 Integer select, branch locking, performance monitor, - cache locking and machine check APUs, respectively. - (PPC_OPCODE_EFS): New opcode type for efs* instructions. - (PPC_OPCODE_CLASSIC): New opcode type for Classic PowerPC instructions. - -2002-08-13 Stephane Carrez - - * m68hc11.h (M6812_OP_PAGE): Define to identify call operand. - (M68HC12_BANK_VIRT, M68HC12_BANK_MASK, M68HC12_BANK_BASE, - M68HC12_BANK_SHIFT, M68HC12_BANK_PAGE_MASK): Define for 68HC12 - memory banks. - (M6811_OC1M5, M6811_OC1M4, M6811_MODF): Fix value. - -2002-07-09 Thiemo Seufer - - * mips.h (INSN_MIPS16): New define. - -2002-07-08 Alan Modra - - * i386.h: Remove IgnoreSize from movsx and movzx. - -2002-06-08 Alan Modra - - * a29k.h: Replace CONST with const. - (CONST): Don't define. - * convex.h: Replace CONST with const. - (CONST): Don't define. - * dlx.h: Replace CONST with const. - * or32.h (CONST): Don't define. - -2002-05-30 Chris G. Demetriou - - * mips.h (OP_SH_ALN, OP_MASK_ALN, OP_SH_VSEL, OP_MASK_VSEL) - (MDMX_FMTSEL_IMM_QH, MDMX_FMTSEL_IMM_OB, MDMX_FMTSEL_VEC_QH) - (MDMX_FMTSEL_VEC_OB, INSN_READ_MDMX_ACC, INSN_WRITE_MDMX_ACC) - (INSN_MDMX): New constants, for MDMX support. - (opcode character list): Add "O", "Q", "X", "Y", and "Z" for MDMX. - -2002-05-28 Kuang Hwa Lin - - * dlx.h: New file. - -2002-05-25 Alan Modra - - * ia64.h: Use #include "" instead of <> for local header files. - * sparc.h: Likewise. - -2002-05-22 Thiemo Seufer - - * mips.h: Add M_DROL, M_DROL_I, M_DROR, M_DROR_I macro cases. - -2002-05-17 Andrey Volkov - - * h8300.h: Corrected defs of all control regs - and eepmov instr. - -2002-04-11 Alan Modra - - * i386.h: Add intel mode cmpsd and movsd. - Put them before SSE2 insns, so that rep prefix works. - -2002-03-15 Chris G. Demetriou - - * mips.h (INSN_MIPS3D): New definition used to mark MIPS-3D - instructions. - (OPCODE_IS_MEMBER): Adjust comments to indicate that ASE bit masks - may be passed along with the ISA bitmask. - -2002-03-05 Paul Koning - - * pdp11.h: Add format codes for float instruction formats. - -2002-02-25 Alan Modra - - * ppc.h (PPC_OPCODE_POWER4, PPC_OPCODE_NOPOWER4): Define. - -Mon Feb 18 17:31:48 CET 2002 Jan Hubicka - - * i386.h (push,pop): Fix Reg64 to WordReg to allow 16bit operands. - -Mon Feb 11 12:53:19 CET 2002 Jan Hubicka - - * i386.h (push,pop): Allow 16bit operands in 64bit mode. - (xchg): Fix. - (in, out): Disable 64bit operands. - (call, jmp): Avoid REX prefixes. - (jcxz): Prohibit in 64bit mode - (jrcxz, loop): Add 64bit variants. - (movq): Fix patterns. - (movmskps, pextrw, pinstrw): Add 64bit variants. - -2002-01-31 Ivan Guzvinec - - * or32.h: New file. - -2002-01-22 Graydon Hoare - - * cgen.h (CGEN_MAYBE_MULTI_IFLD): New structure. - (CGEN_OPERAND): Add CGEN_MAYBE_MULTI_IFLD field. - -2002-01-21 Thomas Klausner - - * h8300.h: Comment typo fix. - -2002-01-03 matthew green - - * ppc.h (PPC_OPCODE_BOOKE): BookE is not Motorola specific. - (PPC_OPCODE_BOOKE64): Likewise. - -Mon Dec 31 16:45:41 2001 Jeffrey A Law (law@cygnus.com) - - * hppa.h (call, ret): Move to end of table. - (addb, addib): PA2.0 variants should have been PA2.0W. - (ldw, ldh, ldb, stw, sth, stb, stwa): Reorder to keep disassembler - happy. - (fldw, fldd, fstw, fstd, bb): Likewise. - (short loads/stores): Tweak format specifier slightly to keep - disassembler happy. - (indexed loads/stores): Likewise. - (absolute loads/stores): Likewise. - -2001-12-04 Alexandre Oliva - - * d10v.h (OPERAND_NOSP): New macro. - -2001-11-29 Alexandre Oliva - - * d10v.h (OPERAND_SP): New macro. - -2001-11-15 Alan Modra - - * ppc.h (struct powerpc_operand ): Add dialect param. - -2001-11-11 Timothy Wall - - * tic54x.h: Revise opcode layout; don't really need a separate - structure for parallel opcodes. - -2001-11-13 Zack Weinberg - Alan Modra - - * i386.h (i386_optab): Add entries for "sldr", "smsw" and "str" to - accept WordReg. - -2001-11-04 Chris Demetriou - - * mips.h (OPCODE_IS_MEMBER): Remove extra space. - -2001-10-30 Hans-Peter Nilsson - - * mmix.h: New file. - -2001-10-18 Chris Demetriou - - * mips.h (OPCODE_IS_MEMBER): Add a no-op term to the end - of the expression, to make source code merging easier. - -2001-10-17 Chris Demetriou - - * mips.h: Sort coprocessor instruction argument characters - in comment, add a few more words of description for "H". - -2001-10-17 Chris Demetriou - - * mips.h (INSN_SB1): New cpu-specific instruction bit. - (OPCODE_IS_MEMBER): Allow instructions matching INSN_SB1 - if cpu is CPU_SB1. - -2001-10-17 matthew green - - * ppc.h (PPC_OPCODE_BOOKE64): Fix typo. - -2001-10-12 matthew green - - * ppc.h (PPC_OPCODE_BOOKE, PPC_OPCODE_BOOKE64, PPC_OPCODE_403): New - opcode flags for BookE 32-bit, BookE 64-bit and PowerPC 403 - instructions, respectively. - -2001-09-27 Nick Clifton - - * v850.h: Remove spurious comment. - -2001-09-21 Nick Clifton - - * h8300.h: Fix compile time warning messages - -2001-09-04 Richard Henderson - - * alpha.h (struct alpha_operand): Pack elements into bitfields. - -2001-08-31 Eric Christopher - - * mips.h: Remove CPU_MIPS32_4K. - -2001-08-27 Torbjorn Granlund - - * ppc.h (PPC_OPERAND_DS): Define. - -2001-08-25 Andreas Jaeger - - * d30v.h: Fix declaration of reg_name_cnt. - - * d10v.h: Fix declaration of d10v_reg_name_cnt. - - * arc.h: Add prototypes from opcodes/arc-opc.c. - -2001-08-16 Thiemo Seufer - - * mips.h (INSN_10000): Define. - (OPCODE_IS_MEMBER): Check for INSN_10000. - -2001-08-10 Alan Modra - - * ppc.h: Revert 2001-08-08. - -2001-08-10 Richard Sandiford - - * mips.h (INSN_GP32): Remove. - (OPCODE_IS_MEMBER): Remove gp32 parameter. - (M_MOVE): New macro identifier. - -2001-08-08 Alan Modra - - 1999-10-25 Torbjorn Granlund - * ppc.h (struct powerpc_operand): New field `reloc'. - -2001-08-01 Aldy Hernandez - - * mips.h (INSN_ISA_MASK): Nuke bits 12-15. - -2001-07-12 Jeff Johnston - - * cgen.h (CGEN_INSN): Add regex support. - (build_insn_regex): Declare. - -2001-07-11 Frank Ch. Eigler - - * cgen.h (CGEN_MACH): Add insn_chunk_bitsize field. - (cgen_cpu_desc): Ditto. - -2001-07-07 Ben Elliston - - * m88k.h: Clean up and reformat. Remove unused code. - -2001-06-14 Geoffrey Keating - - * cgen.h (cgen_keyword): Add nonalpha_chars field. - -2001-05-23 Thiemo Seufer - - * mips.h (CPU_R12000): Define. - -2001-05-23 John Healy - - * cgen.h: Increased CGEN_MAX_SYNTAX_ELEMENTS to 48. - -2001-05-15 Thiemo Seufer - - * mips.h (INSN_ISA_MASK): Define. - -2001-05-12 Alan Modra - - * i386.h (i386_optab): Second operand of cvtps2dq is an xmm reg, - not an mmx reg. Swap xmm/mmx regs on both movdq2q and movq2dq, - and use InvMem as these insns must have register operands. - -2001-05-04 Alan Modra - - * i386.h (i386_optab): Move InvMem to first operand of pmovmskb - and pextrw to swap reg/rm assignments. - -2001-04-05 Hans-Peter Nilsson - - * cris.h (enum cris_insn_version_usage): Correct comment for - cris_ver_v3p. - -2001-03-24 Alan Modra - - * i386.h (i386_optab): Correct entry for "movntdq". Add "punpcklqdq". - Add InvMem to first operand of "maskmovdqu". - -2001-03-22 Hans-Peter Nilsson - - * cris.h (ADD_PC_INCR_OPCODE): New macro. - -2001-03-21 Kazu Hirata - - * h8300.h: Fix formatting. - -2001-03-22 Alan Modra - - * i386.h (i386_optab): Add paddq, psubq. - -2001-03-19 Alan Modra - - * i386.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Define. - -2001-02-28 Igor Shevlyakov - - * m68k.h: new defines for Coldfire V4. Update mcf to know - about mcf5407. - -2001-02-18 lars brinkhoff - - * pdp11.h: New file. - -2001-02-12 Jan Hubicka - - * i386.h (i386_optab): SSE integer converison instructions have - 64bit versions on x86-64. - -2001-02-10 Nick Clifton - - * mips.h: Remove extraneous whitespace. Formating change to allow - for future contribution. - -2001-02-09 Martin Schwidefsky - - * s390.h: New file. - -2001-02-02 Patrick Macdonald - - * cgen.h (CGEN_SYNTAX_CHAR_TYPE): Typedef as unsigned short. - (CGEN_MAX_SYNTAX_ELEMENTS): Rename from CGEN_MAX_SYNTAX_BYTES. - (CGEN_SYNTAX): Define using CGEN_MAX_SYNTAX_ELEMENTS. - -2001-01-24 Karsten Keil - - * i386.h (i386_optab): Fix swapgs - -2001-01-14 Alan Modra - - * hppa.h: Describe new '<' and '>' operand types, and tidy - existing comments. - (pa_opcodes): Add entries for missing wide mode ldi,ldo,ldw,stw. - Remove duplicate "ldw j(s,b),x". Sort some entries. - -2001-01-13 Jan Hubicka - - * i386.h (i386_optab): Fix pusha and ret templates. - -2001-01-11 Peter Targett - - * arc.h (ARC_MACH_5, ARC_MACH_6, ARC_MACH_7, ARC_MACH_8): New - definitions for masking cpu type. - (arc_ext_operand_value) New structure for storing extended - operands. - (ARC_OPERAND_*) Flags for operand values. - -2001-01-10 Jan Hubicka - - * i386.h (pinsrw): Add. - (pshufw): Remove. - (cvttpd2dq): Fix operands. - (cvttps2dq): Likewise. - (movq2q): Rename to movdq2q. - -2001-01-10 Richard Schaal - - * i386.h: Correct movnti instruction. - -2001-01-09 Jeff Johnston - - * cgen.h (CGEN_SYNTAX_CHAR_TYPE): New typedef based on max number - of operands (unsigned char or unsigned short). - (CGEN_SYNTAX): Changed to make array CGEN_SYNTAX_CHAR_TYPE. - (CGEN_SYNTAX_CHAR): Changed to cast to unsigned char. - -2001-01-05 Jan Hubicka - - * i386.h (i386_optab): Make [sml]fence template to use immext field. - -2001-01-03 Jan Hubicka - - * i386.h (i386_optab): Fix 64bit pushf template; Add instructions - introduced by Pentium4 - -2000-12-30 Jan Hubicka - - * i386.h (i386_optab): Add "rex*" instructions; - add swapgs; disable jmp/call far direct instructions for - 64bit mode; add syscall and sysret; disable registers for 0xc6 - template. Add 'q' suffixes to extendable instructions, disable - obsolete instructions, add new sign/zero extension ones. - (i386_regtab): Add extended registers. - (*Suf): Add No_qSuf. - (q_Suf, wlq_Suf, bwlq_Suf): New. - -2000-12-20 Jan Hubicka - - * i386.h (i386_optab): Replace "Imm" with "EncImm". - (i386_regtab): Add flags field. - -2000-12-12 Nick Clifton - - * mips.h: Fix formatting. - -2000-12-01 Chris Demetriou - - mips.h (OP_MASK_SYSCALL, OP_SH_SYSCALL): Delete. - (OP_MASK_CODE20, OP_SH_CODE20): Define, with values of old - OP_*_SYSCALL definitions. - (OP_SH_CODE19, OP_MASK_CODE19): Define, for use as - 19 bit wait codes. - (MIPS operand specifier comments): Remove 'm', add 'U' and - 'J', and update the meaning of 'B' so that it's more general. - - * mips.h (INSN_ISA1, INSN_ISA2, INSN_ISA3, INSN_ISA4, - INSN_ISA5): Renumber, redefine to mean the ISA at which the - instruction was added. - (INSN_ISA32): New constant. - (INSN_4650, INSN_4010, INSN_4100, INSN_3900, INSN_GP32): - Renumber to avoid new and/or renumbered INSN_* constants. - (INSN_MIPS32): Delete. - (ISA_UNKNOWN): New constant to indicate unknown ISA. - (ISA_MIPS1, ISA_MIPS2, ISA_MIPS3, ISA_MIPS4, ISA_MIPS5, - ISA_MIPS32): New constants, defined to be the mask of INSN_* - constants available at that ISA level. - (CPU_UNKNOWN): New constant to indicate unknown CPU. - (CPU_4K, CPU_MIPS32_4K): Rename the former to the latter, - define it with a unique value. - (OPCODE_IS_MEMBER): Update for new ISA membership-related - constant meanings. - - * mips.h (INSN_ISA64, ISA_MIPS5, ISA_MIPS64): New - definitions. - - * mips.h (CPU_SB1): New constant. - -2000-10-20 Jakub Jelinek - - * sparc.h (enum sparc_opcode_arch_val): Add SPARC_OPCODE_ARCH_V9B. - Note that '3' is used for siam operand. - -2000-09-22 Jim Wilson - - * ia64.h (enum ia64_dependency_semantics): Add IA64_DVS_STOP. - -2000-09-13 Anders Norlander - - * mips.h: Use defines instead of hard-coded processor numbers. - (CPU_R2000, CPU_R3000, CPU_R3900, CPU_R4000, CPU_R4010, - CPU_VR4100, CPU_R4111, CPU_R4300, CPU_R4400, CPU_R4600, CPU_R4650, - CPU_R5000, CPU_R6000, CPU_R8000, CPU_R10000, CPU_MIPS32, CPU_4K, - CPU_4KC, CPU_4KM, CPU_4KP): Define.. - (OPCODE_IS_MEMBER): Use new defines. - (OP_MASK_SEL, OP_SH_SEL): Define. - (OP_MASK_CODE20, OP_SH_CODE20): Define. - Add 'P' to used characters. - Use 'H' for coprocessor select field. - Use 'm' for 20 bit breakpoint code. - Document new arg characters and add to used characters. - (INSN_MIPS32): New define for MIPS32 extensions. - (OPCODE_IS_MEMBER): Recognize MIPS32 instructions. - -2000-09-05 Alan Modra - - * hppa.h: Mention cz completer. - -2000-08-16 Jim Wilson - - * ia64.h (IA64_OPCODE_POSTINC): New. - -2000-08-15 H.J. Lu - - * i386.h: Swap the Intel syntax "movsx"/"movzx" due to the - IgnoreSize change. - -2000-08-08 Jason Eckhardt - - * i860.h: Small formatting adjustments. - -2000-07-29 Marek Michalkiewicz - - * avr.h (AVR_UNDEF_P, AVR_SKIP_P, AVR_DISP0_P): New macros. - Move related opcodes closer to each other. - Minor changes in comments, list undefined opcodes. - -2000-07-26 Dave Brolley - - * cgen.h (cgen_hw_lookup_by_num): Second parameter is unsigned. - -2000-07-22 Jason Eckhardt - - * i860.h (btne, bte, bla): Changed these opcodes - to use sbroff ('r') instead of split16 ('s'). - (J, K, L, M): New operand types for 16-bit aligned fields. - (ld.x, {p}fld.x, fst.x, pst.d): Changed these opcodes to - use I, J, K, L, M instead of just I. - (T, U): New operand types for split 16-bit aligned fields. - (st.x): Changed these opcodes to use S, T, U instead of just S. - (andh, andnoth, orh, xorh): Deleted 3-register forms as they do not - exist on the i860. - (pfgt.sd, pfle.sd): Deleted these as they do not exist on the i860. - (pfeq.ss, pfeq.dd): New opcodes. - (st.s): Fixed incorrect mask bits. - (fmlow): Fixed incorrect mask bits. - (fzchkl, pfzchkl): Fixed incorrect mask bits. - (faddz, pfaddz): Fixed incorrect mask bits. - (form, pform): Fixed incorrect mask bits. - (pfld.l): Fixed incorrect mask bits. - (fst.q): Fixed incorrect mask bits. - (all floating point opcodes): Fixed incorrect mask bits for - handling of dual bit. - -2000-07-20 Hans-Peter Nilsson - - cris.h: New file. - -2000-06-26 Marek Michalkiewicz - - * avr.h (AVR_ISA_WRAP): Remove, now assumed if not AVR_ISA_MEGA. - (AVR_ISA_ESPM): Remove, because ESPM removed in databook update. - (AVR_ISA_85xx): Remove, all uses changed back to AVR_ISA_2xxx. - (AVR_ISA_M83): Define for ATmega83, ATmega85. - (espm): Remove, because ESPM removed in databook update. - (eicall, eijmp): Move to the end of opcode table. - -2000-06-18 Stephane Carrez - - * m68hc11.h: New file for support of Motorola 68hc11. - -Fri Jun 9 21:51:50 2000 Denis Chertykov - - * avr.h: clr,lsl,rol, ... moved after add,adc, ... - -Wed Jun 7 21:39:54 2000 Denis Chertykov - - * avr.h: New file with AVR opcodes. - -Wed Apr 12 17:11:20 2000 Donald Lindsay - - * d10v.h: added ALONE attribute for d10v_opcode.exec_type. - -2000-05-23 Maciej W. Rozycki - - * i386.h: Allow d suffix on iret, and add DefaultSize modifier. - -2000-05-17 Maciej W. Rozycki - - * i386.h: Use sl_FP, not sl_Suf for fild. - -2000-05-16 Frank Ch. Eigler - - * cgen.h (CGEN_MAX_SYNTAX_BYTES): Increase to 32. Check that - it exceeds CGEN_ACTUAL_MAX_SYNTAX_BYTES, if set. - (CGEN_MAX_IFMT_OPERANDS): Increase to 16. Check that it exceeds - CGEN_ACTUAL_MAX_IFMT_OPERANDS, if set. - -2000-05-13 Alan Modra , - - * i386.h (i386_optab): Cpu686 for sysenter,sysexit,fxsave,fxrestore. - -2000-05-13 Alan Modra , - Alexander Sokolov - - * i386.h (i386_optab): Add cpu_flags for all instructions. - -2000-05-13 Alan Modra - - From Gavin Romig-Koch - * i386.h (wld_Suf): Define. Use on pushf, popf, pusha, popa. - -2000-05-04 Timothy Wall - - * tic54x.h: New. - -2000-05-03 J.T. Conklin - - * ppc.h (PPC_OPCODE_ALTIVEC): New opcode flag for vector unit. - (PPC_OPERAND_VR): New operand flag for vector registers. - -2000-05-01 Kazu Hirata - - * h8300.h (EOP): Add missing initializer. - -Fri Apr 21 15:03:37 2000 Jason Eckhardt - - * hppa.h (pa_opcodes): New opcodes for PA2.0 wide mode - forms of ld/st{b,h,w,d} and fld/fst{w,d} (16-bit displacements). - New operand types l,y,&,fe,fE,fx added to support above forms. - (pa_opcodes): Replaced usage of 'x' as source/target for - floating point double-word loads/stores with 'fx'. - -Fri Apr 21 13:20:53 2000 Richard Henderson - David Mosberger - Timothy Wall - Jim Wilson - - * ia64.h: New file. - -2000-03-27 Nick Clifton - - * d30v.h (SHORT_A1): Fix value. - (SHORT_AR): Renumber so that it is at the end of the list of short - instructions, not the end of the list of long instructions. - -2000-03-26 Alan Modra - - * i386.h: (UNIXWARE_COMPAT): Rename to SYSV386_COMPAT as the - problem isn't really specific to Unixware. - (OLDGCC_COMPAT): Define. - (i386_optab): If !OLDGCC_COMPAT, don't handle fsubp etc. with - destination %st(0). - Fix lots of comments. - -2000-03-02 J"orn Rennecke - - * d30v.h: - (SHORT_B2r, SHORT_B3, SHORT_B3r, SHORT_B3b, SHORT_B3br): Updated. - (SHORT_D1r, SHORT_D2, SHORT_D2r, SHORT_D2Br, SHORT_U): Updated. - (SHORT_F, SHORT_AF, SHORT_T, SHORT_A5, SHORT_CMP, SHORT_CMPU): Updated. - (SHORT_A1, SHORT_AA, SHORT_RA, SHORT_MODINC, SHORT_MODDEC): Updated. - (SHORT_C1, SHORT_C2, SHORT_UF, SHORT_A2, SHORT_NONE, LONG): Updated. - (LONG_U, LONG_Ur, LONG_CMP, LONG_M, LONG_M2, LONG_2, LONG_2r): Updated. - (LONG_2b, LONG_2br, LONG_D, LONG_Dr, LONG_Dbr): Updated. - -2000-02-25 Alan Modra - - * i386.h (fild, fistp): Change intel d_Suf form to fildd and - fistpd without suffix. - -2000-02-24 Nick Clifton - - * cgen.h (cgen_cpu_desc): Rename field 'flags' to - 'signed_overflow_ok_p'. - Delete prototypes for cgen_set_flags() and cgen_get_flags(). - -2000-02-24 Andrew Haley - - * cgen.h (CGEN_INSN_MACH_HAS_P): New macro. - (CGEN_CPU_TABLE): flags: new field. - Add prototypes for new functions. - -2000-02-24 Alan Modra - - * i386.h: Add some more UNIXWARE_COMPAT comments. - -2000-02-23 Linas Vepstas - - * i370.h: New file. - -2000-02-22 Chandra Chavva - - * d30v.h (FLAG_NOT_WITH_ADDSUBppp): Redefined as operation - cannot be combined in parallel with ADD/SUBppp. - -2000-02-22 Andrew Haley - - * mips.h: (OPCODE_IS_MEMBER): Add comment. - -1999-12-30 Andrew Haley - - * mips.h (OPCODE_IS_MEMBER): Add gp32 arg, which determines - whether synthetic opcodes (e.g. move) generate 32-bit or 64-bit - insns. - -2000-01-15 Alan Modra - - * i386.h: Qualify intel mode far call and jmp with x_Suf. - -1999-12-27 Alan Modra - - * i386.h: Add JumpAbsolute qualifier to all non-intel mode - indirect jumps and calls. Add FF/3 call for intel mode. - -Wed Dec 1 03:05:25 1999 Jeffrey A Law (law@cygnus.com) - - * mn10300.h: Add new operand types. Add new instruction formats. - -Wed Nov 24 20:28:58 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Correctly handle immediate for PA2.0 "bb" - instruction. - -1999-11-18 Gavin Romig-Koch - - * mips.h (INSN_ISA5): New. - -1999-11-01 Gavin Romig-Koch - - * mips.h (OPCODE_IS_MEMBER): New. - -1999-10-29 Nick Clifton - - * d30v.h (SHORT_AR): Define. - -1999-10-18 Michael Meissner - - * alpha.h (alpha_num_opcodes): Convert to unsigned. - (alpha_num_operands): Ditto. - -Sun Oct 10 01:46:56 1999 Jerry Quinn - - * hppa.h (pa_opcodes): Add load and store cache control to - instructions. Add ordered access load and store. - - * hppa.h (pa_opcode): Add new entries for addb and addib. - - * hppa.h (pa_opcodes): Fix cmpb and cmpib entries. - - * hppa.h (pa_opcodes): Add entries for cmpb and cmpib. - -Thu Oct 7 00:12:25 MDT 1999 Diego Novillo - - * d10v.h: Add flag RESTRICTED_NUM3 for imm3 operands. - -Thu Sep 23 07:08:38 1999 Jerry Quinn - - * hppa.h (pa_opcodes): Add "call" and "ret". Clean up "b", "bve" - and "be" using completer prefixes. - - * hppa.h (pa_opcodes): Add initializers to silence compiler. - - * hppa.h: Update comments about character usage. - -Mon Sep 20 03:55:31 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Fix minor thinkos introduced while cleaning - up the new fstw & bve instructions. - -Sun Sep 19 10:40:59 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Add remaining PA2.0 integer load/store - instructions. - - * hppa.h (pa_opcodes): Add remaining PA2.0 FP load/store instructions. - - * hppa.h (pa_opcodes): Add long offset double word load/store - instructions. - - * hppa.h (pa_opcodes): Add FLAG_STRICT variants of FP loads and - stores. - - * hppa.h (pa_opcodes): Handle PA2.0 fcnv, fcmp and ftest insns. - - * hppa.h (pa_opcodes): Finish support for PA2.0 "b" instructions. - - * hppa.h (pa_opcodes): Handle PA2.0 "bve" instructions. - - * hppa.h (pa_opcodes): Add new syntax "be" instructions. - - * hppa.h (pa_opcodes): Note use of 'M' and 'L'. - - * hppa.h (pa_opcodes): Add support for "b,l". - - * hppa.h (pa_opcodes): Add support for "b,gate". - -Sat Sep 18 11:41:16 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Use 'fX' for first register operand - in xmpyu. - - * hppa.h (pa_opcodes): Fix mask for probe and probei. - - * hppa.h (pa_opcodes): Fix mask for depwi. - -Tue Sep 7 13:44:25 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Add "addil" variant which has the %r1 as - an explicit output argument. - -Mon Sep 6 04:41:42 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h: Add strict variants of PA1.0/PA1.1 loads and stores. - Add a few PA2.0 loads and store variants. - -1999-09-04 Steve Chamberlain - - * pj.h: New file. - -1999-08-29 Alan Modra - - * i386.h (i386_regtab): Move %st to top of table, and split off - other fp reg entries. - (i386_float_regtab): To here. - -Sat Aug 28 00:25:25 1999 Jerry Quinn - - * hppa.h (pa_opcodes): Replace 'f' by 'v'. Prefix float register args - by 'f'. - - * hppa.h (pa_opcodes): Add extrd, extrw, depd, depdi, depw, depwi. - Add supporting args. - - * hppa.h: Document new completers and args. - * hppa.h (pa_opcodes): Add 64 bit patterns and pa2.0 syntax for uxor, - uaddcm, dcor, addi, add, sub, subi, shladd, rfi, and probe. Add pa2.0 - extensions for ssm, rsm, pdtlb, pitlb. Add performance instructions - pmenb and pmdis. - - * hppa.h (pa_opcodes): Add pa2.0 instructions hadd, hshl, - hshr, hsub, mixh, mixw, permh. - - * hppa.h (pa_opcodes): Change completers in instructions to - use 'c' prefix. - - * hppa.h (pa_opcodes): Add popbts, new forms of bb, havg, - hshladd, hshradd, shrpd, and shrpw instructions. Update arg comments. - - * hppa.h (pa_opcodes): Change fmpyfadd, fmpynfadd, fneg, - fnegabs to use 'I' instead of 'F'. - -1999-08-21 Alan Modra - - * i386.h: Add AMD athlon instructions, pfnacc, pfpnacc, pswapd. - Document pf2iw and pi2fw as athlon insns. Remove pswapw. - Alphabetically sort PIII insns. - -Wed Aug 18 18:14:40 1999 Doug Evans - - * cgen.h (CGEN_INSN_MACH_HAS_P): New macro. - -Fri Aug 6 09:46:35 1999 Jerry Quinn - - * hppa.h (pa_opcodes): Add 64 bit versions of or, xor, and, - and andcm. Add 32 and 64 bit version of cmpclr, cmpiclr. - - * hppa.h: Document 64 bit condition completers. - -Thu Aug 5 16:56:07 1999 Jerry Quinn - - * hppa.h (pa_opcodes): Change condition args to use '?' prefix. - -1999-08-04 Alan Modra - - * i386.h (i386_optab): Add DefaultSize modifier to all insns - that implicitly modify %esp. #undef d_Suf, x_suf, sld_suf, - sldx_suf, bwld_Suf, d_FP, x_FP, sld_FP, sldx_FP at end of table. - -Wed Jul 28 02:04:24 1999 Jerry Quinn - Jeff Law - - * hppa.h (pa_opcodes): Add "pushnom" and "pushbts". - - * hppa.h (pa_opcodes): Mark all PA2.0 opcodes with FLAG_STRICT. - - * hppa.h (pa_opcodes): Change xmpyu, fmpyfadd, - and fmpynfadd to use 'J' and 'K' instead of 'E' and 'X'. - -1999-07-13 Alan Modra - - * i386.h: Add "undocumented" AMD 3DNow! pf2iw, pi2fw, pswapw insns. - -Thu Jul 1 00:17:24 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (struct pa_opcode): Add new field "flags". - (FLAGS_STRICT): Define. - -Fri Jun 25 04:22:04 1999 Jerry Quinn - Jeff Law - - * hppa.h (pa_opcodes): Add pa2.0 clrbts instruction. - - * hppa.h (pa_opcodes): Add entries for mfia and mtsarcm instructions. - -1999-06-23 Alan Modra - - * i386.h: Allow `l' suffix on bswap. Allow `w' suffix on arpl, - lldt, lmsw, ltr, str, verr, verw. Add FP flag to fcmov*. Add FP - flag to fcomi and friends. - -Fri May 28 15:26:11 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Move integer arithmetic instructions after - integer logical instructions. - -1999-05-28 Linus Nordberg - - * m68k.h: Document new formats `E', `G', `H' and new places `N', - `n', `o'. - - * m68k.h: Define mcf5206e, mcf5307, mcf. Document new format `u' - and new places `m', `M', `h'. - -Thu May 27 04:13:54 1999 Joel Sherrill (joel@OARcorp.com - - * hppa.h (pa_opcodes): Add several processor specific system - instructions. - -Wed May 26 16:57:44 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pa_opcodes): Add second entry for "comb", "comib", - "addb", and "addib" to be used by the disassembler. - -1999-05-12 Alan Modra - - * i386.h (ReverseModrm): Remove all occurences. - (InvMem): Add to control/debug/test mov insns, movhlps, movlhps, - movmskps, pextrw, pmovmskb, maskmovq. - Change NoSuf to FP on all MMX, XMM and AMD insns as these all - ignore the data size prefix. - - * i386.h (i386_optab, i386_regtab): Add support for PIII SIMD. - Mostly stolen from Doug Ledford - -Sat May 8 23:27:35 1999 Richard Henderson - - * ppc.h (PPC_OPCODE_64_BRIDGE): New. - -1999-04-14 Doug Evans - - * cgen.h (CGEN_ATTR): Delete member num_nonbools. - (CGEN_ATTR_TYPE): Update. - (CGEN_ATTR_MASK): Number booleans starting at 0. - (CGEN_ATTR_VALUE): Update. - (CGEN_INSN_ATTR): Update. - -Mon Apr 12 23:43:27 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (fmpyfadd, fmpynfadd, fneg, fnegabs): New PA2.0 - instructions. - -Tue Mar 23 11:24:38 1999 Jeffrey A Law (law@cygnus.com) - - * hppa.h (bb, bvb): Tweak opcode/mask. - - -1999-03-22 Doug Evans - - * cgen.h (CGEN_ISA,CGEN_MACH): New typedefs. - (struct cgen_cpu_desc): Rename member mach to machs. New member isas. - New members word_bitsize,default_insn_bitsize,base_insn-bitsize, - min_insn_bitsize,max_insn_bitsize,isa_table,mach_table,rebuild_tables. - Delete member max_insn_size. - (enum cgen_cpu_open_arg): New enum. - (cpu_open): Update prototype. - (cpu_open_1): Declare. - (cgen_set_cpu): Delete. - -1999-03-11 Doug Evans - - * cgen.h (CGEN_HW_TABLE): Delete `num_init_entries' member. - (CGEN_OPERAND_NIL): New macro. - (CGEN_OPERAND): New member `type'. - (@arch@_cgen_operand_table): Delete decl. - (CGEN_OPERAND_INDEX,CGEN_OPERAND_TYPE,CGEN_OPERAND_ENTRY): Delete. - (CGEN_OPERAND_TABLE): New struct. - (cgen_operand_lookup_by_name,cgen_operand_lookup_by_num): Declare. - (CGEN_OPINST): Pointer to operand table entry replaced with enum. - (CGEN_CPU_TABLE): New member `isa'. Change member `operand_table', - now a CGEN_OPERAND_TABLE. Add CGEN_CPU_DESC arg to - {get,set}_{int,vma}_operand. - (@arch@_cgen_cpu_open): New arg `isa'. - (cgen_set_cpu): Ditto. - -Fri Feb 26 02:36:45 1999 Richard Henderson - - * i386.h: Fill in cmov and fcmov alternates. Add fcomi short forms. - -1999-02-25 Doug Evans - - * cgen.h (enum cgen_asm_type): Add CGEN_ASM_NONE. - (CGEN_HW_ENTRY): Delete member `next'. Change type of `type' to - enum cgen_hw_type. - (CGEN_HW_TABLE): New struct. - (hw_table): Delete declaration. - (CGEN_OPERAND): Change member hw to hw_type, change type from pointer - to table entry to enum. - (CGEN_OPINST): Ditto. - (CGEN_CPU_TABLE): Change member hw_list to hw_table. - -Sat Feb 13 14:13:44 1999 Richard Henderson - - * alpha.h (AXP_OPCODE_EV6): New. - (AXP_OPCODE_NOPAL): Include it. - -1999-02-09 Doug Evans - - * cgen.h (CGEN_CPU_DESC): Renamed from CGEN_OPCODE_DESC. - All uses updated. New members int_insn_p, max_insn_size, - parse_operand,insert_operand,extract_operand,print_operand, - sizeof_fields,set_fields_bitsize,get_int_operand,set_int_operand, - get_vma_operand,set_vma_operand,parse_handlers,insert_handlers, - extract_handlers,print_handlers. - (CGEN_ATTR): Change type of num_nonbools to unsigned int. - (CGEN_ATTR_BOOL_OFFSET): New macro. - (CGEN_ATTR_MASK): Subtract it to compute bit number. - (CGEN_ATTR_VALUE): Redo bool/nonbool attr calculation. - (cgen_opcode_handler): Renamed from cgen_base. - (CGEN_HW_ATTR_VALUE): Renamed from CGEN_HW_ATTR, all uses updated. - (CGEN_OPERAND_ATTR_VALUE): Renamed from CGEN_OPERAND_ATTR, - all uses updated. - (CGEN_OPERAND_INDEX): Rewrite to use table entry, not global. - (enum cgen_opinst_type): Renamed from cgen_operand_instance_type. - (CGEN_IFLD_ATTR_VALUE): Renamed from CGEN_IFLD_ATTR, all uses updated. - (CGEN_OPCODE,CGEN_IBASE): New types. - (CGEN_INSN): Rewrite. - (CGEN_{ASM,DIS}_HASH*): Delete. - (init_opcode_table,init_ibld_table): Declare. - (CGEN_INSN_ATTR): New type. - -Mon Feb 1 21:09:14 1999 Catherine Moore - - * i386.h (d_Suf, x_Suf, sld_Suf, sldx_Suf, bwld_Suf): Define. - (x_FP, d_FP, dls_FP, sldx_FP): Define. - Change *Suf definitions to include x and d suffixes. - (movsx): Use w_Suf and b_Suf. - (movzx): Likewise. - (movs): Use bwld_Suf. - (fld): Change ordering. Use sld_FP. - (fild): Add Intel Syntax equivalent of fildq. - (fst): Use sld_FP. - (fist): Use sld_FP. - (fstp): Use sld_FP. Add x_FP version. - (fistp): LLongMem version for Intel Syntax. - (fcom, fcomp): Use sld_FP. - (fadd, fiadd, fsub): Use sld_FP. - (fsubr): Use sld_FP. - (fmul, fimul, fdvi, fidiv, fdivr): Use sld_FP. - -1999-01-27 Doug Evans - - * cgen.h (enum cgen_mode): Add CGEN_MODE_TARGET_MAX, CGEN_MODE_INT, - CGEN_MODE_UINT. - -1999-01-16 Jeffrey A Law (law@cygnus.com) - - * hppa.h (bv): Fix mask. - -1999-01-05 Doug Evans - - * cgen.h (CGEN_ATTR_VALUE_TYPE): New typedef. - (CGEN_ATTR): Use it. - (CGEN_ATTR_TYPE,CGEN_ATTR_ENTRY): Ditto. - (CGEN_ATTR_TABLE): New member dfault. - -1998-12-30 Gavin Romig-Koch - - * mips.h (MIPS16_INSN_BRANCH): New. - -Wed Dec 9 10:38:48 1998 David Taylor - - The following is part of a change made by Edith Epstein - as part of a project to merge in - changes by HP; HP did not create ChangeLog entries. - - * hppa.h (completer_chars): list of chars to not put a space - after. - -Sun Dec 6 13:21:34 1998 Ian Lance Taylor - - * i386.h (i386_optab): Permit w suffix on processor control and - status word instructions. - -1998-11-30 Doug Evans - - * cgen.h (struct cgen_hw_entry): Delete const on attrs member. - (struct cgen_keyword_entry): Ditto. - (struct cgen_operand): Ditto. - (CGEN_IFLD): New typedef, with associated access macros. - (CGEN_IFMT): New typedef, with associated access macros. - (CGEN_IFMT): Renamed from CGEN_FORMAT. New member `iflds'. - (CGEN_IVALUE): New typedef. - (struct cgen_insn): Delete const on syntax,attrs members. - `format' now points to format data. Type of `value' is now - CGEN_IVALUE. - (struct cgen_opcode_table): New member ifld_table. - -1998-11-18 Doug Evans - - * cgen.h (cgen_extract_fn): Update type of `base_insn' arg. - (CGEN_OPERAND_INSTANCE): New member `attrs'. - (CGEN_OPERAND_INSTANCE_{ATTRS,ATTR}): New macros. - (cgen_dis_lookup_insn): Update type of `base_insn' arg. - (cgen_opcode_table): Update type of dis_hash fn. - (extract_operand): Update type of `insn_value' arg. - -Thu Oct 29 11:38:36 1998 Doug Evans - - * cgen.h (CGEN_VERSION_{MAJOR,MINOR,FIXLEVEL}): Delete. - -Tue Oct 27 08:57:59 1998 Gavin Romig-Koch - - * mips.h (INSN_MULT): Added. - -Tue Oct 20 11:31:34 1998 Alan Modra - - * i386.h (MAX_MNEM_SIZE): Rename from MAX_OPCODE_SIZE. - -Mon Oct 19 12:50:00 1998 Doug Evans - - * cgen.h (CGEN_INSN_INT): New typedef. - (CGEN_INT_INSN_P): Renamed from CGEN_INT_INSN. - (CGEN_INSN_BYTES): Renamed from cgen_insn_t. - (CGEN_INSN_BYTES_PTR): New typedef. - (CGEN_EXTRACT_INFO): New typedef. - (cgen_insert_fn,cgen_extract_fn): Update. - (cgen_opcode_table): New member `insn_endian'. - (assemble_insn,lookup_insn,lookup_get_insn_operands): Update. - (insert_operand,extract_operand): Update. - (cgen_get_insn_value,cgen_put_insn_value): Add prototypes. - -Fri Oct 9 13:38:13 1998 Doug Evans - - * cgen.h (CGEN_ATTR_BOOLS): New macro. - (struct CGEN_HW_ENTRY): New member `attrs'. - (CGEN_HW_ATTR): New macro. - (struct CGEN_OPERAND_INSTANCE): New member `name'. - (CGEN_INSN_INVALID_P): New macro. - -Mon Oct 5 00:21:07 1998 Jeffrey A Law (law@cygnus.com) - - * hppa.h: Add "fid". - -Sun Oct 4 21:00:00 1998 Alan Modra - - From Robert Andrew Dale - * i386.h (i386_optab): Add AMD 3DNow! instructions. - (AMD_3DNOW_OPCODE): Define. - -Tue Sep 22 17:53:47 1998 Nick Clifton - - * d30v.h (EITHER_BUT_PREFER_MU): Define. - -Mon Aug 10 14:09:38 1998 Doug Evans - - * cgen.h (cgen_insn): #if 0 out element `cdx'. - -Mon Aug 3 12:21:57 1998 Doug Evans - - Move all global state data into opcode table struct, and treat - opcode table as something that is "opened/closed". - * cgen.h (CGEN_OPCODE_DESC): New type. - (all fns): New first arg of opcode table descriptor. - (cgen_set_parse_operand_fn): Add prototype. - (cgen_current_machine,cgen_current_endian): Delete. - (CGEN_OPCODE_TABLE): New members mach,endian,operand_table, - parse_operand_fn,asm_hash_table,asm_hash_table_entries, - dis_hash_table,dis_hash_table_entries. - (opcode_open,opcode_close): Add prototypes. - - * cgen.h (cgen_insn): New element `cdx'. - -Thu Jul 30 21:44:25 1998 Frank Ch. Eigler - - * d30v.h (FLAG_LKR): New flag for "left-kills-right" instructions. - -Tue Jul 28 10:59:07 1998 Jeffrey A Law (law@cygnus.com) - - * mn10300.h: Add "no_match_operands" field for instructions. - (MN10300_MAX_OPERANDS): Define. - -Fri Jul 24 11:44:24 1998 Doug Evans - - * cgen.h (cgen_macro_insn_count): Declare. - -Tue Jul 21 13:12:13 1998 Doug Evans - - * cgen.h (CGEN_VERSION_{MAJOR,MINOR,FIXLEVEL}): Define. - (cgen_insert_fn,cgen_extract_fn): New arg `pc'. - (get_operand,put_operand): Replaced with get_{int,vma}_operand, - set_{int,vma}_operand. - -Fri Jun 26 11:09:06 1998 Jeffrey A Law (law@cygnus.com) - - * mn10300.h: Add "machine" field for instructions. - (MN103, AM30): Define machine types. - -Fri Jun 19 16:09:09 1998 Alan Modra - - * i386.h: Use FP, not sl_Suf, for fxsave and fxrstor. - -1998-06-18 Ulrich Drepper - - * i386.h: Add support for fxsave, fxrstor, sysenter and sysexit. - -Sat Jun 13 11:31:35 1998 Alan Modra - - * i386.h (i386_optab): Add general form of aad and aam. Add ud2a - and ud2b. - (i386_regtab): Allow cr0..7, db0..7, dr0..7, tr0..7, not just - those that happen to be implemented on pentiums. - -Tue Jun 9 12:16:01 1998 Alan Modra - - * i386.h: Change occurences of Data16 to Size16, Data32 to Size32, - IgnoreDataSize to IgnoreSize. Flag address and data size prefixes - with Size16|IgnoreSize or Size32|IgnoreSize. - -Mon Jun 8 12:15:52 1998 Alan Modra - - * i386.h (REPNE): Rename to REPNE_PREFIX_OPCODE. - (REPE): Rename to REPE_PREFIX_OPCODE. - (i386_regtab_end): Remove. - (i386_prefixtab, i386_prefixtab_end): Remove. - (i386_optab): Use NULL as sentinel rather than "" to suit rewrite - of md_begin. - (MAX_OPCODE_SIZE): Define. - (i386_optab_end): Remove. - (sl_Suf): Define. - (sl_FP): Use sl_Suf. - - * i386.h (i386_optab): Allow 16 bit displacement for `mov - mem,acc'. Combine 16 and 32 bit forms of various insns. Allow 16 - bit form of ljmp. Add IsPrefix modifier to prefixes. Add addr32, - data32, dword, and adword prefixes. - (i386_regtab): Add BaseIndex modifier to valid 16 bit base/index - regs. - -Fri Jun 5 23:42:43 1998 Alan Modra - - * i386.h (i386_regtab): Remove BaseIndex modifier from esp. - - * i386.h: Allow `l' suffix on fld, fst, fstp, fcom, fcomp with - register operands, because this is a common idiom. Flag them with - a warning. Allow illegal faddp, fsubp, fsubrp, fmulp, fdivp, - fdivrp because gcc erroneously generates them. Also flag with a - warning. - - * i386.h: Add suffix modifiers to most insns, and tighter operand - checks in some cases. Fix a number of UnixWare compatibility - issues with float insns. Merge some floating point opcodes, using - new FloatMF modifier. - (WORD_PREFIX_OPCODE): Rename to DATA_PREFIX_OPCODE for - consistency. - - * i386.h: Change occurence of ShortformW to W|ShortForm. Add - IgnoreDataSize where appropriate. - -Wed Jun 3 18:28:45 1998 Alan Modra - - * i386.h: (one_byte_segment_defaults): Remove. - (two_byte_segment_defaults): Remove. - (i386_regtab): Add BaseIndex to 32 bit regs reg_type. - -Fri May 15 15:59:04 1998 Doug Evans - - * cgen.h (cgen_hw_lookup_by_name): Renamed from cgen_hw_lookup. - (cgen_hw_lookup_by_num): Declare. - -Thu May 7 09:27:58 1998 Frank Ch. Eigler - - * mips.h (OP_{SH,MASK}_CODE2): Added "q" operand format for lower - ten bits of MIPS ISA1 "break" instruction, and for "sdbbp" - -Thu May 7 02:14:08 1998 Doug Evans - - * cgen.h (cgen_asm_init_parse): Delete. - (cgen_save_fixups,cgen_restore_fixups,cgen_swap_fixups): Delete. - (cgen_asm_record_register,cgen_asm_finish_insn): Delete. - -Mon Apr 27 10:13:11 1998 Doug Evans - - * cgen.h (CGEN_ATTR_TYPE): Delete `const', moved to uses. - (cgen_asm_finish_insn): Update prototype. - (cgen_insn): New members num, data. - (CGEN_INSN_TABLE): Members asm_hash, asm_hash_table_size, - dis_hash, dis_hash_table_size moved to ... - (CGEN_OPCODE_TABLE). Here. Renamed from CGEN_OPCODE_DATA. - All uses updated. New members asm_hash_p, dis_hash_p. - (CGEN_MINSN_EXPANSION): New struct. - (cgen_expand_macro_insn): Declare. - (cgen_macro_insn_count): Declare. - (get_insn_operands): Update prototype. - (lookup_get_insn_operands): Declare. - -Tue Apr 21 17:11:32 1998 Alan Modra - - * i386.h (i386_optab): Change iclrKludge and imulKludge to - regKludge. Add operands types for string instructions. - -Mon Apr 20 14:40:29 1998 Tom Tromey - - * i386.h (X): Renamed from `Z_' to preserve formatting of opcode - table. - -Sun Apr 19 13:54:06 1998 Tom Tromey - - * i386.h (Z_): Renamed from `_' to avoid clash with common alias - for `gettext'. - -Fri Apr 3 12:04:48 1998 Alan Modra - - * i386.h: Remove NoModrm flag from all insns: it's never checked. - Add IsString flag to string instructions. - (IS_STRING): Don't define. - (LOCK_PREFIX_OPCODE, CS_PREFIX_OPCODE, DS_PREFIX_OPCODE): Define. - (ES_PREFIX_OPCODE, FS_PREFIX_OPCODE, GS_PREFIX_OPCODE): Define. - (SS_PREFIX_OPCODE): Define. - -Mon Mar 30 21:31:56 1998 Ian Lance Taylor - - * i386.h: Revert March 24 patch; no more LinearAddress. - -Mon Mar 30 10:25:54 1998 Alan Modra - - * i386.h (i386_optab): Remove fwait (9b) from all floating point - instructions, and instead add FWait opcode modifier. Add short - form of fldenv and fstenv. - (FWAIT_OPCODE): Define. - - * i386.h (i386_optab): Change second operand constraint of `mov - sreg,reg|mem' instruction from Reg16|Mem to WordReg|WordMem to - allow legal instructions such as `movl %gs,%esi' - -Fri Mar 27 18:30:52 1998 Ian Lance Taylor - - * h8300.h: Various changes to fully bracket initializers. - -Tue Mar 24 18:32:47 1998 H.J. Lu - - * i386.h: Set LinearAddress for lidt and lgdt. - -Mon Mar 2 10:44:07 1998 Doug Evans - - * cgen.h (CGEN_BOOL_ATTR): New macro. - -Thu Feb 26 15:54:31 1998 Michael Meissner - - * d30v.h (FLAG_DELAY): New flag for delayed branches/jumps. - -Mon Feb 23 10:38:21 1998 Doug Evans - - * cgen.h (CGEN_CAT3): Delete. Use CONCAT3 now. - (cgen_insn): Record syntax and format entries here, rather than - separately. - -Tue Feb 17 21:42:56 1998 Nick Clifton - - * cgen.h (CGEN_SYNTAX_MAKE_FIELD): New macro. - -Tue Feb 17 16:00:56 1998 Doug Evans - - * cgen.h (cgen_insert_fn): Change type of result to const char *. - (cgen_parse_{signed,unsigned}_integer): Delete min,max arguments. - (CGEN_{INSN,KEYWORD,OPERAND}_NBOOL_ATTRS): Renamed from ..._MAX_ATTRS. - -Thu Feb 12 18:30:41 1998 Doug Evans - - * cgen.h (lookup_insn): New argument alias_p. - -Thu Feb 12 03:41:00 1998 J"orn Rennecke - -Fix rac to accept only a0: - * d10v.h (OPERAND_ACC): Split into: - (OPERAND_ACC0, OPERAND_ACC1) . - (OPERAND_GPR): Define. - -Wed Feb 11 17:31:53 1998 Doug Evans - - * cgen.h (CGEN_FIELDS): Define here. - (CGEN_HW_ENTRY): New member `type'. - (hw_list): Delete decl. - (enum cgen_mode): Declare. - (CGEN_OPERAND): New member `hw'. - (enum cgen_operand_instance_type): Declare. - (CGEN_OPERAND_INSTANCE): New type. - (CGEN_INSN): New member `operands'. - (CGEN_OPCODE_DATA): Make hw_list const. - (get_insn_operands,lookup_insn): Add prototypes for. - -Tue Feb 3 17:11:23 1998 Doug Evans - - * cgen.h (CGEN_INSN_MAX_ATTRS): Renamed from CGEN_MAX_INSN_ATTRS. - (CGEN_HW_ENTRY): Move `next' entry to end of struct. - (CGEN_KEYWORD_MAX_ATTRS): Renamed from CGEN_MAX_KEYWORD_ATTRS. - (CGEN_OPERAND_MAX_ATTRS): Renamed from CGEN_MAX_OPERAND_ATTRS. - -Mon Feb 2 19:19:15 1998 Ian Lance Taylor - - * cgen.h: Correct typo in comment end marker. - -Mon Feb 2 17:10:38 1998 Steve Haworth - - * tic30.h: New file. - -Thu Jan 22 17:54:56 1998 Nick Clifton - - * cgen.h: Add prototypes for cgen_save_fixups(), - cgen_restore_fixups(), and cgen_swap_fixups(). Change prototype - of cgen_asm_finish_insn() to return a char *. - -Wed Jan 14 17:21:43 1998 Nick Clifton - - * cgen.h: Formatting changes to improve readability. - -Mon Jan 12 11:37:36 1998 Doug Evans - - * cgen.h (*): Clean up pass over `struct foo' usage. - (CGEN_ATTR): Make unsigned char. - (CGEN_ATTR_TYPE): Update. - (CGEN_ATTR_{ENTRY,TABLE}): New types. - (cgen_base): Move member `attrs' to cgen_insn. - (CGEN_KEYWORD): New member `null_entry'. - (CGEN_{SYNTAX,FORMAT}): New types. - (cgen_insn): Format and syntax separated from each other. - -Tue Dec 16 15:15:52 1997 Michael Meissner - - * d30v.h (d30v_opcode): Reorder flags somewhat, add new flags for - 2 word load/store, ADDppp/SUBppp, 16/32 bit multiply. Make - flags_{used,set} long. - (d30v_operand): Make flags field long. - -Mon Dec 1 12:24:44 1997 Andreas Schwab - - * m68k.h: Fix comment describing operand types. - -Sun Nov 23 22:31:27 1997 Michael Meissner - - * d30v.h (SHORT_CMPU): Add case for cmpu instruction, and move - everything else after down. - -Tue Nov 18 18:45:14 1997 J"orn Rennecke - - * d10v.h (OPERAND_FLAG): Split into: - (OPERAND_FFLAG, OPERAND_CFLAG) . - -Thu Nov 13 11:04:24 1997 Gavin Koch - - * mips.h (struct mips_opcode): Changed comments to reflect new - field usage. - -Fri Oct 24 22:36:20 1997 Ken Raeburn - - * mips.h: Added to comments a quick-ref list of all assigned - operand type characters. - (OP_{MASK,SH}_PERFREG): New macros. - -Wed Oct 22 17:28:33 1997 Richard Henderson - - * sparc.h: Add '_' and '/' for v9a asr's. - Patch from David Miller - -Tue Oct 14 13:22:29 1997 Jeffrey A Law (law@cygnus.com) - - * h8300.h: Bit ops with absolute addresses not in the 8 bit - area are not available in the base model (H8/300). - -Thu Sep 25 13:03:41 1997 Ian Lance Taylor - - * m68k.h: Remove documentation of ` operand specifier. - -Wed Sep 24 19:00:34 1997 Ian Lance Taylor - - * m68k.h: Document q and v operand specifiers. - -Mon Sep 15 18:28:37 1997 Nick Clifton - - * v850.h (struct v850_opcode): Add processors field. - (PROCESSOR_V850, PROCESSOR_ALL): New bit constants. - (PROCESSOR_V850E, PROCESSOR_NOT_V850): New bit constants. - (PROCESSOR_V850EA): New bit constants. - -Mon Sep 15 11:29:43 1997 Ken Raeburn - - Merge changes from Martin Hunt: - - * d30v.h: Allow up to 64 control registers. Add - SHORT_A5S format. - - * d30v.h (LONG_Db): New form for delayed branches. - - * d30v.h: (LONG_Db): New form for repeati. - - * d30v.h (SHORT_D2B): New form. - - * d30v.h (SHORT_A2): New form. - - * d30v.h (OPERAND_2REG): Add new operand to indicate 2 - registers are used. Needed for VLIW optimization. - -Mon Sep 8 14:05:45 1997 Doug Evans - - * cgen.h: Move assembler interface section - up so cgen_parse_operand_result is defined for cgen_parse_address. - (cgen_parse_address): Update prototype. - -Tue Sep 2 15:32:32 1997 Nick Clifton - - * v850.h (V850_OPREAND_ADJUST_SHORT_MEMORY): Removed. - -Tue Aug 26 12:21:52 1997 Ian Lance Taylor - - * i386.h (two_byte_segment_defaults): Correct base register 5 in - modes 1 and 2 to be ss rather than ds. From Gabriel Paubert - . - - * i386.h: Set ud2 to 0x0f0b. From Gabriel Paubert - . - - * i386.h: Comment fixes for ficom[p]?{s,l} from Gabriel Paubert - . - - * i386.h (JUMP_ON_CX_ZERO): Uncomment (define again). - (JUMP_ON_ECX_ZERO): Remove commented out macro. - -Fri Aug 22 10:38:29 1997 Nick Clifton - - * v850.h (V850_NOT_R0): New flag. - -Mon Aug 18 11:05:58 1997 Nick Clifton - - * v850.h (struct v850_opcode): Remove flags field. - -Wed Aug 13 18:45:48 1997 Nick Clifton - - * v850.h (struct v850_opcode): Add flags field. - (struct v850_operand): Extend meaning of 'bits' and 'shift' - fields. - (V850E_INSTRUCTION, V850EA_INSTRUCTION): New flags. - (V850E_PUSH_POP, V850E_IMMEDIATE16, V850E_IMMEDIATE32): New flags. - -Fri Aug 8 16:58:42 1997 Doug Evans - - * arc.h: New file. - -Thu Jul 24 21:16:58 1997 Doug Evans - - * sparc.h (sparc_opcodes): Declare as const. - -Thu Jul 10 12:53:25 1997 Jeffrey A Law (law@cygnus.com) - - * mips.h (FP_S, FP_D): Define. Bitmasks indicating if an insn - uses single or double precision floating point resources. - (INSN_NO_ISA, INSN_ISA1): Define. - (cpu specific INSN macros): Tweak into bitmasks outside the range - of INSN_ISA field. - -Mon Jun 16 14:10:00 1997 H.J. Lu - - * i386.h: Fix pand opcode. - -Mon Jun 2 11:35:09 1997 Gavin Koch - - * mips.h: Widen INSN_ISA and move it to a more convenient - bit position. Add INSN_3900. - -Tue May 20 11:25:29 1997 Gavin Koch - - * mips.h (struct mips_opcode): added new field membership. - -Mon May 12 16:26:50 1997 H.J. Lu - - * i386.h (movd): only Reg32 is allowed. - - * i386.h: add fcomp and ud2. From Wayne Scott - . - -Mon May 5 17:16:21 1997 Ian Lance Taylor - - * i386.h: Add MMX instructions. - -Mon May 5 12:45:19 1997 H.J. Lu - - * i386.h: Remove W modifier from conditional move instructions. - -Mon Apr 14 14:56:58 1997 Ian Lance Taylor - - * i386.h: Change the opcodes for fsubp, fsubrp, fdivp, and fdivrp - with no arguments to match that generated by the UnixWare - assembler. - -Thu Apr 10 14:35:00 1997 Doug Evans - - * cgen.h (_cgen_assemble_insn): New arg for errmsg. - (cgen_parse_operand_fn): Declare. - (cgen_init_parse_operand): Declare. - (cgen_parse_operand): Renamed from cgen_asm_parse_operand, - new argument `want'. - (enum cgen_parse_operand_result): Renamed from cgen_asm_result. - (enum cgen_parse_operand_type): New enum. - -Sat Apr 5 13:14:05 1997 Ian Lance Taylor - - * i386.h: Revert last patch for the NON_BROKEN_OPCODES cases. - -Fri Apr 4 11:46:11 1997 Doug Evans - - * cgen.h: New file. - -Fri Apr 4 14:02:32 1997 Ian Lance Taylor - - * i386.h: Correct opcode values for fsubp, fsubrp, fdivp, and - fdivrp. - -Tue Mar 25 22:57:26 1997 Stu Grossman (grossman@critters.cygnus.com) - - * v850.h (extract): Make unsigned. - -Mon Mar 24 14:38:15 1997 Ian Lance Taylor - - * i386.h: Add iclr. - -Thu Mar 20 19:49:10 1997 Ian Lance Taylor - - * i386.h: Change DW to W for cmpxchg and xadd, since they don't - take a direction bit. - -Sat Mar 15 19:03:29 1997 H.J. Lu - - * sparc.h (sparc_opcode_lookup_arch): Use full prototype. - -Fri Mar 14 15:22:01 1997 Ian Lance Taylor - - * sparc.h: Include . Update function declarations to - use prototypes, and to use const when appropriate. - -Thu Mar 6 14:18:30 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_RELAX): Define. - -Mon Feb 24 15:15:56 1997 Martin M. Hunt - - * d10v.h: Change pre_defined_registers to - d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt. - -Sat Feb 22 21:25:00 1997 Dawn Perchik - - * mips.h: Add macros for cop0, cop1 cop2 and cop3. - Change mips_opcodes from const array to a pointer, - and change bfd_mips_num_opcodes from const int to int, - so that we can increase the size of the mips opcodes table - dynamically. - -Fri Feb 21 16:34:18 1997 Martin M. Hunt - - * d30v.h (FLAG_X): Remove unused flag. - -Tue Feb 18 17:37:20 1997 Martin M. Hunt - - * d30v.h: New file. - -Fri Feb 14 13:16:15 1997 Fred Fish - - * tic80.h (PDS_NAME): Macro to access name field of predefined symbols. - (PDS_VALUE): Macro to access value field of predefined symbols. - (tic80_next_predefined_symbol): Add prototype. - -Mon Feb 10 10:32:17 1997 Fred Fish - - * tic80.h (tic80_symbol_to_value): Change prototype to match - change in function, added class parameter. - -Thu Feb 6 17:30:15 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_ENDMASK): Add for flagging TIc80 - endmask fields, which are somewhat weird in that 0 and 32 are - treated exactly the same. - -Thu Jan 30 13:46:18 1997 Fred Fish - - * tic80.h: Change all the OPERAND defines to use the form (1 << X) - rather than a constant that is 2**X. Reorder them to put bits for - operands that have symbolic names in the upper bits, so they can - be packed into an int where the lower bits contain the value that - corresponds to that symbolic name. - (predefined_symbo): Add struct. - (tic80_predefined_symbols): Declare array of translations. - (tic80_num_predefined_symbols): Declare size of that array. - (tic80_value_to_symbol): Declare function. - (tic80_symbol_to_value): Declare function. - -Wed Jan 29 09:37:25 1997 Jeffrey A Law (law@cygnus.com) - - * mn10200.h (MN10200_OPERAND_RELAX): Define. - -Sat Jan 18 15:18:59 1997 Fred Fish - - * tic80.h (TIC80_NO_R0_DEST): Add for opcodes where r0 cannot - be the destination register. - -Thu Jan 16 20:48:55 1997 Fred Fish - - * tic80.h (struct tic80_opcode): Change "format" field to "flags". - (FMT_UNUSED, FMT_SI, FMT_LI, FMT_REG): Delete. - (TIC80_VECTOR): Define a flag bit for the flags. This one means - that the opcode can have two vector instructions in a single - 32 bit word and we have to encode/decode both. - -Tue Jan 14 19:37:09 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_PCREL): Renamed from - TIC80_OPERAND_RELATIVE for PC relative. - (TIC80_OPERAND_BASEREL): New flag bit for register - base relative. - -Mon Jan 13 15:56:38 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_FLOAT): Add for floating point operands. - -Mon Jan 6 10:51:15 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_SCALED): Operand may have optional - ":s" modifier for scaling. - -Sun Jan 5 12:12:19 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_M_SI): Add operand modifier for ":m". - (TIC80_OPERAND_M_LI): Ditto - -Sat Jan 4 19:02:44 1997 Fred Fish - - * tic80.h (TIC80_OPERAND_BITNUM): Renamed from TIC80_OPERAND_CC_SZ. - (TIC80_OPERAND_CC): New define for condition code operand. - (TIC80_OPERAND_CR): New define for control register operand. - -Fri Jan 3 16:22:23 1997 Fred Fish - - * tic80.h (struct tic80_opcode): Name changed. - (struct tic80_opcode): Remove format field. - (struct tic80_operand): Add insertion and extraction functions. - (TIC80_OPERAND_*): Remove old bogus values, start adding new - correct ones. - (FMT_*): Ditto. - -Tue Dec 31 15:05:41 1996 Michael Meissner - - * v850.h (V850_OPERAND_ADJUST_SHORT_MEMORY): New flag to adjust - type IV instruction offsets. - -Fri Dec 27 22:23:10 1996 Fred Fish - - * tic80.h: New file. - -Wed Dec 18 10:06:31 1996 Jeffrey A Law (law@cygnus.com) - - * mn10200.h (MN10200_OPERAND_NOCHECK): Define. - -Sat Dec 14 10:48:31 1996 Fred Fish - - * mn10200.h: Fix comment, mn10200_operand not powerpc_operand. - * mn10300.h: Fix comment, mn10300_operand not powerpc_operand. - * v850.h: Fix comment, v850_operand not powerpc_operand. - -Mon Dec 9 16:45:39 1996 Jeffrey A Law (law@cygnus.com) - - * mn10200.h: Flesh out structures and definitions needed by - the mn10200 assembler & disassembler. - -Tue Nov 26 10:46:56 1996 Ian Lance Taylor - - * mips.h: Add mips16 definitions. - -Mon Nov 25 17:56:54 1996 J.T. Conklin - - * m68k.h: Document new <, >, m, n, o and p operand specifiers. - -Wed Nov 20 10:59:41 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_PCREL): Define. - (MN10300_OPERAND_MEMADDR): Define. - -Tue Nov 19 13:30:40 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_REG_LIST): Define. - -Wed Nov 6 13:41:08 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_SPLIT): Define. - -Tue Nov 5 13:26:12 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_EXTENDED): Define. - -Mon Nov 4 12:52:48 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_REPEATED): Define. - -Fri Nov 1 10:31:02 1996 Richard Henderson - - * alpha.h: Don't include "bfd.h"; private relocation types are now - negative to minimize problems with shared libraries. Organize - instruction subsets by AMASK extensions and PALcode - implementation. - (struct alpha_operand): Move flags slot for better packing. - -Tue Oct 29 12:19:10 1996 Jeffrey A Law (law@cygnus.com) - - * v850.h (V850_OPERAND_RELAX): New operand flag. - -Thu Oct 10 14:29:11 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (FMT_*): Move operand format definitions - here. - -Tue Oct 8 14:48:07 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (MN10300_OPERAND_PAREN): Define. - -Mon Oct 7 16:52:11 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (mn10300_opcode): Add "format" field. - (MN10300_OPERAND_*): Define. - -Thu Oct 3 10:33:46 1996 Jeffrey A Law (law@cygnus.com) - - * mn10x00.h: Delete. - * mn10200.h, mn10300.h: New files. - -Wed Oct 2 21:31:26 1996 Jeffrey A Law (law@cygnus.com) - - * mn10x00.h: New file. - -Fri Sep 27 18:26:46 1996 Stu Grossman (grossman@critters.cygnus.com) - - * v850.h: Add new flag to indicate this instruction uses a PC - displacement. - -Fri Sep 13 14:58:13 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (stmac): Add missing instruction. - -Sat Aug 31 16:02:03 1996 Jeffrey A Law (law@cygnus.com) - - * v850.h (v850_opcode): Remove "size" field. Add "memop" - field. - -Fri Aug 23 10:39:08 1996 Jeffrey A Law (law@cygnus.com) - - * v850.h (V850_OPERAND_EP): Define. - - * v850.h (v850_opcode): Add size field. - -Thu Aug 22 16:51:25 1996 J.T. Conklin - - * v850.h (v850_operands): Add insert and extract fields, pointers - to functions used to handle unusual operand encoding. - (V850_OPERAND_REG, V850_OPERAND_SRG, V850_OPERAND_CC, - V850_OPERAND_SIGNED): Defined. - -Wed Aug 21 17:45:10 1996 J.T. Conklin - - * v850.h (v850_operands): Add flags field. - (OPERAND_REG, OPERAND_NUM): Defined. - -Tue Aug 20 14:52:02 1996 J.T. Conklin - - * v850.h: New file. - -Fri Aug 16 14:44:15 1996 James G. Smith - - * mips.h (OP_SH_LOCC, OP_SH_HICC, OP_MASK_CC, OP_SH_COP1NORM, - OP_MASK_COP1NORM, OP_SH_COP1SPEC, OP_MASK_COP1SPEC, - OP_MASK_COP1SCLR, OP_MASK_COP1CMP, OP_SH_COP1CMP, OP_SH_FORMAT, - OP_MASK_FORMAT, OP_SH_TRUE, OP_MASK_TRUE, OP_SH_GE, OP_MASK_GE, - OP_SH_UNSIGNED, OP_MASK_UNSIGNED, OP_SH_HINT, OP_MASK_HINT): - Defined. - -Fri Aug 16 00:15:15 1996 Jeffrey A Law (law@cygnus.com) - - * hppa.h (pitlb, pitlbe, iitlba, iitlbp, fic, fice): Accept - a 3 bit space id instead of a 2 bit space id. - -Thu Aug 15 13:11:46 1996 Martin M. Hunt - - * d10v.h: Add some additional defines to support the - assembler in determining which operations can be done in parallel. - -Tue Aug 6 11:13:22 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (SN): Define. - (eepmov.b): Renamed from "eepmov" - (nop, bpt, rte, rts, sleep, clrmac): These have no size associated - with them. - -Fri Jul 26 11:47:10 1996 Martin M. Hunt - - * d10v.h (OPERAND_SHIFT): New operand flag. - -Thu Jul 25 12:06:22 1996 Martin M. Hunt - - * d10v.h: Changes for divs, parallel-only instructions, and - signed numbers. - -Mon Jul 22 11:21:15 1996 Martin M. Hunt - - * d10v.h (pd_reg): Define. Putting the definition here allows - the assembler and disassembler to share the same struct. - -Mon Jul 22 12:15:25 1996 Ian Lance Taylor - - * i960.h (i960_opcodes): "halt" takes an argument. From Stephen - Williams . - -Wed Jul 17 14:46:38 1996 Martin M. Hunt - - * d10v.h: New file. - -Thu Jul 11 12:09:15 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (band, bclr): Force high bit of immediate nibble to zero. - -Wed Jul 3 14:30:12 1996 J.T. Conklin - - * m68k.h (mcf5200): New macro. - Document names of coldfire control registers. - -Tue Jul 2 23:05:45 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (SRC_IN_DST): Define. - - * h8300.h (UNOP3): Mark the register operand in this insn - as a source operand, not a destination operand. - (SHIFT_2, SHIFT_IMM): Remove. Eliminate all references. - (UNOP3): Change SHIFT_IMM to IMM for H8/S bitops. Mark - register operand with SRC_IN_DST. - -Fri Jun 21 13:52:17 1996 Richard Henderson - - * alpha.h: New file. - -Thu Jun 20 15:02:57 1996 Ian Lance Taylor - - * rs6k.h: Remove obsolete file. - -Wed Jun 19 15:29:38 1996 Ian Lance Taylor - - * i386.h: Correct opcode values for faddp, fsubp, fsubrp, fmulp, - fdivp, and fdivrp. Add ffreep. - -Tue Jun 18 16:06:00 1996 Jeffrey A. Law - - * h8300.h: Reorder various #defines for readability. - (ABS32SRC, ABS32DST, DSP32LIST, ABS32LIST, A32LIST): Define. - (BITOP): Accept additional (unused) argument. All callers changed. - (EBITOP): Likewise. - (O_LAST): Bump. - (ldc, stc, movb, movw, movl): Use 32bit offsets and absolutes. - - * h8300.h (EXR, SHIFT_2, MACREG, SHIFT_IMM, RDINC): Define. - (O_TAS, O_CLRMAC, O_LDMAC, O_MAC, O_LDM, O_STM): Define. - (BITOP, EBITOP): Handle new H8/S addressing modes for - bit insns. - (UNOP3): Handle new shift/rotate insns on the H8/S. - (insns using exr): New instructions. - (tas, mac, ldmac, clrmac, ldm, stm): New instructions. - -Thu May 23 16:56:48 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (add.l): Undo Apr 5th change. The manual I had - was incorrect. - -Mon May 6 23:38:22 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (START): Remove. - (MEMRELAX): Define. Mark absolute memory operands in mov.b, mov.w - and mov.l insns that can be relaxed. - -Tue Apr 30 18:30:58 1996 Ian Lance Taylor - - * i386.h: Remove Abs32 from lcall. - -Mon Apr 22 17:09:23 1996 Doug Evans - - * sparc.h (SPARC_OPCODE_ARCH_V9_P): New macro. - (SLCPOP): New macro. - Mark X,Y opcode letters as in use. - -Thu Apr 11 17:28:18 1996 Ian Lance Taylor - - * sparc.h (F_FLOAT, F_FBR): Define. - -Fri Apr 5 16:55:34 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (ABS8MEM): Renamed from ABSMOV. Remove ABSMOV - from all insns. - (ABS8SRC,ABS8DST): Add ABS8MEM. - (add.l): Fix reg+reg variant. - (eepmov.w): Renamed from eepmovw. - (ldc,stc): Fix many cases. - -Sun Mar 31 13:30:03 1996 Doug Evans - - * sparc.h (SPARC_OPCODE_ARCH_MASK): New macro. - -Thu Mar 7 15:08:23 1996 Doug Evans - - * sparc.h (O): Mark operand letter as in use. - -Tue Feb 20 20:46:21 1996 Doug Evans - - * sparc.h (sparc_{encode,decode}_sparclet_cpreg): Declare. - Mark operand letters uU as in use. - -Mon Feb 19 01:59:08 1996 Doug Evans - - * sparc.h (sparc_opcode_arch_val): Add SPARC_OPCODE_ARCH_SPARCLET. - (sparc_opcode_arch): Delete member `conflicts'. Add `supported'. - (SPARC_OPCODE_SUPPORTED): New macro. - (SPARC_OPCODE_CONFLICT_P): Rewrite. - (F_NOTV9): Delete. - -Fri Feb 16 12:23:34 1996 Jeffrey A Law (law@cygnus.com) - - * sparc.h (sparc_opcode_lookup_arch) Make return type in - declaration consistent with return type in definition. - -Wed Feb 14 18:14:11 1996 Alan Modra - - * i386.h (i386_optab): Remove Data32 from pushf and popf. - -Thu Feb 8 14:27:21 1996 James Carlson - - * i386.h (i386_regtab): Add 80486 test registers. - -Mon Feb 5 18:35:46 1996 Ian Lance Taylor - - * i960.h (I_HX): Define. - (i960_opcodes): Add HX instruction. - -Mon Jan 29 12:43:39 1996 Ken Raeburn - - * i386.h: Fix waiting forms of finit, fstenv, fsave, fstsw, fstcw, - and fclex. - -Wed Jan 24 22:36:59 1996 Doug Evans - - * sparc.h (enum sparc_opcode_arch_val): Replaces sparc_architecture. - (SPARC_OPCODE_CONFLICT_P): Renamed from ARCHITECTURES_CONFLICT_P. - (bfd_* defines): Delete. - (sparc_opcode_archs): Replaces architecture_pname. - (sparc_opcode_lookup_arch): Declare. - (NUMOPCODES): Delete. - -Mon Jan 22 08:24:32 1996 Doug Evans - - * sparc.h (enum sparc_architecture): Add v9a. - (ARCHITECTURES_CONFLICT_P): Update. - -Thu Dec 28 13:27:53 1995 John Hassey - - * i386.h: Added Pentium Pro instructions. - -Thu Nov 2 22:59:22 1995 Ian Lance Taylor - - * m68k.h: Document new 'W' operand place. - -Tue Oct 24 10:49:10 1995 Jeffrey A Law (law@cygnus.com) - - * hppa.h: Add lci and syncdma instructions. - -Mon Oct 23 11:09:16 1995 James G. Smith - - * mips.h: Added INSN_4100 flag to mark NEC VR4100 specific - instructions. - -Mon Oct 16 10:28:15 1995 Michael Meissner - - * ppc.h (PPC_OPCODE_{COMMON,ANY}): New opcode flags for - assembler's -mcom and -many switches. - -Wed Oct 11 16:56:33 1995 Ken Raeburn - - * i386.h: Fix cmpxchg8b extension opcode description. - -Thu Oct 5 18:03:36 1995 Ken Raeburn - - * i386.h: Add Pentium instructions wrmsr, rdtsc, rdmsr, cmpxchg8b, - and register cr4. - -Tue Sep 19 15:26:43 1995 Ian Lance Taylor - - * m68k.h: Change comment: split type P into types 0, 1 and 2. - -Wed Aug 30 13:50:55 1995 Doug Evans - - * sparc.h (sparc_{encode,decode}_prefetch): Declare. - -Tue Aug 29 15:34:58 1995 Doug Evans - - * sparc.h (sparc_{encode,decode}_{asi,membar}): Declare. - -Wed Aug 2 18:32:19 1995 Ian Lance Taylor - - * m68kmri.h: Remove. - - * m68k.h: Move tables into opcodes/m68k-opc.c, leaving just the - declarations. Remove F_ALIAS and flag field of struct - m68k_opcode. Change arch field of struct m68k_opcode to unsigned - int. Make name and args fields of struct m68k_opcode const. - -Wed Aug 2 08:16:46 1995 Doug Evans - - * sparc.h (F_NOTV9): Define. - -Tue Jul 11 14:20:42 1995 Jeff Spiegel - - * mips.h (INSN_4010): Define. - -Wed Jun 21 18:49:51 1995 Ken Raeburn - - * m68k.h (TBL1): Reverse sense of "round" argument in result. - - Changes from Andreas Schwab : - * m68k.h: Fix argument descriptions of coprocessor - instructions to allow only alterable operands where appropriate. - [!NO_DEFAULT_SIZES]: An omitted size defaults to `w'. - (m68k_opcode_aliases): Add more aliases. - -Fri Apr 14 22:15:34 1995 Ken Raeburn - - * m68k.h: Added explcitly short-sized conditional branches, and a - bunch of aliases (fmov*, ftest*, tdivul) to support gcc's - svr4-based configurations. - -Mon Mar 13 21:30:01 1995 Ken Raeburn - - Mon Feb 27 08:36:39 1995 Bryan Ford - * i386.h: added missing Data16/Data32 flags to a few instructions. - -Wed Mar 8 15:19:53 1995 Ian Lance Taylor - - * mips.h (OP_MASK_FR, OP_SH_FR): Define. - (OP_MASK_BCC, OP_SH_BCC): Define. - (OP_MASK_PREFX, OP_SH_PREFX): Define. - (OP_MASK_CCC, OP_SH_CCC): Define. - (INSN_READ_FPR_R): Define. - (INSN_RFE): Delete. - -Wed Mar 8 03:13:23 1995 Ken Raeburn - - * m68k.h (enum m68k_architecture): Deleted. - (struct m68k_opcode_alias): New type. - (m68k_opcodes): Now const. Deleted opcode aliases with exactly - matching constraints, values and flags. As a side effect of this, - the MOTOROLA_SYNTAX_ONLY and MIT_SYNTAX_ONLY macros, which so far - as I know were never used, now may need re-examining. - (numopcodes): Now const. - (m68k_opcode_aliases, numaliases): New variables. - (endop): Deleted. - [DONT_DEFINE_TABLE]: Declare numopcodes, numaliases, and - m68k_opcode_aliases; update declaration of m68k_opcodes. - -Mon Mar 6 10:02:00 1995 Jeff Law (law@snake.cs.utah.edu) - - * hppa.h (delay_type): Delete unused enumeration. - (pa_opcode): Replace unused delayed field with an architecture - field. - (pa_opcodes): Mark each instruction as either PA1.0 or PA1.1. - -Fri Mar 3 16:10:24 1995 Ian Lance Taylor - - * mips.h (INSN_ISA4): Define. - -Fri Feb 24 19:13:37 1995 Ian Lance Taylor - - * mips.h (M_DLA_AB, M_DLI): Define. - -Thu Feb 23 17:33:09 1995 Jeff Law (law@snake.cs.utah.edu) - - * hppa.h (fstwx): Fix single-bit error. - -Wed Feb 15 12:19:52 1995 Ian Lance Taylor - - * mips.h (M_ULD, M_ULD_A, M_USD, M_USD_A): Define. - -Mon Feb 6 10:35:23 1995 J.T. Conklin - - * i386.h: added cpuid instruction , and dr[0-7] aliases for the - debug registers. From Charles Hannum (mycroft@netbsd.org). - -Mon Feb 6 03:31:54 1995 Ken Raeburn - - Changes from Bryan Ford for 16-bit - i386 support: - * i386.h (MOV_AX_DISP32): New macro. - (i386_optab): Added Data16 and Data32 as needed. Added "w" forms - of several call/return instructions. - (ADDR_PREFIX_OPCODE): New macro. - -Mon Jan 23 16:45:43 1995 Ken Raeburn - - Sat Jan 21 17:50:38 1995 Pat Rankin (rankin@eql.caltech.edu) - - * vax.h (struct vot_wot, field `args'): Make it pointer to const - char. - (struct vot, field `name'): ditto. - -Thu Jan 19 14:47:53 1995 Ken Raeburn - - * vax.h: Supply and properly group all values in end sentinel. - -Tue Jan 17 10:55:30 1995 Ian Lance Taylor - - * mips.h (INSN_ISA, INSN_4650): Define. - -Wed Oct 19 13:34:17 1994 Ian Lance Taylor - - * a29k.h: Add operand type 'I' for `inv' and `iretinv'. On - systems with a separate instruction and data cache, such as the - 29040, these instructions take an optional argument. - -Wed Sep 14 17:44:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * mips.h (INSN_STORE_MEMORY): Correct value to not conflict with - INSN_TRAP. - -Tue Sep 6 11:39:08 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * mips.h (INSN_STORE_MEMORY): Define. - -Thu Jul 28 19:28:07 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * sparc.h: Document new operand type 'x'. - -Tue Jul 26 17:48:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i960.h (I_CX2): New instruction category. It includes - instructions available on Cx and Jx processors. - (I_JX): New instruction category, for JX-only instructions. - (i960_opcodes): Put eshro and sysctl in I_CX2 category. Added - Jx-only instructions, in I_JX category. - -Wed Jul 13 18:43:47 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * ns32k.h (endop): Made pointer const too. - -Sun Jul 10 11:01:09 1994 Ian Dall (dall@hfrd.dsto.gov.au) - - * ns32k.h: Drop Q operand type as there is no correct use - for it. Add I and Z operand types which allow better checking. - -Thu Jul 7 12:34:48 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * h8300.h (xor.l) :fix bit pattern. - (L_2): New size of operand. - (trapa): Use it. - -Fri Jun 10 16:38:11 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * m68k.h: Move "trap" before "tpcc" to change disassembly. - -Fri Jun 3 15:57:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * sparc.h: Include v9 definitions. - -Thu Jun 2 12:23:17 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * m68k.h (m68060): Defined. - (m68040up, mfloat, mmmu): Include it. - (struct m68k_opcode): Widen `arch' field. - (m68k_opcodes): Updated for M68060. Removed comments that were - instructions commented out by "JF" years ago. - -Thu Apr 28 18:31:14 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * m68k.h (struct m68k_opcode): Shorten `arch' field to 8 bits, and - add a one-bit `flags' field. - (F_ALIAS): New macro. - -Wed Apr 27 11:29:52 1994 Steve Chamberlain (sac@cygnus.com) - - * h8300.h (dec, inc): Get encoding right. - -Mon Apr 4 13:12:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ppc.h (struct powerpc_operand): Removed signedp field; just use - a flag instead. - (PPC_OPERAND_SIGNED): Define. - (PPC_OPERAND_SIGNOPT): Define. - -Thu Mar 31 19:34:08 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i386.h (IS_JUMP_ON_ECX_ZERO, "jcxz" pattern): Operand size - prefix is 0x66, not 0x67. Patch from H.J. Lu (hlu@nynexst.com). - -Thu Mar 3 15:51:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i386.h: Reverse last change. It'll be handled in gas instead. - -Thu Feb 24 15:29:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i386.h (sar): Disabled the two-operand Imm1 form, since it was - slower on the 486 and used the implicit shift count despite the - explicit operand. The one-operand form is still available to get - the shorter form with the implicit shift count. - -Thu Feb 17 12:27:52 1994 Torbjorn Granlund (tege@mexican.cygnus.com) - - * hppa.h: Fix typo in fstws arg string. - -Wed Feb 9 21:23:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ppc.h (struct powerpc_opcode): Make operands field unsigned. - -Mon Feb 7 19:14:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ppc.h (PPC_OPCODE_601): Define. - -Fri Feb 4 23:43:50 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * hppa.h (addb): Use '@' for addb and addib pseudo ops. - (so we can determine valid completers for both addb and addb[tf].) - - * hppa.h (xmpyu): No floating point format specifier for the - xmpyu instruction. - -Fri Feb 4 23:36:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ppc.h (PPC_OPERAND_NEXT): Define. - (PPC_OPERAND_NEGATIVE): Change value to make room for above. - (struct powerpc_macro): Define. - (powerpc_macros, powerpc_num_macros): Declare. - -Fri Jan 21 19:13:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ppc.h: New file. Header file for PowerPC opcode table. - -Mon Jan 17 00:14:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * hppa.h: More minor template fixes for sfu and copr (to allow - for easier disassembly). - - * hppa.h: Fix templates for all the sfu and copr instructions. - -Wed Dec 15 15:12:42 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * i386.h (push): Permit Imm16 operand too. - -Sat Dec 11 16:14:06 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * h8300.h (andc): Exists in base arch. - -Wed Dec 1 12:15:32 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * From Hisashi MINAMINO - * hppa.h: #undef NONE to avoid conflict with hiux include files. - -Sun Nov 21 22:06:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * hppa.h: Add FP quadword store instructions. - -Wed Nov 17 17:13:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h: (M_J_A): Added. - (M_LA): Removed. - -Mon Nov 8 12:12:47 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (OP_MASK_CACHE, OP_SH_CACHE): Define. From Ted Lemon - . - -Sun Nov 7 00:30:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * hppa.h: Immediate field in probei instructions is unsigned, - not low-sign extended. - -Wed Nov 3 10:30:00 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * m88k.h (RRI10MASK): Change from 0xfc00ffe0 to 0xfc00fc00. - -Tue Nov 2 12:41:30 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * i386.h: Add "fxch" without operand. - -Mon Nov 1 18:13:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (M_JAL_1, M_JAL_2, M_JAL_A): Added. - -Sat Oct 2 22:26:11 1993 Jeffrey A Law (law@snake.cs.utah.edu) - - * hppa.h: Add gfw and gfr to the opcode table. - -Wed Sep 29 16:23:00 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * m88k.h: extended to handle m88110. - -Tue Sep 28 19:19:08 1993 Jeffrey A Law (law@snake.cs.utah.edu) - - * hppa.h (be, ble): Use operand type 'z' to denote absolute branch - addresses. - -Tue Sep 14 14:04:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * i960.h (i960_opcodes): Properly bracket initializers. - -Mon Sep 13 12:50:52 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * m88k.h (BOFLAG): rewrite to avoid nested comment. - -Mon Sep 13 15:46:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * m68k.h (two): Protect second argument with parentheses. - -Fri Sep 10 16:29:47 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * i386.h (i386_optab): Added new instruction "rsm" (for i386sl). - Deleted old in/out instructions in "#if 0" section. - -Thu Sep 9 17:42:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * i386.h (i386_optab): Properly bracket initializers. - -Wed Aug 25 13:50:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * hppa.h (pa_opcode): Use '|' for movb and movib insns. (From - Jeff Law, law@cs.utah.edu). - -Mon Aug 23 16:55:03 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * i386.h (lcall): Accept Imm32 operand also. - -Mon Aug 23 12:43:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (M_ABSU): Removed (absolute value of unsigned number??). - (M_DABS): Added. - -Thu Aug 19 15:08:37 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h (INSN_*): Changed values. Removed unused definitions. - Added INSN_COND_BRANCH_LIKELY, INSN_ISA2 and INSN_ISA3. Split - INSN_LOAD_DELAY into INSN_LOAD_MEMORY_DELAY and - INSN_LOAD_COPROC_DELAY. Split INSN_COPROC_DELAY into - INSN_COPROC_MOVE_DELAY and INSN_COPROC_MEMORY_DELAY. - (M_*): Added new values for r6000 and r4000 macros. - (ANY_DELAY): Removed. - -Wed Aug 18 15:37:48 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h: Added M_LI_S and M_LI_SS. - -Tue Aug 17 07:08:08 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * h8300.h: Get some rare mov.bs correct. - -Thu Aug 5 09:15:17 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * sparc.h: Don't define const ourself; rely on ansidecl.h having - been included. - -Fri Jul 30 18:41:11 1993 John Gilmore (gnu@cygnus.com) - - * sparc.h (F_JSR, F_UNBR, F_CONDBR): Add new flags to mark - jump instructions, for use in disassemblers. - -Thu Jul 22 07:25:27 1993 Ian Lance Taylor (ian@cygnus.com) - - * m88k.h: Make bitfields just unsigned, not unsigned long or - unsigned short. - -Wed Jul 21 11:55:31 1993 Jim Kingdon (kingdon@deneb.cygnus.com) - - * hppa.h: New argument type 'y'. Use in various float instructions. - -Mon Jul 19 17:17:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com) - - * hppa.h (break): First immediate field is unsigned. - - * hppa.h: Add rfir instruction. - -Sun Jul 18 16:28:08 1993 Jim Kingdon (kingdon@rtl.cygnus.com) - - * mips.h: Split the actual table out into ../../opcodes/mips-opc.c. - -Fri Jul 16 09:59:29 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h: Reworked the hazard information somewhat, and fixed some - bugs in the instruction hazard descriptions. - -Thu Jul 15 12:42:01 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * m88k.h: Corrected a couple of opcodes. - -Tue Jul 6 15:17:35 1993 Ian Lance Taylor (ian@cygnus.com) - - * mips.h: Replaced with version from Ralph Campbell and OSF. The - new version includes instruction hazard information, but is - otherwise reasonably similar. - -Thu Jul 1 20:36:17 1993 Doug Evans (dje@canuck.cygnus.com) - - * h8300.h: Fix typo in UNOP3 (affected sh[al][lr].l). - -Fri Jun 11 18:38:44 1993 Ken Raeburn (raeburn@cygnus.com) - - Patches from Jeff Law, law@cs.utah.edu: - * hppa.h: Clean up some of the OLD_TABLE, non-OLD_TABLE braindamage. - Make the tables be the same for the following instructions: - "bb", "addb[tf]", "addib[tf]", "add", "add[loc]", "addco", - "sh[123]add", "sh[123]add[lo]", "sub", "sub[obt]", "sub[bt]o", - "ds", "comclr", "addi", "addi[ot]", "addito", "subi", "subio", - "comiclr", "fadd", "fsub", "fmpy", "fdiv", "fsqrt", "fabs", - "frnd", "fcpy", "fcnvff", "fcnvxf", "fcnvfx", "fcnvfxt", - "fcmp", and "ftest". - - * hppa.h: Make new and old tables the same for "break", "mtctl", - "mfctl", "bb", "ssm", "rsm", "xmpyu", "fmpyadd", "fmpysub". - Fix typo in last patch. Collapse several #ifdefs into a - single #ifdef. - - * hppa.h: Delete remaining OLD_TABLE code. Bring some - of the comments up-to-date. - - * hppa.h: Update "free list" of letters and update - comments describing each letter's function. - -Thu Jul 8 09:05:26 1993 Doug Evans (dje@canuck.cygnus.com) - - * h8300.h: Lots of little fixes for the h8/300h. - -Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - Support for H8/300-H - * h8300.h: Lots of new opcodes. - -Fri Jun 4 15:41:37 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * h8300.h: checkpoint, includes H8/300-H opcodes. - -Thu Jun 3 15:42:59 1993 Stu Grossman (grossman@cygnus.com) - - * Patches from Jeffrey Law . - * hppa.h: Rework single precision FP - instructions so that they correctly disassemble code - PA1.1 code. - -Thu May 27 19:21:22 1993 Bruce Bauman (boot@osf.org) - - * i386.h (i386_optab, mov pattern): Remove Mem16 restriction from - mov to allow instructions like mov ss,xyz(ecx) to assemble. - -Tue May 25 00:39:40 1993 Ken Raeburn (raeburn@cygnus.com) - - * hppa.h: Use new version from Utah if OLD_TABLE isn't defined; - gdb will define it for now. - -Mon May 24 15:20:06 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * sparc.h: Don't end enumerator list with comma. - -Fri May 14 15:15:50 1993 Ian Lance Taylor (ian@cygnus.com) - - * Based on patches from davidj@ICSI.Berkeley.EDU (David Johnson): - * mips.h (OP_MASK_COPZ, OP_SH_COPZ): Define. - ("bc2t"): Correct typo. - ("[ls]wc[023]"): Use T rather than t. - ("c[0123]"): Define general coprocessor instructions. - -Mon May 10 06:02:25 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * m68k.h: Move split point for gcc compilation more towards - middle. - -Fri Apr 9 13:26:16 1993 Jim Kingdon (kingdon@cygnus.com) - - * rs6k.h: Clean up instructions for primary opcode 19 (many were - simply wrong, ics, rfi, & rfsvc were missing). - Add "a" to opr_ext for "bb". Doc fix. - -Thu Mar 18 13:45:31 1993 Per Bothner (bothner@rtl.cygnus.com) - - * i386.h: 486 extensions from John Hassey (hassey@dg-rtp.dg.com). - * mips.h: Add casts, to suppress warnings about shifting too much. - * m68k.h: Document the placement code '9'. - -Thu Feb 18 02:03:14 1993 John Gilmore (gnu@cygnus.com) - - * m68k.h (BREAK_UP_BIG_DECL, AND_OTHER_PART): Add kludge which - allows callers to break up the large initialized struct full of - opcodes into two half-sized ones. This permits GCC to compile - this module, since it takes exponential space for initializers. - (numopcodes, endop): Revise to use AND_OTHER_PART in size calcs. - -Thu Feb 4 02:06:56 1993 John Gilmore (gnu@cygnus.com) - - * a29k.h: Remove RCS crud, update GPL to v2, update copyrights. - * convex.h: Added, from GDB's convx-opcode.h. Added CONST to all - initialized structs in it. - -Thu Jan 28 21:32:22 1993 John Gilmore (gnu@cygnus.com) - - Delta 88 changes inspired by Carl Greco, : - * m88k.h (PMEM): Avoid previous definition from . - (AND): Change to AND_ to avoid ansidecl.h `AND' conflict. - -Sat Jan 23 18:10:49 PST 1993 Ralph Campbell (ralphc@pyramid.com) - - * mips.h: document "i" and "j" operands correctly. - -Thu Jan 7 15:58:13 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * mips.h: Removed endianness dependency. - -Sun Jan 3 14:13:35 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * h8300.h: include info on number of cycles per instruction. - -Mon Dec 21 21:29:08 1992 Stu Grossman (grossman at cygnus.com) - - * hppa.h: Move handy aliases to the front. Fix masks for extract - and deposit instructions. - -Sat Dec 12 16:09:48 1992 Ian Lance Taylor (ian@cygnus.com) - - * i386.h: accept shld and shrd both with and without the shift - count argument, which is always %cl. - -Fri Nov 27 17:13:18 1992 Ken Raeburn (raeburn at cygnus.com) - - * i386.h (i386_optab_end, i386_regtab_end): Now const. - (one_byte_segment_defaults, two_byte_segment_defaults, - i386_prefixtab_end): Ditto. - -Mon Nov 23 10:47:25 1992 Ken Raeburn (raeburn@cygnus.com) - - * vax.h (bb*): Use "v" (bitfield type), not "a" (address operand) - for operand 2; from John Carr, jfc@dsg.dec.com. - -Wed Nov 4 07:36:49 1992 Ken Raeburn (raeburn@cygnus.com) - - * m68k.h: Define FIXED_SIZE_BRANCH, so bsr and bra instructions - always use 16-bit offsets. Makes calculated-size jump tables - feasible. - -Fri Oct 16 22:52:43 1992 Ken Raeburn (raeburn@cygnus.com) - - * i386.h: Fix one-operand forms of in* and out* patterns. - -Tue Sep 22 14:08:14 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * m68k.h: Added CPU32 support. - -Tue Sep 22 00:38:41 1992 John Gilmore (gnu@cygnus.com) - - * mips.h (break): Disassemble the argument. Patch from - jonathan@cs.stanford.edu (Jonathan Stone). - -Wed Sep 9 11:25:28 1992 Ian Lance Taylor (ian@cygnus.com) - - * m68k.h: merged Motorola and MIT syntax. - -Thu Sep 3 09:33:22 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * m68k.h (pmove): make the tests less strict, the 68k book is - wrong. - -Tue Aug 25 23:25:19 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * m68k.h (m68ec030): Defined as alias for 68030. - (m68k_opcodes): New type characters "3" for 68030 MMU regs and "t" - for immediate 0-7 added. Set up some opcodes (ptest, bkpt) to use - them. Tightened description of "fmovex" to distinguish it from - some "pmove" encodings. Added "pmove" for 68030 MMU regs, cleaned - up descriptions that claimed versions were available for chips not - supporting them. Added "pmovefd". - -Mon Aug 24 12:04:51 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * m68k.h: fix where the . goes in divull - -Wed Aug 19 11:22:24 1992 Ian Lance Taylor (ian@cygnus.com) - - * m68k.h: the cas2 instruction is supposed to be written with - indirection on the last two operands, which can be either data or - address registers. Added a new operand type 'r' which accepts - either register type. Added new cases for cas2l and cas2w which - use them. Corrected masks for cas2 which failed to recognize use - of address register. - -Fri Aug 14 14:20:38 1992 Per Bothner (bothner@cygnus.com) - - * m68k.h: Merged in patches (mostly m68040-specific) from - Colin Smith . - - * m68k.h: Merged m68kmri.h and m68k.h (using the former as a - base). Also cleaned up duplicates, re-ordered instructions for - the sake of dis-assembling (so aliases come after standard names). - * m68kmri.h: Now just defines some macros, and #includes m68k.h. - -Wed Aug 12 16:38:15 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * m68kmri.h: added various opcodes. Moved jbxx to bxxes. Filled in - all missing .s - -Mon Aug 10 23:22:33 1992 Ken Raeburn (raeburn@cygnus.com) - - * sparc.h: Moved tables to BFD library. - - * i386.h (i386_optab): Add fildq, fistpq aliases used by gcc. - -Sun Jun 28 13:29:03 1992 Fred Fish (fnf@cygnus.com) - - * h8300.h: Finish filling in all the holes in the opcode table, - so that the Lucid C compiler can digest this as well... - -Fri Jun 26 21:27:17 1992 John Gilmore (gnu at cygnus.com) - - * i386.h: Add setc, setnc, addr16, data16, repz, repnz aliases. - Fix opcodes on various sizes of fild/fist instructions - (16bit=no suffix, 32bit="l" suffix, 64bit="ll" suffix). - Use tabs to indent for comments. Fixes suggested by Minh Tran-Le. - -Thu Jun 25 16:13:26 1992 Stu Grossman (grossman at cygnus.com) - - * h8300.h: Fill in all the holes in the opcode table so that the - losing HPUX C compiler can digest this... - -Thu Jun 11 12:15:25 1992 John Gilmore (gnu at cygnus.com) - - * mips.h: Fix decoding of coprocessor instructions, somewhat. - (Fix by Eric Anderson, 3jean@maas-neotek.arc.nasa.gov.) - -Thu May 28 11:17:44 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * sparc.h: Add new architecture variant sparclite; add its scan - and divscc opcodes. Define ARCHITECTURES_CONFLICT_P macro. - -Tue May 5 14:23:27 1992 Per Bothner (bothner@rtl.cygnus.com) - - * mips.h: Add some more opcode synonyms (from Frank Yellin, - fy@lucid.com). - -Thu Apr 16 18:25:26 1992 Per Bothner (bothner@cygnus.com) - - * rs6k.h: New version from IBM (Metin). - -Thu Apr 9 00:31:19 1992 Per Bothner (bothner@rtl.cygnus.com) - - * rs6k.h: Fix incorrect extended opcode for instructions `fm' - and `fd'. (From metin@ibmpa.awdpa.ibm.com (Metin G. Ozisik).) - -Tue Apr 7 13:38:47 1992 Stu Grossman (grossman at cygnus.com) - - * rs6k.h: Move from ../../gdb/rs6k-opcode.h. - -Fri Apr 3 11:30:20 1992 Fred Fish (fnf@cygnus.com) - - * m68k.h (one, two): Cast macro args to unsigned to suppress - complaints from compiler and lint about integer overflow during - shift. - -Sun Mar 29 12:22:08 1992 John Gilmore (gnu at cygnus.com) - - * sparc.h (OP): Avoid signed overflow when shifting to high order bit. - -Fri Mar 6 00:22:38 1992 John Gilmore (gnu at cygnus.com) - - * mips.h: Make bitfield layout depend on the HOST compiler, - not on the TARGET system. - -Fri Feb 21 01:29:51 1992 K. Richard Pixley (rich@cygnus.com) - - * i386.h: added inb, inw, outb, outw opcodes, added att syntax for - scmp, slod, smov, ssca, ssto. Curtesy Minh Tran-Le - . - -Thu Jan 30 07:31:44 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * h8300.h: turned op_type enum into #define list - -Thu Jan 30 01:07:24 1992 John Gilmore (gnu at cygnus.com) - - * sparc.h: Remove "cypress" architecture. Remove "fitox" and - similar instructions -- they've been renamed to "fitoq", etc. - REALLY fix tsubcctv. Fix "fcmpeq" and "fcmpq" which had wrong - number of arguments. - * h8300.h: Remove extra ; which produces compiler warning. - -Tue Jan 28 22:59:22 1992 Stu Grossman (grossman at cygnus.com) - - * sparc.h: fix opcode for tsubcctv. - -Tue Jan 7 17:19:39 1992 K. Richard Pixley (rich at cygnus.com) - - * sparc.h: fba and cba are now aliases for fb and cb respectively. - -Fri Dec 27 10:55:50 1991 Per Bothner (bothner at cygnus.com) - - * sparc.h (nop): Made the 'lose' field be even tighter, - so only a standard 'nop' is disassembled as a nop. - -Sun Dec 22 12:18:18 1991 Michael Tiemann (tiemann at cygnus.com) - - * sparc.h (nop): Add RD_GO to `lose' so that only %g0 in dest is - disassembled as a nop. - -Wed Dec 18 17:19:44 1991 Stu Grossman (grossman at cygnus.com) - - * m68k.h, sparc.h: ANSIfy enums. - -Tue Dec 10 00:22:20 1991 K. Richard Pixley (rich at rtl.cygnus.com) - - * sparc.h: fix a typo. - -Sat Nov 30 20:40:51 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * a29k.h, arm.h, h8300.h, i386.h, i860.h, i960.h , m68k.h, - m88k.h, mips.h , np1.h, ns32k.h, pn.h, pyr.h, sparc.h, tahoe.h, - vax.h: Renamed from ../-opcode.h. + * h8300.h (BITOP): Dissallow operations on @aa:16 and @aa:32 + except for the H8S. +For older changes see ChangeLog-9103 Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 version-control: never End: diff --git a/include/opcode/h8300.h b/include/opcode/h8300.h index 20793a0a94b..76d42e58a72 100644 --- a/include/opcode/h8300.h +++ b/include/opcode/h8300.h @@ -1,5 +1,5 @@ /* Opcode table for the H8/300 - Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000, 2002, 2003 + Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Steve Chamberlain . @@ -26,7 +26,8 @@ typedef int op_type; -enum h8_flags { +enum h8_flags +{ L_2 = 0x10, L_3 = 0x20, /* 3 bit constant, zero not accepted. */ @@ -225,7 +226,8 @@ enum h8_flags { #endif }; -enum ctrlreg { +enum ctrlreg +{ C_CCR = 0, C_EXR = 1, C_MACH = 2, @@ -247,7 +249,8 @@ struct arg }; /* Availability of instructions on processor models. */ -enum h8_model { +enum h8_model +{ AV_H8, AV_H8H, AV_H8S, @@ -304,7 +307,7 @@ struct h8_opcode #define A24LIST L_24, DATA5 #define A32LIST L_32, DATA7 -/* Extended Operand Prefixes: */ +/* Extended Operand Prefixes: */ #define PREFIX_010 0x0, 0x1, 0x0 #define PREFIX_015 0x0, 0x1, 0x5 @@ -383,7 +386,7 @@ struct h8_opcode #define PREFIX_7A7C 0x7, 0xa, 0x7, 0xc -/* Source standard fragment: */ +/* Source standard fragment: */ #define FROM_IND 0, RSIND #define FROM_POSTINC 8, RSPOSTINC #define FROM_POSTDEC 10, RSPOSTDEC @@ -401,7 +404,7 @@ struct h8_opcode #define FROM_ABS16 4, B30 | IGNORE #define FROM_ABS32 4, B31 | IGNORE -/* Destination standard fragment: */ +/* Destination standard fragment: */ #define TO_IND 0, RDIND #define TO_IND_MOV 0, RDIND | B30 #define TO_POSTINC 8, RDPOSTINC @@ -425,7 +428,7 @@ struct h8_opcode #define TO_ABS16 4, B30 | IGNORE #define TO_ABS32 4, B31 | IGNORE -/* Source fragment for three-word instruction: */ +/* Source fragment for three-word instruction: */ #define TFROM_IND 6, 9, B30 | RSIND, 12 #define TFROM_DISP2 6, 9, B30 | DISPREG, 12 #define TFROM_ABS16 6, 11, B30 | B20 | B10 | IGNORE, 12, ABS16LIST @@ -445,7 +448,7 @@ struct h8_opcode #define TFROM_ABS16W 6, 11, 1, 12, ABS16LIST #define TFROM_ABS32W 6, 11, 3, 12, ABS32LIST -/* Source fragment for three-word instruction: */ +/* Source fragment for three-word instruction: */ #define TFROM_IND_B 6, 8, B30 | RSIND, 12 #define TFROM_ABS16_B 6, 10, B30 | B20 | B10 | IGNORE, 12, ABS16LIST #define TFROM_ABS32_B 6, 10, B30 | B20 | B11 | IGNORE, 12, ABS32LIST @@ -467,7 +470,7 @@ struct h8_opcode #define TFROM_ABS16W_B 6, 10, 1, 12, ABS16LIST #define TFROM_ABS32W_B 6, 10, 3, 12, ABS32LIST -/* Extended Operand Class Expanders: */ +/* Extended Operand Class Expanders: */ #define MOVFROM_STD(CODE, PREFIX, NAME, SRC, SRC_INFIX) \ {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND, E}}, {{PREFIX, SRC_INFIX, TO_IND_MOV, E}}}, \ @@ -577,9 +580,7 @@ struct h8_opcode {CODE, AV_H8, 4, NAME, {{ABS16SRC, DST, E}}, {{ 6, OP2, 0, DST, RELAX16 | ABS16LIST, E}}}, \ {CODE, AV_H8, 6, NAME, {{ABS32SRC, DST, E}}, {{ 6, OP2, 2, DST, MEMRELAX | ABS32LIST, E}}} -/* - * Expansion macros for two-word (plus data) instructions. - */ +/* Expansion macros for two-word (plus data) instructions. */ /* Expansion from one source to "standard" destinations. */ #define EXPAND2_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, NIB1, NIB2) \ @@ -661,9 +662,7 @@ struct h8_opcode {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXW32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32W, OPCODE, IGNORE, DSTDISP32LIST, E}}}, \ {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXL32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32L, OPCODE, IGNORE, DSTDISP32LIST, E}}} -/* - * Expansion macros for three word (plus data) instructions. - */ +/* Expansion macros for three word (plus data) instructions. */ #define EXPAND3_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, INFIX, OPCODE) \ {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, INFIX, 8, RDPOSTINC, OPCODE, B30 | IGNORE, E}}}, \ @@ -749,9 +748,7 @@ struct h8_opcode EXPAND3_L_SRC (CODE, 4, NAME, INDEXL32, PREFIX_78R7W, TFROM_DISP32L_B, OPCODE) -/* - * Use the expansion macros to fill out the opcode table. - */ +/* Use the expansion macros to fill out the opcode table. */ #define EXPAND_FROM_REG8(CODE, NAME, OP1, OP2, OP3) \ {CODE, AV_H8SX, 0, NAME, {{RS8, RDIND, E}}, {{0x7, 0xd, B30 | RDIND, IGNORE, OP1, OP2, RS8, IGNORE, E}}}, \ @@ -892,16 +889,14 @@ struct h8_opcode EXPAND_STD_MATRIX_L (CODE, NAME, OP1) -/* - * Old expanders: - */ +/* Old expanders: */ #define BITOP(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \ {code, AV_H8, 2, name, {{imm, RD8, E}}, {{op00, op01, imm, RD8, E}}}, \ {code, AV_H8, 6, name, {{imm, RDIND, E}}, {{op10, op11, B30 | RDIND, 0, op00, op01, imm, 0, E}}}, \ {code, AV_H8, 6, name, {{imm, ABS8DST, E}}, {{op20, op21, DSTABS8LIST, op00, op01, imm, 0, E}}}, \ - {code, AV_H8H, 6, name, {{imm, ABS16DST, E}}, {{0x6, 0xa, 0x1, op30, DST | ABS16LIST, op00, op01, imm, op4, E}}}, \ - {code, AV_H8H, 6, name, {{imm, ABS32DST, E}}, {{0x6, 0xa, 0x3, op30, DST | ABS32LIST, op00, op01, imm, op4, E}}} + {code, AV_H8S, 6, name, {{imm, ABS16DST, E}}, {{0x6, 0xa, 0x1, op30, DST | MEMRELAX | ABS16LIST , op00, op01, imm, op4, E}}}, \ + {code, AV_H8S, 6, name, {{imm, ABS32DST, E}}, {{0x6, 0xa, 0x3, op30, DST | MEMRELAX | ABS32LIST , op00, op01, imm, op4, E}}} #define BITOP_B(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \ {code, AV_H8SX, 0, name, {{imm, RDIND, E}}, {{op10, op11, B30 | RDIND, 0, op00, op01, imm, op4, E}}}, \ @@ -1047,11 +1042,12 @@ struct h8_opcode #define PREFIXLDC 0x0, 0x1, 0x4, B30 | CCR_EXR | DST #define PREFIXSTC 0x0, 0x1, 0x4, B30 | CCR_EXR | SRC -#define O(op, size) (op*4+size) +#define O(op, size) (op * 4 + size) #define OP_SIZE(HOW) (HOW % 4) #define OP_KIND(HOW) (HOW / 4) -enum h8_asm_codes { +enum h8_asm_codes +{ O_RECOMPILE = 0, O_ADD, O_ADDX, @@ -1182,7 +1178,8 @@ enum h8_asm_codes { /* End of System Call specific Changes. */ }; -enum h8_size { +enum h8_size +{ SB = 0, SW = 1, SL = 2, diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 05a9b9066ce..9bc2903b52c 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,74 @@ +2004-01-12 Ian Lance Taylor + + * cp-demangle.c: Include "cp-demangle.h". If IN_GLIBCPP_V3 is + defined, rename some functions which are to become static via + #define. + (CP_STATIC_IF_GLIBCPP_V3): Define. + (struct d_operator_info): Move definition to cp-demangle.h, and + rename to demangle_operator_info. Change all uses. + (enum d_builtin_type_print): Move definition to cp-demangle.h. + (struct d_builtin_type_info): Move definition to cp-demangle.h, + and rename to demangle_builtin_type_info. Change all uses. + (enum d_comp_type): Move definition to include/demangle.h, and + rename to demangle_component_type, and change all enums to start + with DEMANGLE_COMPONENT_ instead of D_. Change all uses. + (struct d_comp): Move definition to include/demangle.h, and rename + to demangle_component. Change all uses. + (struct d_info): Move definition to cp-demangle.h. + (cplus_demangle_fill_name): New function. + (cplus_demangle_fill_extended_operator): New function. + (cplus_demangle_fill_ctor): New function. + (cplus_demangle_fill_dtor): New function. + (d_make_empty): Remove type parameter. Change all callers. + (d_make_name): Use cplus_demangle_fill_name. + (d_make_extended_operator): Use + cplus_demangle_fill_extended_operator. + (d_make_ctor): Use cplus_demangle_fill_ctor. + (d_make_dtor): Use cplus_demangle_fill_dtor. + (cplus_demangle_mangled_name): Rename from d_mangled_name. Make + non-static by default. Change all callers. + (cplus_demangle_operators): Rename from d_operators. Change all + uses. Make non-static by default. Add sentinel at end of array. + (d_operator_name): Adjust initialization of high for new sentinel + in cplus_demangle_operators. + (cplus_demangle_builtin_types): Rename from d_builtin_types. + Change all uses. Make non-static by default. Change initializer + to use D_BUILTIN_TYPE_COUNT instead of magic number 26. + (cplus_demangle_type): Rename from d_type. Make non-static by + default. Change all callers. + (cplus_demangle_init_info): Rename from d_init_info. Make + non-static by default. Change all callers. + * cp-demangle.h: New file. + * cp-demint.c: New file. + * Makefile.in: Rebuild dependencies. + (CFILES): Add cp-demint.c. + (REQUIRED_OFILES): Add cp-demint.o. + +2004-01-09 Kelley Cook + + * configure.in: Rename file to ... + * configure.ac: ... this. + * Makefile.in: Update a comment for above change. + * README: Likewise. + * config.in: Regenerate. + +2004-01-02 Ian Lance Taylor + + * cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip + CV-qualifiers from D_COMP_LOCAL_NAME right subtree. + * cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when + demangling template parameters. + * testsuite/test-demangle.c (fail): New static function. + (main): Support new options in input file: --no-params, + --is-v3-ctor, and --is-v3-dtor. + * testsuite/demangle-expected: Add --no-params to most tests, and + add the correct result when parameters are not demangled. Add + some simple tests for V3 constructor/destructor recognition. + +2003-12-25 Kaveh R. Ghazi + + * cp-demangle.c (is_ctor_or_dtor): Fix error in last change. + 2003-12-22 Daniel Jacobowitz PR debug/13272 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in index 92e050ae341..139cb68a11f 100644 --- a/libiberty/Makefile.in +++ b/libiberty/Makefile.in @@ -1,6 +1,6 @@ # # Makefile -# Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003 +# Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation # # This file is part of the libiberty library. @@ -126,11 +126,11 @@ COMPILE.c = $(CC) -c @DEFS@ $(LIBCFLAGS) -I. -I$(INCDIR) $(HDEFINES) @ac_libiber # NOTE: If you add new files to the library, add them to this list # (alphabetical), and add them to REQUIRED_OFILES, or -# CONFIGURED_OFILES and funcs in configure.in. +# CONFIGURED_OFILES and funcs in configure.ac. CFILES = alloca.c argv.c asprintf.c atexit.c \ basename.c bcmp.c bcopy.c bsearch.c bzero.c \ calloc.c choose-temp.c clock.c concat.c cp-demangle.c \ - cplus-dem.c \ + cp-demint.c cplus-dem.c \ dyn-string.c \ fdmatch.c ffs.c fibheap.c floatformat.c fnmatch.c \ getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \ @@ -158,7 +158,7 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \ # These are always included in the library. The first four are listed # first and by compile time to optimize parallel builds. -REQUIRED_OFILES = regex.o cplus-dem.o cp-demangle.o md5.o \ +REQUIRED_OFILES = regex.o cplus-dem.o cp-demangle.o cp-demint.o md5.o \ alloca.o argv.o \ choose-temp.o concat.o \ dyn-string.o \ @@ -428,9 +428,11 @@ choose-temp.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h clock.o: config.h concat.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h copysign.o: $(INCDIR)/ansidecl.h -cp-demangle.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/demangle.h \ - $(INCDIR)/dyn-string.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \ - $(INCDIR)/cp-demangle.h +cp-demangle.o: config.h $(INCDIR)/ansidecl.h $(srcdir)/cp-demangle.h \ + $(INCDIR)/demangle.h $(INCDIR)/dyn-string.h $(INCDIR)/getopt.h \ + $(INCDIR)/libiberty.h +cp-demint.o: config.h $(INCDIR)/ansidecl.h $(srcdir)/cp-demangle.h \ + $(INCDIR)/demangle.h $(INCDIR)/libiberty.h cplus-dem.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/demangle.h \ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h dyn-string.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/dyn-string.h \ @@ -451,8 +453,8 @@ hashtab.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/hashtab.h \ $(INCDIR)/libiberty.h hex.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ $(INCDIR)/safe-ctype.h -lbasename.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/filenames.h +lbasename.o: $(INCDIR)/ansidecl.h $(INCDIR)/filenames.h \ + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h lrealpath.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h make-relative-prefix.o: config.h $(INCDIR)/ansidecl.h \ $(INCDIR)/libiberty.h diff --git a/libiberty/README b/libiberty/README index e8e9b338350..886bd67bc9d 100644 --- a/libiberty/README +++ b/libiberty/README @@ -34,7 +34,7 @@ name of the function must be the same as the name of the file. * Add the source file name to CFILES. * Add the function to name to the funcs shell variable in - configure.in. + configure.ac. * Add the function to the AC_CHECK_FUNCS lists just after the setting of the funcs shell variable. These AC_CHECK_FUNCS calls diff --git a/libiberty/config.in b/libiberty/config.in index 50ed3266852..8e5071aec7b 100644 --- a/libiberty/config.in +++ b/libiberty/config.in @@ -1,339 +1,376 @@ -/* config.in. Generated automatically from configure.in by autoheader. */ - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define if you have . */ -#undef HAVE_VFORK_H - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Define to `int' if doesn't define. */ -#undef pid_t - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS +/* config.in. Generated from configure.ac by autoheader. */ +/* Define to `unsigned long' if doesn't define. */ +#undef uintptr_t -/* Define if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME -/* Define vfork as fork if vfork does not work. */ -#undef vfork +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#undef BYTEORDER -/* Define to `unsigned long' if doesn't define. */ -#undef uintptr_t +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END -/* Define if you have the _doprnt function. */ -#undef HAVE__DOPRNT +/* Define to 1 if you have the header file. */ +#undef HAVE_ALLOCA_H -/* Define if you have the asprintf function. */ +/* Define to 1 if you have the `asprintf' function. */ #undef HAVE_ASPRINTF -/* Define if you have the atexit function. */ +/* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT -/* Define if you have the basename function. */ +/* Define to 1 if you have the `basename' function. */ #undef HAVE_BASENAME -/* Define if you have the bcmp function. */ +/* Define to 1 if you have the `bcmp' function. */ #undef HAVE_BCMP -/* Define if you have the bcopy function. */ +/* Define to 1 if you have the `bcopy' function. */ #undef HAVE_BCOPY -/* Define if you have the bsearch function. */ +/* Define to 1 if you have the `bsearch' function. */ #undef HAVE_BSEARCH -/* Define if you have the bzero function. */ +/* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO -/* Define if you have the calloc function. */ +/* Define to 1 if you have the `calloc' function. */ #undef HAVE_CALLOC -/* Define if you have the canonicalize_file_name function. */ +/* Define to 1 if you have the `canonicalize_file_name' function. */ #undef HAVE_CANONICALIZE_FILE_NAME -/* Define if you have the clock function. */ +/* Define to 1 if you have the `clock' function. */ #undef HAVE_CLOCK -/* Define if you have the ffs function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `ffs' function. */ #undef HAVE_FFS -/* Define if you have the getcwd function. */ +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD -/* Define if you have the getpagesize function. */ +/* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE -/* Define if you have the getrusage function. */ +/* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE -/* Define if you have the getsysinfo function. */ +/* Define to 1 if you have the `getsysinfo' function. */ #undef HAVE_GETSYSINFO -/* Define if you have the gettimeofday function. */ +/* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY -/* Define if you have the index function. */ +/* Define to 1 if you have the `index' function. */ #undef HAVE_INDEX -/* Define if you have the insque function. */ +/* Define to 1 if you have the `insque' function. */ #undef HAVE_INSQUE -/* Define if you have the memchr function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACHINE_HAL_SYSINFO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the `memchr' function. */ #undef HAVE_MEMCHR -/* Define if you have the memcmp function. */ +/* Define to 1 if you have the `memcmp' function. */ #undef HAVE_MEMCMP -/* Define if you have the memcpy function. */ +/* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY -/* Define if you have the memmove function. */ +/* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE -/* Define if you have the mempcpy function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ #undef HAVE_MEMPCPY -/* Define if you have the memset function. */ +/* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET -/* Define if you have the mkstemps function. */ +/* Define to 1 if you have the `mkstemps' function. */ #undef HAVE_MKSTEMPS -/* Define if you have the on_exit function. */ +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `on_exit' function. */ #undef HAVE_ON_EXIT -/* Define if you have the psignal function. */ +/* Define to 1 if you have the `psignal' function. */ #undef HAVE_PSIGNAL -/* Define if you have the pstat_getdynamic function. */ +/* Define to 1 if you have the `pstat_getdynamic' function. */ #undef HAVE_PSTAT_GETDYNAMIC -/* Define if you have the pstat_getstatic function. */ +/* Define to 1 if you have the `pstat_getstatic' function. */ #undef HAVE_PSTAT_GETSTATIC -/* Define if you have the putenv function. */ +/* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV -/* Define if you have the random function. */ +/* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM -/* Define if you have the realpath function. */ +/* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH -/* Define if you have the rename function. */ +/* Define to 1 if you have the `rename' function. */ #undef HAVE_RENAME -/* Define if you have the rindex function. */ +/* Define to 1 if you have the `rindex' function. */ #undef HAVE_RINDEX -/* Define if you have the sbrk function. */ +/* Define to 1 if you have the `sbrk' function. */ #undef HAVE_SBRK -/* Define if you have the setenv function. */ +/* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV -/* Define if you have the sigsetmask function. */ +/* Define to 1 if you have the `sigsetmask' function. */ #undef HAVE_SIGSETMASK -/* Define if you have the snprintf function. */ +/* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF -/* Define if you have the stpcpy function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ #undef HAVE_STPCPY -/* Define if you have the stpncpy function. */ +/* Define to 1 if you have the `stpncpy' function. */ #undef HAVE_STPNCPY -/* Define if you have the strcasecmp function. */ +/* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP -/* Define if you have the strchr function. */ +/* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR -/* Define if you have the strdup function. */ +/* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP -/* Define if you have the strerror function. */ +/* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR -/* Define if you have the strncasecmp function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP -/* Define if you have the strrchr function. */ +/* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR -/* Define if you have the strsignal function. */ +/* Define to 1 if you have the `strsignal' function. */ #undef HAVE_STRSIGNAL -/* Define if you have the strstr function. */ +/* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR -/* Define if you have the strtod function. */ +/* Define to 1 if you have the `strtod' function. */ #undef HAVE_STRTOD -/* Define if you have the strtol function. */ +/* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL -/* Define if you have the strtoul function. */ +/* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL -/* Define if you have the sysconf function. */ +/* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF -/* Define if you have the sysctl function. */ +/* Define to 1 if you have the `sysctl' function. */ #undef HAVE_SYSCTL -/* Define if you have the sysmp function. */ +/* Define to 1 if you have the `sysmp' function. */ #undef HAVE_SYSMP -/* Define if you have the table function. */ -#undef HAVE_TABLE +/* Define if you have the sys_errlist variable. */ +#undef HAVE_SYS_ERRLIST -/* Define if you have the times function. */ -#undef HAVE_TIMES +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H -/* Define if you have the tmpnam function. */ -#undef HAVE_TMPNAM +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MMAN_H -/* Define if you have the vasprintf function. */ -#undef HAVE_VASPRINTF +/* Define if you have the sys_nerr variable. */ +#undef HAVE_SYS_NERR -/* Define if you have the vfprintf function. */ -#undef HAVE_VFPRINTF +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H -/* Define if you have the vprintf function. */ -#undef HAVE_VPRINTF +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PSTAT_H -/* Define if you have the vsnprintf function. */ -#undef HAVE_VSNPRINTF +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H -/* Define if you have the vsprintf function. */ -#undef HAVE_VSPRINTF +/* Define if you have the sys_siglist variable. */ +#undef HAVE_SYS_SIGLIST -/* Define if you have the waitpid function. */ -#undef HAVE_WAITPID +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H -/* Define if you have the header file. */ -#undef HAVE_ALLOCA_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSCTL_H -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSINFO_H -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSMP_H -/* Define if you have the header file. */ -#undef HAVE_MACHINE_HAL_SYSINFO_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSTEMCFG_H -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TABLE_H -/* Define if you have the header file. */ -#undef HAVE_STRING_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H -/* Define if you have the header file. */ -#undef HAVE_STRINGS_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H -/* Define if you have the header file. */ -#undef HAVE_SYS_FILE_H +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H -/* Define if you have the header file. */ -#undef HAVE_SYS_MMAN_H +/* Define to 1 if you have the `table' function. */ +#undef HAVE_TABLE -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H +/* Define to 1 if you have the `times' function. */ +#undef HAVE_TIMES -/* Define if you have the header file. */ -#undef HAVE_SYS_PSTAT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H -/* Define if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H +/* Define to 1 if you have the `tmpnam' function. */ +#undef HAVE_TMPNAM -/* Define if you have the header file. */ -#undef HAVE_SYS_STAT_H +/* Define if you have the \`uintptr_t' type. */ +#undef HAVE_UINTPTR_T -/* Define if you have the header file. */ -#undef HAVE_SYS_SYSCTL_H +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H -/* Define if you have the header file. */ -#undef HAVE_SYS_SYSINFO_H +/* Define to 1 if you have the `vasprintf' function. */ +#undef HAVE_VASPRINTF -/* Define if you have the header file. */ -#undef HAVE_SYS_SYSMP_H +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK -/* Define if you have the header file. */ -#undef HAVE_SYS_SYSTEMCFG_H +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H -/* Define if you have the header file. */ -#undef HAVE_SYS_TABLE_H +/* Define to 1 if you have the `vfprintf' function. */ +#undef HAVE_VFPRINTF -/* Define if you have the header file. */ -#undef HAVE_SYS_TIME_H +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF -/* Define if you have the header file. */ -#undef HAVE_TIME_H +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H +/* Define to 1 if you have the `vsprintf' function. */ +#undef HAVE_VSPRINTF -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H +/* Define to 1 if you have the `waitpid' function. */ +#undef HAVE_WAITPID -/* whether byteorder is bigendian */ -#undef WORDS_BIGENDIAN +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if you have the `_doprnt' function. */ +#undef HAVE__DOPRNT + +/* Define if you have the _system_configuration variable. */ +#undef HAVE__SYSTEM_CONFIGURATION /* Define if the host machine stores words of multi-word integers in big-endian order. */ #undef HOST_WORDS_BIG_ENDIAN -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#undef BYTEORDER +/* Define if canonicalize_file_name is not declared in system header files. */ +#undef NEED_DECLARATION_CANONICALIZE_FILE_NAME /* Define if errno must be declared even when is included. */ #undef NEED_DECLARATION_ERRNO -/* Define if you have the `uintptr_t' type. */ -#undef HAVE_UINTPTR_T +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O -/* Define if you have the sys_errlist variable. */ -#undef HAVE_SYS_ERRLIST +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT -/* Define if you have the sys_nerr variable. */ -#undef HAVE_SYS_NERR +/* Define to the full name of this package. */ +#undef PACKAGE_NAME -/* Define if you have the sys_siglist variable. */ -#undef HAVE_SYS_SIGLIST +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP - systems. This function is required for alloca.c support on those - systems. */ -#undef CRAY_STACKSEG_END +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION -/* Define if you know the direction of stack growth for your system; - otherwise it will be automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ +/* Define if you know the direction of stack growth for your system; otherwise + it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows + toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION -/* Define if you have the _system_configuration variable. */ -#undef HAVE__SYSTEM_CONFIGURATION +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS -/* Define if canonicalize_file_name is not declared in system header files. */ -#undef NEED_DECLARATION_CANONICALIZE_FILE_NAME +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* whether byteorder is bigendian */ +#undef WORDS_BIGENDIAN +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned long' if does not define. */ +#undef uintptr_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/libiberty/configure.in b/libiberty/configure.in deleted file mode 100644 index eb8a99daa08..00000000000 --- a/libiberty/configure.in +++ /dev/null @@ -1,520 +0,0 @@ -dnl Process this file with autoconf to produce a configure script - -AC_PREREQ(2.57) -AC_INIT(xmalloc.c) - -# This works around the fact that libtool configuration may change LD -# for this particular configuration, but some shells, instead of -# keeping the changes in LD private, export them just because LD is -# exported. We don't use libtool yet, but some day we might, so... -ORIGINAL_LD_FOR_MULTILIBS=$LD - -dnl We use these options to decide which functions to include. -AC_ARG_WITH(target-subdir, -[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target]) -AC_ARG_WITH(build-subdir, -[ --with-build-subdir=SUBDIR Configuring in a subdirectory for build]) -AC_ARG_WITH(cross-host, -[ --with-cross-host=HOST Configuring with a cross compiler]) -AC_ARG_WITH(newlib, -[ --with-newlib Configuring with newlib]) - -if test "${srcdir}" = "."; then - if test -n "${with_build_subdir}"; then - libiberty_topdir="${srcdir}/../.." - with_target_subdir= - elif test -z "${with_target_subdir}"; then - libiberty_topdir="${srcdir}/.." - else - if test "${with_target_subdir}" != "."; then - libiberty_topdir="${srcdir}/${with_multisrctop}../.." - else - libiberty_topdir="${srcdir}/${with_multisrctop}.." - fi - fi -else - libiberty_topdir="${srcdir}/.." -fi -AC_SUBST(libiberty_topdir) -AC_CONFIG_AUX_DIR($libiberty_topdir) - -dnl Very limited version of automake's enable-maintainer-mode - -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode - enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - maintainer_mode=$enableval, - maintainer_mode=no) - -AC_MSG_RESULT($maintainer_mode) - -if test "$maintainer_mode" = "yes"; then - MAINT='' - NOTMAINT='#' -else - MAINT='#' - NOTMAINT='' -fi -AC_SUBST(MAINT)dnl -AC_SUBST(NOTMAINT)dnl - -# Do we have a single-tree copy of texinfo? Even if we do, we can't -# rely on it - libiberty is built before texinfo. -AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) -if test "x$MAKEINFO" = "x"; then - MAKEINFO="@echo makeinfo missing; true" - BUILD_INFO= -else - BUILD_INFO=info - case "$MAKEINFO" in - */missing\ makeinfo*) - BUILD_INFO= - AC_MSG_WARN([ -*** Makeinfo is missing. Info documentation will not be built.]) - ;; - *) - case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in - x*\ [[1-3]].* ) - MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true" - BUILD_INFO= - AC_MSG_WARN([ -*** Makeinfo is too old. Info documentation will not be built.]) - ;; - esac - ;; - esac -fi -AC_SUBST(MAKEINFO) -AC_SUBST(BUILD_INFO) - -AC_CHECK_PROG(PERL, perl, perl, ) -if test x"$PERL" = x""; then - HAVE_PERL='#' -else - HAVE_PERL='' -fi -AC_SUBST(HAVE_PERL) - -AC_CANONICAL_HOST - -dnl When we start using automake: -dnl AM_INIT_AUTOMAKE(libiberty, 1.0) - -dnl These must be called before AM_PROG_LIBTOOL, because it may want -dnl to call AC_CHECK_PROG. -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) - -GCC_NO_EXECUTABLES -AC_PROG_CC -AC_PROG_CPP_WERROR - -if test x$GCC = xyes; then - ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic' -fi -AC_SUBST(ac_libiberty_warn_cflags) - -AC_PROG_CC_C_O -# autoconf is lame and doesn't give us any substitution variable for this. -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then - NO_MINUS_C_MINUS_O=yes -else - OUTPUT_OPTION='-o $@' -fi -AC_SUBST(NO_MINUS_C_MINUS_O) -AC_SUBST(OUTPUT_OPTION) - -AC_C_CONST -AC_C_INLINE -AC_C_BIGENDIAN_CROSS - -dnl When we start using libtool: -dnl Default to a non shared library. This may be overridden by the -dnl configure option --enable-shared. -dnl AM_DISABLE_SHARED - -dnl When we start using libtool: -dnl AM_PROG_LIBTOOL - -dnl When we start using automake: -dnl AM_CONFIG_HEADER(config.h:config.in) -AC_CONFIG_HEADER(config.h:config.in) - -dnl When we start using automake: -dnl AM_MAINTAINER_MODE -dnl AC_EXEEXT - -dnl When we start using automake: -dnl AM_PROG_INSTALL -AC_PROG_INSTALL - -. ${srcdir}/config.table -host_makefile_frag=${frag} -AC_SUBST_FILE(host_makefile_frag) - -# It's OK to check for header files. Although the compiler may not be -# able to link anything, it had better be able to at least compile -# something. -AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h) -AC_HEADER_SYS_WAIT -AC_HEADER_TIME - -libiberty_AC_DECLARE_ERRNO - -AC_CHECK_TYPE(uintptr_t, unsigned long) -# Given the above check, we always have uintptr_t or a fallback -# definition. So define HAVE_UINTPTR_T in case any imported code -# relies on it. -AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.]) - -AC_TYPE_PID_T - -# This is the list of functions which libiberty will provide if they -# are not available on the host. - -funcs="asprintf" -funcs="$funcs atexit" -funcs="$funcs basename" -funcs="$funcs bcmp" -funcs="$funcs bcopy" -funcs="$funcs bsearch" -funcs="$funcs bzero" -funcs="$funcs calloc" -funcs="$funcs clock" -funcs="$funcs ffs" -funcs="$funcs getcwd" -funcs="$funcs getpagesize" -funcs="$funcs index" -funcs="$funcs insque" -funcs="$funcs memchr" -funcs="$funcs memcmp" -funcs="$funcs memcpy" -funcs="$funcs memmove" -funcs="$funcs mempcpy" -funcs="$funcs memset" -funcs="$funcs mkstemps" -funcs="$funcs putenv" -funcs="$funcs random" -funcs="$funcs rename" -funcs="$funcs rindex" -funcs="$funcs setenv" -funcs="$funcs snprintf" -funcs="$funcs sigsetmask" -funcs="$funcs stpcpy" -funcs="$funcs stpncpy" -funcs="$funcs strcasecmp" -funcs="$funcs strchr" -funcs="$funcs strdup" -funcs="$funcs strncasecmp" -funcs="$funcs strrchr" -funcs="$funcs strstr" -funcs="$funcs strtod" -funcs="$funcs strtol" -funcs="$funcs strtoul" -funcs="$funcs tmpnam" -funcs="$funcs vasprintf" -funcs="$funcs vfprintf" -funcs="$funcs vprintf" -funcs="$funcs vsnprintf" -funcs="$funcs vsprintf" -funcs="$funcs waitpid" - -# Also in the old function.def file: alloca, vfork, getopt. - -vars="sys_errlist sys_nerr sys_siglist" - -checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday" -checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp" -checkfuncs="$checkfuncs getsysinfo table sysctl" - -# These are neither executed nor required, but they help keep -# autoheader happy without adding a bunch of text to acconfig.h. -if test "x" = "y"; then - AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock \ - getcwd getpagesize index insque mkstemps memchr memcmp memcpy \ - memmove mempcpy memset putenv random rename rindex sigsetmask \ - strcasecmp setenv stpcpy stpncpy strchr strdup strncasecmp strrchr strstr \ - strtod strtol strtoul tmpnam vasprintf vfprintf vprintf \ - vsprintf waitpid getrusage on_exit psignal strerror strsignal \ - sysconf times sbrk gettimeofday ffs snprintf vsnprintf \ - pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl \ - realpath canonicalize_file_name) - AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.]) - AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.]) - AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.]) -fi - -# For each of these functions, if the host does not provide the -# function we want to put FN.o in LIBOBJS, and if the host does -# provide the function, we want to define HAVE_FN in config.h. - -setobjs= -CHECK= -target_header_dir= -if test -n "${with_target_subdir}"; then - - # We are being configured as a target library. AC_REPLACE_FUNCS - # may not work correctly, because the compiler may not be able to - # link executables. Note that we may still be being configured - # native. - - # If we are being configured for newlib, we know which functions - # newlib provide and which ones we will be expected to provide. - - if test "x${with_newlib}" = "xyes"; then - AC_LIBOBJ([asprintf]) - AC_LIBOBJ([basename]) - AC_LIBOBJ([insque]) - AC_LIBOBJ([random]) - AC_LIBOBJ([strdup]) - AC_LIBOBJ([vasprintf]) - - for f in $funcs; do - case "$f" in - asprintf | basename | insque | random | strdup | vasprintf) - ;; - *) - n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($n) - ;; - esac - done - - # newlib doesnt provide any of the variables in $vars, so we - # dont have to check them here. - - # Of the functions in $checkfuncs, newlib only has strerror. - AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR) - - setobjs=yes - - fi - - # We may wish to install the target headers somewhere. - AC_ARG_ENABLE(install-libiberty, - [ --enable-install-libiberty Install headers for end users], - enable_install_libiberty=$enableval, - enable_install_libiberty=no)dnl - - # Option parsed, now set things appropriately. - case x"$enable_install_libiberty" in - xyes|x) - target_header_dir=libiberty - ;; - xno) - target_header_dir= - ;; - *) - # This could be sanity-checked in various ways... - target_header_dir="${enable_install_libiberty}" - ;; - esac - - -else - - # Not a target library, so we set things up to run the test suite. - CHECK=check-cplus-dem - -fi - -AC_SUBST(CHECK) -AC_SUBST(target_header_dir) - -case "${host}" in - *-*-cygwin* | *-*-mingw*) - AC_DEFINE_NOAUTOHEADER(HAVE_SYS_ERRLIST) - AC_DEFINE_NOAUTOHEADER(HAVE_SYS_NERR) - ;; -esac - -if test -z "${setobjs}"; then - case "${host}" in - - *-*-vxworks*) - # Handle VxWorks configuration specially, since on VxWorks the - # libraries are actually on the target board, not in the file - # system. - AC_LIBOBJ([basename]) - AC_LIBOBJ([getpagesize]) - AC_LIBOBJ([insque]) - AC_LIBOBJ([random]) - AC_LIBOBJ([strcasecmp]) - AC_LIBOBJ([strncasecmp]) - AC_LIBOBJ([strdup]) - AC_LIBOBJ([vfork]) - AC_LIBOBJ([waitpid]) - AC_LIBOBJ([vasprintf]) - for f in $funcs; do - case "$f" in - basename | getpagesize | insque | random | strcasecmp) - ;; - strncasecmp | strdup | vfork | waitpid | vasprintf) - ;; - *) - n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($n) - ;; - esac - done - - # VxWorks doesn't provide any of the variables in $vars, so we - # don't have to check them here. - - # Of the functions in $checkfuncs, VxWorks only has strerror. - AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR) - - setobjs=yes - ;; - - esac -fi - -if test -z "${setobjs}"; then - - case "${host}" in - - *-*-cygwin*) - # The Cygwin library actually uses a couple of files from - # libiberty when it is built. If we are building a native - # Cygwin, and we run the tests, we will appear to have these - # files. However, when we go on to build winsup, we will wind up - # with a library which does not have the files, since they should - # have come from libiberty. - - # We handle this by removing the functions the winsup library - # provides from our shell variables, so that they appear to be - # missing. - - # DJ - only if we're *building* cygwin, not just building *with* cygwin - - if test -n "${with_target_subdir}" - then - funcs="`echo $funcs | sed -e 's/random//'`" - AC_LIBOBJ([random]) - vars="`echo $vars | sed -e 's/sys_siglist//'`" - checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`" - fi - ;; - - *-*-mingw32*) - # Under mingw32, sys_nerr and sys_errlist exist, but they are - # macros, so the test below won't find them. - libiberty_cv_var_sys_nerr=yes - libiberty_cv_var_sys_errlist=yes - ;; - - *-*-uwin*) - # Under some versions of uwin, vfork is notoriously buggy and the test - # can hang configure; on other versions, vfork exists just as a stub. - # FIXME: This should be removed once vfork in uwin's runtime is fixed. - ac_cv_func_vfork_works=no - # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are - # macros (actually, these are imported from a DLL, but the end effect - # is the same), so the test below won't find them. - libiberty_cv_var_sys_nerr=yes - libiberty_cv_var_sys_errlist=yes - ;; - - *-*-*vms*) - # Under VMS, vfork works very different than on Unix. The standard test - # won't work, and it isn't easily adaptable. It makes more sense to - # just force it. - ac_cv_func_vfork_works=yes - ;; - - esac - - # We haven't set the list of objects yet. Use the standard autoconf - # tests. This will only work if the compiler works. - AC_ISC_POSIX - AC_REPLACE_FUNCS($funcs) - libiberty_AC_FUNC_C_ALLOCA - AC_FUNC_VFORK - if test $ac_cv_func_vfork_works = no; then - AC_LIBOBJ([vfork]) - fi - # We only need _doprnt if we might use it to implement v*printf. - if test $ac_cv_func_vprintf != yes \ - || test $ac_cv_func_vfprintf != yes \ - || test $ac_cv_func_vsprintf != yes; then - AC_REPLACE_FUNCS(_doprnt) - else - AC_CHECK_FUNCS(_doprnt) - fi - - for v in $vars; do - AC_MSG_CHECKING([for $v]) - AC_CACHE_VAL(libiberty_cv_var_$v, - [AC_TRY_LINK([int *p;], [extern int $v []; p = $v;], - [eval "libiberty_cv_var_$v=yes"], - [eval "libiberty_cv_var_$v=no"])]) - if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then - AC_MSG_RESULT(yes) - n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($n) - else - AC_MSG_RESULT(no) - fi - done - - # special check for _system_configuration because AIX <4.3.2 do not - # contain the `physmem' member. - AC_MSG_CHECKING([for external symbol _system_configuration]) - AC_TRY_COMPILE([#include ], - [double x = _system_configuration.physmem;], - [AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1, - [Define if you have the _system_configuration variable.])], - [AC_MSG_RESULT([no])]) - - AC_CHECK_FUNCS($checkfuncs) - libiberty_NEED_DECLARATION(canonicalize_file_name) -fi - -# Figure out which version of pexecute to use. -case "${host}" in - *-*-mingw* | *-*-winnt*) pexecute=pex-win32.o ;; - *-*-msdosdjgpp*) pexecute=pex-djgpp.o ;; - *-*-msdos*) pexecute=pex-msdos.o ;; - *-*-os2-emx*) pexecute=pex-os2.o ;; - *) pexecute=pex-unix.o ;; -esac -AC_SUBST(pexecute) - -libiberty_AC_FUNC_STRNCMP - -# Install a library built with a cross compiler in $(tooldir) rather -# than $(libdir). -if test -z "${with_cross_host}"; then - INSTALL_DEST=libdir -else - INSTALL_DEST=tooldir -fi -AC_SUBST(INSTALL_DEST) - -# We need multilib support, but only if configuring for the target. -AC_OUTPUT(Makefile testsuite/Makefile, -[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h -if test -n "$CONFIG_FILES"; then - if test -n "${with_build_subdir}" || test -n "${with_target_subdir}"; then - # FIXME: We shouldn't need to set ac_file - ac_file=Makefile - LD="${ORIGINAL_LD_FOR_MULTILIBS}" - . ${libiberty_topdir}/config-ml.in - fi -fi], -srcdir=${srcdir} -host=${host} -target=${target} -with_target_subdir=${with_target_subdir} -with_build_subdir=${with_build_subdir} -with_multisubdir=${with_multisubdir} -ac_configure_args="--enable-multilib ${ac_configure_args}" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" -libiberty_topdir=${libiberty_topdir} -) diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index dbaa1c72c86..1c43eb8bd42 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -1,5 +1,5 @@ /* Demangler for g++ V3 ABI. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. Written by Ian Lance Taylor . This file is part of the libiberty library, which is part of GCC. @@ -45,6 +45,22 @@ enum gnu_v3_ctor_kinds is_gnu_v3_mangled_ctor (const char *name) enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor (const char *name) + Also, the interface to the component list is public, and defined in + demangle.h. The interface consists of these types, which are + defined in demangle.h: + enum demangle_component_type + struct demangle_component + and these functions defined in this file: + cplus_demangle_fill_name + cplus_demangle_fill_extended_operator + cplus_demangle_fill_ctor + cplus_demangle_fill_dtor + cplus_demangle_print + and other functions defined in the file cp-demint.c. + + This file also defines some other functions and variables which are + only to be used by the file cp-demint.c. + Preprocessor macros you can define while compiling this file: IN_LIBGCC2 @@ -54,7 +70,8 @@ instead of cplus_demangle_v3() and java_demangle_v3(). IN_GLIBCPP_V3 - If defined, this file defines only __cxa_demangle(). + If defined, this file defines only __cxa_demangle(), and no other + publically visible functions or variables. STANDALONE_DEMANGLER If defined, this file defines a main() function which demangles @@ -81,10 +98,55 @@ #include "ansidecl.h" #include "libiberty.h" #include "demangle.h" - -#define IN_CP_DEMANGLE #include "cp-demangle.h" +/* If IN_GLIBCPP_V3 is defined, some functions are made static. We + also rename them via #define to avoid compiler errors when the + static definition conflicts with the extern declaration in a header + file. */ +#ifdef IN_GLIBCPP_V3 + +#define CP_STATIC_IF_GLIBCPP_V3 static + +#define cplus_demangle_fill_name d_fill_name +static int +d_fill_name PARAMS ((struct demangle_component *, const char *, int)); + +#define cplus_demangle_fill_extended_operator d_fill_extended_operator +static int +d_fill_extended_operator PARAMS ((struct demangle_component *, int, + struct demangle_component *)); + +#define cplus_demangle_fill_ctor d_fill_ctor +static int +d_fill_ctor PARAMS ((struct demangle_component *, enum gnu_v3_ctor_kinds, + struct demangle_component *)); + +#define cplus_demangle_fill_dtor d_fill_dtor +static int +d_fill_dtor PARAMS ((struct demangle_component *, enum gnu_v3_dtor_kinds, + struct demangle_component *)); + +#define cplus_demangle_mangled_name d_mangled_name +static struct demangle_component * +d_mangled_name PARAMS ((struct d_info *, int)); + +#define cplus_demangle_type d_type +static struct demangle_component * +d_type PARAMS ((struct d_info *)); + +#define cplus_demangle_print d_print +static char * +d_print PARAMS ((int, const struct demangle_component *, int, size_t *)); + +#define cplus_demangle_init_info d_init_info +static void +d_init_info PARAMS ((const char *, int, size_t, struct d_info *)); + +#else /* ! defined(IN_GLIBCPP_V3) */ +#define CP_STATIC_IF_GLIBCPP_V3 +#endif /* ! defined(IN_GLIBCPP_V3) */ + /* See if the compiler supports dynamic arrays. */ #ifdef __GNUC__ @@ -118,20 +180,6 @@ #define ANONYMOUS_NAMESPACE_PREFIX_LEN \ (sizeof (ANONYMOUS_NAMESPACE_PREFIX) - 1) -/* Information we keep for operators. */ - -struct d_operator_info -{ - /* Mangled name. */ - const char *code; - /* Real name. */ - const char *name; - /* Length of real name. */ - int len; - /* Number of arguments. */ - int args; -}; - /* Information we keep for the standard substitutions. */ struct d_standard_sub_info @@ -155,47 +203,10 @@ struct d_standard_sub_info int set_last_name_len; }; -/* The information structure we pass around. */ - -struct d_info -{ - /* The string we are demangling. */ - const char *s; - /* The end of the string we are demangling. */ - const char *send; - /* The options passed to the demangler. */ - int options; - /* The next character in the string to consider. */ - const char *n; - /* The array of components. */ - struct d_comp *comps; - /* The index of the next available component. */ - int next_comp; - /* The number of available component structures. */ - int num_comps; - /* The array of substitutions. */ - struct d_comp **subs; - /* The index of the next substitution. */ - int next_sub; - /* The number of available entries in the subs array. */ - int num_subs; - /* The number of substitutions which we actually made from the subs - array, plus the number of template parameter references we - saw. */ - int did_subs; - /* The last name we saw, for constructors and destructors. */ - struct d_comp *last_name; - /* A running total of the length of large expansions from the - mangled name to the demangled name, such as standard - substitutions and builtin types. */ - int expansion; -}; +/* Accessors for subtrees of struct demangle_component. */ -#define d_peek_char(di) (*((di)->n)) -#define d_peek_next_char(di) ((di)->n[1]) -#define d_advance(di, i) ((di)->n += (i)) -#define d_next_char(di) (*((di)->n++)) -#define d_str(di) ((di)->n) +#define d_left(dc) ((dc)->u.s_binary.left) +#define d_right(dc) ((dc)->u.s_binary.right) /* A list of templates. This is used while printing. */ @@ -204,7 +215,7 @@ struct d_print_template /* Next template on the list. */ struct d_print_template *next; /* This template. */ - const struct d_comp *template; + const struct demangle_component *template; }; /* A list of type modifiers. This is used while printing. */ @@ -215,7 +226,7 @@ struct d_print_mod in which they appeared in the mangled string. */ struct d_print_mod *next; /* The modifier. */ - const struct d_comp *mod; + const struct demangle_component *mod; /* Whether this modifier was printed. */ int printed; /* The list of templates which applies to this modifier. */ @@ -275,75 +286,186 @@ struct d_print_info ((dpi)->buf == NULL || (dpi)->len == 0 ? '\0' : (dpi)->buf[(dpi)->len - 1]) #ifdef CP_DEMANGLE_DEBUG -static void d_dump PARAMS ((struct d_comp *, int)); +static void +d_dump PARAMS ((struct demangle_component *, int)); #endif -static struct d_comp *d_make_operator PARAMS ((struct d_info *, - const struct d_operator_info *)); -static struct d_comp *d_make_template_param PARAMS ((struct d_info *, long)); -static struct d_comp *d_make_sub PARAMS ((struct d_info *, const char *, int)); -static struct d_comp *d_mangled_name PARAMS ((struct d_info *, int)); -static int has_return_type PARAMS ((struct d_comp *)); -static int is_ctor_dtor_or_conversion PARAMS ((struct d_comp *)); -static struct d_comp *d_encoding PARAMS ((struct d_info *, int)); -static struct d_comp *d_name PARAMS ((struct d_info *)); -static struct d_comp *d_nested_name PARAMS ((struct d_info *)); -static struct d_comp *d_prefix PARAMS ((struct d_info *)); -static struct d_comp *d_unqualified_name PARAMS ((struct d_info *)); -static struct d_comp *d_source_name PARAMS ((struct d_info *)); -static long d_number PARAMS ((struct d_info *)); -static struct d_comp *d_identifier PARAMS ((struct d_info *, int)); -static struct d_comp *d_operator_name PARAMS ((struct d_info *)); -static struct d_comp *d_special_name PARAMS ((struct d_info *)); -static int d_call_offset PARAMS ((struct d_info *, int)); -static struct d_comp *d_ctor_dtor_name PARAMS ((struct d_info *)); -static struct d_comp *d_type PARAMS ((struct d_info *)); -static struct d_comp **d_cv_qualifiers PARAMS ((struct d_info *, - struct d_comp **, int)); -static struct d_comp *d_function_type PARAMS ((struct d_info *)); -static struct d_comp *d_bare_function_type PARAMS ((struct d_info *, int)); -static struct d_comp *d_class_enum_type PARAMS ((struct d_info *)); -static struct d_comp *d_array_type PARAMS ((struct d_info *)); -static struct d_comp *d_pointer_to_member_type PARAMS ((struct d_info *)); -static struct d_comp *d_template_param PARAMS ((struct d_info *)); -static struct d_comp *d_template_args PARAMS ((struct d_info *)); -static struct d_comp *d_template_arg PARAMS ((struct d_info *)); -static struct d_comp *d_expression PARAMS ((struct d_info *)); -static struct d_comp *d_expr_primary PARAMS ((struct d_info *)); -static struct d_comp *d_local_name PARAMS ((struct d_info *)); -static int d_discriminator PARAMS ((struct d_info *)); -static int d_add_substitution PARAMS ((struct d_info *, struct d_comp *)); -static struct d_comp *d_substitution PARAMS ((struct d_info *, int)); -static void d_print_resize PARAMS ((struct d_print_info *, size_t)); -static void d_print_append_char PARAMS ((struct d_print_info *, int)); -static void d_print_append_buffer PARAMS ((struct d_print_info *, const char *, - size_t)); -static void d_print_error PARAMS ((struct d_print_info *)); -static void d_print_comp PARAMS ((struct d_print_info *, - const struct d_comp *)); -static void d_print_java_identifier PARAMS ((struct d_print_info *, - const char *, int)); -static void d_print_mod_list PARAMS ((struct d_print_info *, - struct d_print_mod *, int)); -static void d_print_mod PARAMS ((struct d_print_info *, - const struct d_comp *)); -static void d_print_function_type PARAMS ((struct d_print_info *, - const struct d_comp *, - struct d_print_mod *)); -static void d_print_array_type PARAMS ((struct d_print_info *, - const struct d_comp *, - struct d_print_mod *)); -static void d_print_expr_op PARAMS ((struct d_print_info *, - const struct d_comp *)); -static void d_print_cast PARAMS ((struct d_print_info *, - const struct d_comp *)); -static void d_init_info PARAMS ((const char *, int, size_t, struct d_info *)); -static char *d_demangle PARAMS ((const char *, int, size_t *)); + +static struct demangle_component * +d_make_empty PARAMS ((struct d_info *)); + +static struct demangle_component * +d_make_comp PARAMS ((struct d_info *, enum demangle_component_type, + struct demangle_component *, + struct demangle_component *)); + +static struct demangle_component * +d_make_name PARAMS ((struct d_info *, const char *, int)); + +static struct demangle_component * +d_make_builtin_type PARAMS ((struct d_info *, + const struct demangle_builtin_type_info *)); + +static struct demangle_component * +d_make_operator PARAMS ((struct d_info *, + const struct demangle_operator_info *)); + +static struct demangle_component * +d_make_extended_operator PARAMS ((struct d_info *, int, + struct demangle_component *)); + +static struct demangle_component * +d_make_ctor PARAMS ((struct d_info *, enum gnu_v3_ctor_kinds, + struct demangle_component *)); + +static struct demangle_component * +d_make_dtor PARAMS ((struct d_info *, enum gnu_v3_dtor_kinds, + struct demangle_component *)); + +static struct demangle_component * +d_make_template_param PARAMS ((struct d_info *, long)); + +static struct demangle_component * +d_make_sub PARAMS ((struct d_info *, const char *, int)); + +static int +has_return_type PARAMS ((struct demangle_component *)); + +static int +is_ctor_dtor_or_conversion PARAMS ((struct demangle_component *)); + +static struct demangle_component * +d_encoding PARAMS ((struct d_info *, int)); + +static struct demangle_component * +d_name PARAMS ((struct d_info *)); + +static struct demangle_component * +d_nested_name PARAMS ((struct d_info *)); + +static struct demangle_component * +d_prefix PARAMS ((struct d_info *)); + +static struct demangle_component * +d_unqualified_name PARAMS ((struct d_info *)); + +static struct demangle_component * +d_source_name PARAMS ((struct d_info *)); + +static long +d_number PARAMS ((struct d_info *)); + +static struct demangle_component * +d_identifier PARAMS ((struct d_info *, int)); + +static struct demangle_component * +d_operator_name PARAMS ((struct d_info *)); + +static struct demangle_component * +d_special_name PARAMS ((struct d_info *)); + +static int +d_call_offset PARAMS ((struct d_info *, int)); + +static struct demangle_component * +d_ctor_dtor_name PARAMS ((struct d_info *)); + +static struct demangle_component ** +d_cv_qualifiers PARAMS ((struct d_info *, struct demangle_component **, int)); + +static struct demangle_component * +d_function_type PARAMS ((struct d_info *)); + +static struct demangle_component * +d_bare_function_type PARAMS ((struct d_info *, int)); + +static struct demangle_component * +d_class_enum_type PARAMS ((struct d_info *)); + +static struct demangle_component * +d_array_type PARAMS ((struct d_info *)); + +static struct demangle_component * +d_pointer_to_member_type PARAMS ((struct d_info *)); + +static struct demangle_component * +d_template_param PARAMS ((struct d_info *)); + +static struct demangle_component * +d_template_args PARAMS ((struct d_info *)); + +static struct demangle_component * +d_template_arg PARAMS ((struct d_info *)); + +static struct demangle_component * +d_expression PARAMS ((struct d_info *)); + +static struct demangle_component * +d_expr_primary PARAMS ((struct d_info *)); + +static struct demangle_component * +d_local_name PARAMS ((struct d_info *)); + +static int +d_discriminator PARAMS ((struct d_info *)); + +static int +d_add_substitution PARAMS ((struct d_info *, struct demangle_component *)); + +static struct demangle_component * +d_substitution PARAMS ((struct d_info *, int)); + +static void +d_print_resize PARAMS ((struct d_print_info *, size_t)); + +static void +d_print_append_char PARAMS ((struct d_print_info *, int)); + +static void +d_print_append_buffer PARAMS ((struct d_print_info *, const char *, size_t)); + +static void +d_print_error PARAMS ((struct d_print_info *)); + +static void +d_print_comp PARAMS ((struct d_print_info *, + const struct demangle_component *)); + +static void +d_print_java_identifier PARAMS ((struct d_print_info *, const char *, int)); + +static void +d_print_mod_list PARAMS ((struct d_print_info *, struct d_print_mod *, int)); + +static void +d_print_mod PARAMS ((struct d_print_info *, + const struct demangle_component *)); + +static void +d_print_function_type PARAMS ((struct d_print_info *, + const struct demangle_component *, + struct d_print_mod *)); + +static void +d_print_array_type PARAMS ((struct d_print_info *, + const struct demangle_component *, + struct d_print_mod *)); + +static void +d_print_expr_op PARAMS ((struct d_print_info *, + const struct demangle_component *)); + +static void +d_print_cast PARAMS ((struct d_print_info *, + const struct demangle_component *)); + +static char * +d_demangle PARAMS ((const char *, int, size_t *)); #ifdef CP_DEMANGLE_DEBUG static void d_dump (dc, indent) - struct d_comp *dc; + struct demangle_component *dc; int indent; { int i; @@ -356,159 +478,159 @@ d_dump (dc, indent) switch (dc->type) { - case D_COMP_NAME: + case DEMANGLE_COMPONENT_NAME: printf ("name '%.*s'\n", dc->u.s_name.len, dc->u.s_name.s); return; - case D_COMP_TEMPLATE_PARAM: + case DEMANGLE_COMPONENT_TEMPLATE_PARAM: printf ("template parameter %ld\n", dc->u.s_number.number); return; - case D_COMP_CTOR: + case DEMANGLE_COMPONENT_CTOR: printf ("constructor %d\n", (int) dc->u.s_ctor.kind); d_dump (dc->u.s_ctor.name, indent + 2); return; - case D_COMP_DTOR: + case DEMANGLE_COMPONENT_DTOR: printf ("destructor %d\n", (int) dc->u.s_dtor.kind); d_dump (dc->u.s_dtor.name, indent + 2); return; - case D_COMP_SUB_STD: + case DEMANGLE_COMPONENT_SUB_STD: printf ("standard substitution %s\n", dc->u.s_string.string); return; - case D_COMP_BUILTIN_TYPE: + case DEMANGLE_COMPONENT_BUILTIN_TYPE: printf ("builtin type %s\n", dc->u.s_builtin.type->name); return; - case D_COMP_OPERATOR: + case DEMANGLE_COMPONENT_OPERATOR: printf ("operator %s\n", dc->u.s_operator.op->name); return; - case D_COMP_EXTENDED_OPERATOR: + case DEMANGLE_COMPONENT_EXTENDED_OPERATOR: printf ("extended operator with %d args\n", dc->u.s_extended_operator.args); d_dump (dc->u.s_extended_operator.name, indent + 2); return; - case D_COMP_QUAL_NAME: + case DEMANGLE_COMPONENT_QUAL_NAME: printf ("qualified name\n"); break; - case D_COMP_LOCAL_NAME: + case DEMANGLE_COMPONENT_LOCAL_NAME: printf ("local name\n"); break; - case D_COMP_TYPED_NAME: + case DEMANGLE_COMPONENT_TYPED_NAME: printf ("typed name\n"); break; - case D_COMP_TEMPLATE: + case DEMANGLE_COMPONENT_TEMPLATE: printf ("template\n"); break; - case D_COMP_VTABLE: + case DEMANGLE_COMPONENT_VTABLE: printf ("vtable\n"); break; - case D_COMP_VTT: + case DEMANGLE_COMPONENT_VTT: printf ("VTT\n"); break; - case D_COMP_CONSTRUCTION_VTABLE: + case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE: printf ("construction vtable\n"); break; - case D_COMP_TYPEINFO: + case DEMANGLE_COMPONENT_TYPEINFO: printf ("typeinfo\n"); break; - case D_COMP_TYPEINFO_NAME: + case DEMANGLE_COMPONENT_TYPEINFO_NAME: printf ("typeinfo name\n"); break; - case D_COMP_TYPEINFO_FN: + case DEMANGLE_COMPONENT_TYPEINFO_FN: printf ("typeinfo function\n"); break; - case D_COMP_THUNK: + case DEMANGLE_COMPONENT_THUNK: printf ("thunk\n"); break; - case D_COMP_VIRTUAL_THUNK: + case DEMANGLE_COMPONENT_VIRTUAL_THUNK: printf ("virtual thunk\n"); break; - case D_COMP_COVARIANT_THUNK: + case DEMANGLE_COMPONENT_COVARIANT_THUNK: printf ("covariant thunk\n"); break; - case D_COMP_JAVA_CLASS: + case DEMANGLE_COMPONENT_JAVA_CLASS: printf ("java class\n"); break; - case D_COMP_GUARD: + case DEMANGLE_COMPONENT_GUARD: printf ("guard\n"); break; - case D_COMP_REFTEMP: + case DEMANGLE_COMPONENT_REFTEMP: printf ("reference temporary\n"); break; - case D_COMP_RESTRICT: + case DEMANGLE_COMPONENT_RESTRICT: printf ("restrict\n"); break; - case D_COMP_VOLATILE: + case DEMANGLE_COMPONENT_VOLATILE: printf ("volatile\n"); break; - case D_COMP_CONST: + case DEMANGLE_COMPONENT_CONST: printf ("const\n"); break; - case D_COMP_RESTRICT_THIS: + case DEMANGLE_COMPONENT_RESTRICT_THIS: printf ("restrict this\n"); break; - case D_COMP_VOLATILE_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: printf ("volatile this\n"); break; - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: printf ("const this\n"); break; - case D_COMP_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: printf ("vendor type qualifier\n"); break; - case D_COMP_POINTER: + case DEMANGLE_COMPONENT_POINTER: printf ("pointer\n"); break; - case D_COMP_REFERENCE: + case DEMANGLE_COMPONENT_REFERENCE: printf ("reference\n"); break; - case D_COMP_COMPLEX: + case DEMANGLE_COMPONENT_COMPLEX: printf ("complex\n"); break; - case D_COMP_IMAGINARY: + case DEMANGLE_COMPONENT_IMAGINARY: printf ("imaginary\n"); break; - case D_COMP_VENDOR_TYPE: + case DEMANGLE_COMPONENT_VENDOR_TYPE: printf ("vendor type\n"); break; - case D_COMP_FUNCTION_TYPE: + case DEMANGLE_COMPONENT_FUNCTION_TYPE: printf ("function type\n"); break; - case D_COMP_ARRAY_TYPE: + case DEMANGLE_COMPONENT_ARRAY_TYPE: printf ("array type\n"); break; - case D_COMP_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: printf ("pointer to member type\n"); break; - case D_COMP_ARGLIST: + case DEMANGLE_COMPONENT_ARGLIST: printf ("argument list\n"); break; - case D_COMP_TEMPLATE_ARGLIST: + case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST: printf ("template argument list\n"); break; - case D_COMP_CAST: + case DEMANGLE_COMPONENT_CAST: printf ("cast\n"); break; - case D_COMP_UNARY: + case DEMANGLE_COMPONENT_UNARY: printf ("unary operator\n"); break; - case D_COMP_BINARY: + case DEMANGLE_COMPONENT_BINARY: printf ("binary operator\n"); break; - case D_COMP_BINARY_ARGS: + case DEMANGLE_COMPONENT_BINARY_ARGS: printf ("binary operator arguments\n"); break; - case D_COMP_TRINARY: + case DEMANGLE_COMPONENT_TRINARY: printf ("trinary operator\n"); break; - case D_COMP_TRINARY_ARG1: + case DEMANGLE_COMPONENT_TRINARY_ARG1: printf ("trinary operator arguments 1\n"); break; - case D_COMP_TRINARY_ARG2: + case DEMANGLE_COMPONENT_TRINARY_ARG2: printf ("trinary operator arguments 1\n"); break; - case D_COMP_LITERAL: + case DEMANGLE_COMPONENT_LITERAL: printf ("literal\n"); break; - case D_COMP_LITERAL_NEG: + case DEMANGLE_COMPONENT_LITERAL_NEG: printf ("negative literal\n"); break; } @@ -519,33 +641,105 @@ d_dump (dc, indent) #endif /* CP_DEMANGLE_DEBUG */ +/* Fill in a DEMANGLE_COMPONENT_NAME. */ + +CP_STATIC_IF_GLIBCPP_V3 +int +cplus_demangle_fill_name (p, s, len) + struct demangle_component *p; + const char *s; + int len; +{ + if (p == NULL || s == NULL || len == 0) + return 0; + p->type = DEMANGLE_COMPONENT_NAME; + p->u.s_name.s = s; + p->u.s_name.len = len; + return 1; +} + +/* Fill in a DEMANGLE_COMPONENT_EXTENDED_OPERATOR. */ + +CP_STATIC_IF_GLIBCPP_V3 +int +cplus_demangle_fill_extended_operator (p, args, name) + struct demangle_component *p; + int args; + struct demangle_component *name; +{ + if (p == NULL || args < 0 || name == NULL) + return 0; + p->type = DEMANGLE_COMPONENT_EXTENDED_OPERATOR; + p->u.s_extended_operator.args = args; + p->u.s_extended_operator.name = name; + return 1; +} + +/* Fill in a DEMANGLE_COMPONENT_CTOR. */ + +CP_STATIC_IF_GLIBCPP_V3 +int +cplus_demangle_fill_ctor (p, kind, name) + struct demangle_component *p; + enum gnu_v3_ctor_kinds kind; + struct demangle_component *name; +{ + if (p == NULL + || name == NULL + || (kind < gnu_v3_complete_object_ctor + && kind > gnu_v3_complete_object_allocating_ctor)) + return 0; + p->type = DEMANGLE_COMPONENT_CTOR; + p->u.s_ctor.kind = kind; + p->u.s_ctor.name = name; + return 1; +} + +/* Fill in a DEMANGLE_COMPONENT_DTOR. */ + +CP_STATIC_IF_GLIBCPP_V3 +int +cplus_demangle_fill_dtor (p, kind, name) + struct demangle_component *p; + enum gnu_v3_dtor_kinds kind; + struct demangle_component *name; +{ + if (p == NULL + || name == NULL + || (kind < gnu_v3_deleting_dtor + && kind > gnu_v3_base_object_dtor)) + return 0; + p->type = DEMANGLE_COMPONENT_DTOR; + p->u.s_dtor.kind = kind; + p->u.s_dtor.name = name; + return 1; +} + /* Add a new component. */ -struct d_comp * -cp_v3_d_make_empty (di, type) +static struct demangle_component * +d_make_empty (di) struct d_info *di; - enum d_comp_type type; { - struct d_comp *p; + struct demangle_component *p; if (di->next_comp >= di->num_comps) return NULL; p = &di->comps[di->next_comp]; - p->type = type; ++di->next_comp; return p; } /* Add a new generic component. */ -struct d_comp * -cp_v3_d_make_comp (di, type, left, right) +static struct demangle_component * +d_make_comp (di, type, left, right) struct d_info *di; - enum d_comp_type type; - struct d_comp *left; - struct d_comp *right; + enum demangle_component_type type; + struct demangle_component *left; + struct demangle_component *right; { - struct d_comp *p; + struct demangle_component *p; /* We check for errors here. A typical error would be a NULL return from a subroutine. We catch those here, and return NULL @@ -553,65 +747,65 @@ cp_v3_d_make_comp (di, type, left, right) switch (type) { /* These types require two parameters. */ - case D_COMP_QUAL_NAME: - case D_COMP_LOCAL_NAME: - case D_COMP_TYPED_NAME: - case D_COMP_TEMPLATE: - case D_COMP_VENDOR_TYPE_QUAL: - case D_COMP_PTRMEM_TYPE: - case D_COMP_UNARY: - case D_COMP_BINARY: - case D_COMP_BINARY_ARGS: - case D_COMP_TRINARY: - case D_COMP_TRINARY_ARG1: - case D_COMP_TRINARY_ARG2: - case D_COMP_LITERAL: - case D_COMP_LITERAL_NEG: + case DEMANGLE_COMPONENT_QUAL_NAME: + case DEMANGLE_COMPONENT_LOCAL_NAME: + case DEMANGLE_COMPONENT_TYPED_NAME: + case DEMANGLE_COMPONENT_TEMPLATE: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_UNARY: + case DEMANGLE_COMPONENT_BINARY: + case DEMANGLE_COMPONENT_BINARY_ARGS: + case DEMANGLE_COMPONENT_TRINARY: + case DEMANGLE_COMPONENT_TRINARY_ARG1: + case DEMANGLE_COMPONENT_TRINARY_ARG2: + case DEMANGLE_COMPONENT_LITERAL: + case DEMANGLE_COMPONENT_LITERAL_NEG: if (left == NULL || right == NULL) return NULL; break; /* These types only require one parameter. */ - case D_COMP_VTABLE: - case D_COMP_VTT: - case D_COMP_CONSTRUCTION_VTABLE: - case D_COMP_TYPEINFO: - case D_COMP_TYPEINFO_NAME: - case D_COMP_TYPEINFO_FN: - case D_COMP_THUNK: - case D_COMP_VIRTUAL_THUNK: - case D_COMP_COVARIANT_THUNK: - case D_COMP_JAVA_CLASS: - case D_COMP_GUARD: - case D_COMP_REFTEMP: - case D_COMP_POINTER: - case D_COMP_REFERENCE: - case D_COMP_COMPLEX: - case D_COMP_IMAGINARY: - case D_COMP_VENDOR_TYPE: - case D_COMP_ARGLIST: - case D_COMP_TEMPLATE_ARGLIST: - case D_COMP_CAST: + case DEMANGLE_COMPONENT_VTABLE: + case DEMANGLE_COMPONENT_VTT: + case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE: + case DEMANGLE_COMPONENT_TYPEINFO: + case DEMANGLE_COMPONENT_TYPEINFO_NAME: + case DEMANGLE_COMPONENT_TYPEINFO_FN: + case DEMANGLE_COMPONENT_THUNK: + case DEMANGLE_COMPONENT_VIRTUAL_THUNK: + case DEMANGLE_COMPONENT_COVARIANT_THUNK: + case DEMANGLE_COMPONENT_JAVA_CLASS: + case DEMANGLE_COMPONENT_GUARD: + case DEMANGLE_COMPONENT_REFTEMP: + case DEMANGLE_COMPONENT_POINTER: + case DEMANGLE_COMPONENT_REFERENCE: + case DEMANGLE_COMPONENT_COMPLEX: + case DEMANGLE_COMPONENT_IMAGINARY: + case DEMANGLE_COMPONENT_VENDOR_TYPE: + case DEMANGLE_COMPONENT_ARGLIST: + case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST: + case DEMANGLE_COMPONENT_CAST: if (left == NULL) return NULL; break; /* This needs a right parameter, but the left parameter can be empty. */ - case D_COMP_ARRAY_TYPE: + case DEMANGLE_COMPONENT_ARRAY_TYPE: if (right == NULL) return NULL; break; /* These are allowed to have no parameters--in some cases they will be filled in later. */ - case D_COMP_FUNCTION_TYPE: - case D_COMP_RESTRICT: - case D_COMP_VOLATILE: - case D_COMP_CONST: - case D_COMP_RESTRICT_THIS: - case D_COMP_VOLATILE_THIS: - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_FUNCTION_TYPE: + case DEMANGLE_COMPONENT_RESTRICT: + case DEMANGLE_COMPONENT_VOLATILE: + case DEMANGLE_COMPONENT_CONST: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: break; /* Other types should not be seen here. */ @@ -619,9 +813,10 @@ cp_v3_d_make_comp (di, type, left, right) return NULL; } - p = cp_v3_d_make_empty (di, type); + p = d_make_empty (di); if (p != NULL) { + p->type = type; p->u.s_binary.left = left; p->u.s_binary.right = right; } @@ -630,182 +825,138 @@ cp_v3_d_make_comp (di, type, left, right) /* Add a new name component. */ -struct d_comp * -cp_v3_d_make_name (di, s, len) +static struct demangle_component * +d_make_name (di, s, len) struct d_info *di; const char *s; int len; { - struct d_comp *p; + struct demangle_component *p; - if (s == NULL || len == 0) + p = d_make_empty (di); + if (! cplus_demangle_fill_name (p, s, len)) return NULL; - p = cp_v3_d_make_empty (di, D_COMP_NAME); - if (p != NULL) - { - p->u.s_name.s = s; - p->u.s_name.len = len; - } return p; } /* Add a new builtin type component. */ -#define NL(s) s, (sizeof s) - 1 - -const struct d_builtin_type_info d_builtin_types[26] = -{ - /* a */ { NL ("signed char"), NL ("signed char"), D_PRINT_INT }, - /* b */ { NL ("bool"), NL ("boolean"), D_PRINT_BOOL }, - /* c */ { NL ("char"), NL ("byte"), D_PRINT_INT }, - /* d */ { NL ("double"), NL ("double"), D_PRINT_DEFAULT }, - /* e */ { NL ("long double"), NL ("long double"), D_PRINT_DEFAULT }, - /* f */ { NL ("float"), NL ("float"), D_PRINT_DEFAULT }, - /* g */ { NL ("__float128"), NL ("__float128"), D_PRINT_DEFAULT }, - /* h */ { NL ("unsigned char"), NL ("unsigned char"), D_PRINT_INT }, - /* i */ { NL ("int"), NL ("int"), D_PRINT_INT }, - /* j */ { NL ("unsigned int"), NL ("unsigned"), D_PRINT_INT }, - /* k */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, - /* l */ { NL ("long"), NL ("long"), D_PRINT_LONG }, - /* m */ { NL ("unsigned long"), NL ("unsigned long"), D_PRINT_LONG }, - /* n */ { NL ("__int128"), NL ("__int128"), D_PRINT_DEFAULT }, - /* o */ { NL ("unsigned __int128"), NL ("unsigned __int128"), D_PRINT_DEFAULT }, - /* p */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, - /* q */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, - /* r */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, - /* s */ { NL ("short"), NL ("short"), D_PRINT_INT }, - /* t */ { NL ("unsigned short"), NL ("unsigned short"), D_PRINT_INT }, - /* u */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, - /* v */ { NL ("void"), NL ("void"), D_PRINT_VOID }, - /* w */ { NL ("wchar_t"), NL ("char"), D_PRINT_INT }, - /* x */ { NL ("long long"), NL ("long"), D_PRINT_DEFAULT }, - /* y */ { NL ("unsigned long long"), NL ("unsigned long long"), D_PRINT_DEFAULT }, - /* z */ { NL ("..."), NL ("..."), D_PRINT_DEFAULT }, -}; - -struct d_comp * -cp_v3_d_make_builtin_type (di, c) +static struct demangle_component * +d_make_builtin_type (di, type) struct d_info *di; - int c; + const struct demangle_builtin_type_info *type; { - struct d_comp *p; - const struct d_builtin_type_info *type; + struct demangle_component *p; - type = &d_builtin_types[c - 'a']; if (type == NULL) return NULL; - p = cp_v3_d_make_empty (di, D_COMP_BUILTIN_TYPE); + p = d_make_empty (di); if (p != NULL) - p->u.s_builtin.type = type; + { + p->type = DEMANGLE_COMPONENT_BUILTIN_TYPE; + p->u.s_builtin.type = type; + } return p; } /* Add a new operator component. */ -static struct d_comp * +static struct demangle_component * d_make_operator (di, op) struct d_info *di; - const struct d_operator_info *op; + const struct demangle_operator_info *op; { - struct d_comp *p; + struct demangle_component *p; - p = cp_v3_d_make_empty (di, D_COMP_OPERATOR); + p = d_make_empty (di); if (p != NULL) - p->u.s_operator.op = op; + { + p->type = DEMANGLE_COMPONENT_OPERATOR; + p->u.s_operator.op = op; + } return p; } /* Add a new extended operator component. */ -struct d_comp * -cp_v3_d_make_extended_operator (di, args, name) +static struct demangle_component * +d_make_extended_operator (di, args, name) struct d_info *di; int args; - struct d_comp *name; + struct demangle_component *name; { - struct d_comp *p; + struct demangle_component *p; - if (name == NULL) + p = d_make_empty (di); + if (! cplus_demangle_fill_extended_operator (p, args, name)) return NULL; - p = cp_v3_d_make_empty (di, D_COMP_EXTENDED_OPERATOR); - if (p != NULL) - { - p->u.s_extended_operator.args = args; - p->u.s_extended_operator.name = name; - } return p; } /* Add a new constructor component. */ -struct d_comp * -cp_v3_d_make_ctor (di, kind, name) +static struct demangle_component * +d_make_ctor (di, kind, name) struct d_info *di; enum gnu_v3_ctor_kinds kind; - struct d_comp *name; + struct demangle_component *name; { - struct d_comp *p; + struct demangle_component *p; - if (name == NULL) + p = d_make_empty (di); + if (! cplus_demangle_fill_ctor (p, kind, name)) return NULL; - p = cp_v3_d_make_empty (di, D_COMP_CTOR); - if (p != NULL) - { - p->u.s_ctor.kind = kind; - p->u.s_ctor.name = name; - } return p; } /* Add a new destructor component. */ -struct d_comp * -cp_v3_d_make_dtor (di, kind, name) +static struct demangle_component * +d_make_dtor (di, kind, name) struct d_info *di; enum gnu_v3_dtor_kinds kind; - struct d_comp *name; + struct demangle_component *name; { - struct d_comp *p; + struct demangle_component *p; - if (name == NULL) + p = d_make_empty (di); + if (! cplus_demangle_fill_dtor (p, kind, name)) return NULL; - p = cp_v3_d_make_empty (di, D_COMP_DTOR); - if (p != NULL) - { - p->u.s_dtor.kind = kind; - p->u.s_dtor.name = name; - } return p; } /* Add a new template parameter. */ -static struct d_comp * +static struct demangle_component * d_make_template_param (di, i) struct d_info *di; long i; { - struct d_comp *p; + struct demangle_component *p; - p = cp_v3_d_make_empty (di, D_COMP_TEMPLATE_PARAM); + p = d_make_empty (di); if (p != NULL) - p->u.s_number.number = i; + { + p->type = DEMANGLE_COMPONENT_TEMPLATE_PARAM; + p->u.s_number.number = i; + } return p; } /* Add a new standard substitution component. */ -static struct d_comp * +static struct demangle_component * d_make_sub (di, name, len) struct d_info *di; const char *name; int len; { - struct d_comp *p; + struct demangle_component *p; - p = cp_v3_d_make_empty (di, D_COMP_SUB_STD); + p = d_make_empty (di); if (p != NULL) { + p->type = DEMANGLE_COMPONENT_SUB_STD; p->u.s_string.string = name; p->u.s_string.len = len; } @@ -816,8 +967,9 @@ d_make_sub (di, name, len) TOP_LEVEL is non-zero when called at the top level. */ -static struct d_comp * -d_mangled_name (di, top_level) +CP_STATIC_IF_GLIBCPP_V3 +struct demangle_component * +cplus_demangle_mangled_name (di, top_level) struct d_info *di; int top_level; { @@ -839,7 +991,7 @@ d_mangled_name (di, top_level) static int has_return_type (dc) - struct d_comp *dc; + struct demangle_component *dc; { if (dc == NULL) return 0; @@ -847,11 +999,11 @@ has_return_type (dc) { default: return 0; - case D_COMP_TEMPLATE: + case DEMANGLE_COMPONENT_TEMPLATE: return ! is_ctor_dtor_or_conversion (d_left (dc)); - case D_COMP_RESTRICT_THIS: - case D_COMP_VOLATILE_THIS: - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: return has_return_type (d_left (dc)); } } @@ -861,7 +1013,7 @@ has_return_type (dc) static int is_ctor_dtor_or_conversion (dc) - struct d_comp *dc; + struct demangle_component *dc; { if (dc == NULL) return 0; @@ -869,12 +1021,12 @@ is_ctor_dtor_or_conversion (dc) { default: return 0; - case D_COMP_QUAL_NAME: - case D_COMP_LOCAL_NAME: + case DEMANGLE_COMPONENT_QUAL_NAME: + case DEMANGLE_COMPONENT_LOCAL_NAME: return is_ctor_dtor_or_conversion (d_right (dc)); - case D_COMP_CTOR: - case D_COMP_DTOR: - case D_COMP_CAST: + case DEMANGLE_COMPONENT_CTOR: + case DEMANGLE_COMPONENT_DTOR: + case DEMANGLE_COMPONENT_CAST: return 1; } } @@ -888,7 +1040,7 @@ is_ctor_dtor_or_conversion (dc) parameters. We only set this at the top level, because otherwise we would not correctly demangle names in local scopes. */ -static struct d_comp * +static struct demangle_component * d_encoding (di, top_level) struct d_info *di; int top_level; @@ -899,7 +1051,7 @@ d_encoding (di, top_level) return d_special_name (di); else { - struct d_comp *dc; + struct demangle_component *dc; dc = d_name (di); @@ -908,17 +1060,34 @@ d_encoding (di, top_level) /* Strip off any initial CV-qualifiers, as they really apply to the `this' parameter, and they were not output by the v2 demangler without DMGL_PARAMS. */ - while (dc->type == D_COMP_RESTRICT_THIS - || dc->type == D_COMP_VOLATILE_THIS - || dc->type == D_COMP_CONST_THIS) + while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS + || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS + || dc->type == DEMANGLE_COMPONENT_CONST_THIS) dc = d_left (dc); + + /* If the top level is a DEMANGLE_COMPONENT_LOCAL_NAME, then + there may be CV-qualifiers on its right argument which + really apply here; this happens when parsing a class + which is local to a function. */ + if (dc->type == DEMANGLE_COMPONENT_LOCAL_NAME) + { + struct demangle_component *dcr; + + dcr = d_right (dc); + while (dcr->type == DEMANGLE_COMPONENT_RESTRICT_THIS + || dcr->type == DEMANGLE_COMPONENT_VOLATILE_THIS + || dcr->type == DEMANGLE_COMPONENT_CONST_THIS) + dcr = d_left (dcr); + dc->u.s_binary.right = dcr; + } + return dc; } peek = d_peek_char (di); if (peek == '\0' || peek == 'E') return dc; - return cp_v3_d_make_comp (di, D_COMP_TYPED_NAME, dc, + return d_make_comp (di, DEMANGLE_COMPONENT_TYPED_NAME, dc, d_bare_function_type (di, has_return_type (dc))); } } @@ -935,12 +1104,12 @@ d_encoding (di, top_level) ::= */ -static struct d_comp * +static struct demangle_component * d_name (di) struct d_info *di; { char peek = d_peek_char (di); - struct d_comp *dc; + struct demangle_component *dc; switch (peek) { @@ -962,7 +1131,8 @@ d_name (di) else { d_advance (di, 2); - dc = cp_v3_d_make_comp (di, D_COMP_QUAL_NAME, cp_v3_d_make_name (di, "std", 3), + dc = d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, + d_make_name (di, "std", 3), d_unqualified_name (di)); di->expansion += 3; subst = 0; @@ -985,7 +1155,8 @@ d_name (di) if (! d_add_substitution (di, dc)) return NULL; } - dc = cp_v3_d_make_comp (di, D_COMP_TEMPLATE, dc, d_template_args (di)); + dc = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, dc, + d_template_args (di)); } return dc; @@ -1000,7 +1171,8 @@ d_name (di) candidate. */ if (! d_add_substitution (di, dc)) return NULL; - dc = cp_v3_d_make_comp (di, D_COMP_TEMPLATE, dc, d_template_args (di)); + dc = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, dc, + d_template_args (di)); } return dc; } @@ -1010,12 +1182,12 @@ d_name (di) ::= N [] E */ -static struct d_comp * +static struct demangle_component * d_nested_name (di) struct d_info *di; { - struct d_comp *ret; - struct d_comp **pret; + struct demangle_component *ret; + struct demangle_component **pret; if (d_next_char (di) != 'N') return NULL; @@ -1045,17 +1217,17 @@ d_nested_name (di) ::= */ -static struct d_comp * +static struct demangle_component * d_prefix (di) struct d_info *di; { - struct d_comp *ret = NULL; + struct demangle_component *ret = NULL; while (1) { char peek; - enum d_comp_type comb_type; - struct d_comp *dc; + enum demangle_component_type comb_type; + struct demangle_component *dc; peek = d_peek_char (di); if (peek == '\0') @@ -1065,7 +1237,7 @@ d_prefix (di) that in the grammar. The older code does not accept a here. */ - comb_type = D_COMP_QUAL_NAME; + comb_type = DEMANGLE_COMPONENT_QUAL_NAME; if (IS_DIGIT (peek) || IS_LOWER (peek) || peek == 'C' @@ -1077,7 +1249,7 @@ d_prefix (di) { if (ret == NULL) return NULL; - comb_type = D_COMP_TEMPLATE; + comb_type = DEMANGLE_COMPONENT_TEMPLATE; dc = d_template_args (di); } else if (peek == 'T') @@ -1090,7 +1262,7 @@ d_prefix (di) if (ret == NULL) ret = dc; else - ret = cp_v3_d_make_comp (di, comb_type, ret, dc); + ret = d_make_comp (di, comb_type, ret, dc); if (peek != 'S' && d_peek_char (di) != 'E') { @@ -1105,7 +1277,7 @@ d_prefix (di) ::= */ -static struct d_comp * +static struct demangle_component * d_unqualified_name (di) struct d_info *di; { @@ -1116,10 +1288,10 @@ d_unqualified_name (di) return d_source_name (di); else if (IS_LOWER (peek)) { - struct d_comp *ret; + struct demangle_component *ret; ret = d_operator_name (di); - if (ret != NULL && ret->type == D_COMP_OPERATOR) + if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR) di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2; return ret; } @@ -1131,12 +1303,12 @@ d_unqualified_name (di) /* ::= <(positive length) number> */ -static struct d_comp * +static struct demangle_component * d_source_name (di) struct d_info *di; { long len; - struct d_comp *ret; + struct demangle_component *ret; len = d_number (di); if (len <= 0) @@ -1182,7 +1354,7 @@ d_number (di) /* identifier ::= <(unqualified source code identifier)> */ -static struct d_comp * +static struct demangle_component * d_identifier (di, len) struct d_info *di; int len; @@ -1217,12 +1389,12 @@ d_identifier (di, len) && s[1] == 'N') { di->expansion -= len - sizeof "(anonymous namespace)"; - return cp_v3_d_make_name (di, "(anonymous namespace)", + return d_make_name (di, "(anonymous namespace)", sizeof "(anonymous namespace)" - 1); } } - return cp_v3_d_make_name (di, name, len); + return d_make_name (di, name, len); } /* operator_name ::= many different two character encodings. @@ -1230,7 +1402,10 @@ d_identifier (di, len) ::= v */ -const struct d_operator_info d_operators[] = +#define NL(s) s, (sizeof s) - 1 + +CP_STATIC_IF_GLIBCPP_V3 +const struct demangle_operator_info cplus_demangle_operators[] = { { "aN", NL ("&="), 2 }, { "aS", NL ("="), 2 }, @@ -1280,10 +1455,11 @@ const struct d_operator_info d_operators[] = { "rm", NL ("%"), 2 }, { "rs", NL (">>"), 2 }, { "st", NL ("sizeof "), 1 }, - { "sz", NL ("sizeof "), 1 } + { "sz", NL ("sizeof "), 1 }, + { NULL, NULL, 0, 0 } }; -static struct d_comp * +static struct demangle_component * d_operator_name (di) struct d_info *di; { @@ -1293,21 +1469,27 @@ d_operator_name (di) c1 = d_next_char (di); c2 = d_next_char (di); if (c1 == 'v' && IS_DIGIT (c2)) - return cp_v3_d_make_extended_operator (di, c2 - '0', d_source_name (di)); + return d_make_extended_operator (di, c2 - '0', d_source_name (di)); else if (c1 == 'c' && c2 == 'v') - return cp_v3_d_make_comp (di, D_COMP_CAST, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_CAST, + cplus_demangle_type (di), NULL); else { + /* LOW is the inclusive lower bound. */ int low = 0; - int high = sizeof (d_operators) / sizeof (d_operators[0]); + /* HIGH is the exclusive upper bound. We subtract one to ignore + the sentinel at the end of the array. */ + int high = ((sizeof (cplus_demangle_operators) + / sizeof (cplus_demangle_operators[0])) + - 1); while (1) { int i; - const struct d_operator_info *p; + const struct demangle_operator_info *p; i = low + (high - low) / 2; - p = d_operators + i; + p = cplus_demangle_operators + i; if (c1 == p->code[0] && c2 == p->code[1]) return d_make_operator (di, p); @@ -1322,22 +1504,6 @@ d_operator_name (di) } } -struct d_comp * -cp_v3_d_make_operator_from_string (di, opname) - struct d_info *di; - const char *opname; -{ - unsigned int i; - - for (i = 0; i < ARRAY_SIZE (d_operators); i++) - { - if (strcmp (d_operators[i].name, opname) == 0) - return d_make_operator (di, &d_operators[i]); - } - - return NULL; -} - /* ::= TV ::= TT ::= TI @@ -1352,7 +1518,7 @@ cp_v3_d_make_operator_from_string (di, opname) ::= GR */ -static struct d_comp * +static struct demangle_component * d_special_name (di) struct d_info *di; { @@ -1366,58 +1532,65 @@ d_special_name (di) { case 'V': di->expansion -= 5; - return cp_v3_d_make_comp (di, D_COMP_VTABLE, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_VTABLE, + cplus_demangle_type (di), NULL); case 'T': di->expansion -= 10; - return cp_v3_d_make_comp (di, D_COMP_VTT, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_VTT, + cplus_demangle_type (di), NULL); case 'I': - return cp_v3_d_make_comp (di, D_COMP_TYPEINFO, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO, + cplus_demangle_type (di), NULL); case 'S': - return cp_v3_d_make_comp (di, D_COMP_TYPEINFO_NAME, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO_NAME, + cplus_demangle_type (di), NULL); case 'h': if (! d_call_offset (di, 'h')) return NULL; - return cp_v3_d_make_comp (di, D_COMP_THUNK, d_encoding (di, 0), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_THUNK, + d_encoding (di, 0), NULL); case 'v': if (! d_call_offset (di, 'v')) return NULL; - return cp_v3_d_make_comp (di, D_COMP_VIRTUAL_THUNK, d_encoding (di, 0), - NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_VIRTUAL_THUNK, + d_encoding (di, 0), NULL); case 'c': if (! d_call_offset (di, '\0')) return NULL; if (! d_call_offset (di, '\0')) return NULL; - return cp_v3_d_make_comp (di, D_COMP_COVARIANT_THUNK, d_encoding (di, 0), - NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_COVARIANT_THUNK, + d_encoding (di, 0), NULL); case 'C': { - struct d_comp *derived_type; + struct demangle_component *derived_type; long offset; - struct d_comp *base_type; + struct demangle_component *base_type; - derived_type = d_type (di); + derived_type = cplus_demangle_type (di); offset = d_number (di); if (offset < 0) return NULL; if (d_next_char (di) != '_') return NULL; - base_type = d_type (di); + base_type = cplus_demangle_type (di); /* We don't display the offset. FIXME: We should display it in verbose mode. */ di->expansion += 5; - return cp_v3_d_make_comp (di, D_COMP_CONSTRUCTION_VTABLE, base_type, - derived_type); + return d_make_comp (di, DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE, + base_type, derived_type); } case 'F': - return cp_v3_d_make_comp (di, D_COMP_TYPEINFO_FN, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO_FN, + cplus_demangle_type (di), NULL); case 'J': - return cp_v3_d_make_comp (di, D_COMP_JAVA_CLASS, d_type (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_JAVA_CLASS, + cplus_demangle_type (di), NULL); default: return NULL; @@ -1428,10 +1601,11 @@ d_special_name (di) switch (d_next_char (di)) { case 'V': - return cp_v3_d_make_comp (di, D_COMP_GUARD, d_name (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_GUARD, d_name (di), NULL); case 'R': - return cp_v3_d_make_comp (di, D_COMP_REFTEMP, d_name (di), NULL); + return d_make_comp (di, DEMANGLE_COMPONENT_REFTEMP, d_name (di), + NULL); default: return NULL; @@ -1491,15 +1665,15 @@ d_call_offset (di, c) ::= D2 */ -static struct d_comp * +static struct demangle_component * d_ctor_dtor_name (di) struct d_info *di; { if (di->last_name != NULL) { - if (di->last_name->type == D_COMP_NAME) + if (di->last_name->type == DEMANGLE_COMPONENT_NAME) di->expansion += di->last_name->u.s_name.len; - else if (di->last_name->type == D_COMP_SUB_STD) + else if (di->last_name->type == DEMANGLE_COMPONENT_SUB_STD) di->expansion += di->last_name->u.s_string.len; } switch (d_next_char (di)) @@ -1522,7 +1696,7 @@ d_ctor_dtor_name (di) default: return NULL; } - return cp_v3_d_make_ctor (di, kind, di->last_name); + return d_make_ctor (di, kind, di->last_name); } case 'D': @@ -1543,7 +1717,7 @@ d_ctor_dtor_name (di) default: return NULL; } - return cp_v3_d_make_dtor (di, kind, di->last_name); + return d_make_dtor (di, kind, di->last_name); } default: @@ -1570,12 +1744,45 @@ d_ctor_dtor_name (di) ::= u */ -static struct d_comp * -d_type (di) +CP_STATIC_IF_GLIBCPP_V3 +const struct demangle_builtin_type_info +cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT] = +{ + /* a */ { NL ("signed char"), NL ("signed char"), D_PRINT_INT }, + /* b */ { NL ("bool"), NL ("boolean"), D_PRINT_BOOL }, + /* c */ { NL ("char"), NL ("byte"), D_PRINT_INT }, + /* d */ { NL ("double"), NL ("double"), D_PRINT_DEFAULT }, + /* e */ { NL ("long double"), NL ("long double"), D_PRINT_DEFAULT }, + /* f */ { NL ("float"), NL ("float"), D_PRINT_DEFAULT }, + /* g */ { NL ("__float128"), NL ("__float128"), D_PRINT_DEFAULT }, + /* h */ { NL ("unsigned char"), NL ("unsigned char"), D_PRINT_INT }, + /* i */ { NL ("int"), NL ("int"), D_PRINT_INT }, + /* j */ { NL ("unsigned int"), NL ("unsigned"), D_PRINT_INT }, + /* k */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, + /* l */ { NL ("long"), NL ("long"), D_PRINT_LONG }, + /* m */ { NL ("unsigned long"), NL ("unsigned long"), D_PRINT_LONG }, + /* n */ { NL ("__int128"), NL ("__int128"), D_PRINT_DEFAULT }, + /* o */ { NL ("unsigned __int128"), NL ("unsigned __int128"), D_PRINT_DEFAULT }, + /* p */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, + /* q */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, + /* r */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, + /* s */ { NL ("short"), NL ("short"), D_PRINT_INT }, + /* t */ { NL ("unsigned short"), NL ("unsigned short"), D_PRINT_INT }, + /* u */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT }, + /* v */ { NL ("void"), NL ("void"), D_PRINT_VOID }, + /* w */ { NL ("wchar_t"), NL ("char"), D_PRINT_INT }, + /* x */ { NL ("long long"), NL ("long"), D_PRINT_DEFAULT }, + /* y */ { NL ("unsigned long long"), NL ("unsigned long long"), D_PRINT_DEFAULT }, + /* z */ { NL ("..."), NL ("..."), D_PRINT_DEFAULT }, +}; + +CP_STATIC_IF_GLIBCPP_V3 +struct demangle_component * +cplus_demangle_type (di) struct d_info *di; { char peek; - struct d_comp *ret; + struct demangle_component *ret; int can_subst; /* The ABI specifies that when CV-qualifiers are used, the base type @@ -1596,12 +1803,12 @@ d_type (di) peek = d_peek_char (di); if (peek == 'r' || peek == 'V' || peek == 'K') { - struct d_comp **pret; + struct demangle_component **pret; pret = d_cv_qualifiers (di, &ret, 0); if (pret == NULL) return NULL; - *pret = d_type (di); + *pret = cplus_demangle_type (di); if (! d_add_substitution (di, ret)) return NULL; return ret; @@ -1615,7 +1822,8 @@ d_type (di) case 'h': case 'i': case 'j': case 'l': case 'm': case 'n': case 'o': case 's': case 't': case 'v': case 'w': case 'x': case 'y': case 'z': - ret = cp_v3_d_make_builtin_type (di, peek); + ret = d_make_builtin_type (di, + &cplus_demangle_builtin_types[peek - 'a']); di->expansion += ret->u.s_builtin.type->len; can_subst = 0; d_advance (di, 1); @@ -1623,7 +1831,8 @@ d_type (di) case 'u': d_advance (di, 1); - ret = cp_v3_d_make_comp (di, D_COMP_VENDOR_TYPE, d_source_name (di), NULL); + ret = d_make_comp (di, DEMANGLE_COMPONENT_VENDOR_TYPE, + d_source_name (di), NULL); break; case 'F': @@ -1654,7 +1863,8 @@ d_type (di) candidate. */ if (! d_add_substitution (di, ret)) return NULL; - ret = cp_v3_d_make_comp (di, D_COMP_TEMPLATE, ret, d_template_args (di)); + ret = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, ret, + d_template_args (di)); } break; @@ -1673,7 +1883,7 @@ d_type (di) /* The substituted name may have been a template name and may be followed by tepmlate args. */ if (d_peek_char (di) == 'I') - ret = cp_v3_d_make_comp (di, D_COMP_TEMPLATE, ret, + ret = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, ret, d_template_args (di)); else can_subst = 0; @@ -1685,7 +1895,7 @@ d_type (di) a new substitution candidate. However, if the substitution was followed by template arguments, then the whole thing is a substitution candidate. */ - if (ret != NULL && ret->type == D_COMP_SUB_STD) + if (ret != NULL && ret->type == DEMANGLE_COMPONENT_SUB_STD) can_subst = 0; } } @@ -1693,28 +1903,33 @@ d_type (di) case 'P': d_advance (di, 1); - ret = cp_v3_d_make_comp (di, D_COMP_POINTER, d_type (di), NULL); + ret = d_make_comp (di, DEMANGLE_COMPONENT_POINTER, + cplus_demangle_type (di), NULL); break; case 'R': d_advance (di, 1); - ret = cp_v3_d_make_comp (di, D_COMP_REFERENCE, d_type (di), NULL); + ret = d_make_comp (di, DEMANGLE_COMPONENT_REFERENCE, + cplus_demangle_type (di), NULL); break; case 'C': d_advance (di, 1); - ret = cp_v3_d_make_comp (di, D_COMP_COMPLEX, d_type (di), NULL); + ret = d_make_comp (di, DEMANGLE_COMPONENT_COMPLEX, + cplus_demangle_type (di), NULL); break; case 'G': d_advance (di, 1); - ret = cp_v3_d_make_comp (di, D_COMP_IMAGINARY, d_type (di), NULL); + ret = d_make_comp (di, DEMANGLE_COMPONENT_IMAGINARY, + cplus_demangle_type (di), NULL); break; case 'U': d_advance (di, 1); ret = d_source_name (di); - ret = cp_v3_d_make_comp (di, D_COMP_VENDOR_TYPE_QUAL, d_type (di), ret); + ret = d_make_comp (di, DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL, + cplus_demangle_type (di), ret); break; default: @@ -1732,10 +1947,10 @@ d_type (di) /* ::= [r] [V] [K] */ -static struct d_comp ** +static struct demangle_component ** d_cv_qualifiers (di, pret, member_fn) struct d_info *di; - struct d_comp **pret; + struct demangle_component **pret; int member_fn; { char peek; @@ -1743,26 +1958,32 @@ d_cv_qualifiers (di, pret, member_fn) peek = d_peek_char (di); while (peek == 'r' || peek == 'V' || peek == 'K') { - enum d_comp_type t; + enum demangle_component_type t; d_advance (di, 1); if (peek == 'r') { - t = member_fn ? D_COMP_RESTRICT_THIS : D_COMP_RESTRICT; + t = (member_fn + ? DEMANGLE_COMPONENT_RESTRICT_THIS + : DEMANGLE_COMPONENT_RESTRICT); di->expansion += sizeof "restrict"; } else if (peek == 'V') { - t = member_fn ? D_COMP_VOLATILE_THIS : D_COMP_VOLATILE; + t = (member_fn + ? DEMANGLE_COMPONENT_VOLATILE_THIS + : DEMANGLE_COMPONENT_VOLATILE); di->expansion += sizeof "volatile"; } else { - t = member_fn ? D_COMP_CONST_THIS : D_COMP_CONST; + t = (member_fn + ? DEMANGLE_COMPONENT_CONST_THIS + : DEMANGLE_COMPONENT_CONST); di->expansion += sizeof "const"; } - *pret = cp_v3_d_make_comp (di, t, NULL, NULL); + *pret = d_make_comp (di, t, NULL, NULL); if (*pret == NULL) return NULL; pret = &d_left (*pret); @@ -1775,11 +1996,11 @@ d_cv_qualifiers (di, pret, member_fn) /* ::= F [Y] E */ -static struct d_comp * +static struct demangle_component * d_function_type (di) struct d_info *di; { - struct d_comp *ret; + struct demangle_component *ret; if (d_next_char (di) != 'F') return NULL; @@ -1797,14 +2018,14 @@ d_function_type (di) /* ::= + */ -static struct d_comp * +static struct demangle_component * d_bare_function_type (di, has_return_type) struct d_info *di; int has_return_type; { - struct d_comp *return_type; - struct d_comp *tl; - struct d_comp **ptl; + struct demangle_component *return_type; + struct demangle_component *tl; + struct demangle_component **ptl; return_type = NULL; tl = NULL; @@ -1812,12 +2033,12 @@ d_bare_function_type (di, has_return_type) while (1) { char peek; - struct d_comp *type; + struct demangle_component *type; peek = d_peek_char (di); if (peek == '\0' || peek == 'E') break; - type = d_type (di); + type = cplus_demangle_type (di); if (type == NULL) return NULL; if (has_return_type) @@ -1827,7 +2048,7 @@ d_bare_function_type (di, has_return_type) } else { - *ptl = cp_v3_d_make_comp (di, D_COMP_ARGLIST, type, NULL); + *ptl = d_make_comp (di, DEMANGLE_COMPONENT_ARGLIST, type, NULL); if (*ptl == NULL) return NULL; ptl = &d_right (*ptl); @@ -1842,19 +2063,19 @@ d_bare_function_type (di, has_return_type) /* If we have a single parameter type void, omit it. */ if (d_right (tl) == NULL - && d_left (tl)->type == D_COMP_BUILTIN_TYPE + && d_left (tl)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE && d_left (tl)->u.s_builtin.type->print == D_PRINT_VOID) { di->expansion -= d_left (tl)->u.s_builtin.type->len; tl = NULL; } - return cp_v3_d_make_comp (di, D_COMP_FUNCTION_TYPE, return_type, tl); + return d_make_comp (di, DEMANGLE_COMPONENT_FUNCTION_TYPE, return_type, tl); } /* ::= */ -static struct d_comp * +static struct demangle_component * d_class_enum_type (di) struct d_info *di; { @@ -1865,12 +2086,12 @@ d_class_enum_type (di) ::= A [<(dimension) expression>] _ <(element) type> */ -static struct d_comp * +static struct demangle_component * d_array_type (di) struct d_info *di; { char peek; - struct d_comp *dim; + struct demangle_component *dim; if (d_next_char (di) != 'A') return NULL; @@ -1889,7 +2110,7 @@ d_array_type (di) peek = d_peek_char (di); } while (IS_DIGIT (peek)); - dim = cp_v3_d_make_name (di, s, d_str (di) - s); + dim = d_make_name (di, s, d_str (di) - s); if (dim == NULL) return NULL; } @@ -1903,23 +2124,24 @@ d_array_type (di) if (d_next_char (di) != '_') return NULL; - return cp_v3_d_make_comp (di, D_COMP_ARRAY_TYPE, dim, d_type (di)); + return d_make_comp (di, DEMANGLE_COMPONENT_ARRAY_TYPE, dim, + cplus_demangle_type (di)); } /* ::= M <(class) type> <(member) type> */ -static struct d_comp * +static struct demangle_component * d_pointer_to_member_type (di) struct d_info *di; { - struct d_comp *cl; - struct d_comp *mem; - struct d_comp **pmem; + struct demangle_component *cl; + struct demangle_component *mem; + struct demangle_component **pmem; if (d_next_char (di) != 'M') return NULL; - cl = d_type (di); + cl = cplus_demangle_type (di); /* The ABI specifies that any type can be a substitution source, and that M is followed by two types, and that when a CV-qualified @@ -1932,21 +2154,21 @@ d_pointer_to_member_type (di) g++ does not work that way. g++ treats only the CV-qualified member function as a substitution source. FIXME. So to work with g++, we need to pull off the CV-qualifiers here, in order to - avoid calling add_substitution() in d_type(). */ + avoid calling add_substitution() in cplus_demangle_type(). */ pmem = d_cv_qualifiers (di, &mem, 1); if (pmem == NULL) return NULL; - *pmem = d_type (di); + *pmem = cplus_demangle_type (di); - return cp_v3_d_make_comp (di, D_COMP_PTRMEM_TYPE, cl, mem); + return d_make_comp (di, DEMANGLE_COMPONENT_PTRMEM_TYPE, cl, mem); } /* ::= T_ ::= T <(parameter-2 non-negative) number> _ */ -static struct d_comp * +static struct demangle_component * d_template_param (di) struct d_info *di; { @@ -1975,13 +2197,13 @@ d_template_param (di) /* ::= I + E */ -static struct d_comp * +static struct demangle_component * d_template_args (di) struct d_info *di; { - struct d_comp *hold_last_name; - struct d_comp *al; - struct d_comp **pal; + struct demangle_component *hold_last_name; + struct demangle_component *al; + struct demangle_component **pal; /* Preserve the last name we saw--don't let the template arguments clobber it, as that would give us the wrong name for a subsequent @@ -1995,13 +2217,13 @@ d_template_args (di) pal = &al; while (1) { - struct d_comp *a; + struct demangle_component *a; a = d_template_arg (di); if (a == NULL) return NULL; - *pal = cp_v3_d_make_comp (di, D_COMP_TEMPLATE_ARGLIST, a, NULL); + *pal = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, a, NULL); if (*pal == NULL) return NULL; pal = &d_right (*pal); @@ -2023,11 +2245,11 @@ d_template_args (di) ::= */ -static struct d_comp * +static struct demangle_component * d_template_arg (di) struct d_info *di; { - struct d_comp *ret; + struct demangle_component *ret; switch (d_peek_char (di)) { @@ -2042,7 +2264,7 @@ d_template_arg (di) return d_expr_primary (di); default: - return d_type (di); + return cplus_demangle_type (di); } } @@ -2056,7 +2278,7 @@ d_template_arg (di) ::= */ -static struct d_comp * +static struct demangle_component * d_expression (di) struct d_info *di; { @@ -2069,46 +2291,47 @@ d_expression (di) return d_template_param (di); else if (peek == 's' && d_peek_next_char (di) == 'r') { - struct d_comp *type; - struct d_comp *name; + struct demangle_component *type; + struct demangle_component *name; d_advance (di, 2); - type = d_type (di); + type = cplus_demangle_type (di); name = d_unqualified_name (di); if (d_peek_char (di) != 'I') - return cp_v3_d_make_comp (di, D_COMP_QUAL_NAME, type, name); + return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type, name); else - return cp_v3_d_make_comp (di, D_COMP_QUAL_NAME, type, - cp_v3_d_make_comp (di, D_COMP_TEMPLATE, name, + return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type, + d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, name, d_template_args (di))); } else { - struct d_comp *op; + struct demangle_component *op; int args; op = d_operator_name (di); if (op == NULL) return NULL; - if (op->type == D_COMP_OPERATOR) + if (op->type == DEMANGLE_COMPONENT_OPERATOR) di->expansion += op->u.s_operator.op->len - 2; - if (op->type == D_COMP_OPERATOR + if (op->type == DEMANGLE_COMPONENT_OPERATOR && strcmp (op->u.s_operator.op->code, "st") == 0) - return cp_v3_d_make_comp (di, D_COMP_UNARY, op, d_type (di)); + return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op, + cplus_demangle_type (di)); switch (op->type) { default: return NULL; - case D_COMP_OPERATOR: + case DEMANGLE_COMPONENT_OPERATOR: args = op->u.s_operator.op->args; break; - case D_COMP_EXTENDED_OPERATOR: + case DEMANGLE_COMPONENT_EXTENDED_OPERATOR: args = op->u.s_extended_operator.args; break; - case D_COMP_CAST: + case DEMANGLE_COMPONENT_CAST: args = 1; break; } @@ -2116,27 +2339,32 @@ d_expression (di) switch (args) { case 1: - return cp_v3_d_make_comp (di, D_COMP_UNARY, op, d_expression (di)); + return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op, + d_expression (di)); case 2: { - struct d_comp *left; + struct demangle_component *left; left = d_expression (di); - return cp_v3_d_make_comp (di, D_COMP_BINARY, op, - cp_v3_d_make_comp (di, D_COMP_BINARY_ARGS, left, + return d_make_comp (di, DEMANGLE_COMPONENT_BINARY, op, + d_make_comp (di, + DEMANGLE_COMPONENT_BINARY_ARGS, + left, d_expression (di))); } case 3: { - struct d_comp *first; - struct d_comp *second; + struct demangle_component *first; + struct demangle_component *second; first = d_expression (di); second = d_expression (di); - return cp_v3_d_make_comp (di, D_COMP_TRINARY, op, - cp_v3_d_make_comp (di, D_COMP_TRINARY_ARG1, first, - cp_v3_d_make_comp (di, - D_COMP_TRINARY_ARG2, + return d_make_comp (di, DEMANGLE_COMPONENT_TRINARY, op, + d_make_comp (di, + DEMANGLE_COMPONENT_TRINARY_ARG1, + first, + d_make_comp (di, + DEMANGLE_COMPONENT_TRINARY_ARG2, second, d_expression (di)))); } @@ -2151,27 +2379,27 @@ d_expression (di) ::= L E */ -static struct d_comp * +static struct demangle_component * d_expr_primary (di) struct d_info *di; { - struct d_comp *ret; + struct demangle_component *ret; if (d_next_char (di) != 'L') return NULL; if (d_peek_char (di) == '_') - ret = d_mangled_name (di, 0); + ret = cplus_demangle_mangled_name (di, 0); else { - struct d_comp *type; - enum d_comp_type t; + struct demangle_component *type; + enum demangle_component_type t; const char *s; - type = d_type (di); + type = cplus_demangle_type (di); /* If we have a type we know how to print, we aren't going to print the type name itself. */ - if (type->type == D_COMP_BUILTIN_TYPE + if (type->type == DEMANGLE_COMPONENT_BUILTIN_TYPE && type->u.s_builtin.type->print != D_PRINT_DEFAULT) di->expansion -= type->u.s_builtin.type->len; @@ -2186,16 +2414,16 @@ d_expr_primary (di) constant in any readable form anyhow. We don't attempt to handle these cases. */ - t = D_COMP_LITERAL; + t = DEMANGLE_COMPONENT_LITERAL; if (d_peek_char (di) == 'n') { - t = D_COMP_LITERAL_NEG; + t = DEMANGLE_COMPONENT_LITERAL_NEG; d_advance (di, 1); } s = d_str (di); while (d_peek_char (di) != 'E') d_advance (di, 1); - ret = cp_v3_d_make_comp (di, t, type, cp_v3_d_make_name (di, s, d_str (di) - s)); + ret = d_make_comp (di, t, type, d_make_name (di, s, d_str (di) - s)); } if (d_next_char (di) != 'E') return NULL; @@ -2206,11 +2434,11 @@ d_expr_primary (di) ::= Z <(function) encoding> E s [] */ -static struct d_comp * +static struct demangle_component * d_local_name (di) struct d_info *di; { - struct d_comp *function; + struct demangle_component *function; if (d_next_char (di) != 'Z') return NULL; @@ -2225,18 +2453,18 @@ d_local_name (di) d_advance (di, 1); if (! d_discriminator (di)) return NULL; - return cp_v3_d_make_comp (di, D_COMP_LOCAL_NAME, function, - cp_v3_d_make_name (di, "string literal", + return d_make_comp (di, DEMANGLE_COMPONENT_LOCAL_NAME, function, + d_make_name (di, "string literal", sizeof "string literal" - 1)); } else { - struct d_comp *name; + struct demangle_component *name; name = d_name (di); if (! d_discriminator (di)) return NULL; - return cp_v3_d_make_comp (di, D_COMP_LOCAL_NAME, function, name); + return d_make_comp (di, DEMANGLE_COMPONENT_LOCAL_NAME, function, name); } } @@ -2265,7 +2493,7 @@ d_discriminator (di) static int d_add_substitution (di, dc) struct d_info *di; - struct d_comp *dc; + struct demangle_component *dc; { if (dc == NULL) return 0; @@ -2320,7 +2548,7 @@ static const struct d_standard_sub_info standard_subs[] = NL ("basic_iostream") } }; -static struct d_comp * +static struct demangle_component * d_substitution (di, prefix) struct d_info *di; int prefix; @@ -2499,10 +2727,11 @@ d_print_error (dpi) sets *PALC to 0 for a bad parse, or to 1 for a memory allocation failure. */ +CP_STATIC_IF_GLIBCPP_V3 char * -cp_v3_d_print (options, dc, estimate, palc) +cplus_demangle_print (options, dc, estimate, palc) int options; - const struct d_comp *dc; + const struct demangle_component *dc; int estimate; size_t *palc; { @@ -2541,7 +2770,7 @@ cp_v3_d_print (options, dc, estimate, palc) static void d_print_comp (dpi, dc) struct d_print_info *dpi; - const struct d_comp *dc; + const struct demangle_component *dc; { if (dc == NULL) { @@ -2553,15 +2782,15 @@ d_print_comp (dpi, dc) switch (dc->type) { - case D_COMP_NAME: + case DEMANGLE_COMPONENT_NAME: if ((dpi->options & DMGL_JAVA) == 0) d_append_buffer (dpi, dc->u.s_name.s, dc->u.s_name.len); else d_print_java_identifier (dpi, dc->u.s_name.s, dc->u.s_name.len); return; - case D_COMP_QUAL_NAME: - case D_COMP_LOCAL_NAME: + case DEMANGLE_COMPONENT_QUAL_NAME: + case DEMANGLE_COMPONENT_LOCAL_NAME: d_print_comp (dpi, d_left (dc)); if ((dpi->options & DMGL_JAVA) == 0) d_append_string_constant (dpi, "::"); @@ -2570,10 +2799,10 @@ d_print_comp (dpi, dc) d_print_comp (dpi, d_right (dc)); return; - case D_COMP_TYPED_NAME: + case DEMANGLE_COMPONENT_TYPED_NAME: { struct d_print_mod *hold_modifiers; - struct d_comp *typed_name; + struct demangle_component *typed_name; struct d_print_mod adpm[4]; unsigned int i; struct d_print_template dpt; @@ -2599,9 +2828,9 @@ d_print_comp (dpi, dc) adpm[i].templates = dpi->templates; ++i; - if (typed_name->type != D_COMP_RESTRICT_THIS - && typed_name->type != D_COMP_VOLATILE_THIS - && typed_name->type != D_COMP_CONST_THIS) + if (typed_name->type != DEMANGLE_COMPONENT_RESTRICT_THIS + && typed_name->type != DEMANGLE_COMPONENT_VOLATILE_THIS + && typed_name->type != DEMANGLE_COMPONENT_CONST_THIS) break; typed_name = d_left (typed_name); @@ -2609,25 +2838,25 @@ d_print_comp (dpi, dc) /* If typed_name is a template, then it applies to the function type as well. */ - if (typed_name->type == D_COMP_TEMPLATE) + if (typed_name->type == DEMANGLE_COMPONENT_TEMPLATE) { dpt.next = dpi->templates; dpi->templates = &dpt; dpt.template = typed_name; } - /* If typed_name is a D_COMP_LOCAL_NAME, then there may be - CV-qualifiers on its right argument which really apply - here; this happens when parsing a class which is local to a - function. */ - if (typed_name->type == D_COMP_LOCAL_NAME) + /* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then + there may be CV-qualifiers on its right argument which + really apply here; this happens when parsing a class which + is local to a function. */ + if (typed_name->type == DEMANGLE_COMPONENT_LOCAL_NAME) { - struct d_comp *local_name; + struct demangle_component *local_name; local_name = d_right (typed_name); - while (local_name->type == D_COMP_RESTRICT_THIS - || local_name->type == D_COMP_VOLATILE_THIS - || local_name->type == D_COMP_CONST_THIS) + while (local_name->type == DEMANGLE_COMPONENT_RESTRICT_THIS + || local_name->type == DEMANGLE_COMPONENT_VOLATILE_THIS + || local_name->type == DEMANGLE_COMPONENT_CONST_THIS) { if (i >= sizeof adpm / sizeof adpm[0]) { @@ -2650,7 +2879,7 @@ d_print_comp (dpi, dc) d_print_comp (dpi, d_right (dc)); - if (typed_name->type == D_COMP_TEMPLATE) + if (typed_name->type == DEMANGLE_COMPONENT_TEMPLATE) dpi->templates = dpt.next; /* If the modifiers didn't get printed by the type, print them @@ -2670,7 +2899,7 @@ d_print_comp (dpi, dc) return; } - case D_COMP_TEMPLATE: + case DEMANGLE_COMPONENT_TEMPLATE: { struct d_print_mod *hold_dpm; @@ -2697,10 +2926,10 @@ d_print_comp (dpi, dc) return; } - case D_COMP_TEMPLATE_PARAM: + case DEMANGLE_COMPONENT_TEMPLATE_PARAM: { long i; - struct d_comp *a; + struct demangle_component *a; struct d_print_template *hold_dpt; if (dpi->templates == NULL) @@ -2713,7 +2942,7 @@ d_print_comp (dpi, dc) a != NULL; a = d_right (a)) { - if (a->type != D_COMP_TEMPLATE_ARGLIST) + if (a->type != DEMANGLE_COMPONENT_TEMPLATE_ARGLIST) { d_print_error (dpi); return; @@ -2743,92 +2972,92 @@ d_print_comp (dpi, dc) return; } - case D_COMP_CTOR: + case DEMANGLE_COMPONENT_CTOR: d_print_comp (dpi, dc->u.s_ctor.name); return; - case D_COMP_DTOR: + case DEMANGLE_COMPONENT_DTOR: d_append_char (dpi, '~'); d_print_comp (dpi, dc->u.s_dtor.name); return; - case D_COMP_VTABLE: + case DEMANGLE_COMPONENT_VTABLE: d_append_string_constant (dpi, "vtable for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_VTT: + case DEMANGLE_COMPONENT_VTT: d_append_string_constant (dpi, "VTT for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_CONSTRUCTION_VTABLE: + case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE: d_append_string_constant (dpi, "construction vtable for "); d_print_comp (dpi, d_left (dc)); d_append_string_constant (dpi, "-in-"); d_print_comp (dpi, d_right (dc)); return; - case D_COMP_TYPEINFO: + case DEMANGLE_COMPONENT_TYPEINFO: d_append_string_constant (dpi, "typeinfo for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_TYPEINFO_NAME: + case DEMANGLE_COMPONENT_TYPEINFO_NAME: d_append_string_constant (dpi, "typeinfo name for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_TYPEINFO_FN: + case DEMANGLE_COMPONENT_TYPEINFO_FN: d_append_string_constant (dpi, "typeinfo fn for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_THUNK: + case DEMANGLE_COMPONENT_THUNK: d_append_string_constant (dpi, "non-virtual thunk to "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_VIRTUAL_THUNK: + case DEMANGLE_COMPONENT_VIRTUAL_THUNK: d_append_string_constant (dpi, "virtual thunk to "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_COVARIANT_THUNK: + case DEMANGLE_COMPONENT_COVARIANT_THUNK: d_append_string_constant (dpi, "covariant return thunk to "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_JAVA_CLASS: + case DEMANGLE_COMPONENT_JAVA_CLASS: d_append_string_constant (dpi, "java Class for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_GUARD: + case DEMANGLE_COMPONENT_GUARD: d_append_string_constant (dpi, "guard variable for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_REFTEMP: + case DEMANGLE_COMPONENT_REFTEMP: d_append_string_constant (dpi, "reference temporary for "); d_print_comp (dpi, d_left (dc)); return; - case D_COMP_SUB_STD: + case DEMANGLE_COMPONENT_SUB_STD: d_append_buffer (dpi, dc->u.s_string.string, dc->u.s_string.len); return; - case D_COMP_RESTRICT: - case D_COMP_VOLATILE: - case D_COMP_CONST: - case D_COMP_RESTRICT_THIS: - case D_COMP_VOLATILE_THIS: - case D_COMP_CONST_THIS: - case D_COMP_VENDOR_TYPE_QUAL: - case D_COMP_POINTER: - case D_COMP_REFERENCE: - case D_COMP_COMPLEX: - case D_COMP_IMAGINARY: + case DEMANGLE_COMPONENT_RESTRICT: + case DEMANGLE_COMPONENT_VOLATILE: + case DEMANGLE_COMPONENT_CONST: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_POINTER: + case DEMANGLE_COMPONENT_REFERENCE: + case DEMANGLE_COMPONENT_COMPLEX: + case DEMANGLE_COMPONENT_IMAGINARY: { /* We keep a list of modifiers on the stack. */ struct d_print_mod dpm; @@ -2851,7 +3080,7 @@ d_print_comp (dpi, dc) return; } - case D_COMP_BUILTIN_TYPE: + case DEMANGLE_COMPONENT_BUILTIN_TYPE: if ((dpi->options & DMGL_JAVA) == 0) d_append_buffer (dpi, dc->u.s_builtin.type->name, dc->u.s_builtin.type->len); @@ -2860,11 +3089,11 @@ d_print_comp (dpi, dc) dc->u.s_builtin.type->java_len); return; - case D_COMP_VENDOR_TYPE: + case DEMANGLE_COMPONENT_VENDOR_TYPE: d_print_comp (dpi, d_left (dc)); return; - case D_COMP_FUNCTION_TYPE: + case DEMANGLE_COMPONENT_FUNCTION_TYPE: { if (d_left (dc) != NULL) { @@ -2894,7 +3123,7 @@ d_print_comp (dpi, dc) return; } - case D_COMP_ARRAY_TYPE: + case DEMANGLE_COMPONENT_ARRAY_TYPE: { struct d_print_mod dpm; @@ -2919,7 +3148,7 @@ d_print_comp (dpi, dc) return; } - case D_COMP_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: { struct d_print_mod dpm; @@ -2945,8 +3174,8 @@ d_print_comp (dpi, dc) return; } - case D_COMP_ARGLIST: - case D_COMP_TEMPLATE_ARGLIST: + case DEMANGLE_COMPONENT_ARGLIST: + case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST: d_print_comp (dpi, d_left (dc)); if (d_right (dc) != NULL) { @@ -2955,7 +3184,7 @@ d_print_comp (dpi, dc) } return; - case D_COMP_OPERATOR: + case DEMANGLE_COMPONENT_OPERATOR: { char c; @@ -2968,18 +3197,18 @@ d_print_comp (dpi, dc) return; } - case D_COMP_EXTENDED_OPERATOR: + case DEMANGLE_COMPONENT_EXTENDED_OPERATOR: d_append_string_constant (dpi, "operator "); d_print_comp (dpi, dc->u.s_extended_operator.name); return; - case D_COMP_CAST: + case DEMANGLE_COMPONENT_CAST: d_append_string_constant (dpi, "operator "); d_print_cast (dpi, dc); return; - case D_COMP_UNARY: - if (d_left (dc)->type != D_COMP_CAST) + case DEMANGLE_COMPONENT_UNARY: + if (d_left (dc)->type != DEMANGLE_COMPONENT_CAST) d_print_expr_op (dpi, d_left (dc)); else { @@ -2990,12 +3219,12 @@ d_print_comp (dpi, dc) d_append_char (dpi, '('); d_print_comp (dpi, d_right (dc)); d_append_char (dpi, ')'); - if (d_left (dc)->type == D_COMP_CAST) + if (d_left (dc)->type == DEMANGLE_COMPONENT_CAST) d_append_char (dpi, ')'); return; - case D_COMP_BINARY: - if (d_right (dc)->type != D_COMP_BINARY_ARGS) + case DEMANGLE_COMPONENT_BINARY: + if (d_right (dc)->type != DEMANGLE_COMPONENT_BINARY_ARGS) { d_print_error (dpi); return; @@ -3004,7 +3233,7 @@ d_print_comp (dpi, dc) /* We wrap an expression which uses the greater-than operator in an extra layer of parens so that it does not get confused with the '>' which ends the template parameters. */ - if (d_left (dc)->type == D_COMP_OPERATOR + if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR && d_left (dc)->u.s_operator.op->len == 1 && d_left (dc)->u.s_operator.op->name[0] == '>') d_append_char (dpi, '('); @@ -3017,21 +3246,21 @@ d_print_comp (dpi, dc) d_print_comp (dpi, d_right (d_right (dc))); d_append_char (dpi, ')'); - if (d_left (dc)->type == D_COMP_OPERATOR + if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR && d_left (dc)->u.s_operator.op->len == 1 && d_left (dc)->u.s_operator.op->name[0] == '>') d_append_char (dpi, ')'); return; - case D_COMP_BINARY_ARGS: - /* We should only see this as part of D_COMP_BINARY. */ + case DEMANGLE_COMPONENT_BINARY_ARGS: + /* We should only see this as part of DEMANGLE_COMPONENT_BINARY. */ d_print_error (dpi); return; - case D_COMP_TRINARY: - if (d_right (dc)->type != D_COMP_TRINARY_ARG1 - || d_right (d_right (dc))->type != D_COMP_TRINARY_ARG2) + case DEMANGLE_COMPONENT_TRINARY: + if (d_right (dc)->type != DEMANGLE_COMPONENT_TRINARY_ARG1 + || d_right (d_right (dc))->type != DEMANGLE_COMPONENT_TRINARY_ARG2) { d_print_error (dpi); return; @@ -3047,23 +3276,23 @@ d_print_comp (dpi, dc) d_append_char (dpi, ')'); return; - case D_COMP_TRINARY_ARG1: - case D_COMP_TRINARY_ARG2: - /* We should only see these are part of D_COMP_TRINARY. */ + case DEMANGLE_COMPONENT_TRINARY_ARG1: + case DEMANGLE_COMPONENT_TRINARY_ARG2: + /* We should only see these are part of DEMANGLE_COMPONENT_TRINARY. */ d_print_error (dpi); return; - case D_COMP_LITERAL: - case D_COMP_LITERAL_NEG: + case DEMANGLE_COMPONENT_LITERAL: + case DEMANGLE_COMPONENT_LITERAL_NEG: /* For some builtin types, produce simpler output. */ - if (d_left (dc)->type == D_COMP_BUILTIN_TYPE) + if (d_left (dc)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE) { switch (d_left (dc)->u.s_builtin.type->print) { case D_PRINT_INT: - if (d_right (dc)->type == D_COMP_NAME) + if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME) { - if (dc->type == D_COMP_LITERAL_NEG) + if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG) d_append_char (dpi, '-'); d_print_comp (dpi, d_right (dc)); return; @@ -3071,9 +3300,9 @@ d_print_comp (dpi, dc) break; case D_PRINT_LONG: - if (d_right (dc)->type == D_COMP_NAME) + if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME) { - if (dc->type == D_COMP_LITERAL_NEG) + if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG) d_append_char (dpi, '-'); d_print_comp (dpi, d_right (dc)); d_append_char (dpi, 'l'); @@ -3082,9 +3311,9 @@ d_print_comp (dpi, dc) break; case D_PRINT_BOOL: - if (d_right (dc)->type == D_COMP_NAME + if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME && d_right (dc)->u.s_name.len == 1 - && dc->type == D_COMP_LITERAL) + && dc->type == DEMANGLE_COMPONENT_LITERAL) { switch (d_right (dc)->u.s_name.s[0]) { @@ -3108,7 +3337,7 @@ d_print_comp (dpi, dc) d_append_char (dpi, '('); d_print_comp (dpi, d_left (dc)); d_append_char (dpi, ')'); - if (dc->type == D_COMP_LITERAL_NEG) + if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG) d_append_char (dpi, '-'); d_print_comp (dpi, d_right (dc)); return; @@ -3190,9 +3419,9 @@ d_print_mod_list (dpi, mods, suffix) if (mods->printed || (! suffix - && (mods->mod->type == D_COMP_RESTRICT_THIS - || mods->mod->type == D_COMP_VOLATILE_THIS - || mods->mod->type == D_COMP_CONST_THIS))) + && (mods->mod->type == DEMANGLE_COMPONENT_RESTRICT_THIS + || mods->mod->type == DEMANGLE_COMPONENT_VOLATILE_THIS + || mods->mod->type == DEMANGLE_COMPONENT_CONST_THIS))) { d_print_mod_list (dpi, mods->next, suffix); return; @@ -3203,22 +3432,22 @@ d_print_mod_list (dpi, mods, suffix) hold_dpt = dpi->templates; dpi->templates = mods->templates; - if (mods->mod->type == D_COMP_FUNCTION_TYPE) + if (mods->mod->type == DEMANGLE_COMPONENT_FUNCTION_TYPE) { d_print_function_type (dpi, mods->mod, mods->next); dpi->templates = hold_dpt; return; } - else if (mods->mod->type == D_COMP_ARRAY_TYPE) + else if (mods->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE) { d_print_array_type (dpi, mods->mod, mods->next); dpi->templates = hold_dpt; return; } - else if (mods->mod->type == D_COMP_LOCAL_NAME) + else if (mods->mod->type == DEMANGLE_COMPONENT_LOCAL_NAME) { struct d_print_mod *hold_modifiers; - struct d_comp *dc; + struct demangle_component *dc; /* When this is on the modifier stack, we have pulled any qualifiers off the right argument already. Otherwise, we @@ -3236,9 +3465,9 @@ d_print_mod_list (dpi, mods, suffix) d_append_char (dpi, '.'); dc = d_right (mods->mod); - while (dc->type == D_COMP_RESTRICT_THIS - || dc->type == D_COMP_VOLATILE_THIS - || dc->type == D_COMP_CONST_THIS) + while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS + || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS + || dc->type == DEMANGLE_COMPONENT_CONST_THIS) dc = d_left (dc); d_print_comp (dpi, dc); @@ -3259,47 +3488,47 @@ d_print_mod_list (dpi, mods, suffix) static void d_print_mod (dpi, mod) struct d_print_info *dpi; - const struct d_comp *mod; + const struct demangle_component *mod; { switch (mod->type) { - case D_COMP_RESTRICT: - case D_COMP_RESTRICT_THIS: + case DEMANGLE_COMPONENT_RESTRICT: + case DEMANGLE_COMPONENT_RESTRICT_THIS: d_append_string_constant (dpi, " restrict"); return; - case D_COMP_VOLATILE: - case D_COMP_VOLATILE_THIS: + case DEMANGLE_COMPONENT_VOLATILE: + case DEMANGLE_COMPONENT_VOLATILE_THIS: d_append_string_constant (dpi, " volatile"); return; - case D_COMP_CONST: - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_CONST: + case DEMANGLE_COMPONENT_CONST_THIS: d_append_string_constant (dpi, " const"); return; - case D_COMP_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: d_append_char (dpi, ' '); d_print_comp (dpi, d_right (mod)); return; - case D_COMP_POINTER: + case DEMANGLE_COMPONENT_POINTER: /* There is no pointer symbol in Java. */ if ((dpi->options & DMGL_JAVA) == 0) d_append_char (dpi, '*'); return; - case D_COMP_REFERENCE: + case DEMANGLE_COMPONENT_REFERENCE: d_append_char (dpi, '&'); return; - case D_COMP_COMPLEX: + case DEMANGLE_COMPONENT_COMPLEX: d_append_string_constant (dpi, "complex "); return; - case D_COMP_IMAGINARY: + case DEMANGLE_COMPONENT_IMAGINARY: d_append_string_constant (dpi, "imaginary "); return; - case D_COMP_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: if (d_last_char (dpi) != '(') d_append_char (dpi, ' '); d_print_comp (dpi, d_left (mod)); d_append_string_constant (dpi, "::*"); return; - case D_COMP_TYPED_NAME: + case DEMANGLE_COMPONENT_TYPED_NAME: d_print_comp (dpi, d_left (mod)); return; default: @@ -3315,7 +3544,7 @@ d_print_mod (dpi, mod) static void d_print_function_type (dpi, dc, mods) struct d_print_info *dpi; - const struct d_comp *dc; + const struct demangle_component *dc; struct d_print_mod *mods; { int need_paren; @@ -3333,20 +3562,20 @@ d_print_function_type (dpi, dc, mods) saw_mod = 1; switch (p->mod->type) { - case D_COMP_RESTRICT: - case D_COMP_VOLATILE: - case D_COMP_CONST: - case D_COMP_VENDOR_TYPE_QUAL: - case D_COMP_POINTER: - case D_COMP_REFERENCE: - case D_COMP_COMPLEX: - case D_COMP_IMAGINARY: - case D_COMP_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_RESTRICT: + case DEMANGLE_COMPONENT_VOLATILE: + case DEMANGLE_COMPONENT_CONST: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_POINTER: + case DEMANGLE_COMPONENT_REFERENCE: + case DEMANGLE_COMPONENT_COMPLEX: + case DEMANGLE_COMPONENT_IMAGINARY: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: need_paren = 1; break; - case D_COMP_RESTRICT_THIS: - case D_COMP_VOLATILE_THIS: - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: break; default: break; @@ -3400,7 +3629,7 @@ d_print_function_type (dpi, dc, mods) static void d_print_array_type (dpi, dc, mods) struct d_print_info *dpi; - const struct d_comp *dc; + const struct demangle_component *dc; struct d_print_mod *mods; { int need_space; @@ -3417,7 +3646,7 @@ d_print_array_type (dpi, dc, mods) if (p->printed) break; - if (p->mod->type == D_COMP_ARRAY_TYPE) + if (p->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE) { need_space = 0; break; @@ -3455,9 +3684,9 @@ d_print_array_type (dpi, dc, mods) static void d_print_expr_op (dpi, dc) struct d_print_info *dpi; - const struct d_comp *dc; + const struct demangle_component *dc; { - if (dc->type == D_COMP_OPERATOR) + if (dc->type == DEMANGLE_COMPONENT_OPERATOR) d_append_buffer (dpi, dc->u.s_operator.op->name, dc->u.s_operator.op->len); else @@ -3469,9 +3698,9 @@ d_print_expr_op (dpi, dc) static void d_print_cast (dpi, dc) struct d_print_info *dpi; - const struct d_comp *dc; + const struct demangle_component *dc; { - if (d_left (dc)->type != D_COMP_TEMPLATE) + if (d_left (dc)->type != DEMANGLE_COMPONENT_TEMPLATE) d_print_comp (dpi, d_left (dc)); else { @@ -3511,8 +3740,9 @@ d_print_cast (dpi, dc) /* Initialize the information structure we use to pass around information. */ -static void -d_init_info (mangled, options, len, di) +CP_STATIC_IF_GLIBCPP_V3 +void +cplus_demangle_init_info (mangled, options, len, di) const char *mangled; int options; size_t len; @@ -3541,60 +3771,6 @@ d_init_info (mangled, options, len, di) di->expansion = 0; } -/* Allocate and initialize a d_info structure. The demangler bypasses - this in order to allocate everything on the stack, for speed. */ - -struct d_info * -cp_v3_d_init_info_alloc (mangled, options, len) - const char *mangled; - int options; - size_t len; -{ - struct d_info *di; - - di = (struct d_info *) malloc (sizeof (struct d_info)); - if (di == NULL) - return NULL; - - d_init_info (mangled, options, len, di); - di->comps = (struct d_comp *) malloc (di->num_comps - * sizeof (struct d_comp)); - if (di->comps == NULL) - { - free (di); - return NULL; - } - - if (mangled != NULL) - { - di->subs = (struct d_comp **) malloc (di->num_subs - * sizeof (struct d_comp *)); - if (di->subs == NULL) - { - free (di->comps); - free (di); - return NULL; - } - } - else - di->subs = NULL; - - return di; -} - -/* Release a d_info structure, as allocated by cp_v3_d_init_info_alloc. */ - -void -cp_v3_d_free_info (di) - struct d_info *di; -{ - if (di->comps != NULL) - free (di->comps); - if (di->subs != NULL) - free (di->subs); - free (di); -} - /* Entry point for the demangler. If MANGLED is a g++ v3 ABI mangled name, return a buffer allocated with malloc holding the demangled name. OPTIONS is the usual libiberty demangler options. On @@ -3611,7 +3787,7 @@ d_demangle (mangled, options, palc) size_t len; int type; struct d_info di; - struct d_comp *dc; + struct demangle_component *dc; int estimate; char *ret; @@ -3648,20 +3824,20 @@ d_demangle (mangled, options, palc) type = 1; } - d_init_info (mangled, options, len, &di); + cplus_demangle_init_info (mangled, options, len, &di); { #ifdef CP_DYNAMIC_ARRAYS - __extension__ struct d_comp comps[di.num_comps]; - __extension__ struct d_comp *subs[di.num_subs]; + __extension__ struct demangle_component comps[di.num_comps]; + __extension__ struct demangle_component *subs[di.num_subs]; di.comps = &comps[0]; di.subs = &subs[0]; #else - di.comps = (struct d_comp *) malloc (di.num_comps - * sizeof (struct d_comp)); - di.subs = (struct d_comp **) malloc (di.num_subs - * sizeof (struct d_comp *)); + di.comps = ((struct demangle_component *) + malloc (di.num_comps * sizeof (struct demangle_component))); + di.subs = ((struct demangle_component **) + malloc (di.num_subs * sizeof (struct demangle_component *))); if (di.comps == NULL || di.subs == NULL) { if (di.comps != NULL) @@ -3674,9 +3850,9 @@ d_demangle (mangled, options, palc) #endif if (! type) - dc = d_mangled_name (&di, 1); + dc = cplus_demangle_mangled_name (&di, 1); else - dc = d_type (&di); + dc = cplus_demangle_type (&di); /* If DMGL_PARAMS is set, then if we didn't consume the entire mangled string, then we didn't successfully demangle it. If @@ -3699,7 +3875,7 @@ d_demangle (mangled, options, palc) ret = NULL; if (dc != NULL) - ret = cp_v3_d_print (options, dc, estimate, palc); + ret = cplus_demangle_print (options, dc, estimate, palc); #ifndef CP_DYNAMIC_ARRAYS free (di.comps); @@ -3900,38 +4076,37 @@ is_ctor_or_dtor (mangled, ctor_kind, dtor_kind) enum gnu_v3_dtor_kinds *dtor_kind; { struct d_info di; - struct d_comp *dc; + struct demangle_component *dc; int ret; *ctor_kind = (enum gnu_v3_ctor_kinds) 0; *dtor_kind = (enum gnu_v3_dtor_kinds) 0; - d_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di); + cplus_demangle_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di); { #ifdef CP_DYNAMIC_ARRAYS - __extension__ struct d_comp comps[di.num_comps]; - __extension__ struct d_comp *subs[di.num_subs]; + __extension__ struct demangle_component comps[di.num_comps]; + __extension__ struct demangle_component *subs[di.num_subs]; di.comps = &comps[0]; di.subs = &subs[0]; #else - di.comps = (struct d_comp *) malloc (di.num_comps - * sizeof (struct d_comp)); - di.subs = (struct d_comp **) malloc (di.num_subs - * sizeof (struct d_comp *)); + di.comps = ((struct demangle_component *) + malloc (di.num_comps * sizeof (struct demangle_component))); + di.subs = ((struct demangle_component **) + malloc (di.num_subs * sizeof (struct demangle_component *))); if (di.comps == NULL || di.subs == NULL) { if (di.comps != NULL) free (di.comps); if (di.subs != NULL) free (di.subs); - *palc = 1; - return NULL; + return 0; } #endif - dc = d_mangled_name (&di, 1); + dc = cplus_demangle_mangled_name (&di, 1); /* Note that because we did not pass DMGL_PARAMS, we don't expect to demangle the entire string. */ @@ -3944,23 +4119,23 @@ is_ctor_or_dtor (mangled, ctor_kind, dtor_kind) default: dc = NULL; break; - case D_COMP_TYPED_NAME: - case D_COMP_TEMPLATE: - case D_COMP_RESTRICT_THIS: - case D_COMP_VOLATILE_THIS: - case D_COMP_CONST_THIS: + case DEMANGLE_COMPONENT_TYPED_NAME: + case DEMANGLE_COMPONENT_TEMPLATE: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: dc = d_left (dc); break; - case D_COMP_QUAL_NAME: - case D_COMP_LOCAL_NAME: + case DEMANGLE_COMPONENT_QUAL_NAME: + case DEMANGLE_COMPONENT_LOCAL_NAME: dc = d_right (dc); break; - case D_COMP_CTOR: + case DEMANGLE_COMPONENT_CTOR: *ctor_kind = dc->u.s_ctor.kind; ret = 1; dc = NULL; break; - case D_COMP_DTOR: + case DEMANGLE_COMPONENT_DTOR: *dtor_kind = dc->u.s_dtor.kind; ret = 1; dc = NULL; diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 5e2e7a7126c..f3c4464f184 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -1,6 +1,6 @@ /* Demangler for GNU C++ Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.uucp) Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling Modified by Satish Pai (pai@apollo.hp.com) for HP demangling @@ -2318,6 +2318,7 @@ demangle_arm_hp_template (work, mangled, n, declp) if (HP_DEMANGLING && ((*mangled)[n] == 'X')) { char *start_spec_args = NULL; + int hold_options; /* First check for and omit template specialization pseudo-arguments, such as in "Spec<#1,#1.*>" */ @@ -2330,6 +2331,12 @@ demangle_arm_hp_template (work, mangled, n, declp) string_init (&arg); if (work->temp_start == -1) /* non-recursive call */ work->temp_start = declp->p - declp->b; + + /* We want to unconditionally demangle parameter types in + template parameters. */ + hold_options = work->options; + work->options |= DMGL_PARAMS; + string_append (declp, "<"); while (1) { @@ -2376,17 +2383,25 @@ demangle_arm_hp_template (work, mangled, n, declp) string_delete (&arg); if (**mangled == '_') (*mangled)++; + work->options = hold_options; return; } /* ARM template? (Also handles HP cfront extensions) */ else if (arm_pt (work, *mangled, n, &p, &args)) { + int hold_options; string type_str; string_init (&arg); string_appendn (declp, *mangled, p - *mangled); if (work->temp_start == -1) /* non-recursive call */ work->temp_start = declp->p - declp->b; + + /* We want to unconditionally demangle parameter types in + template parameters. */ + hold_options = work->options; + work->options |= DMGL_PARAMS; + string_append (declp, "<"); /* should do error checking here */ while (args < e) { @@ -2430,7 +2445,10 @@ demangle_arm_hp_template (work, mangled, n, declp) /* Fail if we didn't make any progress: prevent infinite loop. */ if (args == old_args) - return; + { + work->options = hold_options; + return; + } } } string_appends (declp, &arg); @@ -2441,6 +2459,7 @@ demangle_arm_hp_template (work, mangled, n, declp) if (args >= e) --declp->p; /* remove extra comma */ string_append (declp, ">"); + work->options = hold_options; } else if (n>10 && strncmp (*mangled, "_GLOBAL_", 8) == 0 && (*mangled)[9] == 'N' diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index dd36b7a24fd..25e88309b76 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -1,2571 +1,3223 @@ # This file holds test cases for the demangler. -# Each test consists of three lines in succession. -# The first line is arguments to pass to the test filter program. -# The second line is the mangled string. -# The third line is the expected output. -# A line starting with `#' is ignore. -# However blank lines in this file are NOT ignored. -# ---format=gnu +# Each test case looks like this: +# options +# input to be demangled +# expected output +# +# Supported options: +# --format= Sets the demangling style. +# --no-params There are two lines of expected output; the first +# is with DMGL_PARAMS, the second is without it. +# --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected +# output is an integer representing ctor_kind. +# --is-v3-dtor Likewise, but for dtors. +# +# For compatibility, just in case it matters, the options line may be +# empty, to mean --format=auto. If it doesn't start with --, then it +# may contain only a format name. +# +# A line starting with `#' is ignored. +# However, blank lines in this file are NOT ignored. +# +--format=gnu --no-params AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *) +ivTSolver::AddAlignment # ---format=gnu +--format=gnu --no-params ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *) +ArrowLine::ArrowheadIntersects # ---format=gnu +--format=gnu --no-params AtEnd__13ivRubberGroup ivRubberGroup::AtEnd(void) +ivRubberGroup::AtEnd # ---format=gnu +--format=gnu --no-params BgFilter__9ivTSolverP12ivInteractor ivTSolver::BgFilter(ivInteractor *) +ivTSolver::BgFilter # ---format=gnu +--format=gnu --no-params Check__6UArrayi UArray::Check(int) +UArray::Check # ---format=gnu +--format=gnu --no-params CoreConstDecls__8TextCodeR7ostream TextCode::CoreConstDecls(ostream &) +TextCode::CoreConstDecls # ---format=gnu +--format=gnu --no-params Detach__8StateVarP12StateVarView StateVar::Detach(StateVarView *) +StateVar::Detach # ---format=gnu +--format=gnu --no-params Done__9ComponentG8Iterator Component::Done(Iterator) +Component::Done # ---format=gnu +--format=gnu --no-params Effect__11RelateManipR7ivEvent RelateManip::Effect(ivEvent &) +RelateManip::Effect # ---format=gnu +--format=gnu --no-params FindFixed__FRP4CNetP4CNet FindFixed(CNet *&, CNet *) +FindFixed # ---format=gnu +--format=gnu --no-params Fix48_abort__FR8twolongs Fix48_abort(twolongs &) +Fix48_abort # ---format=gnu +--format=gnu --no-params GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &) +iv2_6_VScroller::GetBarInfo # ---format=gnu +--format=gnu --no-params GetBgColor__C9ivPainter ivPainter::GetBgColor(void) const +ivPainter::GetBgColor # ---format=gnu +--format=gnu --no-params InsertBody__15H_PullrightMenuii H_PullrightMenu::InsertBody(int, int) +H_PullrightMenu::InsertBody # ---format=gnu +--format=gnu --no-params InsertCharacter__9TextManipc TextManip::InsertCharacter(char) +TextManip::InsertCharacter # ---format=gnu +--format=gnu --no-params InsertToplevel__7ivWorldP12ivInteractorT1 ivWorld::InsertToplevel(ivInteractor *, ivInteractor *) +ivWorld::InsertToplevel # ---format=gnu +--format=gnu --no-params InsertToplevel__7ivWorldP12ivInteractorT1iiUi ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int) +ivWorld::InsertToplevel # ---format=gnu +--format=gnu --no-params IsAGroup__FP11GraphicViewP11GraphicComp IsAGroup(GraphicView *, GraphicComp *) +IsAGroup # ---format=gnu +--format=gnu --no-params IsA__10ButtonCodeUl ButtonCode::IsA(unsigned long) +ButtonCode::IsA # ---format=gnu +--format=gnu --no-params ReadName__FR7istreamPc ReadName(istream &, char *) +ReadName # ---format=gnu +--format=gnu --no-params Redraw__13StringBrowseriiii StringBrowser::Redraw(int, int, int, int) +StringBrowser::Redraw # ---format=gnu +--format=gnu --no-params Rotate__13ivTransformerf ivTransformer::Rotate(float) +ivTransformer::Rotate # ---format=gnu +--format=gnu --no-params Rotated__C13ivTransformerf ivTransformer::Rotated(float) const +ivTransformer::Rotated # ---format=gnu +--format=gnu --no-params Round__Ff Round(float) +Round # ---format=gnu +--format=gnu --no-params SetExport__16MemberSharedNameUi MemberSharedName::SetExport(unsigned int) +MemberSharedName::SetExport # ---format=gnu +--format=gnu --no-params Set__14ivControlState13ControlStatusUi ivControlState::Set(ControlStatus, unsigned int) +ivControlState::Set # ---format=gnu +--format=gnu --no-params Set__5DFacePcii DFace::Set(char *, int, int) +DFace::Set # ---format=gnu +--format=gnu --no-params VConvert__9ivTSolverP12ivInteractorRP8TElementT2 ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&) +ivTSolver::VConvert # ---format=gnu +--format=gnu --no-params VConvert__9ivTSolverP7ivTGlueRP8TElement ivTSolver::VConvert(ivTGlue *, TElement *&) +ivTSolver::VConvert # ---format=gnu +--format=gnu --no-params VOrder__9ivTSolverUiRP12ivInteractorT2 ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&) +ivTSolver::VOrder # ---format=gnu +--format=gnu --no-params _10PageButton$__both PageButton::__both +PageButton::__both # ---format=gnu +--format=gnu --no-params _3RNG$singleMantissa RNG::singleMantissa +RNG::singleMantissa # ---format=gnu +--format=gnu --no-params _5IComp$_release IComp::_release +IComp::_release # ---format=gnu +--format=gnu --no-params _$_10BitmapComp BitmapComp::~BitmapComp(void) +BitmapComp::~BitmapComp # ---format=gnu +--format=gnu --no-params _$_9__io_defs __io_defs::~__io_defs(void) +__io_defs::~__io_defs # ---format=gnu +--format=gnu --no-params _$_Q23foo3bar foo::bar::~bar(void) +foo::bar::~bar # ---format=gnu +--format=gnu --no-params _$_Q33foo3bar4bell foo::bar::bell::~bell(void) +foo::bar::bell::~bell # ---format=gnu +--format=gnu --no-params __10ivTelltaleiP7ivGlyph ivTelltale::ivTelltale(int, ivGlyph *) +ivTelltale::ivTelltale # ---format=gnu +--format=gnu --no-params __10ivViewportiP12ivInteractorUi ivViewport::ivViewport(int, ivInteractor *, unsigned int) +ivViewport::ivViewport # ---format=gnu +--format=gnu --no-params __10ostrstream ostrstream::ostrstream(void) +ostrstream::ostrstream # ---format=gnu +--format=gnu --no-params __10ostrstreamPcii ostrstream::ostrstream(char *, int, int) +ostrstream::ostrstream # ---format=gnu +--format=gnu --no-params __11BitmapTablei BitmapTable::BitmapTable(int) +BitmapTable::BitmapTable # ---format=gnu +--format=gnu --no-params __12ViewportCodeP12ViewportComp ViewportCode::ViewportCode(ViewportComp *) +ViewportCode::ViewportCode # ---format=gnu +--format=gnu --no-params __12iv2_6_Borderii iv2_6_Border::iv2_6_Border(int, int) +iv2_6_Border::iv2_6_Border # ---format=gnu +--format=gnu --no-params __12ivBreak_Listl ivBreak_List::ivBreak_List(long) +ivBreak_List::ivBreak_List # ---format=gnu +--format=gnu --no-params __14iv2_6_MenuItemiP12ivInteractor iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *) +iv2_6_MenuItem::iv2_6_MenuItem # ---format=gnu +--format=gnu --no-params __20DisplayList_IteratorR11DisplayList DisplayList_Iterator::DisplayList_Iterator(DisplayList &) +DisplayList_Iterator::DisplayList_Iterator # ---format=gnu +--format=gnu --no-params __3fooRT0 foo::foo(foo &) +foo::foo # ---format=gnu +--format=gnu --no-params __3fooiN31 foo::foo(int, int, int, int) +foo::foo # ---format=gnu +--format=gnu --no-params __3fooiRT0iT2iT2 foo::foo(int, foo &, int, foo &, int, foo &) +foo::foo # ---format=gnu +--format=gnu --no-params __6KeyMapPT0 KeyMap::KeyMap(KeyMap *) +KeyMap::KeyMap # ---format=gnu +--format=gnu --no-params __8ArrowCmdP6EditorUiUi ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int) +ArrowCmd::ArrowCmd # ---format=gnu +--format=gnu --no-params __9F_EllipseiiiiP7Graphic F_Ellipse::F_Ellipse(int, int, int, int, Graphic *) +F_Ellipse::F_Ellipse # ---format=gnu +--format=gnu --no-params __9FrameDataP9FrameCompi FrameData::FrameData(FrameComp *, int) +FrameData::FrameData # ---format=gnu +--format=gnu --no-params __9HVGraphicP9CanvasVarP7Graphic HVGraphic::HVGraphic(CanvasVar *, Graphic *) +HVGraphic::HVGraphic # ---format=gnu +--format=gnu --no-params __Q23foo3bar foo::bar::bar(void) +foo::bar::bar # ---format=gnu +--format=gnu --no-params __Q33foo3bar4bell foo::bar::bell::bell(void) +foo::bar::bell::bell # ---format=gnu +--format=gnu --no-params __aa__3fooRT0 foo::operator&&(foo &) +foo::operator&& # ---format=gnu +--format=gnu --no-params __aad__3fooRT0 foo::operator&=(foo &) +foo::operator&= # ---format=gnu +--format=gnu --no-params __ad__3fooRT0 foo::operator&(foo &) +foo::operator& # ---format=gnu +--format=gnu --no-params __adv__3fooRT0 foo::operator/=(foo &) +foo::operator/= # ---format=gnu +--format=gnu --no-params __aer__3fooRT0 foo::operator^=(foo &) +foo::operator^= # ---format=gnu +--format=gnu --no-params __als__3fooRT0 foo::operator<<=(foo &) +foo::operator<<= # ---format=gnu +--format=gnu --no-params __amd__3fooRT0 foo::operator%=(foo &) +foo::operator%= # ---format=gnu +--format=gnu --no-params __ami__3fooRT0 foo::operator-=(foo &) +foo::operator-= # ---format=gnu +--format=gnu --no-params __aml__3FixRT0 Fix::operator*=(Fix &) +Fix::operator*= # ---format=gnu +--format=gnu --no-params __aml__5Fix16i Fix16::operator*=(int) +Fix16::operator*= # ---format=gnu +--format=gnu --no-params __aml__5Fix32RT0 Fix32::operator*=(Fix32 &) +Fix32::operator*= # ---format=gnu +--format=gnu --no-params __aor__3fooRT0 foo::operator|=(foo &) +foo::operator|= # ---format=gnu +--format=gnu --no-params __apl__3fooRT0 foo::operator+=(foo &) +foo::operator+= # ---format=gnu +--format=gnu --no-params __ars__3fooRT0 foo::operator>>=(foo &) +foo::operator>>= # ---format=gnu +--format=gnu --no-params __as__3fooRT0 foo::operator=(foo &) +foo::operator= # ---format=gnu +--format=gnu --no-params __cl__3fooRT0 foo::operator()(foo &) +foo::operator() # ---format=gnu +--format=gnu --no-params __cl__6Normal Normal::operator()(void) +Normal::operator() # ---format=gnu +--format=gnu --no-params __cl__6Stringii String::operator()(int, int) +String::operator() # ---format=gnu +--format=gnu --no-params __cm__3fooRT0 foo::operator, (foo &) +foo::operator, # ---format=gnu +--format=gnu --no-params __co__3foo foo::operator~(void) +foo::operator~ # ---format=gnu +--format=gnu --no-params __dl__3fooPv foo::operator delete(void *) +foo::operator delete # ---format=gnu +--format=gnu --no-params __dv__3fooRT0 foo::operator/(foo &) +foo::operator/ # ---format=gnu +--format=gnu --no-params __eq__3fooRT0 foo::operator==(foo &) +foo::operator== # ---format=gnu +--format=gnu --no-params __er__3fooRT0 foo::operator^(foo &) +foo::operator^ # ---format=gnu +--format=gnu --no-params __ge__3fooRT0 foo::operator>=(foo &) +foo::operator>= # ---format=gnu +--format=gnu --no-params __gt__3fooRT0 foo::operator>(foo &) +foo::operator> # ---format=gnu +--format=gnu --no-params __le__3fooRT0 foo::operator<=(foo &) +foo::operator<= # ---format=gnu +--format=gnu --no-params __ls__3fooRT0 foo::operator<<(foo &) +foo::operator<< # ---format=gnu +--format=gnu --no-params __ls__FR7ostreamPFR3ios_R3ios operator<<(ostream &, ios &(*)(ios &)) +operator<< # ---format=gnu +--format=gnu --no-params __ls__FR7ostreamR3Fix operator<<(ostream &, Fix &) +operator<< # ---format=gnu +--format=gnu --no-params __lt__3fooRT0 foo::operator<(foo &) +foo::operator< # ---format=gnu +--format=gnu --no-params __md__3fooRT0 foo::operator%(foo &) +foo::operator% # ---format=gnu +--format=gnu --no-params __mi__3fooRT0 foo::operator-(foo &) +foo::operator- # ---format=gnu +--format=gnu --no-params __ml__3fooRT0 foo::operator*(foo &) +foo::operator* # ---format=gnu +--format=gnu --no-params __mm__3fooi foo::operator--(int) +foo::operator-- # ---format=gnu +--format=gnu --no-params __ne__3fooRT0 foo::operator!=(foo &) +foo::operator!= # ---format=gnu +--format=gnu --no-params __nt__3foo foo::operator!(void) +foo::operator! # ---format=gnu +--format=gnu --no-params __nw__3fooi foo::operator new(int) +foo::operator new # ---format=gnu +--format=gnu --no-params __oo__3fooRT0 foo::operator||(foo &) +foo::operator|| # ---format=gnu +--format=gnu --no-params __opPc__3foo foo::operator char *(void) +foo::operator char * # ---format=gnu +--format=gnu --no-params __opi__3foo foo::operator int(void) +foo::operator int # ---format=gnu +--format=gnu --no-params __or__3fooRT0 foo::operator|(foo &) +foo::operator| # ---format=gnu +--format=gnu --no-params __pl__3fooRT0 foo::operator+(foo &) +foo::operator+ # ---format=gnu +--format=gnu --no-params __pp__3fooi foo::operator++(int) +foo::operator++ # ---format=gnu +--format=gnu --no-params __rf__3foo foo::operator->(void) +foo::operator-> # ---format=gnu +--format=gnu --no-params __rm__3fooRT0 foo::operator->*(foo &) +foo::operator->* # ---format=gnu +--format=gnu --no-params __rs__3fooRT0 foo::operator>>(foo &) +foo::operator>> # ---format=gnu +--format=gnu --no-params _new_Fix__FUs _new_Fix(unsigned short) +_new_Fix # ---format=gnu +--format=gnu --no-params _vt.foo foo virtual table +foo virtual table # ---format=gnu +--format=gnu --no-params _vt.foo.bar foo::bar virtual table +foo::bar virtual table # ---format=gnu +--format=gnu --no-params _vt$foo foo virtual table +foo virtual table # ---format=gnu +--format=gnu --no-params _vt$foo$bar foo::bar virtual table +foo::bar virtual table # ---format=gnu +--format=gnu --no-params append__7ivGlyphPT0 ivGlyph::append(ivGlyph *) +ivGlyph::append # ---format=gnu +--format=gnu --no-params clearok__FP7_win_sti clearok(_win_st *, int) +clearok # ---format=gnu +--format=gnu --no-params complexfunc2__FPFPc_i complexfunc2(int (*)(char *)) +complexfunc2 # ---format=gnu +--format=gnu --no-params complexfunc3__FPFPFPl_s_i complexfunc3(int (*)(short (*)(long *))) +complexfunc3 # ---format=gnu +--format=gnu --no-params complexfunc4__FPFPFPc_s_i complexfunc4(int (*)(short (*)(char *))) +complexfunc4 # ---format=gnu +--format=gnu --no-params complexfunc5__FPFPc_PFl_i complexfunc5(int (*(*)(char *))(long)) +complexfunc5 # ---format=gnu +--format=gnu --no-params complexfunc6__FPFPi_PFl_i complexfunc6(int (*(*)(int *))(long)) +complexfunc6 # ---format=gnu +--format=gnu --no-params complexfunc7__FPFPFPc_i_PFl_i complexfunc7(int (*(*)(int (*)(char *)))(long)) +complexfunc7 # ---format=gnu +--format=gnu --no-params foo__FiN30 foo(int, int, int, int) +foo # ---format=gnu +--format=gnu --no-params foo__FiR3fooiT1iT1 foo(int, foo &, int, foo &, int, foo &) +foo # ---format=gnu +--format=gnu --no-params foo___3barl bar::foo_(long) +bar::foo_ # ---format=gnu +--format=gnu --no-params insert__15ivClippingStacklRP8_XRegion ivClippingStack::insert(long, _XRegion *&) +ivClippingStack::insert # ---format=gnu +--format=gnu --no-params insert__16ChooserInfo_ListlR11ChooserInfo ChooserInfo_List::insert(long, ChooserInfo &) +ChooserInfo_List::insert # ---format=gnu +--format=gnu --no-params insert__17FontFamilyRepListlRP15ivFontFamilyRep FontFamilyRepList::insert(long, ivFontFamilyRep *&) +FontFamilyRepList::insert # ---format=gnu +--format=gnu --no-params leaveok__FP7_win_stc leaveok(_win_st *, char) +leaveok # ---format=gnu +--format=gnu --no-params left_mover__C7ivMFKitP12ivAdjustableP7ivStyle ivMFKit::left_mover(ivAdjustable *, ivStyle *) const +ivMFKit::left_mover # ---format=gnu +--format=gnu --no-params overload1arg__FSc overload1arg(signed char) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__FUc overload1arg(unsigned char) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__FUi overload1arg(unsigned int) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__FUl overload1arg(unsigned long) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__FUs overload1arg(unsigned short) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fc overload1arg(char) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fd overload1arg(double) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Ff overload1arg(float) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fi overload1arg(int) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fl overload1arg(long) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fs overload1arg(short) +overload1arg # ---format=gnu +--format=gnu --no-params overload1arg__Fv overload1arg(void) +overload1arg # ---format=gnu +--format=gnu --no-params overloadargs__Fi overloadargs(int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fii overloadargs(int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiii overloadargs(int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiii overloadargs(int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiii overloadargs(int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiii overloadargs(int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiiii overloadargs(int, int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiiiii overloadargs(int, int, int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiiiiii overloadargs(int, int, int, int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiiiiiii overloadargs(int, int, int, int, int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params overloadargs__Fiiiiiiiiiii overloadargs(int, int, int, int, int, int, int, int, int, int, int) +overloadargs # ---format=gnu +--format=gnu --no-params poke__8ivRasterUlUlffff ivRaster::poke(unsigned long, unsigned long, float, float, float, float) +ivRaster::poke # ---format=gnu +--format=gnu --no-params polar__Fdd polar(double, double) +polar # ---format=gnu +--format=gnu --no-params scale__13ivTransformerff ivTransformer::scale(float, float) +ivTransformer::scale # ---format=gnu +--format=gnu --no-params sgetn__7filebufPci filebuf::sgetn(char *, int) +filebuf::sgetn # ---format=gnu +--format=gnu --no-params shift__FP5_FrepiT0 shift(_Frep *, int, _Frep *) +shift # ---format=gnu +--format=gnu --no-params test__C6BitSeti BitSet::test(int) const +BitSet::test # ---format=gnu +--format=gnu --no-params test__C6BitSetii BitSet::test(int, int) const +BitSet::test # ---format=gnu +--format=gnu --no-params text_source__8Documentl Document::text_source(long) +Document::text_source # ---format=gnu +--format=gnu --no-params variance__6Erlangd Erlang::variance(double) +Erlang::variance # ---format=gnu +--format=gnu --no-params view__14DocumentViewerP8ItemViewP11TabularItem DocumentViewer::view(ItemView *, TabularItem *) +DocumentViewer::view # ---format=gnu +--format=gnu --no-params xy_extents__11ivExtensionffff ivExtension::xy_extents(float, float, float, float) +ivExtension::xy_extents # ---format=gnu +--format=gnu --no-params zero__8osMemoryPvUi osMemory::zero(void *, unsigned int) +osMemory::zero # ---format=gnu +--format=gnu --no-params _2T4$N T4::N +T4::N # ---format=gnu +--format=gnu --no-params _Q22T42t1$N T4::t1::N +T4::t1::N # ---format=gnu +--format=gnu --no-params get__2T1 T1::get(void) +T1::get # ---format=gnu +--format=gnu --no-params get__Q22T11a T1::a::get(void) +T1::a::get # ---format=gnu +--format=gnu --no-params get__Q32T11a1b T1::a::b::get(void) +T1::a::b::get # ---format=gnu +--format=gnu --no-params get__Q42T11a1b1c T1::a::b::c::get(void) +T1::a::b::c::get # ---format=gnu +--format=gnu --no-params get__Q52T11a1b1c1d T1::a::b::c::d::get(void) +T1::a::b::c::d::get # ---format=gnu +--format=gnu --no-params put__2T1i T1::put(int) +T1::put # ---format=gnu +--format=gnu --no-params put__Q22T11ai T1::a::put(int) +T1::a::put # ---format=gnu +--format=gnu --no-params put__Q32T11a1bi T1::a::b::put(int) +T1::a::b::put # ---format=gnu +--format=gnu --no-params put__Q42T11a1b1ci T1::a::b::c::put(int) +T1::a::b::c::put # ---format=gnu +--format=gnu --no-params put__Q52T11a1b1c1di T1::a::b::c::d::put(int) +T1::a::b::c::d::put # ---format=gnu +--format=gnu --no-params bar__3fooPv foo::bar(void *) +foo::bar # ---format=gnu +--format=gnu --no-params bar__C3fooPv foo::bar(void *) const +foo::bar # ---format=gnu +--format=gnu --no-params __eq__3fooRT0 foo::operator==(foo &) +foo::operator== # ---format=gnu +--format=gnu --no-params __eq__C3fooR3foo foo::operator==(foo &) const +foo::operator== # ---format=gnu +--format=gnu --no-params elem__t6vector1Zdi vector::elem(int) +vector::elem # ---format=gnu +--format=gnu --no-params elem__t6vector1Zii vector::elem(int) +vector::elem # ---format=gnu +--format=gnu --no-params __t6vector1Zdi vector::vector(int) +vector::vector # ---format=gnu +--format=gnu --no-params __t6vector1Zii vector::vector(int) +vector::vector # ---format=gnu +--format=gnu --no-params _$_t6vector1Zdi vector::~vector(int) +vector::~vector # ---format=gnu +--format=gnu --no-params _$_t6vector1Zii vector::~vector(int) +vector::~vector # ---format=gnu +--format=gnu --no-params __nw__t2T11ZcUi T1::operator new(unsigned int) +T1::operator new # ---format=gnu +--format=gnu --no-params __nw__t2T11Z1tUi T1::operator new(unsigned int) +T1::operator new # ---format=gnu +--format=gnu --no-params __dl__t2T11ZcPv T1::operator delete(void *) +T1::operator delete # ---format=gnu +--format=gnu --no-params __dl__t2T11Z1tPv T1::operator delete(void *) +T1::operator delete # ---format=gnu +--format=gnu --no-params __t2T11Zci T1::T1(int) +T1::T1 # ---format=gnu +--format=gnu --no-params __t2T11Zc T1::T1(void) +T1::T1 # ---format=gnu +--format=gnu --no-params __t2T11Z1ti T1::T1(int) +T1::T1 # ---format=gnu +--format=gnu --no-params __t2T11Z1t T1::T1(void) +T1::T1 # ---format=gnu +--format=gnu --no-params __Q2t4List1Z10VHDLEntity3Pix List::Pix::Pix(void) +List::Pix::Pix # ---format=gnu +--format=gnu --no-params __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element List::Pix::Pix(List::element *) +List::Pix::Pix # ---format=gnu +--format=gnu --no-params __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix List::Pix::Pix(List::Pix const &) +List::Pix::Pix # ---format=gnu +--format=gnu --no-params __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 List::element::element(VHDLEntity const &, List::element *) +List::element::element # ---format=gnu +--format=gnu --no-params __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element List::element::element(List::element const &) +List::element::element # ---format=gnu +--format=gnu --no-params __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity VHDLLibrary::operator()(PixX >) const +VHDLLibrary::operator() # ---format=gnu +--format=gnu --no-params __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix List::operator()(List::Pix const &) const +List::operator() # ---format=gnu +--format=gnu --no-params __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix operator!=(void *, List::Pix const &) +operator!= # ---format=gnu +--format=gnu --no-params __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity operator!=(void *, PixX > const &) +operator!= # ---format=gnu +--format=gnu --no-params __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity List::List(List const &) +List::List # ---format=gnu +--format=gnu --no-params __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity PixX >::PixX(void) +PixX >::PixX # ---format=gnu +--format=gnu --no-params __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix PixX >::PixX(VHDLLibraryRep *, List::Pix) +PixX >::PixX # ---format=gnu +--format=gnu --no-params __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity PixX >::PixX(PixX > const &) +PixX >::PixX # ---format=gnu +--format=gnu --no-params nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity VHDLLibrary::nextE(PixX > &) const +VHDLLibrary::nextE # ---format=gnu +--format=gnu --no-params next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix List::next(List::Pix &) const +List::next # ---format=gnu +--format=gnu --no-params _GLOBAL_$D$set global destructors keyed to set +global destructors keyed to set # ---format=gnu +--format=gnu --no-params _GLOBAL_$I$set global constructors keyed to set +global constructors keyed to set # ---format=gnu +--format=gnu --no-params __as__t5ListS1ZUiRCt5ListS1ZUi ListS::operator=(ListS const &) +ListS::operator= # ---format=gnu +--format=gnu --no-params __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix ListS::operator()(ListS::Vix const &) const +ListS::operator() # ---format=gnu +--format=gnu --no-params __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix SetLS::operator()(SetLS::Vix const &) const +SetLS::operator() # ---format=gnu +--format=gnu --no-params __t10ListS_link1ZUiRCUiPT0 ListS_link::ListS_link(unsigned int const &, ListS_link *) +ListS_link::ListS_link # ---format=gnu +--format=gnu --no-params __t10ListS_link1ZUiRCt10ListS_link1ZUi ListS_link::ListS_link(ListS_link const &) +ListS_link::ListS_link # ---format=gnu +--format=gnu --no-params __t5ListS1ZUiRCt5ListS1ZUi ListS::ListS(ListS const &) +ListS::ListS # ---format=gnu +--format=gnu --no-params next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix ListS::next(ListS::Vix &) const +ListS::next # ---format=gnu +--format=gnu --no-params __ne__FPvRCQ2t5SetLS1ZUi3Vix operator!=(void *, SetLS::Vix const &) +operator!= # ---format=gnu +--format=gnu --no-params __t8ListElem1Z5LabelRt4List1Z5Label ListElem