--- /dev/null
+/* BFD support for the Vitesse IQ2000 processor.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+static const bfd_arch_info_type arch_info_struct[] =
+{
+ 32, /* bits per word */
+ 32, /* bits per address */
+ 8, /* bits per byte */
+ bfd_arch_iq2000, /* architecture */
+ bfd_mach_iq10, /* machine */
+ "iq2000", /* architecture name */
+ "iq10", /* printable name */
+ 3, /* section align power */
+ FALSE, /* the default ? */
+ bfd_default_compatible, /* architecture comparison fn */
+ bfd_default_scan, /* string to architecture convert fn */
+ NULL /* next in list */
+};
+
+const bfd_arch_info_type bfd_iq2000_arch =
+{
+ 32, /* bits per word */
+ 32, /* bits per address */
+ 8, /* bits per byte */
+ bfd_arch_iq2000, /* architecture */
+ bfd_mach_iq2000, /* machine */
+ "iq2000", /* architecture name */
+ "iq2000", /* printable name */
+ 3, /* section align power */
+ TRUE, /* the default ? */
+ bfd_default_compatible, /* architecture comparison fn */
+ bfd_default_scan, /* string to architecture convert fn */
+ &arch_info_struct[0], /* next in list */
+};
+
+
+
--- /dev/null
+/* BFD library support routines for the MSP architecture.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ Contributed by Dmitry Diky <diwil@mail.ru>
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+static const bfd_arch_info_type *compatible
+ PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
+
+#define N(addr_bits, machine, print, default, next) \
+{ \
+ 16, /* 16 bits in a word. */ \
+ addr_bits, /* Bits in an address. */ \
+ 8, /* 8 bits in a byte. */ \
+ bfd_arch_msp430, \
+ machine, /* Machine number. */ \
+ "msp430", /* Architecture name. */ \
+ print, /* Printable name. */ \
+ 1, /* Section align power. */ \
+ default, /* The default machine. */ \
+ compatible, \
+ bfd_default_scan, \
+ next \
+}
+
+static const bfd_arch_info_type arch_info_struct[] =
+{
+ /* msp430x11x. */
+ N (16, bfd_mach_msp11, "msp:11", FALSE, & arch_info_struct[1]),
+
+ /* msp430x12x. */
+ N (16, bfd_mach_msp12, "msp:12", FALSE, & arch_info_struct[2]),
+
+ /* msp430x13x. */
+ N (16, bfd_mach_msp13, "msp:13", FALSE, & arch_info_struct[3]),
+
+ /* msp430x14x. */
+ N (16, bfd_mach_msp14, "msp:14", FALSE, & arch_info_struct[4]),
+
+ /* msp430x31x. */
+ N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[5]),
+
+ /* msp430x32x. */
+ N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[6]),
+
+ /* msp430x33x. */
+ N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[7]),
+
+ /* msp430x41x. */
+ N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[8]),
+
+ /* msp430x43x. */
+ N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[9]),
+
+ /* msp430x44x. */
+ N (16, bfd_mach_msp43, "msp:44", FALSE, & arch_info_struct[10]),
+
+ /* msp430x15x. */
+ N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[11]),
+
+ /* msp430x16x. */
+ N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[12]),
+
+ /* msp430x11x1. */
+ N (16, bfd_mach_msp110, "msp:110", FALSE, NULL)
+
+};
+
+const bfd_arch_info_type bfd_msp430_arch =
+ N (16, bfd_mach_msp14, "msp:14", TRUE, & arch_info_struct[0]);
+
+/* This routine is provided two arch_infos and works out which MSP
+ machine which would be compatible with both and returns a pointer
+ to its info structure. */
+
+static const bfd_arch_info_type *
+compatible (a,b)
+ const bfd_arch_info_type * a;
+ const bfd_arch_info_type * b;
+{
+ /* If a & b are for different architectures we can do nothing. */
+ if (a->arch != b->arch)
+ return NULL;
+
+ if (a->mach <= b->mach)
+ return b;
+
+ return a;
+}
--- /dev/null
+/* IQ2000-specific support for 32-bit ELF.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/iq2000.h"
+
+/* Forward declarations. */
+
+/* Private relocation functions. */
+static bfd_reloc_status_type iq2000_elf_relocate_hi16 PARAMS ((bfd *, Elf_Internal_Rela *, bfd_byte *, bfd_vma));
+static reloc_howto_type * iq2000_reloc_type_lookup PARAMS ((bfd *, bfd_reloc_code_real_type));
+static void iq2000_info_to_howto_rela PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+static bfd_boolean iq2000_elf_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+static bfd_reloc_status_type iq2000_final_link_relocate PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma));
+static bfd_boolean iq2000_elf_gc_sweep_hook PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *));
+static asection * iq2000_elf_gc_mark_hook PARAMS ((asection *sec, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *));
+static reloc_howto_type * iq2000_reloc_type_lookup PARAMS ((bfd *, bfd_reloc_code_real_type));
+static int elf32_iq2000_machine PARAMS ((bfd *));
+static bfd_boolean iq2000_elf_object_p PARAMS ((bfd *));
+static bfd_boolean iq2000_elf_set_private_flags PARAMS ((bfd *, flagword));
+static bfd_boolean iq2000_elf_copy_private_bfd_data PARAMS ((bfd *, bfd *));
+static bfd_boolean iq2000_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *));
+static bfd_boolean iq2000_elf_print_private_bfd_data PARAMS ((bfd *, PTR));
+static bfd_boolean iq2000_elf_check_relocs PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *));
+static bfd_reloc_status_type iq2000_elf_howto_hi16_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+
+\f
+static reloc_howto_type iq2000_elf_howto_table [] =
+{
+ /* This reloc does nothing. */
+
+ HOWTO (R_IQ2000_NONE, /* 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_IQ2000_NONE", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation. */
+ HOWTO (R_IQ2000_16, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_IQ2000_16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 32 bit absolute relocation. */
+ HOWTO (R_IQ2000_32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 31, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_IQ2000_32", /* name */
+ FALSE, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0x7fffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* 26 bit branch address. */
+ HOWTO (R_IQ2000_26, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 26, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ /* This needs complex overflow
+ detection, because the upper four
+ bits must match the PC. */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_IQ2000_26", /* name */
+ FALSE, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0x03ffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* 16 bit PC relative reference. */
+ HOWTO (R_IQ2000_PC16, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_IQ2000_PC16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0xffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* high 16 bits of symbol value. */
+ HOWTO (R_IQ2000_HI16, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 15, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ iq2000_elf_howto_hi16_reloc, /* special_function */
+ "R_IQ2000_HI16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0x7fff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Low 16 bits of symbol value. */
+ HOWTO (R_IQ2000_LO16, /* 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_IQ2000_LO16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* 16-bit jump offset. */
+ HOWTO (R_IQ2000_OFFSET_16, /* type */
+ 2, /* 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_IQ2000_OFFSET_16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* 21-bit jump offset. */
+ HOWTO (R_IQ2000_OFFSET_21, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 21, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_IQ2000_OFFSET_21", /* name */
+ FALSE, /* partial_inplace */
+ 0x000000, /* src_mask */
+ 0x1fffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* unsigned high 16 bits of value. */
+ HOWTO (R_IQ2000_OFFSET_21, /* type */
+ 16, /* 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_IQ2000_UHI16", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000, /* src_mask */
+ 0x7fff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 32 bit absolute debug relocation. */
+ HOWTO (R_IQ2000_32_DEBUG, /* 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_IQ2000_32", /* name */
+ FALSE, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+};
+
+/* GNU extension to record C++ vtable hierarchy. */
+static reloc_howto_type iq2000_elf_vtinherit_howto =
+ HOWTO (R_IQ2000_GNU_VTINHERIT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_IQ2000_GNU_VTINHERIT", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
+/* GNU extension to record C++ vtable member usage. */
+static reloc_howto_type iq2000_elf_vtentry_howto =
+ HOWTO (R_IQ2000_GNU_VTENTRY, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_IQ2000_GNU_VTENTRY", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
+\f
+/* Map BFD reloc types to IQ2000 ELF reloc types. */
+
+struct iq2000_reloc_map
+{
+ bfd_reloc_code_real_type bfd_reloc_val;
+ unsigned int iq2000_reloc_val;
+};
+
+static const struct iq2000_reloc_map iq2000_reloc_map [] =
+{
+ { BFD_RELOC_NONE, R_IQ2000_NONE },
+ { BFD_RELOC_16, R_IQ2000_16 },
+ { BFD_RELOC_32, R_IQ2000_32 },
+ { BFD_RELOC_MIPS_JMP, R_IQ2000_26 },
+ { BFD_RELOC_16_PCREL_S2, R_IQ2000_PC16 },
+ { BFD_RELOC_HI16, R_IQ2000_HI16 },
+ { BFD_RELOC_LO16, R_IQ2000_LO16 },
+ { BFD_RELOC_IQ2000_OFFSET_16,R_IQ2000_OFFSET_16 },
+ { BFD_RELOC_IQ2000_OFFSET_21,R_IQ2000_OFFSET_21 },
+ { BFD_RELOC_IQ2000_UHI16, R_IQ2000_UHI16 },
+ { BFD_RELOC_VTABLE_INHERIT, R_IQ2000_GNU_VTINHERIT },
+ { BFD_RELOC_VTABLE_ENTRY, R_IQ2000_GNU_VTENTRY },
+};
+
+static bfd_reloc_status_type
+iq2000_elf_howto_hi16_reloc (abfd,
+ reloc_entry,
+ symbol,
+ data,
+ input_section,
+ output_bfd,
+ error_message)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message ATTRIBUTE_UNUSED;
+{
+ bfd_reloc_status_type ret;
+ bfd_vma relocation;
+
+ /* If we're relocating, and this an external symbol, we don't want
+ to change anything. */
+ if (output_bfd != (bfd *) NULL
+ && (symbol->flags & BSF_SECTION_SYM) == 0
+ && reloc_entry->addend == 0)
+ {
+ reloc_entry->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+
+ if (bfd_is_com_section (symbol->section))
+ relocation = 0;
+ else
+ relocation = symbol->value;
+
+ relocation += symbol->section->output_section->vma;
+ relocation += symbol->section->output_offset;
+ relocation += reloc_entry->addend;
+
+ /* if %lo will have sign-extension, compensate by add 0x10000 to hi portion */
+ if (relocation & 0x8000)
+ reloc_entry->addend += 0x10000;
+
+ /* Now do the reloc in the usual way. */
+ ret = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd, error_message);
+
+ /* put it back the way it was */
+ if (relocation & 0x8000)
+ reloc_entry->addend -= 0x10000;
+
+ return ret;
+}
+
+static bfd_reloc_status_type
+iq2000_elf_relocate_hi16 (input_bfd, relhi, contents, value)
+ bfd *input_bfd;
+ Elf_Internal_Rela *relhi;
+ bfd_byte *contents;
+ bfd_vma value;
+{
+ bfd_vma insn;
+
+ insn = bfd_get_32 (input_bfd, contents + relhi->r_offset);
+
+ value += relhi->r_addend;
+ value &= 0x7fffffff; /* mask off top-bit which is Harvard mask bit */
+
+ /* if top-bit of %lo value is on, this means that %lo will
+ sign-propagate and so we compensate by adding 1 to %hi value */
+ if (value & 0x8000)
+ value += 0x10000;
+
+ value >>= 16;
+ insn = ((insn & ~0xFFFF) | value);
+
+ bfd_put_32 (input_bfd, insn, contents + relhi->r_offset);
+ return bfd_reloc_ok;
+}
+
+static reloc_howto_type *
+iq2000_reloc_type_lookup (abfd, code)
+ bfd * abfd ATTRIBUTE_UNUSED;
+ bfd_reloc_code_real_type code;
+{
+ /* Note that the iq2000_elf_howto_table is indxed by the R_
+ constants. Thus, the order that the howto records appear in the
+ table *must* match the order of the relocation types defined in
+ include/elf/iq2000.h. */
+
+ switch (code)
+ {
+ case BFD_RELOC_NONE:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_NONE];
+ case BFD_RELOC_16:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_16];
+ case BFD_RELOC_32:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_32];
+ case BFD_RELOC_MIPS_JMP:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_26];
+ case BFD_RELOC_IQ2000_OFFSET_16:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_OFFSET_16];
+ case BFD_RELOC_IQ2000_OFFSET_21:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_OFFSET_21];
+ case BFD_RELOC_16_PCREL_S2:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_PC16];
+ case BFD_RELOC_HI16:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_HI16];
+ case BFD_RELOC_IQ2000_UHI16:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_UHI16];
+ case BFD_RELOC_LO16:
+ return &iq2000_elf_howto_table[ (int) R_IQ2000_LO16];
+ case BFD_RELOC_VTABLE_INHERIT:
+ return &iq2000_elf_vtinherit_howto;
+ case BFD_RELOC_VTABLE_ENTRY:
+ return &iq2000_elf_vtentry_howto;
+ default:
+ /* Pacify gcc -Wall. */
+ return NULL;
+ }
+ return NULL;
+}
+
+\f
+/* Perform a single relocation. By default we use the standard BFD
+ routines. */
+
+static bfd_reloc_status_type
+iq2000_final_link_relocate (howto, input_bfd, input_section, contents, rel, relocation)
+ reloc_howto_type * howto;
+ bfd * input_bfd;
+ asection * input_section;
+ bfd_byte * contents;
+ Elf_Internal_Rela * rel;
+ bfd_vma relocation;
+{
+ return _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, rel->r_addend);
+}
+\f
+/* Set the howto pointer for a IQ2000 ELF reloc. */
+
+static void
+iq2000_info_to_howto_rela (abfd, cache_ptr, dst)
+ 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_IQ2000_GNU_VTINHERIT:
+ cache_ptr->howto = & iq2000_elf_vtinherit_howto;
+ break;
+
+ case R_IQ2000_GNU_VTENTRY:
+ cache_ptr->howto = & iq2000_elf_vtentry_howto;
+ break;
+
+ default:
+ cache_ptr->howto = & iq2000_elf_howto_table [r_type];
+ break;
+ }
+}
+
+/* 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. */
+
+static bfd_boolean
+iq2000_elf_check_relocs (abfd, info, sec, relocs)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+ Elf_Internal_Rela *rel;
+ Elf_Internal_Rela *rel_end;
+
+ if (info->relocateable)
+ return TRUE;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym);
+ if (!elf_bad_symtab (abfd))
+ sym_hashes_end -= symtab_hdr->sh_info;
+
+ rel_end = relocs + sec->reloc_count;
+ for (rel = relocs; rel < rel_end; rel++)
+ {
+ struct elf_link_hash_entry *h;
+ unsigned long r_symndx;
+
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx < symtab_hdr->sh_info)
+ h = NULL;
+ else
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ /* This relocation describes the C++ object vtable hierarchy.
+ Reconstruct it for later use during GC. */
+ case R_IQ2000_GNU_VTINHERIT:
+ if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
+ return FALSE;
+ break;
+
+ /* This relocation describes which C++ vtable entries are actually
+ used. Record for later use during GC. */
+ case R_IQ2000_GNU_VTENTRY:
+ if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+ return FALSE;
+ break;
+
+ case R_IQ2000_32:
+ /* For debug section, change to special harvard-aware relocations */
+ if (memcmp (sec->name, ".debug", 6) == 0
+ || memcmp (sec->name, ".stab", 5) == 0
+ || memcmp (sec->name, ".eh_frame", 9) == 0)
+ rel->r_info = ELF32_R_INFO (ELF32_R_SYM (rel->r_info), R_IQ2000_32_DEBUG);
+ break;
+ }
+ }
+ return TRUE;
+}
+
+\f
+/* Relocate a IQ2000 ELF section.
+ There is some attempt to make this function usable for many architectures,
+ both USE_REL and USE_RELA ['twould be nice if such a critter existed],
+ if only to serve as a learning tool.
+
+ The RELOCATE_SECTION function is called by the new ELF backend linker
+ to handle the relocations for a section.
+
+ The relocs are always passed as Rela structures; if the section
+ actually uses Rel structures, the r_addend field will always be
+ zero.
+
+ This function is responsible for adjusting the section contents as
+ necessary, and (if using Rela relocs and generating a relocateable
+ output file) adjusting the reloc addend as necessary.
+
+ This function does not have to worry about setting the reloc
+ address or the reloc symbol index.
+
+ LOCAL_SYMS is a pointer to the swapped in local symbols.
+
+ LOCAL_SECTIONS is an array giving the section in the input file
+ corresponding to the st_shndx field of each local symbol.
+
+ The global hash table entry for the global symbols can be found
+ via elf_sym_hashes (input_bfd).
+
+ When generating relocateable output, this function must handle
+ STB_LOCAL/STT_SECTION symbols specially. The output symbol is
+ going to be the section symbol corresponding to the output
+ section, which means that the addend must be adjusted
+ accordingly. */
+
+static bfd_boolean
+iq2000_elf_relocate_section (output_bfd, info, input_bfd, input_section,
+ contents, relocs, local_syms, local_sections)
+ bfd * output_bfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info * info;
+ bfd * input_bfd;
+ asection * input_section;
+ bfd_byte * contents;
+ Elf_Internal_Rela * relocs;
+ Elf_Internal_Sym * local_syms;
+ asection ** local_sections;
+{
+ Elf_Internal_Shdr * symtab_hdr;
+ struct elf_link_hash_entry ** sym_hashes;
+ Elf_Internal_Rela * rel;
+ Elf_Internal_Rela * relend;
+
+ symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (input_bfd);
+ relend = relocs + input_section->reloc_count;
+
+ for (rel = relocs; rel < relend; rel ++)
+ {
+ reloc_howto_type * howto;
+ unsigned long r_symndx;
+ Elf_Internal_Sym * sym;
+ asection * sec;
+ struct elf_link_hash_entry * h;
+ bfd_vma relocation;
+ bfd_reloc_status_type r;
+ const char * name = NULL;
+ int r_type;
+
+ r_type = ELF32_R_TYPE (rel->r_info);
+
+ if ( r_type == R_IQ2000_GNU_VTINHERIT
+ || r_type == R_IQ2000_GNU_VTENTRY)
+ continue;
+
+ r_symndx = ELF32_R_SYM (rel->r_info);
+
+ /* This is a final link. */
+ howto = iq2000_elf_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;
+ sec = local_sections [r_symndx];
+ relocation = (sec->output_section->vma
+ + sec->output_offset
+ + sym->st_value);
+
+ 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;
+#ifdef DEBUG
+ fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n",
+ sec->name, name, sym->st_name,
+ sec->output_section->vma, sec->output_offset,
+ sym->st_value, rel->r_addend);
+#endif
+ }
+ else
+ {
+ h = sym_hashes [r_symndx];
+
+ 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)
+ {
+ sec = h->root.u.def.section;
+ relocation = (h->root.u.def.value
+ + sec->output_section->vma
+ + sec->output_offset);
+#ifdef DEBUG
+ fprintf (stderr,
+ "defined: sec: %s, name: %s, value: %x + %x + %x gives: %x\n",
+ sec->name, name, h->root.u.def.value,
+ sec->output_section->vma, sec->output_offset, relocation);
+#endif
+ }
+ else if (h->root.type == bfd_link_hash_undefweak)
+ {
+#ifdef DEBUG
+ fprintf (stderr, "undefined: sec: %s, name: %s\n",
+ sec->name, name);
+#endif
+ relocation = 0;
+ }
+ else
+ {
+ if (! ((*info->callbacks->undefined_symbol)
+ (info, h->root.root.string, input_bfd,
+ input_section, rel->r_offset,
+ (!info->shared || info->no_undefined))))
+ return FALSE;
+#ifdef DEBUG
+ fprintf (stderr, "unknown: name: %s\n", name);
+#endif
+ relocation = 0;
+ }
+ }
+
+ switch (r_type)
+ {
+ case R_IQ2000_HI16:
+ r = iq2000_elf_relocate_hi16 (input_bfd, rel, contents, relocation);
+ break;
+
+ case R_IQ2000_PC16:
+ rel->r_addend -= 4;
+ /* Fall through. */
+
+ default:
+ r = iq2000_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel, relocation);
+ break;
+ }
+
+ 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;
+}
+\f
+
+/* Update the got entry reference counts for the section being
+ removed. */
+
+static bfd_boolean
+iq2000_elf_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;
+}
+
+/* Return the section that should be marked against GC for a given
+ relocation. */
+
+static asection *
+iq2000_elf_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_IQ2000_GNU_VTINHERIT:
+ case R_IQ2000_GNU_VTENTRY:
+ break;
+
+ default:
+ 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;
+}
+
+\f
+/* Return the MACH for an e_flags value. */
+
+static int
+elf32_iq2000_machine (abfd)
+ bfd *abfd;
+{
+ switch (elf_elfheader (abfd)->e_flags & EF_IQ2000_CPU_MASK)
+ {
+ case EF_IQ2000_CPU_IQ2000: return bfd_mach_iq2000;
+ case EF_IQ2000_CPU_IQ10: return bfd_mach_iq10;
+ }
+
+ return bfd_mach_iq2000;
+}
+
+\f
+/* Function to set the ELF flag bits. */
+
+static bfd_boolean
+iq2000_elf_set_private_flags (abfd, flags)
+ bfd *abfd;
+ flagword flags;
+{
+ elf_elfheader (abfd)->e_flags = flags;
+ elf_flags_init (abfd) = TRUE;
+ return TRUE;
+}
+
+/* Copy backend specific data from one object module to another. */
+
+static bfd_boolean
+iq2000_elf_copy_private_bfd_data (ibfd, obfd)
+ bfd *ibfd;
+ bfd *obfd;
+{
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return TRUE;
+
+ BFD_ASSERT (!elf_flags_init (obfd)
+ || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
+
+ elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
+ elf_flags_init (obfd) = TRUE;
+ return TRUE;
+}
+
+/* Merge backend specific data from an object file to the output
+ object file when linking. */
+
+static bfd_boolean
+iq2000_elf_merge_private_bfd_data (ibfd, obfd)
+ bfd *ibfd;
+ bfd *obfd;
+{
+ flagword old_flags, old_partial;
+ flagword new_flags, new_partial;
+ bfd_boolean error = FALSE;
+ char new_opt[80];
+ char old_opt[80];
+
+ new_opt[0] = old_opt[0] = '\0';
+ new_flags = elf_elfheader (ibfd)->e_flags;
+ old_flags = elf_elfheader (obfd)->e_flags;
+
+#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",
+ bfd_get_filename (ibfd));
+#endif
+
+ if (!elf_flags_init (obfd))
+ {
+ /* First call, no flags set. */
+ elf_flags_init (obfd) = TRUE;
+ elf_elfheader (obfd)->e_flags = new_flags;
+ }
+
+ else if (new_flags == old_flags)
+ /* Compatible flags are ok. */
+ ;
+
+ else /* Possibly incompatible flags. */
+ {
+ /* Warn if different cpu is used (allow a specific cpu to override
+ the generic cpu). */
+ new_partial = (new_flags & EF_IQ2000_CPU_MASK);
+ old_partial = (old_flags & EF_IQ2000_CPU_MASK);
+ if (new_partial == old_partial)
+ ;
+
+ else
+ {
+ switch (new_partial)
+ {
+ default: strcat (new_opt, " -m2000"); break;
+ case EF_IQ2000_CPU_IQ2000: strcat (new_opt, " -m2000"); break;
+ case EF_IQ2000_CPU_IQ10: strcat (new_opt, " -m10"); break;
+ }
+
+ switch (old_partial)
+ {
+ default: strcat (old_opt, " -m2000"); break;
+ case EF_IQ2000_CPU_IQ2000: strcat (old_opt, " -m2000"); break;
+ case EF_IQ2000_CPU_IQ10: strcat (old_opt, " -m10"); break;
+ }
+ }
+
+ /* Print out any mismatches from above. */
+ if (new_opt[0])
+ {
+ error = TRUE;
+ (*_bfd_error_handler)
+ (_("%s: compiled with %s and linked with modules compiled with %s"),
+ bfd_get_filename (ibfd), new_opt, old_opt);
+ }
+
+ new_flags &= ~ EF_IQ2000_ALL_FLAGS;
+ old_flags &= ~ EF_IQ2000_ALL_FLAGS;
+
+ /* Warn about any other mismatches. */
+ if (new_flags != old_flags)
+ {
+ error = TRUE;
+ (*_bfd_error_handler)
+ (_("%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"),
+ bfd_get_filename (ibfd), (long)new_flags, (long)old_flags);
+ }
+ }
+
+ if (error)
+ bfd_set_error (bfd_error_bad_value);
+
+ return !error;
+}
+
+\f
+static bfd_boolean
+iq2000_elf_print_private_bfd_data (abfd, ptr)
+ bfd *abfd;
+ PTR ptr;
+{
+ FILE *file = (FILE *) ptr;
+ flagword flags;
+
+ BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+ /* Print normal ELF private data. */
+ _bfd_elf_print_private_bfd_data (abfd, ptr);
+
+ flags = elf_elfheader (abfd)->e_flags;
+ fprintf (file, _("private flags = 0x%lx:"), (long)flags);
+
+ switch (flags & EF_IQ2000_CPU_MASK)
+ {
+ default: break;
+ case EF_IQ2000_CPU_IQ2000: fprintf (file, " -m2000"); break;
+ case EF_IQ2000_CPU_IQ10: fprintf (file, " -m10"); break;
+ }
+
+ fputc ('\n', file);
+}
+
+static
+bfd_boolean
+iq2000_elf_object_p (abfd)
+ bfd *abfd;
+{
+ /* Irix 5 and 6 is broken. Object file symbol tables are not always
+ sorted correctly such that local symbols precede global symbols,
+ and the sh_info field in the symbol table is not always right. */
+ elf_bad_symtab (abfd) = TRUE;
+
+ bfd_default_set_arch_mach (abfd, bfd_arch_iq2000,
+ elf32_iq2000_machine (abfd));
+ return TRUE;
+}
+
+\f
+#define ELF_ARCH bfd_arch_iq2000
+#define ELF_MACHINE_CODE EM_IQ2000
+#define ELF_MAXPAGESIZE 0x1000
+
+#define TARGET_BIG_SYM bfd_elf32_iq2000_vec
+#define TARGET_BIG_NAME "elf32-iq2000"
+
+#define elf_info_to_howto_rel NULL
+#define elf_info_to_howto iq2000_info_to_howto_rela
+#define elf_backend_relocate_section iq2000_elf_relocate_section
+#define elf_backend_gc_mark_hook iq2000_elf_gc_mark_hook
+#define elf_backend_gc_sweep_hook iq2000_elf_gc_sweep_hook
+#define elf_backend_check_relocs iq2000_elf_check_relocs
+#define elf_backend_object_p iq2000_elf_object_p
+#define elf_backend_rela_normal 1
+
+#define elf_backend_can_gc_sections 1
+
+#define bfd_elf32_bfd_reloc_type_lookup iq2000_reloc_type_lookup
+#define bfd_elf32_bfd_set_private_flags iq2000_elf_set_private_flags
+#define bfd_elf32_bfd_copy_private_bfd_data iq2000_elf_copy_private_bfd_data
+#define bfd_elf32_bfd_merge_private_bfd_data iq2000_elf_merge_private_bfd_data
+#define bfd_elf32_bfd_print_private_bfd_data iq2000_elf_print_private_bfd_data
+
+#include "elf32-target.h"
--- /dev/null
+/* MSP430-specific support for 32-bit ELF
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ Contributed by Dmitry Diky <diwil@mail.ru>
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 "bfd.h"
+#include "sysdep.h"
+#include "libiberty.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/msp430.h"
+
+static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
+ PARAMS ((bfd *, bfd_reloc_code_real_type));
+
+static void msp430_info_to_howto_rela
+ PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+
+static asection *elf32_msp430_gc_mark_hook
+ PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
+ struct elf_link_hash_entry *, Elf_Internal_Sym *));
+
+static bfd_boolean elf32_msp430_gc_sweep_hook
+ PARAMS ((bfd *, struct bfd_link_info *, asection *,
+ const Elf_Internal_Rela *));
+
+static bfd_boolean elf32_msp430_check_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, asection *,
+ const Elf_Internal_Rela *));
+
+static bfd_reloc_status_type msp430_final_link_relocate
+ PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
+ Elf_Internal_Rela *, bfd_vma));
+
+static bfd_boolean elf32_msp430_relocate_section
+ PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+ Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+
+static void bfd_elf_msp430_final_write_processing
+ PARAMS ((bfd *, bfd_boolean));
+
+static bfd_boolean elf32_msp430_object_p
+ PARAMS ((bfd *));
+
+static void elf32_msp430_post_process_headers
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+/* Use RELA instead of REL. */
+#undef USE_REL
+
+static reloc_howto_type elf_msp430_howto_table[] =
+{
+ HOWTO (R_MSP430_NONE, /* 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_MSP430_NONE", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ HOWTO (R_MSP430_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_MSP430_32", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 13 bit PC relative relocation. */
+ HOWTO (R_MSP430_10_PCREL, /* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 10, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MSP430_13_PCREL", /* name */
+ FALSE, /* partial_inplace */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation. */
+ HOWTO (R_MSP430_16, /* type */
+ 0, /* rightshift */
+ 1, /* 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_MSP430_16", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation for command address. */
+ HOWTO (R_MSP430_16_PCREL, /* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont,/* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MSP430_16_PCREL", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation, byte operations. */
+ HOWTO (R_MSP430_16_BYTE, /* type */
+ 0, /* rightshift */
+ 1, /* 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_MSP430_16_BYTE", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation for command address. */
+ HOWTO (R_MSP430_16_PCREL_BYTE,/* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont,/* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MSP430_16_PCREL_BYTE", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ TRUE) /* pcrel_offset */
+};
+
+/* Map BFD reloc types to MSP430 ELF reloc types. */
+
+struct msp430_reloc_map
+{
+ bfd_reloc_code_real_type bfd_reloc_val;
+ unsigned int elf_reloc_val;
+};
+
+static const struct msp430_reloc_map msp430_reloc_map[] =
+ {
+ {BFD_RELOC_NONE, R_MSP430_NONE},
+ {BFD_RELOC_32, R_MSP430_32},
+ {BFD_RELOC_MSP430_10_PCREL, R_MSP430_10_PCREL},
+ {BFD_RELOC_16, R_MSP430_16_BYTE},
+ {BFD_RELOC_MSP430_16_PCREL, R_MSP430_16_PCREL},
+ {BFD_RELOC_MSP430_16, R_MSP430_16},
+ {BFD_RELOC_MSP430_16_PCREL_BYTE, R_MSP430_16_PCREL_BYTE},
+ {BFD_RELOC_MSP430_16_BYTE, R_MSP430_16_BYTE}
+ };
+
+static reloc_howto_type *
+bfd_elf32_bfd_reloc_type_lookup (abfd, code)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ bfd_reloc_code_real_type code;
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (msp430_reloc_map); i++)
+ if (msp430_reloc_map[i].bfd_reloc_val == code)
+ return &elf_msp430_howto_table[msp430_reloc_map[i].elf_reloc_val];
+
+ return NULL;
+}
+
+/* Set the howto pointer for an MSP430 ELF reloc. */
+
+static void
+msp430_info_to_howto_rela (abfd, cache_ptr, dst)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ arelent *cache_ptr;
+ Elf_Internal_Rela *dst;
+{
+ unsigned int r_type;
+
+ r_type = ELF32_R_TYPE (dst->r_info);
+ BFD_ASSERT (r_type < (unsigned int) R_MSP430_max);
+ cache_ptr->howto = &elf_msp430_howto_table[r_type];
+}
+
+static asection *
+elf32_msp430_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))
+ {
+ default:
+ 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_msp430_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;
+{
+ /* We don't use got and plt entries for msp430. */
+ 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. */
+
+static bfd_boolean
+elf32_msp430_check_relocs (abfd, info, sec, relocs)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+ const Elf_Internal_Rela *rel;
+ const Elf_Internal_Rela *rel_end;
+
+ if (info->relocateable)
+ return TRUE;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ sym_hashes_end =
+ sym_hashes + symtab_hdr->sh_size / sizeof (Elf32_External_Sym);
+ if (!elf_bad_symtab (abfd))
+ sym_hashes_end -= symtab_hdr->sh_info;
+
+ rel_end = relocs + sec->reloc_count;
+ for (rel = relocs; rel < rel_end; rel++)
+ {
+ struct elf_link_hash_entry *h;
+ unsigned long r_symndx;
+
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx < symtab_hdr->sh_info)
+ h = NULL;
+ else
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ }
+
+ return TRUE;
+}
+
+/* Perform a single relocation. By default we use the standard BFD
+ routines, but a few relocs, we have to do them ourselves. */
+
+static bfd_reloc_status_type
+msp430_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel, relocation)
+ reloc_howto_type *howto;
+ bfd *input_bfd;
+ asection *input_section;
+ bfd_byte *contents;
+ Elf_Internal_Rela *rel;
+ bfd_vma relocation;
+{
+ bfd_reloc_status_type r = bfd_reloc_ok;
+ bfd_vma x;
+ bfd_signed_vma srel;
+
+ switch (howto->type)
+ {
+ case R_MSP430_10_PCREL:
+ contents += rel->r_offset;
+ srel = (bfd_signed_vma) relocation;
+ srel += rel->r_addend;
+ srel -= rel->r_offset;
+ srel -= 2; /* Branch instructions add 2 to the PC... */
+ srel -= (input_section->output_section->vma +
+ input_section->output_offset);
+
+ if (srel & 1)
+ return bfd_reloc_outofrange;
+
+ /* MSP430 addresses commands as words. */
+ srel >>= 1;
+
+ /* Check for an overflow. */
+ if (srel < -512 || srel > 511)
+ return bfd_reloc_overflow;
+
+ x = bfd_get_16 (input_bfd, contents);
+ x = (x & 0xfc00) | (srel & 0x3ff);
+ bfd_put_16 (input_bfd, x, contents);
+ break;
+
+ case R_MSP430_16_PCREL:
+ contents += rel->r_offset;
+ srel = (bfd_signed_vma) relocation;
+ srel += rel->r_addend;
+ srel -= rel->r_offset;
+ /* Only branch instructions add 2 to the PC... */
+ srel -= (input_section->output_section->vma +
+ input_section->output_offset);
+
+ if (srel & 1)
+ return bfd_reloc_outofrange;
+
+ bfd_put_16 (input_bfd, srel & 0xffff, contents);
+ break;
+
+ case R_MSP430_16_PCREL_BYTE:
+ contents += rel->r_offset;
+ srel = (bfd_signed_vma) relocation;
+ srel += rel->r_addend;
+ srel -= rel->r_offset;
+ /* Only branch instructions add 2 to the PC... */
+ srel -= (input_section->output_section->vma +
+ input_section->output_offset);
+
+ bfd_put_16 (input_bfd, srel & 0xffff, contents);
+ break;
+
+ case R_MSP430_16_BYTE:
+ contents += rel->r_offset;
+ srel = (bfd_signed_vma) relocation;
+ srel += rel->r_addend;
+ bfd_put_16 (input_bfd, srel & 0xffff, contents);
+ break;
+
+ case R_MSP430_16:
+ contents += rel->r_offset;
+ srel = (bfd_signed_vma) relocation;
+ srel += rel->r_addend;
+
+ if (srel & 1)
+ return bfd_reloc_notsupported;
+
+ bfd_put_16 (input_bfd, srel & 0xffff, contents);
+ break;
+
+ default:
+ r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, rel->r_addend);
+ }
+
+ return r;
+}
+
+/* Relocate an MSP430 ELF section. */
+
+static bfd_boolean
+elf32_msp430_relocate_section (output_bfd, info, input_bfd, input_section,
+ contents, relocs, local_syms, local_sections)
+ bfd *output_bfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info *info;
+ bfd *input_bfd;
+ asection *input_section;
+ bfd_byte *contents;
+ Elf_Internal_Rela *relocs;
+ Elf_Internal_Sym *local_syms;
+ asection **local_sections;
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ struct elf_link_hash_entry **sym_hashes;
+ Elf_Internal_Rela *rel;
+ Elf_Internal_Rela *relend;
+
+ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (input_bfd);
+ relend = relocs + input_section->reloc_count;
+
+ for (rel = relocs; rel < relend; rel++)
+ {
+ reloc_howto_type *howto;
+ unsigned long r_symndx;
+ Elf_Internal_Sym *sym;
+ asection *sec;
+ struct elf_link_hash_entry *h;
+ bfd_vma relocation;
+ bfd_reloc_status_type r;
+ const char *name = NULL;
+ int r_type;
+
+ /* This is a final link. */
+
+ r_type = ELF32_R_TYPE (rel->r_info);
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ howto = elf_msp430_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;
+ 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)
+ {
+ 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;
+ }
+ }
+
+ r = msp430_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;
+}
+
+/* The final processing done just before writing out a MSP430 ELF object
+ file. This gets the MSP430 architecture right based on the machine
+ number. */
+
+static void
+bfd_elf_msp430_final_write_processing (abfd, linker)
+ bfd *abfd;
+ bfd_boolean linker ATTRIBUTE_UNUSED;
+{
+ unsigned long val;
+
+ switch (bfd_get_mach (abfd))
+ {
+ default:
+ case bfd_mach_msp12:
+ val = E_MSP430_MACH_MSP430x12;
+ break;
+
+ case bfd_mach_msp110:
+ val = E_MSP430_MACH_MSP430x11x1;
+ break;
+
+ case bfd_mach_msp11:
+ val = E_MSP430_MACH_MSP430x11;
+ break;
+
+ case bfd_mach_msp13:
+ val = E_MSP430_MACH_MSP430x13;
+ break;
+
+ case bfd_mach_msp14:
+ val = E_MSP430_MACH_MSP430x14;
+ break;
+
+ case bfd_mach_msp41:
+ val = E_MSP430_MACH_MSP430x41;
+ break;
+
+ case bfd_mach_msp43:
+ val = E_MSP430_MACH_MSP430x43;
+ break;
+
+ case bfd_mach_msp44:
+ val = E_MSP430_MACH_MSP430x44;
+ break;
+
+ case bfd_mach_msp31:
+ val = E_MSP430_MACH_MSP430x31;
+ break;
+
+ case bfd_mach_msp32:
+ val = E_MSP430_MACH_MSP430x32;
+ break;
+
+ case bfd_mach_msp33:
+ val = E_MSP430_MACH_MSP430x33;
+ break;
+
+ case bfd_mach_msp15:
+ val = E_MSP430_MACH_MSP430x15;
+ break;
+
+ case bfd_mach_msp16:
+ val = E_MSP430_MACH_MSP430x16;
+ break;
+ }
+
+ elf_elfheader (abfd)->e_machine = EM_MSP430;
+ elf_elfheader (abfd)->e_flags &= ~EF_MSP430_MACH;
+ elf_elfheader (abfd)->e_flags |= val;
+}
+
+/* Set the right machine number. */
+
+static bfd_boolean
+elf32_msp430_object_p (abfd)
+ bfd *abfd;
+{
+ int e_set = bfd_mach_msp14;
+
+ if (elf_elfheader (abfd)->e_machine == EM_MSP430
+ || elf_elfheader (abfd)->e_machine == EM_MSP430_OLD)
+ {
+ int e_mach = elf_elfheader (abfd)->e_flags & EF_MSP430_MACH;
+
+ switch (e_mach)
+ {
+ default:
+ case E_MSP430_MACH_MSP430x12:
+ e_set = bfd_mach_msp12;
+ break;
+
+ case E_MSP430_MACH_MSP430x11:
+ e_set = bfd_mach_msp11;
+ break;
+
+ case E_MSP430_MACH_MSP430x11x1:
+ e_set = bfd_mach_msp110;
+ break;
+
+ case E_MSP430_MACH_MSP430x13:
+ e_set = bfd_mach_msp13;
+ break;
+
+ case E_MSP430_MACH_MSP430x14:
+ e_set = bfd_mach_msp14;
+ break;
+
+ case E_MSP430_MACH_MSP430x41:
+ e_set = bfd_mach_msp41;
+ break;
+
+ case E_MSP430_MACH_MSP430x31:
+ e_set = bfd_mach_msp31;
+ break;
+
+ case E_MSP430_MACH_MSP430x32:
+ e_set = bfd_mach_msp32;
+ break;
+
+ case E_MSP430_MACH_MSP430x33:
+ e_set = bfd_mach_msp33;
+ break;
+
+ case E_MSP430_MACH_MSP430x43:
+ e_set = bfd_mach_msp43;
+ break;
+
+ case E_MSP430_MACH_MSP430x44:
+ e_set = bfd_mach_msp44;
+ break;
+
+ case E_MSP430_MACH_MSP430x15:
+ e_set = bfd_mach_msp15;
+ break;
+
+ case E_MSP430_MACH_MSP430x16:
+ e_set = bfd_mach_msp16;
+ break;
+ }
+ }
+
+ return bfd_default_set_arch_mach (abfd, bfd_arch_msp430, e_set);
+}
+
+static void
+elf32_msp430_post_process_headers (abfd, link_info)
+ bfd *abfd;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+{
+ Elf_Internal_Ehdr *i_ehdrp; /* ELF file header, internal form. */
+
+ i_ehdrp = elf_elfheader (abfd);
+
+#ifndef ELFOSABI_STANDALONE
+#define ELFOSABI_STANDALONE 255
+#endif
+
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_STANDALONE;
+}
+
+
+#define ELF_ARCH bfd_arch_msp430
+#define ELF_MACHINE_CODE EM_MSP430
+#define ELF_MACHINE_ALT1 EM_MSP430_OLD
+#define ELF_MAXPAGESIZE 1
+
+#define TARGET_LITTLE_SYM bfd_elf32_msp430_vec
+#define TARGET_LITTLE_NAME "elf32-msp430"
+
+#define elf_info_to_howto msp430_info_to_howto_rela
+#define elf_info_to_howto_rel NULL
+#define elf_backend_relocate_section elf32_msp430_relocate_section
+#define elf_backend_gc_mark_hook elf32_msp430_gc_mark_hook
+#define elf_backend_gc_sweep_hook elf32_msp430_gc_sweep_hook
+#define elf_backend_check_relocs elf32_msp430_check_relocs
+#define elf_backend_can_gc_sections 1
+#define elf_backend_final_write_processing bfd_elf_msp430_final_write_processing
+#define elf_backend_object_p elf32_msp430_object_p
+#define elf_backend_post_process_headers elf32_msp430_post_process_headers
+
+#include "elf32-target.h"
--- /dev/null
+/* SH ELF support for BFD.
+ Copyright 2003 Free Software Foundation, Inc.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 ELF32_SH64_H
+#define ELF32_SH64_H
+
+#define SH64_CRANGES_SECTION_NAME ".cranges"
+enum sh64_elf_cr_type {
+ CRT_NONE = 0,
+ CRT_DATA = 1,
+ CRT_SH5_ISA16 = 2,
+ CRT_SH5_ISA32 = 3
+};
+
+/* The official definition is this:
+
+ typedef struct {
+ Elf32_Addr cr_addr;
+ Elf32_Word cr_size;
+ Elf32_Half cr_type;
+ } Elf32_CRange;
+
+ but we have no use for that exact type. Instead we use this struct for
+ the internal representation. */
+typedef struct {
+ bfd_vma cr_addr;
+ bfd_size_type cr_size;
+ enum sh64_elf_cr_type cr_type;
+} sh64_elf_crange;
+
+#define SH64_CRANGE_SIZE (4 + 4 + 2)
+#define SH64_CRANGE_CR_ADDR_OFFSET 0
+#define SH64_CRANGE_CR_SIZE_OFFSET 4
+#define SH64_CRANGE_CR_TYPE_OFFSET (4 + 4)
+
+/* Get the contents type of an arbitrary address, or return CRT_NONE. */
+extern enum sh64_elf_cr_type sh64_get_contents_type
+ PARAMS ((asection *, bfd_vma, sh64_elf_crange *));
+
+/* Simpler interface.
+ FIXME: This seems redundant now that we export the interface above. */
+extern bfd_boolean sh64_address_is_shmedia PARAMS ((asection *, bfd_vma));
+
+extern int _bfd_sh64_crange_qsort_cmpb PARAMS ((const void *, const void *));
+extern int _bfd_sh64_crange_qsort_cmpl PARAMS ((const void *, const void *));
+extern int _bfd_sh64_crange_bsearch_cmpb PARAMS ((const void *, const void *));
+extern int _bfd_sh64_crange_bsearch_cmpl PARAMS ((const void *, const void *));
+
+struct sh64_section_data
+{
+ flagword contents_flags;
+
+ /* Only used in the cranges section, but we don't have an official
+ backend-specific bfd field. */
+ bfd_size_type cranges_growth;
+};
+
+struct _sh64_elf_section_data
+{
+ struct bfd_elf_section_data elf;
+ struct sh64_section_data *sh64_info;
+};
+
+#define sh64_elf_section_data(sec) \
+ ((struct _sh64_elf_section_data *) elf_section_data (sec))
+
+#endif /* ELF32_SH64_H */
--- /dev/null
+# Autoconf M4 include file defining utility macros for complex Canadian
+# cross builds.
+
+####
+# _NCN_TOOL_PREFIXES: Some stuff that oughtta be done in AC_CANONICAL_SYSTEM
+# or AC_INIT.
+# These demand that AC_CANONICAL_SYSTEM be called beforehand.
+AC_DEFUN([_NCN_TOOL_PREFIXES],
+[ncn_tool_prefix=
+test -n "$host_alias" && ncn_tool_prefix=$host_alias-
+ncn_target_tool_prefix=
+test -n "$target_alias" && ncn_target_tool_prefix=$target_alias-
+]) []dnl # _NCN_TOOL_PREFIXES
+
+####
+# NCN_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
+# Like AC_CHECK_TOOL, but tries a prefix of the target, not the host.
+# Code is pretty much lifted from autoconf2.53.
+
+AC_DEFUN([NCN_CHECK_TARGET_TOOL],
+[AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
+if test -n "$ncn_target_tool_prefix"; then
+ AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2],
+ [${ncn_target_tool_prefix}$2], , [$4])
+fi
+if test -z "$ac_cv_prog_$1" ; then
+ ncn_cv_$1=$$1
+ AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [$3], [$4])
+ $1=$ncn_cv_$1
+else
+ $1="$ac_cv_prog_$1"
+fi
+]) []dnl # NCN_CHECK_TARGET_TOOL
+
+
+####
+# NCN_STRICT_CHECK_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
+# Like AC_CHECK_TOOL, but requires the prefix if build!=host.
+
+AC_DEFUN([NCN_STRICT_CHECK_TOOL],
+[AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
+if test -n "$ncn_tool_prefix"; then
+ AC_CHECK_PROG([$1], [${ncn_tool_prefix}$2],
+ [${ncn_tool_prefix}$2], , [$4])
+fi
+if test -z "$ac_cv_prog_$1" ; then
+ if test $build = $host ; then
+ ncn_cv_$1=$$1
+ AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4])
+ $1=$ncn_cv_$1
+ else
+ $1="ifelse([$3],[],[${ncn_tool_prefix}$2],[$3])"
+ fi
+else
+ $1="$ac_cv_prog_$1"
+fi
+]) []dnl # NCN_STRICT_CHECK_TOOL
+
+
+####
+# NCN_STRICT_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
+# Like NCN_CHECK_TARGET_TOOL, but requires the prefix if build!=target.
+
+AC_DEFUN([NCN_STRICT_CHECK_TARGET_TOOL],
+[AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
+if test -n "$ncn_target_tool_prefix"; then
+ AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2],
+ [${ncn_target_tool_prefix}$2], , [$4])
+fi
+if test -z "$ac_cv_prog_$1" ; then
+ if test $build = $target ; then
+ ncn_cv_$1=$$1
+ AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4])
+ $1=$ncn_cv_$1
+ else
+ $1="ifelse([$3],[],[${ncn_target_tool_prefix}$2],[$3])"
+ fi
+else
+ $1="$ac_cv_prog_$1"
+fi
+]) []dnl # NCN_STRICT_CHECK_TARGET_TOOL
--- /dev/null
+2002-12-31 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb_dirent.h: Cleanup and update code to match the example in
+ the Autoconf manual.
+ * configure.in: Call AC_HEADER_DIRENT. Remove dirent.h,
+ sys/ndir.h, sys/dir.h and ndir.h from call to AC_CHECK_HEADERS.
+ * configure: Regenerated.
+
+2002-12-30 Adam Fedor <fedor@gnu.org>
+
+ * objc-exp.y (parse_number): Cast sscanf arguments to proper type.
+ (yylex): Initialize c to avoid uninitialized warning.
+
+2002-12-29 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/fdl.texi: Revert the last change.
+
+2002-12-29 Mark Kettenis <kettenis@gnu.org>
+
+ * tracepoint.c (ISATTY): Removed.
+
+2002-12-26 J. Brobecker <brobecker@gnat.com>
+
+ Continuing work to convert the hppa targets to multiarch partil.
+
+ * hppa-tdep.c: Add some missing forward declarations.
+ (frameless_function_invocation): Prefix the function name
+ by "hppa_" to avoid polluting the namespace. Update all calls
+ to use the new function name.
+ (saved_pc_after_call): Ditto.
+ (init_extra_frame_info): Ditto.
+ (frame_chain): Ditto.
+ (push_dummy_frame): Ditto.
+ (target_read_pc): Ditto.
+ (target_write_pc): Ditto.
+ (in_solib_call_trampoline): Ditto.
+ (in_solib_return_trampoline): Ditto.
+ (skip_trampoline_code): Ditto.
+ (hppa_read_fp): New function, renamed from target_read_fp.
+ (hppa_target_read_fp): New function, using hppa_read_fp.
+ This function conforms to the function profile for the
+ READ_FP gdbarch method.
+ (hppa_extract_struct_value_address): New function, extracted
+ from the definition of the DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
+ macro.
+ (hppa_frame_num_args): New function.
+ (hppa_gdbarch_init): Setup the gdbarch vector for the hppa target.
+
+ * config/pa/tm-hppa.h: Wrap around all gdbarch-eligible macros
+ inside "#if !GDB_MULTI_ARCH ... #endif" conditional, in preparation
+ for the switch to multiarch partial.
+ Update some of the macros definitions to match some changes
+ described above in the name of the function they are calling.
+ (PUSH_DUMMY_FRAME): Add a FIXME explaining why this macro will
+ not be straightforward to convert. Do now wrap it inside
+ "#if !... #endif" to remember that this macro has still not
+ been taken care of.
+ (FIX_CALL_DUMMY): Likewise.
+
+2002-12-26 J. Brobecker <brobecker@gnat.com>
+
+ Continuing work to convert the hppa targets to multiarch partial.
+
+ * hppa-tdep.c (hppa_register_raw_size): New function replacing
+ the body of macro REGISTER_RAW_SIZE.
+ * hppa-hpux-tdep.c: Add new functions replacing macro bodies from
+ config/pa/tm-hppah.h. These functions will be used to initialize
+ the gdbarch structure.
+ (hppa_hpux_pc_in_sigtramp): New function.
+ (hppa_hpux_frame_saved_pc_in_sigtramp): New function.
+ (hppa_hpux_frame_base_before_sigtramp): New function.
+ (hppa_hpux_frame_find_saved_regs_in_sigtramp): New function.
+ Add gdbcore.h #include.
+ * config/pa/tm-hppa.h (REGISTER_RAW_SIZE): Change the definition
+ of this gdbarch-eligible macro to a call to the new associated
+ function.
+ * config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Likewise.
+ (FRAME_SAVED_PC_IN_SIGTRAMP): Change the definition of this macro
+ into a call to the new associated function.
+ (FRAME_BASE_BEFORE_SIGTRAMP): Likewise.
+ (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Likewise.
+ * Makefile.in (hppa-hpux-tdep.o): Add dependency on gdbcore.h.
+
+2002-12-24 David Carlton <carlton@math.stanford.edu>
+
+ * config/sparc/tm-sparc.h: Delete duplicate definition of
+ DEPRECATED_PC_IN_CALL_DUMMY.
+
+2002-12-24 Kevin Buettner <kevinb@redhat.com>
+
+ * Makefile.in (mips-linux-tdep.o): Add $(mips_tdep_h) and
+ $(gdb_assert_h).
+ * configure.tgt: Recognize mips64*-*-linux*.
+ * mips-linux-tdep.c (mips-tdep.h, gdb_assert.h): Include.
+ (supply_32_bit_reg): New function.
+ (supply_gregset): Call supply_32bit_reg() instead of supply_register().
+ (fill_gregset): Use regcache_collect() instead of
+ deprecated_registers[].
+ (register_addr): Change name to mips_linux_register_addr().
+ (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, MIPS64_FPR_BASE, MIPS64_PC)
+ (MIPS64_CAUSE, MIPS64_BADVADDR, MIPS64_MMHI, MIPS64_MMLO)
+ (MIPS64_FPC_CSR, MIPS64_FPC_EIR, MIPS64_EF_REG0, MIPS64_EF_REG31)
+ (MIPS64_EF_LO, MIPS64_EF_HI, MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR)
+ (MIPS64_EF_CP0_STATUS, MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE)
+ (MIPS64_LINUX_JB_PC): New defines.
+ (mips64_elf_greg_t, mips64_elf_gregset_t, mips64_elf_fpreg_t)
+ (mips64_elf_fpregset_t): New typedefs.
+ (mips64_linux_get_longhmp_target, mips64_supply_gregset)
+ (mips64_fill_gregset, mips64_supply_fpregset, mips64_fill_fpregset)
+ (mips64_linux_register_addr, set_mips_linux_register_addr)
+ (register_addr, mips64_linux_svr4_fetch_link_map_offsets):
+ (init_register_addr_data)
+ New functions.
+ (fetch_core_registers): Add support for core file formats with 64-bit
+ registers.
+ (mips_linux_init_abi): Distinguish o32, n32, and n64 ABIs.
+ (register_addr_data): New static global variable.
+ (_initialize_mips_linux_tdep): Initialize register_addr_data. Invoke
+ gdbarch_register_osabi() for each MIPS machine.
+ * config/mips/linux64.mt: New file.
+ * config/mips/tm-linux64.h: New file.
+
+2002-12-23 Adam Fedor <fedor@gnu.org>
+
+ * maint.c (maintenance_demangle): Add switch to demangle
+ ObjC language symbols as well.
+
+2002-12-23 Adam Fedor <fedor@gnu.org>
+
+ * objc-lang.c (lookup_objc_class, lookup_child_selector): Remove
+ last argument from complaint function call.
+
+2002-12-23 Kevin Buettner <kevinb@redhat.com>
+
+ * exec.c (print_section_info): Add FIXME comments regarding format
+ string choices.
+
+2002-12-23 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/pa/nm-hppab.h: Delete duplicate CANNOT_STORE_REGISTER decl.
+ * config/pa/nm-hppao.h: Delete duplicate CANNOT_STORE_REGISTER decl.
+
+2002-12-23 Rodney Brown <rbrown64@csc.com.au>
+
+ * config/pa/nm-hppah.h: Delete duplicate CANNOT_STORE_REGISTER decl.
+
+2002-12-23 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux): Delete 'force_return' variable.
+ (lookup_symbol_aux_minsyms): Delete 'force_return' argument.
+ (search_symbols): Call lookup_symbol_aux_minsyms to find debugging
+ information associated to a minsym, not lookup_symbol.
+
+2002-12-21 Mark Kettenis <kettenis@gnu.org>
+
+ * x86-64-tdep.h (x86_64_init_abi): New prototype.
+ * x86-64-tdep.c (i386_fp_regnum_p): Remove function.
+ (x86_64_init_abi): Make non-static. Set number of pseudo
+ registers to 0.
+ (x86_64_gdbarch_init): Remove function.
+ (_initialize_x86_64_tdep): Renove register_gdbarch_init call.
+ Remove code dealing with dissambly.
+ * x86-64-linux-tdep.c (x86_64_linux_init_abi): New function.
+ (_initialize_x86_64_linux_tdep): New function.
+ * config/i386/x86-64linux.mt (TDEPFILES): Add i386-tdep.o and
+ i386-tdep.o.
+
+2002-12-14 Mark Kettenis <kettenis@gnu.org>
+
+ * osabi.c: Include "gdb_assert.h" and "gdb_string.h".
+ (struct gdb_osabi_handler): Remove member `arch'. Add member
+ `arch_info'.
+ (gdbarch_register_osabi): Add new argument `machine'. Use ot to
+ construct a `struct bfd_arch_info' and store it in the `struct
+ gdb_osabi_handler' that is created.
+ (gdbarch_init_osabi): Check for compatibility based on machine
+ type and architecture.
+ * osabi.h (gdbarch_register_osabi): Adjust prototype and update
+ comment.
+ * alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Add 0 as
+ second argument in call to gdbarch_register_osabi.
+ * alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
+ * alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
+ * alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.
+ * arm-linux-tdep.c (_initialize_arm_linux_tdep): Likewise.
+ * arm-tdep.c (_initialize_arm_tdep): Likewise.
+ * armnbsd-tdep.c (_initialize_armnbsd_tdep): Likewise.
+ * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Likewise.
+ * i386-interix-tdep.c (_initialize_i386_interix_tdep): Likewise.
+ * i386-linux-tdep.c (_initialize_i386_linux_tdep): Likewise.
+ * i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Likewise.
+ * i386-tdep.c (_initialize_i386_tdep): Likewise.
+ * i386bsd-tdep.c (_initialize_i386bsd_tdep): Likewise.
+ * i386gnu-tdep.c (_initialize_i386gnu_tdep): Likewise.
+ * i386ly-tdep.c (_initialize_i386lynx_tdep): Renamed from
+ _initialize_i386bsd_tdep and updated likewise.
+ * i386nbsd-tdep.c (_initialize_i386nbsd_tdep): Likewise.
+ * i386obsd-tdep.c (_initialize_i386obsd_tdep): Likewise.
+ * mips-irix-tdep.c (_initialize_mips_irix_tdep): Likewise.
+ * mips-linux-tdep.c (_initialize_mips_linux_tdep): Likewise.
+ * mipsnbsd-tdep.c (_initialize_mipsnbsd__tdep): Likewise.
+ * ns32knbsd-tdep.c (_initialize_ns32kmnsd_tdep): Likewise.
+ * ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Likewise.
+ * ppcnbsd-tdep.c (_initialize_ppcnbsd_tdep): Likewise.
+ * shnbsd-tdep.c (_initialize_shnbsd_tdep): Likewise.
+ * sparcnbsd-tdep.c (_initialize_sparcnbsd_tdep): Likewise.
+
+2002-12-20 Kevin Buettner <kevinb@redhat.com>
+
+ * solib-svr4.c (elf_locate_base): Fix sizeof() related bug. Add
+ DT_MIPS_RLD_MAP case for 64-bit targets.
+
+2002-12-20 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (heuristic_proc_desc): Clear memory associated with
+ ``temp_saved_regs'', not the pointer or other storage contiguous
+ to this pointer.
+
+2002-12-20 Kevin Buettner <kevinb@redhat.com>
+
+ * Makefile.in (mips-linux-tdep.o): Add $(osabi_h) and $(gdb_string_h).
+ * config/mips/tm-linux.h (mips_linux_svr4_fetch_link_map_offsets)
+ (mips_linux_get_longjmp_target): Delete declarations.
+ (SVR4_FETCH_LINK_MAP_OFFSETS, GET_LONGJMP_TARGET)
+ (MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Delete definitions.
+ * mips-linux-tdep.c (osabi.h, gdb_string.h): Include.
+ (MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Define.
+ (mips_linux_get_longjmp_target)
+ (mips_linux_svr4_fetch_link_map_offsets): Make static.
+ (mips_linux_init_abi): New function.
+ (_initialize_mips_linux_tdep): Register mips_linux_init_abi().
+
+2002-12-19 Keith Seitz <keiths@redhat.com>
+
+ patch committed by Elena Zannoni <ezannoni@redhat.com>
+ * thread.c (do_captured_list_thread_ids): Call prune_threads and
+ target_find_new_threads. Fix for PR mi/669.
+
+2002-12-19 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (decode_line_1): Move code into decode_all_digits.
+ (decode_all_digits): New function.
+
+2002-12-19 Kevin Buettner <kevinb@redhat.com>
+
+ * exec.c (print_section_info): Select a format string to use with
+ local_hex_string_custom() based upon the value of TARGET_ADDR_BIT.
+
+2002-12-18 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (deprecated_update_current_frame_pc_hack): Replace
+ deprecated_update_current_frame_pc_hack.
+ (deprecated_update_frame_base_hack): New function.
+ * frame.h (deprecated_update_frame_pc_hack): Replace
+ (deprecated_update_frame_base_hack): Declare.
+ * infrun.c (normal_stop): Update.
+
+2002-12-18 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_init_extra_frame_info): Use
+ frame_extra_info_zalloc.
+ (rs6000_frame_args_address): Use get_frame_extra_info.
+ (frame_get_saved_regs): Use get_frame_saved_regs.
+ (frame_initial_stack_address): Use get_frame_saved_regs and
+ get_frame_extra_info.
+ (frame_initial_stack_address): Use get_frame_extra_info.
+
+2002-12-17 Kevin Buettner <kevinb@redhat.com>
+
+ * dve3900-rom.c (r3900_regnames): Don't use NUM_REGS to determine
+ array size.
+ (fetch_bitmapped_register, store_bitmapped_register): Add bounds
+ checks for r3900_regnames[].
+
+2002-12-17 Richard Earnshaw <rearnsha@arm.com>
+
+ * armnbsd-tdep.c (ARM_NBSD_JB_PC): Renamed from JB_PC.
+ All uses changed
+ (ARM_NBSD_JB_ELELMENT_SIZE): Similarly.
+
+2002-12-17 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_partial_symbol): Don't search past the end of
+ the partial symbols.
+
+2002-12-17 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (frame_info): Use get_frame_saved_regs.
+ * breakpoint.c (until_break_command): Use get_frame_pc.
+
+2002-12-16 Kevin Buettner <kevinb@redhat.com>
+
+ * buildsym.c (block_end_complaint, anon_block_end_complaint)
+ (innerblock_complaint, innerblock_anon_complaint)
+ (blockvector_complaint): Delete deprecated complaint structs.
+ (finish_block, make_blockvector, end_symtab): Replace calls
+ to complain() with calls to complaint().
+ * coffread.c (ef_complaint, ef_stack_complaint, eb_stack_complaint)
+ (bf_no_aux_complaint, ef_no_aux_complaint, lineno_complaint)
+ (unexpected_type_complaint, bad_sclass_complaint)
+ (misordered_blocks_complaint, tagndx_bad_complaint, eb_complaint):
+ Delete deprecated complaint structs.
+ (coff_symtab_read, enter_linenos, decode_type, decode_base_type):
+ Replace calls to complain() with calls to complaint().
+ * dbxread.c (lbrac_complaint, string_table_offset_complaint)
+ (unknown_symtype_complaint, unknown_symchar_complaint)
+ (lbrac_rbrac_complaint, lbrac_unmatched_complaint)
+ (lbrac_mismatch_complaint, repeated_header_complaint)
+ (unclaimed_bincl_complaint, discarding_local_symbols_complaint):
+ Delete deprecated complaint structs.
+ (unknown_symtype_complaint, lbrac_mismatch_complaint)
+ (repeated_header_complaint)
+ (function_outside_compiliation_unit_complaint): New functions.
+ (add_old_header_file, find_corresponding_bincl_psymtab)
+ (set_namestring, find_stab_function_addr, read_dbx_symtab)
+ (process_one_symbol): Replace calls to complain() with, possibly
+ indirect, calls to complaint().
+ * dwarfread.c (no_bfd_get_N, malformed_die, bad_die_ref)
+ (unknown_attribute_form, unknown_attribute_length)
+ (unexpected_fund_type, unknown_type_modifier, volatile_ignored)
+ (const_ignored, botched_modified_type, op_deref2, op_deref4)
+ (basereg_not_handled, dup_user_type_allocation)
+ (dup_user_type_definition, missing_tag, bad_array_element_type)
+ (subscript_data_items, unhandled_array_subscript_format)
+ (unknown_array_subscript_format, not_row_major)
+ (missing_at_name): Delete deprecated complaint structs.
+ (bad_die_ref_complaint, unknown_attribute_form_complaint)
+ (dup_user_type_definition_complaint)
+ (bad_array_element_type_complaint): New functions.
+ (lookup_utype, alloc_utype, struct_type, decode_array_element_type)
+ (decode_subscript_data_item, dwarf_read_array_type)
+ (read_tag_string_type, read_subroutine_type, read_func_scope)
+ (locval, scan_partial_symbols, decode_modified_type)
+ (decode_func_type, basicdieinfo, completeddieinfo, target_to_host)
+ (attribute_size): Replace calls to complain() with, possibly
+ indirect, calls to complaint().
+ * elfread.c (section_info_complaint, section_info_dup_complaint)
+ (stab_info_mismatch_complaint, stab_info_questionable_complaint):
+ Delete deprecated complaint structs.
+ (elf_symtab_read, elfstab_offset_sections): Replace calls to
+ complain() with calls to complaint().
+ * gdbtypes.c (stub_noname_complaint): Delete deprecated complaint
+ struct.
+ (stub_noname_complaint): New function.
+ (check_typedef, add_mangled_type): Replace calls to complain()
+ with calls to complaint().
+ * hpread.c (string_table_offset_complaint, lbrac_unmatched_complaint)
+ (lbrac_mismatch_complaint, hpread_unhandled_end_common_complaint)
+ (hpread_unhandled_type_complaint, hpread_struct_complaint)
+ (hpread_array_complaint, hpread_type_lookup_complaint)
+ (hpread_unexpected_end_complaint, hpread_tagdef_complaint)
+ (hpread_unhandled_common_complaint)
+ (hpread_unhandled_blockdata_complaint): Delete deprecated complaint
+ struct definitions and declarations.
+ (lbrac_unmatched_complaint, lbrac_mismatch_complaint): New functions.
+ (SET_NAMESTRING, hpread_type_lookup, hpread_process_one_debug_symbol):
+ Replace calls to complain() with, possibly indirect, calls to
+ complaint().
+ * macrotab.c (macro_include, check_for_redefinition, macro_undef):
+ Likewise.
+ * mdebugread.c (bad_file_number_complaint, index_complaint)
+ (aux_index_complaint, block_index_complaint)
+ (unknown_ext_complaint, unknown_sym_complaint)
+ (unknown_st_complaint, block_overflow_complaint)
+ (basic_type_complaint, unknown_type_qual_complaint)
+ (array_index_type_complaint, bad_tag_guess_complaint)
+ (block_member_complaint, stEnd_complaint)
+ (unknown_mdebug_symtype_complaint, stab_unknown_complaint)
+ (pdr_for_nonsymbol_complaint, pdr_static_symbol_complaint)
+ (bad_setjmp_pdr_complaint, bad_fbitfield_complaint)
+ (bad_continued_complaint, bad_rfd_entry_complaint)
+ (unexpected_type_code_complaint, unable_to_cross_ref_complaint)
+ (bad_indirect_xref_complaint, illegal_forward_tq0_complaint)
+ (illegal_forward_bt_complaint, bad_linetable_guess_complaint)
+ (bad_ext_ifd_complaint, bad_ext_iss_complaint): Delete deprecated
+ complaint structs.
+ (index_complaint, unknown_ext_complaint, basic_type_complaint)
+ (bad_tag_guess_complaint, bad_rfd_entry_complaint)
+ (unexpected_type_code_complaint)
+ (function_outside_compilation_unit_complaint): New functions.
+ (parse_symbol, parse_type, upgrade_type, parse_procedure)
+ (parse_partial_symbols, psymtab_to_symtab_1, cross_ref, add_symbol):
+ Replace calls to complain() with, possibly indirect calls to
+ complaint().
+ * objc-lang.c (noclass_lookup_complaint, nosel_lookup_complaint):
+ Delete deprecated complaint structs.
+ (lookup__objc_class, lookup_child_selector): Replace complain()
+ with complaint().
+ * remote-vx.c (cant_contact_target): Delete deprecated complaint
+ struct.
+ (vx_lookup_symbol): Replace complain() with complaint().
+ * stabsread.c (invalid_cpp_abbrev_complaint)
+ (invalid_cpp_type_complaint, member_fn_complaint)
+ (const_vol_complaint, error_type_complaint)
+ (invalid_member_complaint, range_type_base_complaint)
+ (reg_value_complaint, vtbl_notfound_complaint)
+ (unrecognized_cplus_name_complaint, rs6000_builtin_complaint)
+ (unresolved_sym_chain_complaint, stabs_general_complaint)
+ (lrs_general_complaint, multiply_defined_struct): Delete
+ deprecated complaint structs.
+ (invalid_cpp_abbrev_complaint, ref_value_complaint)
+ (stabs_general_complaint, lrs_general_complaint)
+ (msg_unknown_complaint): New functions.
+ (dbx_lookup_type, read_cfront_baseclasses)
+ (read_cfront_member_functions, resolve_symbol_reference)
+ (define_symbol, resolve_live_range, add_live_range, read_type)
+ (rs6000_builtin_type, read_member_functions, read_cpp_abbrev)
+ (read_one_struct_field, read_baseclasses, read_tilde_fields)
+ (read_cfront_static_fields, attach_fields_to_type)
+ (complain_about_struct_wipeout, read_range_type)
+ (common_block_start, common_block_end, cleanup_undefined_types)
+ (scan_file_globals): Replace complain() with complaint().
+ * stabsread.h (unknown_symtype_complaint, unknown_symchar_complaint):
+ Delete deprecated complaint struct declarations.
+ * xcoffread.c (storclass_complaint, bf_notfound_complaint)
+ (ef_complaint, eb_complaint): Delete deprecated complaint structs.
+ (bf_not_found_complaint, ef_complaint, eb_complaint)
+ (function_outside_compilation_unit_complaint): New functions.
+ (record_include_begin, record_include_end, enter_line_range)
+ (xcoff_next_symbol_text, read_xcoff_symtab, process_xcoff_symbol)
+ (read_symbol, read_symbol_lineno, scan_xcoff_symtab) Replace
+ complain() with complaint().
+
+2002-12-16 Andrew Cagney <ac131313@redhat.com>
+
+ * config/arc/arc.mt, config/arc/tm-arc.h: Delete.
+ * config/d30v/d30v.mt, config/d30v/tm-d30v.h: Delete.
+ * config/fr30/fr30.mt, config/fr30/tm-fr30.h: Delete.
+ * config/i386/i386aix.mh, config/i386/i386aix.mt: Delete.
+ * config/i386/i386m3.mh, config/i386/i386m3.mt: Delete.
+ * config/i386/i386mach.mh, config/i386/i386os9k.mt: Delete.
+ * config/i386/nm-i386aix.h, config/i386/nm-i386mach.h: Delete.
+ * config/i386/nm-m3.h, config/i386/tm-i386aix.h: Delete.
+ * config/i386/tm-i386m3.h, config/i386/tm-i386mk.h: Delete.
+ * config/i386/xm-i386aix.h, config/i386/xm-i386m3.h: Delete.
+ * config/i386/xm-i386mach.h, config/i386/xm-i386mk.h: Delete.
+ * config/i960/mon960.mt, config/i960/nindy960.mt: Delete.
+ * config/i960/tm-i960.h, config/i960/tm-mon960.h: Delete.
+ * config/i960/tm-nindy960.h, config/i960/tm-vx960.h: Delete.
+ * config/i960/vxworks960.mt, config/m68k/apollo68b.mh: Delete.
+ * config/m68k/apollo68b.mt, config/m68k/apollo68v.mh: Delete.
+ * config/m68k/hp300bsd.mh, config/m68k/hp300bsd.mt: Delete.
+ * config/m68k/hp300hpux.mh, config/m68k/hp300hpux.mt: Delete.
+ * config/m88k/delta88.mh, config/m88k/delta88.mt: Delete.
+ * config/m88k/delta88v4.mh, config/m88k/delta88v4.mt: Delete.
+ * config/m88k/m88k.mh, config/m88k/m88k.mt: Delete.
+ * config/m88k/nm-delta88v4.h, config/m88k/nm-m88k.h: Delete.
+ * config/m88k/tm-delta88.h, config/m88k/tm-delta88v4.h: Delete.
+ * config/m88k/tm-m88k.h, config/m88k/xm-delta88.h: Delete.
+ * config/m88k/xm-dgux.h: Delete.
+ * fr30-tdep.c, i386aix-nat.c, i386m3-nat.c: Delete.
+ * i386mach-nat.c, i960-tdep.c, m88k-nat.c: Delete.
+ * os9kread.c, remote-bug.c, remote-nindy.c: Delete.
+ * remote-nrom.c, remote-os9k.c, remote-vx960.c: Delete.
+ * d30v-tdep.c, arc-tdep.c, cxux-nat.c, dst.h, dstread.c: Delete.
+ * ch-exp.c, ch-lang.c, ch-lang.h, ch-typeprint.c: Delete.
+ * ch-valprint.c: Delete.
+
+2002-12-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * infrun.c (handle_inferior_event): Rearrange code to resume if
+ no catchpoint triggers for an event.
+
+2002-12-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * infrun.c (handle_inferior_event): Merge TARGET_WAITKIND_FORKED
+ and TARGET_WAITKIND_VFORKED cases.
+
+2002-12-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * infrun.c (handle_inferior_event): Assume that catchpoints
+ are not affected by DECR_PC_AFTER_BREAK.
+
+2002-12-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * target.c (update_current_target): Don't inherit DONT_USE.
+ * target.h (struct target_ops): Remove DONT_USE.
+ (target_next): Remove macro.
+
+2002-12-15 Mark Kettenis <kettenis@gnu.org>
+
+ * ui-out.c (MAX_UI_OUT_LEVELS): Raise to 6. Fixes PR cli/654.
+
+2002-12-14 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (convert_from_extended): New argument to hold the
+ type of floating point result we want to convert to. Make input
+ argument const. Fix all callers.
+ (convert_to_extended): Similarly.
+ (arm_extract_return_value): Now takes a regcache argument. Change
+ code to use regcache accessor functions. Correctly extract
+ smaller-than-word results on big-endian machines.
+ (arm_store_return_value): Now takes a regcache argument. Change
+ code to use regcache accessor functions. Correctly zero/sign extend
+ smaller than word results before storing into r0.
+ (arm_gdbarch_init): Register new-style extract_return_value and
+ store_return_value functions.
+
+2002-12-13 Michael Snyder <msnyder@to-limbo.toronto.redhat.com>
+
+ * thread-db.c (thread_from_lwp): Uniquify error msg.
+ (lwp_from_thread): Ditto.
+ (check_event): Ditto.
+ (find_new_threads_callback): Ditto.
+ (thread_db_pid_to_str): Ditto.
+
+2002-12-13 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (get_frame_saved_regs): Declare.
+ (frame_saved_regs_zalloc): Change return type to CORE_ADDR
+ pointer.
+ * frame.c (get_frame_saved_regs): New function.
+ (frame_saved_regs_zalloc): Return the allocated saved_regs.
+
+2002-12-13 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (deprecated_update_current_frame_pc_hack): New
+ function.
+ * frame.h (deprecated_update_current_frame_pc_hack): Declare.
+ * infrun.c (normal_stop): Use said function instead of directly
+ modifying the frame's PC.
+
+2002-12-13 Alexandre Oliva <aoliva@redhat.com>
+
+ * frame.h (frame_id_unwind_ftype): Fix typo in return type.
+
+2002-12-13 Kevin Buettner <kevinb@redhat.com>
+
+ * config/mips/tm-mips.h, config/mips/tm-irix3.h,
+ config/mips/tm-irix6.h (NUM_REGS): Delete.
+ * mips-tdep.c (mips_gdbarch_init): Call set_gdbarch_num_regs().
+ (temp_saved_regs): Declare as a pointer rather than an array.
+ (mips32_heuristic_proc_desc, heuristic_proc_desc): Make sure
+ that ``temp_saved_regs'' has storage allocated to it and that
+ it's the correct size.
+
+2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * defs.h (init_last_source_visited): New prototype.
+ (add_path): Ditto.
+ * source.c (add_path): New function that adds to a specified path.
+ (mod_path): Change to call add_path.
+ (init_last_source_visited): New function to allow interfaces to
+ initialize static variable: last_source_visited. Part of fix
+ for PR gdb/741.
+ * Makefile.in: Add support for mi/mi-cmd-env.c.
+
+2002-12-13 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (frame_id_unwind): Declare.
+ (struct frame_info): Add fields id_unwind, id_unwind_cache_p and
+ id_unwind_cache.
+ (frame_id_unwind_ftype): Declare.
+ * frame.c (frame_id_unwind): New function.
+ (set_unwind_by_pc): Add unwind_id parameter. Initialized.
+ (create_new_frame, get_prev_frame): Pass id_unwind to
+ set_unwind_by_pc.
+ (frame_saved_regs_id_unwind): New function.
+ (frame_saved_regs_id_unwind): New function.
+ * dummy-frame.c (dummy_frame_id_unwind): New function.
+ (struct dummy_frame): Add field id.
+ (generic_push_dummy_frame): Initialize `id'.
+ * dummy-frame.h (dummy_frame_id_unwind): Declare.
+
+2002-12-13 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (run_stack_dummy): Create a frame ID directly and then
+ pass that to set_momentary_breakpoint. Move comments to where they
+ belong.
+ * frame.h (set_current_frame): Delete declaration.
+ * frame.c (set_current_frame): Delete function.
+
+2002-12-13 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (frame_extra_info_zalloc): New function.
+ * frame.h (frame_extra_info_zalloc): Declare.
+
+2002-12-13 Joel Brobecker <brobecker@gnat.com>
+
+ * hppa-tdep.c (hppa_pop_frame): Fix a compilation error introduced
+ in the previous prototype change to set_momentary_breakpoint.
+
+2002-12-12 Daniel Jacobowitz <drow@mvista.com>
+
+ * infrun.c (pending_follow): Remove saw_parent_fork, saw_child_fork,
+ and saw_child_exec.
+ (follow_fork, init_wait_for_inferior, handle_inferior_event): Remove
+ references to saw_parent_fork, saw_child_fork, and saw_child_exec.
+ (stop_stepping): Remove outdated check for child vfork events.
+
+2002-12-12 Andrew Cagney <ac131313@redhat.com>
+
+ * GDB 5.3 released from gdb_5_3-branch.
+
+2002-12-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * corelow.c (init_core_ops): Delete references to to_require_attach
+ and to_require_detach.
+ * exec.c (init_exec_ops): Likewise.
+ * hppah-nat.c (child_follow_fork): Call hppa_require_attach and
+ hppa_require_detach directly.
+ * inferior.h (REQUIRE_ATTACH, REQUIRE_DETACH): Delete.
+ * inftarg.c (child_detach): Remove.
+ (child_detach_from_process): Rename to child_detach, remove
+ after_fork argument.
+ (child_attach): Remove.
+ (child_attach_to_process): Rename to child_attach, remove after_fork
+ argument.
+ (init_child_ops): Delete references to to_require_attach
+ and to_require_detach.
+ * infttrace.c (hppa_require_attach): Update comment.
+ * target.c (cleanup_target, update_current_target)
+ (init_dummy_target, setup_target_debug): Delete references to
+ to_require_attach and to_require_detach.
+ (find_default_require_detach, find_default_require_attach)
+ (debug_to_require_attach, debug_to_require_detach): Remove
+ functions.
+ * target.h (struct target_ops): Remove to_require_attach
+ and to_require_detach.
+ (target_require_attach, target_require_detach): Delete macros.
+ (find_default_require_detach, find_default_require_attach): Delete
+ prototypes.
+ * config/pa/nm-hppah.h (REQUIRE_ATTACH, REQUIRE_DETACH): Delete.
+
+2002-12-11 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (get_frame_extra_info): New function.
+ * frame.h (get_frame_extra_info): Declare.
+
+2002-12-11 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.h (struct breakpoint): Replace frame with frame_id.
+ (set_momentary_breaokpoint): Replace `struct frame_info' parameter
+ with `struct frame_id'.
+ (set_longjmp_resume_breakpoint): Ditto.
+ * infrun.c (handle_inferior_event): Update.
+ * breakpoint.c (watch_command_1, until_break_command): Update.
+ * infrun.c (handle_inferior_event, check_sigtramp2): Update.
+ (handle_inferior_event, step_over_function): Update.
+ * breakpoint.c (bpstat_stop_status, print_one_breakpoint): Update.
+ (set_raw_breakpoint, set_longjmp_resume_breakpoint): Update.
+ (set_momentary_breakpoint, deprecated_frame_in_dummy): Update.
+ * infcmd.c (finish_command, run_stack_dummy): Update.
+
+2002-12-11 Kevin Buettner <kevinb@redhat.com>
+
+ * dwarf2read.c (dwarf2_const_ignored, dwarf2_volatile_ignored)
+ (dwarf2_non_const_array_bound_ignored)
+ (dwarf2_missing_line_number_section)
+ (dwarf2_statement_list_fits_in_line_number_section)
+ (dwarf2_mangled_line_number_section, dwarf2_unsupported_die_ref_attr)
+ (dwarf2_unsupported_stack_op, dwarf2_complex_location_expr)
+ (dwarf2_unsupported_tag, dwarf2_unsupported_at_encoding)
+ (dwarf2_unsupported_at_frame_base, dwarf2_unexpected_tag)
+ (dwarf2_missing_at_frame_base, dwarf2_bad_static_member_name)
+ (dwarf2_unsupported_accessibility, dwarf2_bad_member_name_complaint)
+ (dwarf2_missing_member_fn_type_complaint)
+ (dwarf2_vtbl_not_found_complaint, dwarf2_absolute_sibling_complaint)
+ (dwarf2_const_value_length_mismatch)
+ (dwarf2_unsupported_const_value_attr, dwarf2_misplaced_line_number)
+ (dwarf2_line_header_too_long, dwarf2_missing_macinfo_section)
+ (dwarf2_macros_too_long, dwarf2_macros_not_terminated)
+ (dwarf2_macro_outside_file, dwarf2_macro_unmatched_end_file)
+ (dwarf2_macro_malformed_definition, dwarf2_macro_spaces_in_definition)
+ (dwarf2_invalid_attrib_class, dwarf2_invalid_pointer_size): Delete
+ complaints using deprecated struct..
+ (dwarf2_non_const_array_bound_ignored_complaint)
+ (dwarf2_complex_location_expr_complaint)
+ (dwarf2_unsupported_at_frame_base_complaint)
+ (dwarf2_const_value_length_mismatch_complaint)
+ (dwarf2_macros_too_long_complaint)
+ (dwarf2_macro_malformed_definition_complaint)
+ (dwarf2_invalid_attrib_class_complaint): New functions.
+ (read_func_scope, dwarf2_attach_fields_to_type, dwarf2_add_member_fn)
+ (read_structure_scope, read_array_type, read_common_block)
+ (read_tag_pointer_type, read_base_type, read_partial_die)
+ (dwarf_decode_line_header, check_cu_functions, dwarf_decode_lines)
+ (new_symbol, dwarf2_const_value, read_type_die)
+ (dwarf2_get_ref_die_offset, decode_locdesc, consume_improper_spaces)
+ (parse_macro_definition, dwarf_decode_macros): Replace calls to
+ complain() with, possibly indirect, calls to complaint().
+
+2002-12-11 Andrew Cagney <cagney@redhat.com>
+
+ * frame.c (deprecated_get_frame_saved_regs): Rename
+ get_frame_saved_regs.
+ * frame.h (deprecated_get_frame_saved_regs): Update declaration.
+ * sparc-tdep.c: Update.
+ * hppa-tdep.c: Update.
+ * h8500-tdep.c: Update.
+
+2002-12-11 Kevin Buettner <kevinb@redhat.com>
+
+ * gdbarch.sh (ADDRESS_CLASS_TYPE_FLAGS_TO_NAME)
+ (ADDRESS_CLASS_NAME_TO_TYPE_FLAGS): Use ``const char *'' instead of
+ ``char *'' for return and parameter types.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * gdbtypes.h, gdbtypes.c (address_space_int_to_name): Change
+ return type from ``char *'' to ``const char *''.
+ * c-typeprint.c (c_type_print_modifier): Make ``address_space_id''
+ const.
+
+2002-12-11 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c: Include "dummy-frame.h".
+ (i386_frame_chain, i386_frame_saved_pc): Replace
+ DEPRECATED_PC_IN_CALL_DUMMY with call to pc_in_dummy_frame.
+ (i386_gdbarch_init): Don't set deprecated_pc_in_call_dummy.
+
+2002-12-10 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_INIT_FRAME_PC): Rename INIT_FRAME_PC.
+ Change to a function with predicate.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * frame.c (get_prev_frame): Update. Test
+ DEPRECATED_INIT_FRAME_PC_P.
+ * config/sparc/tm-sparc.h (DEPRECATED_INIT_FRAME_PC): Update.
+ * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC): Update.
+ * config/mn10200/tm-mn10200.h (DEPRECATED_INIT_FRAME_PC): Update.
+ * alpha-tdep.c (alpha_gdbarch_init): Update.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Update.
+ * mips-tdep.c (mips_gdbarch_init): Update.
+ * i386-interix-tdep.c (i386_interix_init_abi): Update.
+ * arm-tdep.c: Update comments.
+ * h8300-tdep.c (h8300_gdbarch_init): Explicitly set init_frame_pc.
+ * config/m32r/tm-m32r.h (DEPRECATED_INIT_FRAME_PC): Ditto.
+ * frv-tdep.c (frv_gdbarch_init): Ditto.
+ * x86-64-tdep.c (x86_64_init_abi): Ditto.
+ * ia64-tdep.c (ia64_gdbarch_init): Ditto.
+ * s390-tdep.c (s390_gdbarch_init): Ditto.
+ * v850-tdep.c (v850_gdbarch_init): Ditto.
+ * vax-tdep.c (vax_gdbarch_init): Ditto.
+ * sh-tdep.c (sh_gdbarch_init): Ditto.
+ * ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
+ * mcore-tdep.c (mcore_gdbarch_init): Ditto.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
+ * i386-tdep.c (i386_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.
+ * config/z8k/tm-z8k.h (INIT_FRAME_PC_FIRST): Delete macro.
+ (DEPRECATED_INIT_FRAME_PC): Rename INIT_FRAME_PC.
+
+2002-12-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/pa/nm-hppah.h (CHILD_POST_FOLLOW_VFORK): Change to
+ CHILD_FOLLOW_FORK.
+ * hppah-nat.c (saved_vfork_pid): Add.
+ (child_post_follow_vfork): Remove.
+ (child_follow_fork): New function.
+ (child_wait): Call detach_breakpoints after receiving the child vfork.
+ Call child_resume directly instead of going through resume ().
+ Make sure we have the exec before reporting the vfork.
+ * inferior.h (follow_inferior_reset_breakpoints): Add prototype.
+ * infrun.c (follow_fork, follow_vfork, follow_inferior_fork): Remove.
+ (follow_fork): New function. Call target_follow_fork.
+ (follow_inferior_reset_breakpoints): New function broken out from
+ old follow_inferior_fork.
+ (resume): Remove hack to follow exec after vfork.
+ * inftarg.c (child_post_follow_vfork): Remove.
+ (child_follow_fork): New function.
+ (init_child_ops): Replace to_post_follow_vfork with to_follow_fork.
+ * target.c (cleanup_target): Replace to_post_follow_vfork with
+ to_follow_fork.
+ (update_current_target): Likewise.
+ (setup_target_debug): Likewise.
+ (debug_to_post_follow_vfork): Remove.
+ (debug_to_follow_fork): New function.
+ * target.h (struct target_ops): Replace to_post_folow_vfork with
+ to_follow_fork.
+ (child_post_follow_vfork): Remove prototype.
+ (child_follow_fork): Add prototype.
+ (target_post_follow_vfork): Remove macro.
+ (target_follow_fork): Add macro.
+
+2002-12-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * hppah-nat.c (saved_child_execd_pathname, saved_vfork_state): New.
+ (child_post_follow_vfork): Cancel pending exec event if we follow
+ the parent.
+ (child_wait): Only return TARGET_WAITKIND_VFORKED when all necessary
+ events have been processed. Return a fake TARGET_WAITKIND_EXECD
+ event at the following wait call if necessary.
+ * infrun.c (follow_vfork): Don't follow_exec here.
+ (handle_inferior_event): Add comment to TARGET_WAITKIND_EXECD
+ case about HP/UX 10.20. Remove code pushed down to
+ hppah-nat.c:child_wait.
+ * infttrace.c (child_resume): Use TT_PROC_CONTINUE if
+ vfork_in_flight is set.
+
+2002-12-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * hppah-nat.c (child_wait): Return TARGET_WAITKIND_IGNORE
+ for the parent's fork event.
+ * infrun.c (handle_inferior_event): Only expect one fork event.
+ Call prepare_to_wait for TARGET_WAITKIND_IGNORE. Update comment.
+ * target.h: Update comment for TARGET_WAITKIND_IGNORE.
+
+2002-12-10 Andrew Cagney <ac131313@redhat.com>
+
+ * PROBLEMS: Delete reference to PR gdb/725.
+
+ * MAINTAINERS (gdb.c++): Add David Carlton.
+
+2002-12-09 David Carlton <carlton@math.stanford.edu>
+
+ * cli/cli-setshow.c: #include <readline/tilde.h> after defs.h.
+ * cli/cli-cmds.c: Ditto.
+
+2002-12-09 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (gdbarch_dump): Print NAME_OF_MALLOC using %s. Wrap
+ function address in <>.
+ * gdbarch.c: Re-generate.
+
+2002-12-09 David Carlton <carlton@math.stanford.edu>
+
+ * p-exp.y: Rename TRUE and FALSE to TRUEKEYWORD and FALSEKEYWORD.
+
+2002-12-09 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (symtab_from_filename): New function.
+ (decode_line_1): Move code into symtab_from_filename.
+
+2002-12-09 Kevin Buettner <kevinb@redhat.com>
+
+ * lin-lwp.c (strsignal): Make extern declaration match that of glibc.
+
+2002-12-07 Andrew Cagney <ac131313@redhat.com>
+
+ * f-valprint.c (info_common_command): Use get_frame_pc.
+ * std-regs.c (value_of_builtin_frame_pc_reg): Ditto.
+ * ax-gdb.c (agent_command): Ditto.
+ * rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
+ (rs6000_pop_frame): Ditto.
+ (rs6000_frameless_function_invocation): Ditto.
+ (rs6000_frame_saved_pc, frame_get_saved_regs): Ditto.
+ (frame_initial_stack_address, rs6000_frame_chain): Ditto.
+ * macroscope.c (default_macro_scope): Ditto.
+ * stack.c (print_frame_info_base): Ditto.
+ (print_frame, frame_info, print_frame_label_vars): Ditto.
+ (return_command, func_command, get_frame_language): Ditto.
+ * infcmd.c (finish_command): Ditto.
+ * dummy-frame.c (cached_find_dummy_frame): Ditto.
+ * breakpoint.c (deprecated_frame_in_dummy): Ditto.
+ (break_at_finish_at_depth_command_1): Ditto.
+ (break_at_finish_command_1): Ditto.
+ (until_break_command, get_catch_sals): Ditto.
+ * blockframe.c (func_frame_chain_valid): Ditto.
+ (frameless_look_for_prologue): Ditto.
+ (frame_address_in_block, generic_func_frame_chain_valid): Ditto.
+
+2002-12-08 Andrew Cagney <ac131313@redhat.com>
+
+ * config/rs6000/tm-rs6000.h (init_frame_pc_noop): Add declaration.
+ * dwarf2cfi.c (cfi_init_frame_pc): Cast the PC to a pointer.
+
+2002-12-08 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (INIT_FRAME_PC_FIRST, INIT_FRAME_PC_DEFAULT): Convert
+ to pure functions.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * frame.c (get_prev_frame): Explictly assign prev's pc with value
+ returned by INIT_FRAME_PC_FIRST and INIT_EXTRA_FRAME_INFO.
+
+ * arch-utils.h (init_frame_pc_default, init_frame_pc_noop): Change
+ declaration to a function returning a CORE_ADDR.
+ * x86-64-tdep.h (x86_64_init_frame_pc): Ditto.
+ * arch-utils.c (init_frame_pc_noop): Return the PC value.
+ (init_frame_pc_default): Ditto.
+ * x86-64-linux-tdep.c (x86_64_init_frame_pc): Ditto.
+ * s390-tdep.c (s390_init_frame_pc_first): Ditto.
+ * mips-tdep.c (mips_init_frame_pc_first): Ditto.
+ * dwarf2cfi.h (cfi_init_frame_pc): Ditto.
+ * dwarf2cfi.c (cfi_init_frame_pc): Ditto.
+ * alpha-tdep.c (alpha_init_frame_pc_first): Ditto.
+
+ * i386-interix-tdep.c (i386_interix_init_abi): Set init_frame_pc
+ to init_frame_pc_noop.
+ (i386_interix_init_frame_pc): Delete function.
+ * z8k-tdep.c (init_frame_pc): Delete function.
+ * config/z8k/tm-z8k.h (INIT_FRAME_PC): Define as init_frame_pc_noop.
+ (INIT_FRAME_PC_FIRST): Ditto.
+ * config/mn10200/tm-mn10200.h (INIT_FRAME_PC): Ditto.
+ (INIT_FRAME_PC_FIRST): Ditto.
+ * config/sparc/tm-sparc.h (INIT_FRAME_PC): Ditto.
+ * config/rs6000/tm-rs6000.h (INIT_FRAME_PC): Redefine as
+ init_frame_pc_noop.
+ (INIT_FRAME_PC_FIRST): Convert to an expression.
+ * config/sparc/tm-sparc.h (INIT_FRAME_PC_FIRST): Ditto.
+
+2002-12-08 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c: Use get_frame_base instead of directly accessing
+ the `struct frame_info' member frame.
+ * f-valprint.c, std-regs.c, rs6000-tdep.c: Ditto.
+ * stack.c, dummy-frame.c, breakpoint.c: Ditto.
+
+2002-12-08 Elena Zannoni <ezannoni@redhat.com>
+
+ * Makefile.in (readline_h): Define.
+ (completer.o): Depend on readline_h.
+ (corelow.o): Ditto.
+ (event-top.o): Ditto.
+ (exec.o): Ditto.
+ (solib.o): Ditto.
+ (source.o): Ditto.
+ (symfile.o): Ditto.
+ (symmisc.o): Ditto.
+ (top.o): Ditto.
+ (tracepoint.o): Ditto.
+ (utils.o): Ditto.
+ (cli-dump.o): Ditto.
+ (tui-hooks.o): Ditto.
+ (tuiWin.o): Ditto.
+
+2002-12-08 Elena Zannoni <ezannoni@redhat.com>
+
+ More cleanup from import of readline 4.3.
+ * completer.h (complete_line, readline_line_completion_function):
+ Update prototypes.
+ (line_completion_function): Removed, not used outside of completer.c.
+ * completer.c (readline_line_completion_function,
+ complete_function, line_completion_function): Use const for first
+ parameter.
+ (line_completion_function): Make static.
+ (filename_completer): filename_completion_function is now called
+ rl_filename_completion_function
+ * corelow.c: Include <readline/readline.h>.
+ * exec.c: Ditto.
+ * solib.c: Ditto.
+ * source.c: Ditto.
+ * symfile.c: Ditto.
+ * symmisc.c: Ditto.
+ * top.c (init_main): No need to coerce
+ readline_line_completion_function anymore.
+ * cli/cli-dump.c: Include <readline/readline.h>.
+
+2002-12-08 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (frame_info): Use get_prev_frame.
+ * blockframe.c (frame_address_in_block): Ditto.
+ * rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
+ (rs6000_frameless_function_invocation): Ditto.
+ (rs6000_frame_saved_pc): Ditto.
+ (rs6000_frame_chain): Ditto.
+ * arch-utils.c (init_frame_pc_default): Ditto.
+
+2002-12-08 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mn10200/tm-mn10200.h (DEPRECATED_PC_IN_CALL_DUMMY):
+ Delete redundant definition.
+
+2002-12-08 Elena Zannoni <ezannoni@redhat.com>
+
+ Import of readline 4.3:
+ * cli/cli-cmds.c: Include readline/tilde.h.
+ * cli/cli-setshow.c: Ditto.
+ * defs.h: Don't declare tilde_expand anymore, since readline
+ exports it.
+
+2002-12-08 Elena Zannoni <ezannoni@redhat.com>
+
+ * Makefile.in (thread-db.o): Add explicit rule to ignore the use of
+ -Werror on this file.
+
+2002-12-07 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (TARGET_FLOAT_FORMAT): Use the macro when printing
+ the format name.
+ (TARGET_DOUBLE_FORMAT, TARGET_LONG_DOUBLE_FORMAT): Ditto.
+ * gdbarch.c: Regenerate.
+
+2002-12-06 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_INIT_FRAME_PC_FIRST): Rename
+ INIT_FRAME_PC_FIRST. Change to a function with predicate. Do not
+ provide a default value.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * frame.c (get_prev_frame): Update. Check
+ DEPRECATED_INIT_FRAME_PC_FIRST_P.
+ * s390-tdep.c (s390_gdbarch_init): Update.
+ * mips-tdep.c (mips_gdbarch_init): Update.
+ * config/sparc/tm-sparc.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
+ * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
+ * alpha-tdep.c (alpha_gdbarch_init): Update.
+
+2002-12-06 Elena Zannoni <ezannoni@redhat.com>
+
+ * ia64-linux-nat.c: Include gdb_string.h.
+ * alpha-nat.c: Ditto.
+ * ppc-linux-nat.c: Ditto.
+ * Makefile.in (ia64-linux-nat.o, alpha-nat.o, ppc-linux-nat.o):
+ Update dependencies.
+
+2002-12-05 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbthread.h: Include "frame.h".
+ (struct thread_info): Replace step_frame_address with
+ step_frame_id.
+ * inferior.h: Include "frame.h".
+ (step_frame_id): Replace external variable step_frame_address.
+ * gdbthread.h (save_infrun_state): Replace step_frame_address
+ parameter with step_frame_id parameter.
+ (load_infrun_state): Ditto.
+ * Makefile.in (gdbthread_h, inferior_h): Add $(frame_h).
+ * infcmd.c (step_frame_id, step_1, step_once): Update.
+ * thread.c (load_infrun_state, save_infrun_state): Update.
+ * infrun.c (clear_proceed_status, save_inferior_status): Update.
+ (handle_inferior_event, step_over_function): Update.
+ (normal_stop, context_switch, restore_inferior_status): Update.
+ (struct inferior_status): Replace step_frame_address with
+ step_frame_id.
+
+2002-12-05 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (dwarf2_add_field): Treat a field that is a
+ DW_TAG_member as well as a declaration as being a C++ static data
+ member.
+ (read_structure_scope): Combine tests for DW_TAG_member and
+ DW_TAG_variable.
+
+2002-12-05 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (decode_compound): New function.
+ (decode_line_1): Move code into decode_compound.
+
+2002-12-05 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux_local): Add 'static_block'
+ argument.
+ (lookup_symbol_aux): Do the 'field_of_this' check before checking
+ the static block. See PR gdb/804.
+
+2002-12-05 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux_block): New function.
+ (lookup_symbol_aux_local): Move code into lookup_symbol_aux_block.
+
+2002-12-05 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh: Dump the predicate function and macro values.
+ (read): Print error on standard error.
+ * gdbarch.c: Regenerate.
+
+2002-12-04 Kevin Buettner <kevinb@redhat.com>
+
+ * Makefile.in (mips_tdep_h): Define.
+ (mips-tdep.o): Add mips_tdep_h to dependency list.
+ * mips-tdep.h: New file.
+ * mips-tdep.c (mips-tdep.h): Include.
+ (enum mips_abi): Move to mips-tdep.h.
+ (mips_abi): New function.
+
+2002-12-04 David Carlton <carlton@math.stanford.edu>
+
+ * Makefile.in (f-exp.tab.c): Don't depend on c-exp.tab.c.
+
+2002-12-04 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux): Move minsym code into a separate
+ function.
+ (lookup_symbol_aux_minsyms): New function.
+
+2002-12-04 J. Brobecker <brobecker@gnat.com>
+
+ * pa64solib.c: s/boolean/int/. Fixes a build failure on hppa64-hpux.
+
+2002-12-04 J. Brobecker <brobecker@gnat.com>
+
+ * config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Renamed from IN_SIGTRAMP,
+ which is an obsolete macro name.
+
+2002-12-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * doublest.c (convert_floatformat_to_doublest): Cast exp_bias to int.
+ * config/alpha/alpha-linux.mh (MH_CFLAGS): Add -mieee.
+
+2002-12-03 H.J. Lu (hjl@gnu.org)
+
+ * breakpoint.c (create_thread_event_breakpoint): Use xasprintf.
+ (create_breakpoints): Make sure the addr_string field is not
+ NULL.
+
+2002-12-03 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-nat.c (fetch_inferior_registers)
+ (store_inferior_registers): Add comment on problem of LWP vs
+ threads.
+
+ From 2002-11-21 Daniel Jacobowitz <drow@mvista.com>
+ * lin-lwp.c (lin_lwp_fetch_registers): Remove.
+ (lin_lwp_store_registers): Remove.
+ (init_lin_lwp_ops): Use fetch_inferior_registers
+ and store_inferior_registers directly.
+ * sparc-nat.c (fetch_inferior_registers): Honor LWP ID.
+ (store_inferior_registers): Likewise.
+ Fix PR gdb/725.
+
+2002-12-03 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (get_frame_id): Convert to a function.
+ (null_frame_id, frame_id_p): Declare.
+ (frame_id_eq, frame_id_inner): Declare.
+ (frame_id_build): New function.
+ * frame.c (get_frame_id): Update. Use null_frame_id.
+ (frame_find_by_id): Rewrite using frame_id_p, frame_id_eq and
+ frame_id_inner.
+ (null_frame_id, frame_id_p): Define.
+ (frame_id_eq, frame_id_inner): Define.
+ (frame_id_build): New function.
+ * varobj.c (varobj_create): Update.
+ (varobj_update): Update.
+ * valops.c (value_assign): Update.
+ (new_root_variable): Update.
+ * infrun.c (save_inferior_status): Update.
+ * breakpoint.c (watch_command_1): Update.
+
+2002-12-03 J. Brobecker <brobecker@gnat.com>
+
+ * config/pa/tm-hppah.h (SNAP1): Remove unused macro.
+ (SNAP2): Likewise.
+
+2002-12-03 Andrew Cagney <cagney@redhat.com>
+
+ * NEWS: Mention Daniel Jacobowitz's multi-threaded shared library
+ patch.
+
+ * PROBLEMS: Mention PR gdb/725.
+
+2002-12-03 Andreas Schwab <schwab@suse.de>
+
+ * infcmd.c (construct_inferior_arguments): Handle empty arguments.
+
+2002-12-02 Adam Fedor <fedor@gnu.org>
+ Klee Dienes <kdienes@apple.com>
+
+ * objc-lang.c (objc_printstr): Add width arg to match
+ printstr prototype.
+ (compare_selectors): Add 'const' to arg types.
+ (compare_classes): Likewise.
+ (find_imps): Cast msym pointer to avoid compiler warning.
+ (print_object_command): Validate the address before
+ passing it to the print routine.
+ (find_objc_msgcall_submethod): Change function argument to
+ return an int.
+ * objc-lang.h: Add 'extern' to all function declarations.
+ (value_nsstring): Add declaration.
+
+2002-12-02 J. Brobecker <brobecker@gnat.com>
+
+ * somsolib.c (dld_cache): Replace boolean by int for field is_valid.
+ Fixes a build failure on HP/UX.
+
+ * hpread.c (told_objfile): Replace boolean type by int. Fixes a build
+ failure on HP/UX.
+ (hpread_has_name): Advance declaration to avoid a compilation warning.
+ (pst_syms_count): Add missing variable type. By change, the compiler
+ was defaulting to int, which seems a good choice. Fixes a compilation
+ warning.
+ (pst_syms_size): Likewise.
+
+2002-12-02 J. Brobecker <brobecker@gnat.com>
+
+ * hppa-tdep.c: Add #include "osabi.h" (for hppa_gdbarch_init).
+ (hppa_gdbarch_init): Detect osabi from objfile. Will be needed
+ later to set the proper gdbarch methods depending on the osabi.
+ * Makefile.in (hppa-tdep.o): Add dependency on osabi.h.
+
+2002-12-02 J. Brobecker <brobecker@gnat.com>
+
+ * osabi.h (gdb_osabi): Add two new enum values for HPUX ELF and SOM.
+ * osabi.c (gdb_osabi_name): Add strings images for the two new
+ enum values.
+ (generic_elf_osabi_sniffer): Handle HPUX objfiles.
+
+2002-12-02 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Java): Global maintainers are responible for Java.
+ (Past Maintainers): Mention both Anthony Green and Per Bothner as
+ part Java maintainers.
+
+2002-12-02 J. Brobecker <brobecker@gnat.com>
+
+ * xcoffread.c (read_symbol_lineno): Replace boolean by int.
+ Fixes a compilation failure on AiX.
+
+2002-12-02 J. Brobecker <brobecker@gnat.com>
+
+ * config/powerpc/aix432.mh (NATDEPFILES): Add a comment explaining
+ why aix-thread.o is not listed.
+
+2002-12-01 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_PC_IN_CALL_DUMMY): Rename
+ PC_IN_CALL_DUMMY. Change to predicate. Always allow call.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * config/sparc/tm-sparc.h, config/sparc/tm-sp64.h: Update.
+ * config/mn10200/tm-mn10200.h, config/h8500/tm-h8500.h: Update.
+ * config/pa/tm-hppa.h, frame.h: Update.
+ * x86-64-tdep.c, vax-tdep.c, sparc-tdep.c: Update.
+ * s390-tdep.c, ns32k-tdep.c, mn10300-tdep.c: Update.
+ * m68k-tdep.c, i386-tdep.c, frv-tdep.c: Update.
+ * cris-tdep.c, alpha-tdep.c: Update.
+ * frame.c (set_unwind_by_pc, create_new_frame): Use either
+ DEPRECATED_PC_IN_CALL_DUMMY or pc_in_dummy_frame.
+ (get_prev_frame): Ditto.
+
+2002-11-30 Andrew Cagney <cagney@redhat.com>
+
+ * exec.c (xfer_memory): Replace boolean with int.
+ * p-exp.y: Use 0 instead of false.
+ * corelow.c (gdb_check_format): Change return type to int from
+ boolean.
+ * utils.c: Don't include <curses.h> or <term.h> first.
+
+2002-11-29 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (m68hc11_register_raw_size): Remove.
+ (m68hc11_register_byte): Remove.
+ (m68hc11_gdbarch_init): Don't set the above.
+
+2002-11-29 Andrew Cagney <cagney@redhat.com>
+
+ * remote-mips.c (mips_initialize): Force a selected frame rebuild
+ by calling get_selected_frame.
+ * ocd.c (ocd_start_remote): Use get_selected frame instead of
+ set_current_frame, create_new_frame, select_frame and
+ get_current_frame.
+ * remote-e7000.c (e7000_start_remote): Ditto.
+ * remote-mips.c (common_open): Ditto
+ * remote-rdp.c (remote_rdp_open): Ditto.
+
+2002-11-29 Andreas Schwab <schwab@suse.de>
+
+ * m68k-tdep.c (m68k_frame_chain, m68k_frame_saved_pc)
+ (altos_skip_prologue, delta68_frame_saved_pc, isi_frame_num_args)
+ (delta68_frame_num_args, news_frame_num_args, m68k_skip_prologue)
+ (m68k_frame_init_saved_regs, m68k_saved_pc_after_call): Use
+ read_memory_unsigned_integer instead of read_memory_integer when
+ dealing with addresses and instruction opcodes.
+ * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc)
+ (m68k_linux_frame_saved_pc): Likewise.
+
+2002-11-29 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (selected_frame, select_frame): Move from here ...
+ * frame.c (selected_frame, select_frame): ... to here. Include
+ "language.h".
+ * Makefile.in (frame.o): Update dependencies.
+ * frame.c (get_selected_frame): New function.
+ * frame.h (get_selected_frame): Declare.
+ (deprecated_selected_frame): Rename selected_frame.
+ * ada-lang.c, ada-tasks.c, breakpoint.c, corelow.c: Update.
+ * eval.c, f-valprint.c, findvar.c, frame.c, frame.h: Update.
+ * h8300-tdep.c, h8500-tdep.c, hppa-tdep.c, infcmd.c: Update.
+ * inflow.c, infrun.c, macroscope.c, mips-tdep.c: Update.
+ * mn10300-tdep.c, ocd.c, regcache.h, remote-e7000.c: Update.
+ * remote-mips.c, remote-rdp.c, sh-tdep.c, sparc-tdep.c: Update.
+ * stack.c, thread.c, tracepoint.c, valops.c, varobj.c: Update.
+ * z8k-tdep.c, cli/cli-cmds.c: Update.
+
+2002-11-29 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (get_selected_block): Add comments.
+
+2002-11-28 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (pc_notcurrent): New function.
+ (find_frame_sal): New function.
+ * frame.h (find_frame_sal): Declare.
+ (struct symtab_and_line): Add opaque declaration.
+ * stack.c (print_frame_info_base): Use find_frame_sal instead of
+ find_pc_line.
+ (frame_info): Ditto.
+ * ada-lang.c (find_printable_frame): Ditto.
+
+2002-11-28 J. Brobecker <brobecker@gnat.com>
+
+ * configure.in: Check that the pthdebug library is recent enough
+ before enabling thread support on native AiX.
+ * configure: Regenerate.
+
+ * config/powerpc/aix432.mh (NATDEPFILES): Remove aix-thread.o
+ from the list of object files as it is now appended by configure
+ if thread support is enabled.
+ (NAT_CLIBS): Removed as -lpthdebug is also appended by configure
+ if thread support is enabled.
+
+2002-11-28 Andrew Cagney <cagney@redhat.com>
+
+ * stack.c (get_selected_block): In-line get_current_block.
+ * frame.h (get_current_block): Delete declaration.
+ * blockframe.c (get_current_block): Delete function.
+
+2002-11-28 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Rename
+ USE_GENERIC_DUMMY_FRAMES.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * valops.c, frame.c: Update.
+ * config/z8k/tm-z8k.h, config/mn10200/tm-mn10200.h: Update.
+ * config/m32r/tm-m32r.h, config/h8500/tm-h8500.h: Update.
+ * config/pa/tm-hppa.h, blockframe.c: Update.
+ * vax-tdep.c, sparc-tdep.c, ns32k-tdep.c: Ditto.
+ * m68k-tdep.c, alpha-tdep.c: Ditto.
+
+ * arm-tdep.c: Eliminate USE_GENERIC_DUMMY_FRAMES as always 1.
+ * mips-tdep.c: Ditto.
+
+2002-11-27 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (CALL_DUMMY_LOCATION): Default to AT_ENTRY_POINT.
+ (USE_GENERIC_DUMMY_FRAMES): Default to true.
+ (PC_IN_CALL_DUMMY): Default to generic_pc_in_call_dummy.
+ * gdbarch.c, gdbarch.h: Re-generate.
+ * inferior.h (USE_GENERIC_DUMMY_FRAMES): Delete macro definition.
+ (CALL_DUMMY_LOCATION): Delete macro definition.
+ (PC_IN_CALL_DUMMY): Delete macro definitions.
+
+ * arm-tdep.c (arm_gdbarch_init): Do not set pc_in_call_dummy,
+ default is already generic_pc_in_call_dummy.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
+ * v850-tdep.c (v850_gdbarch_init): Ditto.
+ * sh-tdep.c (sh_gdbarch_init): Ditto.
+ * rs6000-tdep.c (rs6000_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.
+ * h8300-tdep.c (h8300_gdbarch_init): Ditto.
+ * d10v-tdep.c (d10v_gdbarch_init): Ditto.
+ * avr-tdep.c (avr_gdbarch_init): Ditto.
+
+ * arm-tdep.c (arm_gdbarch_init): Do not set
+ use_generic_dummy_frames, default is already 1.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
+ * x86-64-tdep.c (x86_64_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.
+ * 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.
+
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
+ call_dummy_location, default is already AT_ENTRY_POINT.
+ * x86-64-tdep.c (x86_64_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.
+ * 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.
+ * alpha-tdep.c (alpha_gdbarch_init): Ditto.
+
+2002-11-28 Andrew Cagney <cagney@redhat.com>
+
+ * frame.h: Update comments on set_current_frame, create_new_frame,
+ flush_cached_frames, reinit_frame_cache, select_frame and
+ selected_frame.
+
+2002-11-27 Andrew Cagney <cagney@redhat.com>
+
+ * config/z8k/tm-z8k.h (PC_IN_CALL_DUMMY): Update definition to use
+ deprecated pc_in_call_dummy function.
+ * config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Ditto.
+ * config/sparc/tm-sp64.h (PC_IN_CALL_DUMMY): Ditto.
+ * config/pa/tm-hppa.h (PC_IN_CALL_DUMMY): Ditto.
+ * config/mn10200/tm-mn10200.h (PC_IN_CALL_DUMMY): Ditto.
+ * config/h8500/tm-h8500.h (PC_IN_CALL_DUMMY): Ditto.
+
+2002-11-26 Martin M. Hunt <hunt@redhat.com>
+
+ * Makefile.in: Remove Tix dependencies.
+ * acinclude.m4: Ditto.
+ * aclocal.m4: Ditto.
+ * configure.in: Ditto.
+ * configure: Regenerated.
+
+2002-11-26 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (TARGET_FLOAT_FORMAT): Print the float format name.
+ (TARGET_DOUBLE_FORMAT, TARGET_LONG_DOUBLE_FORMAT): Ditto.
+ * gdbarch.c: Re-generate.
+
+2002-11-26 Andrew Cagney <ac131313@redhat.com>
+
+ * config/h8500/tm-h8500.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
+ (USE_GENERIC_DUMMY_FRAMES): Define as zero.
+ (PC_IN_CALL_DUMMY): Define as pc_in_call_dummy_on_stack.
+ * config/mn10200/tm-mn10200.h (PC_IN_CALL_DUMMY): Define as
+ pc_in_call_dummy_at_entry_point.
+ * config/pa/tm-hppa.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
+ (USE_GENERIC_DUMMY_FRAMES): Define as zero.
+ (PC_IN_CALL_DUMMY): Define as pc_in_call_dummy_on_stack.
+ * config/pa/tm-hppa64.h (CALL_DUMMY_LOCATION): Delete undefine.
+ * config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Define as
+ pc_in_call_dummy_on_stack.
+ * config/sparc/tm-sp64.h (PC_IN_CALL_DUMMY): Redefine as
+ pc_in_call_dummy_at_entry_point and pc_in_call_dummy_on_stack.
+ * config/z8k/tm-z8k.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
+ (USE_GENERIC_DUMMY_FRAMES): Define as zero.
+ (PC_IN_CALL_DUMMY): Defile as pc_in_call_dummy_on_stack.
+
+2002-11-26 Andrew Cagney <ac131313@redhat.com>
+
+ * inferior.h (deprecated_pc_in_call_dummy_before_text_end): Rename
+ pc_in_call_dummy_before_text_end
+ (deprecated_pc_in_call_dummy_after_text_end): Rename
+ pc_in_call_dummy_after_text_end.
+ (deprecated_pc_in_call_dummy_on_stack): Rename
+ pc_in_call_dummy_on_stack.
+ (deprecated_pc_in_call_dummy_at_entry_point): Rename
+ pc_in_call_dummy_at_entry_point.
+ * m68k-tdep.c (m68k_gdbarch_init): Update.
+ * s390-tdep.c (s390_gdbarch_init): Update.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Update.
+ * vax-tdep.c (vax_gdbarch_init): Update.
+ * sparc-tdep.c (sparc_gdbarch_init): Update.
+ * ns32k-tdep.c (ns32k_gdbarch_init): Update.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Update.
+ * i386-tdep.c (i386_gdbarch_init): Update.
+ * frv-tdep.c (frv_gdbarch_init): Update.
+ * cris-tdep.c (cris_gdbarch_init): Update.
+ * config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Update.
+ * blockframe.c (deprecated_pc_in_call_dummy_before_text_end)
+ (deprecated_pc_in_call_dummy_after_text_end)
+ (deprecated_pc_in_call_dummy_on_stack)
+ (deprecated_pc_in_call_dummy_at_entry_point): Update.
+ * alpha-tdep.c (alpha_gdbarch_init): Update.
+
+2002-11-25 Daniel Jacobowitz <drow@mvista.com>
+
+ * acconfig.h (HAVE_PREAD64): Add.
+ * configure.in: Check for pread64.
+ * config.in: Regenerated.
+ * configure: Regenerated.
+ * lin-lwp.c (lin_lwp_xfer_memory): Call linux_proc_xfer_memory.
+ * linux-proc.c (linux_proc_xfer_memory): New function.
+ * config/nm-linux.h (linux_proc_xfer_memory): Add prototype.
+
+2002-11-25 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (scan_partial_symbols): Descend into namespace
+ pdi's with no name.
+
+2002-11-25 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Mark h8500 as broken. Breakage occured Fri Nov 5
+ 16:32:04 1999 Andrew Cagney <cagney@b1.cygnus.com>.
+
+2002-11-25 Jim Blandy <jimb@redhat.com>
+
+ * symfile.c (init_objfile_sect_indices): New function.
+ (default_symfile_offsets): Move the section-index-initializing
+ stuff into init_objfile_sect_indices, and call that.
+
+ * symtab.h (SIZEOF_N_SECTION_OFFSETS): New macro.
+ (SIZEOF_SECTION_OFFSETS): Use SIZEOF_N_SECTION_OFFSETS.
+
+ * symfile.c (syms_from_objfile): Adjust indentation.
+
+ * symfile.c (symbol_file_add): Flush gdb_stdout even if from_tty
+ || info_verbose isn't true.
+
+2002-11-24 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS): Change
+ default to get_frame_base.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * arch-utils.c (default_frame_address): Delete function.
+ * arch-utils.h (default_frame_address): Delete declaration
+
+2002-11-24 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * varobj.c (find_frame_addr_in_frame_chain):
+ Use get_frame_base instead of FRAME_FP,
+ obvious fix.
+
+2002-11-19 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (FRAME_FP): Delete macro.
+ (get_frame_base): New function declaration.
+ * frame.c (get_frame_base): New function.
+ (get_frame_id): Use ->frame.
+ (frame_find_by_id): Rewrite to use get_frame_id.
+ * blockframe.c: Use get_frame_base instead of FRAME_FP.
+ * cris-tdep.c, d10v-tdep.c, findvar.c, h8500-tdep.c: Ditto.
+ * hppa-tdep.c, i386-tdep.c, infcmd.c, infrun.c: Ditto.
+ * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c, mips-tdep.c: Ditto.
+ * mn10200-tdep.c, mn10300-tdep.c, rs6000-tdep.c: Ditto.
+ * sh-tdep.c, sparc-tdep.c, stack.c, tracepoint.c: Ditto.
+ * v850-tdep.c, valops.c, z8k-tdep.c: Ditto.
+
+2002-11-24 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Do not set get_saved_register.
+
+2002-11-24 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (set_unwind_by_pc): Revert change below, use
+ PC_IN_CALL_DUMMY.
+ (get_prev_frame): Ditto.
+
+2002-11-24 Andrew Cagney <ac131313@redhat.com>
+
+ * dummy-frame.c (pc_in_dummy_frame): New function.
+ (generic_pc_in_call_dummy): Call pc_in_dummy_frame.
+ (find_dummy_frame): Update comment.
+ (generic_pop_current_frame): Use get_frame_type.
+ * dummy-frame.h (pc_in_dummy_frame): Declare.
+ * frame.c (set_unwind_by_pc): Use pc_in_dummy_frame.
+ (create_new_frame): Use pc_in_dummy_frame.
+ (get_prev_frame): Use pc_in_dummy_frame.
+ (frame_saved_regs_register_unwind): Use get_prev_frame.
+ (deprecated_generic_get_saved_register): Use get_prev_frame.
+
+2002-11-23 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c (find_frame_addr_in_frame_chain): Move function
+ from here ...
+ * varobj.c (find_frame_addr_in_frame_chain): ... to here.
+ (varobj_create): Note that frame ID should be used.
+ * frame.h (find_frame_addr_in_frame_chain): Delete declaration.
+
+2002-11-23 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.c: Include "gdb_assert.h".
+ (deprecated_frame_in_dummy): Assert that generic dummy frames are
+ not being used.
+ * Makefile.in (breakpoint.o): Update dependencies.
+ * ada-lang.c (find_printable_frame): Use get_frame_type instead of
+ deprecated_frame_in_dummy.
+ * stack.c (print_frame_info_base): Ditto.
+ (frame_info): Ditto.
+ (print_frame_info_base): Ditto. Delete dead code.
+
+2002-11-23 Andreas Schwab <schwab@suse.de>
+
+ * Makefile.in (m68k_tdep_h): Define.
+ (abug-rom.o, cpu32bug-rom.o, dbug-rom.o, m68k-tdep.o, m68klinux-nat.o)
+ (remote-est.o, rom68k-rom.o): Add $(m68k_tdep_h).
+ * m68k-tdep.c: Move register number enum ...
+ * m68k-tdep.h: ... to this new file and rename the constants from
+ E_* to M68K_*. All uses changed.
+ * config/m68k/tm-m68k.h (D0_REGNUM, A0_REGNUM): Remove definitions.
+ * abug-rom.c: Include "m68k-tdep.h". Use
+ M68K_D0_REGNUM/M68K_A0_REGNUM instead of D0_REGNUM/A0_REGNUM.
+ * cpu32bug-rom.c: Likewise.
+ * dbug-rom.c: Likewise.
+ * m68k-tdep.c: Likewise.
+ * m68klinux-nat.c: Likewise.
+ * remote-est.c: Likewise.
+ * rom68k-rom.c: Likewise.
+ * config/m68k/tm-linux.h: Likewise.
+
+2002-11-23 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Remove old style non-generic
+ dummy frame initialization code.
+ * mips-tdep.c (mips_gdbarch_init): Ditto.
+
+2002-11-22 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (child_attach): Reset saw_create counter or subsequent
+ attach will hang.
+
+2002-11-22 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS): Default
+ to default_frame_address.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * d10v-tdep.c (d10v_gdbarch_init): Do not set frame_args_address
+ or frame_locals_address to default_frame_address.
+ * m68k-tdep.c (m68k_gdbarch_init): Update.
+ * i386-tdep.c (i386_gdbarch_init): Update.
+ * frv-tdep.c (frv_gdbarch_init): Update.
+ * sh-tdep.c (sh_gdbarch_init): Update.
+ * v850-tdep.c (v850_gdbarch_init): Update.
+ * sparc-tdep.c (sparc_gdbarch_init): Update.
+ * mips-tdep.c (mips_gdbarch_init): Update.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Update.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Update.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
+
+ * cris-tdep.c (cris_frame_args_address): Delete function.
+ (cris_frame_locals_address): Delete function.
+ (cris_gdbarch_init): Do not set frame_args_address or
+ frame_locals_address.
+
+2002-11-22 Michael Snyder <msnyder@redhat.com>
+
+ * thread-db.c (thread_db_load): Tell the user what's going on
+ if dlopen fails on libthread_db.
+
+2002-11-23 Andreas Schwab <schwab@suse.de>
+
+ * m68k-tdep.c (m68k_register_virtual_type): Use architecture
+ invariant return values.
+
+2002-11-22 Andreas Schwab <schwab@suse.de>
+
+ * valops.c (value_slice): Move declaration of `offset' to avoid
+ warning.
+
+2002-11-22 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (psapi_get_dll_name): Fix a compiler warning.
+ (struct so_stuff): Add end_addr field.
+ (register_loaded_dll): Calculate and store end address of loaded dll.
+ (solib_address): New function.
+ (child_solib_loaded_library_pathname): Pass carefully constructed
+ section info to safe_symbol_file_add rather than ignoring it.
+ (get_child_debug_event): Call re_enable_breakpoints_in_shlibs when a
+ DLL is loaded.
+ (do_initial_child_stuff): Call disable_breakpoints_in_shlibs.
+ (child_create_inferior): Fix a compiler warning.
+ * config/i386/tm-cygwin.h (PC_SOLIB): Define new macro.
+ (solib_address): Declare new function.
+
+2002-11-22 Andreas Schwab <schwab@suse.de>
+
+ * m68k-tdep.c (m68k_register_virtual_type): Return int for SR, FPC
+ and FPS registers.
+
+2002-11-21 Daniel Jacobowitz <drow@mvista.com>
+
+ * maint.c (_initialize_maint_cmds): Fix typo. From
+ Francesco Potorti` <pot@gnu.org>.
+
+2002-11-21 Andrew Cagney <cagney@redhat.com>
+
+ * mips-tdep.c (mips_dump_tdep): Delete references to
+ GDB_TARGET_UNMASK_DISAS_PC and GDB_TARGET_MASK_DISAS_PC.
+ * config/mips/tm-mips.h (GDB_TARGET_MASK_DISAS_PC): Delete macro.
+ (GDB_TARGET_UNMASK_DISAS_PC): Delete macro.
+ * printcmd.c (build_address_symbolic): Delete calls to
+ GDB_TARGET_UNMASK_DISAS_PC and GDB_TARGET_MASK_DISAS_PC.
+ (address_info): Ditto.
+ Fix PR gdb/773.
+
+2002-11-19 Klee Dienes <kdienes@apple.com>
+ Adam Fedor <fedor@gnu.org>
+
+ * completer.c (skip_quoted_chars): Renamed from skip_chars. Add
+ the ability to explicitly specify the quote characters and word
+ break characters; if NULL is specified for either, use the old
+ behavior of using the characters used by the completer.
+ (skip_chars): New function. Convenience wrapper around
+ skip_quoted_chars to provide the original skip_chars behavior.
+ * completer.h (skip_quoted_chars): Add prototype.
+
+2002-11-19 Andrew Cagney <ac131313@redhat.com>
+
+ Problems reported by Paul Eggert.
+ * gdbarch.sh: Use `sort -k 3`. Fix PR gdb/527.
+
+2002-11-19 Andreas Schwab <schwab@suse.de>
+
+ * m68klinux-nat.c (IS_SIGTRAMP, IS_RT_SIGTRAMP)
+ (m68k_linux_in_sigtramp, SIGCONTEXT_PC_OFFSET)
+ (UCONTEXT_PC_OFFSET, m68k_linux_sigtramp_saved_pc)
+ (m68k_linux_frame_saved_pc): Move to ...
+ * m68klinux-tdep.c: ... here. New file.
+ * Makefile.in (m68klinux-tdep.o): Add dependencies.
+ * config/m68k/linux.mt (TDEPFILES): Add m68klinux-tdep.o.
+
+2002-11-19 Adam Fedor <fedor@gnu.org>
+
+ * objc-exp.y: Revert to old skip_quoted usage.
+
+2002-11-19 Adam Fedor <fedor@gnu.org>
+
+ * Makefile.in (SFILES): Add objc-exp.y objc-lang.c.
+ (objc_lang_h): Define.
+ (YYFILES): Add objc-exp.tab.c.
+ (local-maintainer-clean): Remove objc-exp.tab.c.
+ (objc-exp.tab.c, objc-exp.tab.o, objc-lang.o): New target.
+
+2002-11-19 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y (typecast rule): Add automatic dereference of
+ pascal classes if needed.
+ (THIS): Set current_type.
+ Automatically dereference pascal classes.
+ (typebase rule): Add ^typebase recognition.
+
+2002-11-18 Adam Fedor <fedor@gnu.org>
+
+ * expprint.c (print_subexp): Handle OP_OBJC_NSSTRING,
+ OP_OBJC_MSGCALL, and OP_OBJC_SELF.
+ (op_name): Handle OP_OBJC_SELF.
+ * Makefile.in (expprint.o): Add additional depends.
+
+2002-11-18 Adam Fedor <fedor@gnu.org>
+
+ * expression.h: Rename ObjC ops to OP_OBJC_MSGCALL,
+ OP_OBJC_SELECTOR, OP_OBJC_NSSTRING, and OP_OBJC_SELF.
+ * parse.c (length_of_subexp, prefixify_subexp): Likewise.
+ * objc-exp.y: Likewise.
+
+2002-11-18 Adam Fedor <fedor@gnu.org>
+
+ * gdb/parser-defs.h: (struct objc_class_str): New structure
+ for parsing ObjC classes.
+
+2002-11-18 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (frame_relative_level): Copy function from here ...
+ * frame.c (frame_relative_level): ...to here.
+
+2002-11-18 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (enum frame_type): Define.
+ (get_frame_type): Declare.
+ (struct frame_info): Add field `type'. Delete field
+ signal_handler_caller.
+ (deprecated_set_frame_signal_handler_caller): Declare.
+ * frame.c (get_frame_type): New function.
+ (deprecated_set_frame_type): New function.
+ (create_new_frame): Set the frame's type.
+ (get_prev_frame): Similar.
+ * sparc-tdep.c: Use get_frame_type instead of signal_handler_caller.
+ * s390-tdep.c: Ditto.
+ * m68klinux-nat.c: Ditto.
+ * ns32k-tdep.c: Ditto.
+ * x86-64-linux-tdep.c: Ditto.
+ * vax-tdep.c: Ditto.
+ * rs6000-tdep.c: Ditto.
+ * ppc-linux-tdep.c: Ditto.
+ * i386-interix-tdep.c: Ditto.
+ * mips-tdep.c: Ditto.
+ * m68k-tdep.c: Ditto.
+ * hppa-tdep.c: Ditto.
+ * ia64-tdep.c: Ditto.
+ * cris-tdep.c: Ditto.
+ * arm-tdep.c: Ditto.
+ * alpha-tdep.c: Ditto.
+ * i386-tdep.c: Ditto.
+ * stack.c: Ditto.
+ * ada-lang.c: Ditto.
+ * blockframe.c: Update.
+ * i386-interix-tdep.c (i386_interix_back_one_frame): Use
+ deprecated_set_frame_type instead of signal_handler_caller.
+ * ppc-linux-tdep.c (ppc_linux_init_extra_frame_info): Ditto.
+ * rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
+ * breakpoint.h: Delete FIXME suggesting get_frame_type.
+
+2002-11-18 Klee Dienes <kdienes@apple.com>
+
+ * Makefile.in (buildsym.o): Add dependency for gdb_assert.h.
+
+2002-11-18 Klee Dienes <kdienes@apple.com>
+
+ * buildsym.c (pop_context): Add comment.
+
+2002-11-18 Klee Dienes <kdienes@apple.com>
+
+ * buildsym.h (pop_context): Convert to function, defined in
+ buildsym.c.
+ * buildsym.c: Include gdb_assert.h.
+ (pop_context): Implement as C function. Add check for stack
+ underflow.
+ * dbxread.c (process_one_symbol): Complain and stop processing
+ that symbol if we are already at the top of the context stack for
+ a function-end N_FUN (this would imply an umatched RBRAC). Ditto
+ when processing N_RBRAC.
+
+2002-11-16 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/pa/nm-hppah.h (CHILD_POST_FOLLOW_INFERIOR_BY_CLONE): Don't
+ define.
+ (struct target_waitstatus): Add opaque definition.
+ * corelow.c (init_core_ops): Don't set to_clone_and_follow_inferior.
+ * exec.c (init_exec_ops): Likewise.
+ * fork-child.c (clone_and_follow_inferior): Remove.
+ * hppah-nat.c (child_post_follow_inferior_by_clone): Remove.
+ * inferior.h (clone_and_follow_inferior): Remove prototype.
+ * infrun.c (follow_fork_mode_both): Remove.
+ (follow_fork_mode_kind_names): Remove commented out "both".
+ (follow_inferior_fork): Remove follow_fork_mode_both support.
+ * inftarg.c (child_clone_and_follow_inferior): Remove.
+ (child_post_follow_inferior_by_clone): Remove.
+ (init_child_ops): Don't set to_clone_and_follow_inferior
+ or to_post_follow_inferior_by_clone.
+ * target.c (default_clone_and_follow_inferior): Remove.
+ (cleanup_target): Don't set to_clone_and_follow_inferior
+ or to_post_follow_inferior_by_clone.
+ (find_default_clone_and_follow_inferior): Remove.
+ (init_dummy_target): Don't set to_clone_and_follow_inferior.
+ (debug_to_clone_and_follow_inferior): Remove.
+ (debug_to_post_follow_inferior_by_clone): Remove.
+ (setup_target_debug): Don't set to_clone_and_follow_inferior
+ or to_post_follow_inferior_by_clone.
+ * target.h (struct target_ops): Remove to_clone_and_follow_inferior
+ and to_post_follow_inferior_by_clone.
+ (child_clone_and_follow_inferior): Remove prototype.
+ (child_post_follow_inferior_by_clone): Remove prototype.
+ (target_clone_and_follow_inferior): Remove macro.
+ (target_post_follow_inferior_by_clone): Remove macro.
+ (find_default_clone_and_follow_inferior): Remove prototype.
+
+2002-11-16 Daniel Jacobowitz <drow@mvista.com>
+
+ * breakpoint.c (bpstat_stop_status): Call inferior_has_forked,
+ inferior_has_vforked, and inferior_has_execd instead of
+ target_has_forked, target_has_vforked, and target_has_execd.
+ * config/pa/nm-hppah.h (CHILD_HAS_FORKED, CHILD_HAS_VFORKED)
+ (CHILD_HAS_EXECD, CHILD_HAS_SYSCALL_EVENT): Don't define.
+ (CHILD_WAIT): Define.
+ (child_wait): Add prototype.
+ * hppah-nat.c (hpux_has_forked): Rename from child_has_forked.
+ Add prototype.
+ (hpux_has_vforked): Likewise, from child_has_vforked.
+ (hpux_has_execd): Likewise, from child_has_execd.
+ (hpux_has_syscall_event): Likewise, from child_has_syscall_event.
+ (not_same_real_pid, child_wait): New, copied from inftarg.c.
+ Call hpux_has_forked, hpux_has_vforked, hpux_has_execd,
+ and hpux_has_syscall_event instead of the target hooks.
+ * infrun.c (inferior_has_forked, inferior_has_vforked)
+ (inferior_has_execd): New functions.
+ * inftarg.c (not_same_real_pid): Remove.
+ (child_wait): Remove references to not_same_real_pid,
+ target_has_forked, target_has_vforked, target_has_execd,
+ and target_has_syscall_event.
+ (child_has_forked, child_has_vforked, child_has_execd)
+ (child_has_syscall_event): Remove.
+ (init_child_ops): Remove references to child_has_forked,
+ child_has_vforked, child_has_execd, and child_has_syscall_event.
+ * infttrace.c (hpux_has_forked): Rename from child_has_forked.
+ (hpux_has_vforked): Likewise, from child_has_vforked.
+ (hpux_has_execd): Likewise, from child_has_execd.
+ (hpux_has_syscall_event): Likewise, from child_has_syscall_event.
+ * target.c (cleanup_target): Remove references to
+ to_has_forked, to_has_vforked, to_has_execd, and
+ to_has_syscall_event.
+ (update_current_target): Likewise.
+ (setup_target_debug): Likewise.
+ (debug_to_has_forked): Remove.
+ (debug_to_has_vforked): Remove.
+ (debug_to_has_execd): Remove.
+ (debug_to_has_syscall_event): Remove.
+ * target.h (struct target_ops): Remove to_has_forked.
+ to_has_vforked, to_has_execd, and to_has_syscall_event.
+ (child_has_forked, child_has_vforked, child_has_execd)
+ (child_has_syscall_event): Remove prototypes.
+ (inferior_has_forked, inferior_has_vforked, inferior_has_execd): Add
+ prototypes.
+ (target_has_forked, target_has_vforked, target_has_execd)
+ (target_has_syscall_event): Remove macros.
+
+2002-11-16 Daniel Jacobowitz <drow@mvista.com>
+
+ * hppah-nat.c (child_can_follow_vfork_prior_to_exec): Remove.
+ * inftarg.c (child_can_follow_vfork_prior_to_exec): Remove.
+ (init_child_ops): Don't initialize to_can_follow_vfork_prior_to_exec.
+ * infttrace.c (child_can_follow_vfork_prior_to_exec): Remove.
+ * target.c (cleanup_target): Remove reference to
+ to_can_follow_vfork_prior_to_exec.
+ (update_current_target): Likewise.
+ (debug_to_can_follow_vfork_prior_to_exec): Remove.
+ (setup_target_debug): Remove reference to
+ to_can_follow_vfork_prior_to_exec.
+ * target.h (struct target_ops): Remove
+ to_can_follow_vfork_prior_to_exec.
+ (child_can_follow_vfork_prior_to_exec): Remove prototype.
+ (target_can_follow_vfork_prior_to_exec): Remove definition.
+ * config/pa/nm-hppah.h (CHILD_CAN_FOLLOW_VFORK_PRIOR_TO_EXEC): Don't
+ define.
+ * infrun.c (follow_vfork_when_exec): Remove.
+ (follow_inferior_fork): Remove references to follow_vfork_when_exec.
+ (follow_exec): Likewise.
+ (handle_inferior_event): Likewise.
+ (keep_going): Likewise.
+
+2002-11-15 Andrew Cagney <cagney@redhat.com>
+
+ * frame.c (generic_unwind_get_saved_register): Make static.
+ * frame.h (generic_unwind_get_saved_register): Delete declaration.
+ * avr-tdep.c (avr_gdbarch_init): Do not set get_saved_register,
+ defaults to generic_unwind_get_saved_register.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
+ * h8300-tdep.c (h8300_gdbarch_init): Ditto.
+ * frv-tdep.c (frv_gdbarch_init): Ditto.
+ * i386-tdep.c (i386_gdbarch_init): Ditto.
+ * s390-tdep.c (s390_gdbarch_init): Ditto.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
+ * v850-tdep.c (v850_gdbarch_init): Ditto.
+ * mcore-tdep.c (mcore_gdbarch_init): Ditto.
+ * d10v-tdep.c (d10v_gdbarch_init): Ditto.
+ * config/mn10200/tm-mn10200.h (GET_SAVED_REGISTER): Delete macro.
+
+2002-11-15 Andrew Cagney <cagney@redhat.com>
+
+ * x86-64-linux-nat.c (i386_sse_regnum_p): New function. Copy from
+ i386-tdep.c.
+
+2002-11-15 Andrew Cagney <cagney@redhat.com>
+
+ * frame.h (sigtramp_saved_pc): Delete declaration.
+ * blockframe.c (sigtramp_saved_pc): Delete function.
+ * ns32k-tdep.c (ns32k_sigtramp_saved_pc): New function.
+ (ns32k_frame_saved_pc): Call ns32k_sigtramp_saved_pc.
+ * vax-tdep.c (vax_sigtramp_saved_pc): New function.
+ (vax_frame_saved_pc): Call vax_sigtramp_saved_pc.
+
+2002-11-15 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (frame_pc_unwind): New function.
+ (frame_saved_regs_pc_unwind): New function.
+ (frame_register_unwind): Pass unwind_cache instead of
+ register_unwind_cache.
+ (set_unwind_by_pc): Add unwind_pc parameter, set.
+ (create_new_frame): Pass frame->pc_unwind to set_unwind_by_pc.
+ (get_prev_frame): Ditto.
+ * frame.h (frame_pc_unwind_ftype): Declare.
+ (struct frame_info): Add pc_unwind, pc_unwind_cache_p and
+ pc_unwind_cache. Rename register_unwind_cache to unwind_cache.
+ (frame_pc_unwind): Declare.
+ * dummy-frame.c (dummy_frame_pc_unwind): New function.
+ (struct dummy_frame): Add comment mentioning that values are for
+ previous frame.
+ * dummy-frame.h (dummy_frame_pc_unwind): Declare.
+ * blockframe.c (file_frame_chain_valid): Use frame_pc_unwind.
+ (generic_file_frame_chain_valid): Ditto.
+ * stack.c (frame_info): Ditto.
+
+2002-11-15 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (locate_first_half): New function.
+ (decode_line_1): Move code into locate_first_half.
+
+2002-11-15 Andrew Cagney <ac131313@redhat.com>
+
+ * complaints.h: Add comment explaining how to eliminate a
+ deprecated_complain call.
+ * complaints.h: Fix spelling errors.
+
+2002-11-15 David Carlton <carlton@math.stanford.edu>
+
+ * printcmd.c: Remove #include "disasm.h".
+
+2002-11-14 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h: Move the most relevant interface functions to the start
+ of the file.
+
+2002-11-14 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.h (deprecated_registers): Rename registers.
+ * a68v-nat.c, alpha-nat.c, arch-utils.c, core-sol2.c: Update.
+ * hp300ux-nat.c, hppab-nat.c, hppah-nat.c: Update.
+ * hppam3-nat.c, hpux-thread.c, i386gnu-nat.c: Update.
+ * ia64-aix-nat.c, ia64-linux-nat.c, ia64-tdep.c: Update.
+ * irix4-nat.c, irix5-nat.c, lynx-nat.c, m68k-tdep.c: Update.
+ * m68knbsd-nat.c, mips-linux-tdep.c, mipsm3-nat.c: Update.
+ * mipsv4-nat.c, ns32knbsd-nat.c, ppc-bdm.c: Update.
+ * ppc-sysv-tdep.c, ptx4-nat.c, regcache.c, remote-es.c: Update.
+ * remote-sds.c, remote-vx68.c, remote-vxmips.c: Update.
+ * remote-vxsparc.c, rs6000-tdep.c, sol-thread.c: Update.
+ * sparc-nat.c, sparc-tdep.c, sun3-nat.c, symm-nat.c: Update.
+ * v850ice.c: Update.
+
+Wed Nov 13 19:51:05 2002 Andrew Cagney <cagney@redhat.com>
+
+ * utils.c (gdb_realpath): Add comment mentioning realpath with a
+ NULL buffer.
+
+2002-11-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.h (deprecated_read_register_bytes): Rename
+ read_register_bytes.
+ (deprecated_write_register_bytes): Rename write_register_bytes.
+ * alpha-tdep.c, arm-tdep.c, cris-tdep.c, d10v-tdep.c: Update.
+ * dwarf2cfi.c, frv-tdep.c, hppa-tdep.c, ia64-tdep.c: Update.
+ * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Update.
+ * ns32k-tdep.c, regcache.c, remote-sds.c, remote-vx.c: Update.
+ * remote.c, rs6000-tdep.c, s390-tdep.c, sh-tdep.c: Update.
+ * sparc-tdep.c, v850-tdep.c, vax-tdep.c, x86-64-tdep.c: Update.
+ * xstormy16-tdep.c, z8k-tdep.c, config/nm-gnu.h: Update.
+ * config/nm-m3.h, config/h8500/tm-h8500.h: Update.
+ * config/i386/nm-ptx4.h, config/i386/nm-symmetry.h: Update.
+ * config/m32r/tm-m32r.h, config/m68k/nm-sun3.h: Update.
+ * config/m68k/tm-delta68.h, config/m68k/tm-linux.h: Update.
+ * config/mn10200/tm-mn10200.h, config/pa/tm-hppa64.h: Update.
+ * config/sparc/nm-nbsd.h, config/sparc/nm-sun4os4.h: Update.
+ * config/sparc/nm-sun4sol2.h, config/sparc/tm-sparclet.h: Update.
+
+2002-11-13 Jim Blandy <jimb@redhat.com>
+
+ * findvar.c (read_var_value): Doc fix.
+
+2002-11-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (struct regcache): Replace passthough_p with
+ readonly_p.
+ (regcache_xmalloc): Initialize readonly_p.
+ (build_regcache): Initialize readonly_p.
+ (regcache_save): New function.
+ (regcache_restore): New function.
+ (regcache_cpy): Re-implement using regcache_save and
+ regcache_restore.
+ (regcache_raw_read): Update.
+ (regcache_cooked_read): When a read-only cache, checked for cached
+ pseudo register values.
+ (regcache_raw_write): Assert that the cache is not read-only.
+ Remove code handling a non-passthrough cache.
+ * regcache.h (regcache_save): Declare.
+ (regcache_restore): Declare.
+
+2002-11-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (struct regcache_descr): Add fields
+ sizeof_cooked_registers and sizeof_cooked_register_valid_p.
+ (init_legacy_regcache_descr): Compute the size of a cooked
+ register cache and then assign that to sizeof_raw_registers. Set
+ sizeof_raw_register_valid_p to sizeof_cooked_register_valid_p
+ (init_legacy_regcache_descr): Ditto.
+
+2002-11-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (register_buffer): Move to near start of file, update
+ description.
+ (regcache_raw_read): Use.
+ (regcache_raw_write): Use.
+ (struct regcache): Rename raw_registers to registers and
+ raw_register_valid_p to register_valid_p.
+ (regcache_xmalloc): Update.
+ (regcache_xfree): Update.
+ (register_buffer): Update.
+ (regcache_cpy): Update.
+ (regcache_cpy_no_passthrough): Update.
+ (regcache_valid_p): Update.
+ (deprecated_grub_regcache_for_registers): Update.
+ (deprecated_grub_regcache_for_register_valid): Update.
+ (set_register_cached): Update.
+ (regcache_raw_write): Update.
+
+2002-11-13 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y (name_not_typename): Use copy_name to
+ set current_type variable for fields of THIS.
+
+2002-11-12 Daniel Jacobowitz <drow@mvista.com>
+
+ * gnu-nat.c (init_gnu_ops): Remove NULL initializations.
+ * monitor.c (init_base_monitor_ops): Likewise.
+ * ppc-bdm.c (init_bdm_ppc_ops): Likewise.
+ * remote-array.c (init_array_ops): Likewise.
+ * remote-e7000.c (init_e7000_ops): Likewise.
+ * remote-es.c (init_es1800_ops): Likewise.
+ (init_es1800_child_ops): Likewise.
+ * remote-rdp.c (init_remote_rdp_ops): Likewise.
+ * remote-sim.c (init_gdbsim_ops): Likewise.
+ * remote-st.c (init_st2000_ops): Likewise.
+ * sol-thread.c (init_sol_core_ops): Likewise.
+ (init_sol_thread_ops): Likewise.
+ * v850ice.c (init_850ice_ops): Likewise.
+ * win32-nat.c (init_child_ops): Likewise.
+ * wince.c (init_child_ops): Likewise.
+
+2002-11-12 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (gdb_realpath): Make rp a constant pointer.
+
+2002-11-12 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (gdb_realpath): Rewrite. Try, in order: realpath() with
+ a constant buffer; cannonicalize_file_name(); realpath() with a
+ pathconf() defined buffer, xstrdup().
+
+2002-11-12 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Fix typo, hang1.c to hang1.C; hang2.c
+ to hang2.C; hang3.c to hang3.C.
+
+2002-11-11 Elena Zannoni <ezannoni@redhat.com>
+
+ * findvar.c (read_var_value): Reenable TLS code.
+
+2002-11-11 Elena Zannoni <ezannoni@redhat.com>
+ Jim Blandy <jimb@redhat.com>
+
+ * gdb_thread_db.h (enum): Add TD_NOTALLOC.
+ * target.c (update_current_target): Add
+ to_get_thread_local_address.
+ * target.h (to_get_thread_local_address): Export.
+ (target_get_thread_local_address): Define.
+ (target_get_thread_local_address_p): Define.
+ * thread-db.c: Include solib-svr4.h.
+ (td_thr_tls_get_addr_p): Define.
+ (thread_db_load): Get a pointer to td_thr_tls_get_addr.
+ (thread_db_get_thread_local_address): New function.
+ (init_thread_db_ops): Initialize to_get_thread_local_address.
+ * configure.in: Add test for TD_NOTALLOC in thread_db.h.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+2002-11-11 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (set_flags): New function.
+ (decode_line_1): Move code into set_flags.
+
+2002-11-11 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (decode_line_1): Move chunks of code to separate
+ functions.
+ (initialize_defaults): New function.
+ (decode_indirect): New function.
+
+2002-11-11 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c (sigtramp_saved_pc): Fix tipo. void_func_ptr
+ instead of void_code_ptr.
+ (sigtramp_saved_pc): Ditto.
+
+ * x86-64-tdep.c (i386_fp_regnum_p): Copy i386-tdep.c's
+ i386_fp_regnum_p.
+
+2002-11-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h (struct main_type): Move artificial flag out of
+ loc. New member of ``struct field'' named static_kind. Reduce
+ overloaded meaning of bitsize.
+ (FIELD_ARTIFICIAL, SET_FIELD_PHYSNAME, SET_FIELD_PHYSADDR)
+ (TYPE_FIELD_STATIC, TYPE_FIELD_STATIC_HAS_ADDR): Likewise.
+ (FIELD_STATIC_KIND, TYPE_FIELD_STATIC_KIND): New macros.
+
+ * ada-lang.c (fill_in_ada_prototype): Initialize static_kind for
+ new fields.
+ (template_to_fixed_record_type, template_to_static_fixed_type)
+ (to_record_with_fixed_variant_part): Likewise.
+ * coffread.c (coff_read_struct_type, coff_read_enum_type): Likewise.
+ * dwarf2read.c (dwarf2_add_field, read_enumeration): Likewise.
+ * dwarfread.c (struct_type, enum_type): Likewise.
+ * hpread.c (hpread_read_enum_type)
+ (hpread_read_function_type, hpread_read_doc_function_type)
+ (hpread_read_struct_type): Likewise.
+ * mdebugread.c (parse_symbol): Likewise.
+
+2002-11-10 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.h (deprecated_frame_in_dummy): Rename frame_in_dummy.
+ * stack.c (print_frame_info_base): Update.
+ (print_frame_info_base, frame_info): Update.
+ * sparc-tdep.c (sparc_init_extra_frame_info): Update.
+ (sparc_frame_saved_pc): Update.
+ * ada-lang.c (find_printable_frame): Update.
+ * breakpoint.c (deprecated_frame_in_dummy): Update.
+
+2002-11-09 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-nat.c (ORIG_EAX): Define to -1 if not already
+ defined.
+ (regmap): Extend to cover all registers.
+ (PT_READ_U, PT_WRITE_U, PTRACE_XFER_TYPE,
+ OLD_CANNOT_FETCH_REGISTERS, OLD_CANNOT_STORE_REGISTERS): Remove
+ definitions.
+ (fetch_register, sore_register): Simplify.
+ (old_fetch_inferior_registers, old_store_inferior_registers):
+ Remove functions.
+ (cannot_fetch_register, cannot_store_register): Change
+ implementation to use regmap array to decide which registers
+ cannot be fetched/stored. This removes $orig_eax from the
+ registers that cannot be fetched/stored.
+ (fetch_inferior_registers): Call fetch_register directly instead
+ of calling old_fetch_inferior_registers.
+ (store_inferior_registers): Call store_register directly instead
+ of calling old_store_inferior_registers.
+ (i386_linux_dr_get): Replace PT_READ_U with PTRACE_PEEKUSER.
+ (i386_linux_dr_set): Replace PT_WRITE_U with PTRACE_POKEUSER.
+ * config/i386/nm-linux.h (U_REGS_OFFSET): Remove definition.
+
+2002-11-09 Klee Dienes <kdienes@apple.com>
+
+ * i387-tdep.c (i387_supply_register): When called with NULL as a
+ buffer, mark the register as not provided (to mirror the behavior
+ of supply_register).
+ (i387_supply_fxsave): Ditto.
+ (i387_supply_fsave): Ditto (inherits the behavior from
+ i387_supply_register).
+
+2002-11-09 Klee Dienes <kdienes@apple.com>
+
+ * blockframe.c (sigtramp_saved_pc): Use
+ builtin_type_void_code_ptr, not builtin_type_void_data_ptr (we are
+ extracting the PC). Use TYPE_LENGTH (builtin_type_void_code_ptr)
+ instead of (TARGET_PTR_BIT / TARGET_CHAR_BIT).
+
+2002-11-09 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (get_prev_frame): Test prev_p to identify a previously
+ unwound frame. Initialize prev_p.
+ * frame.h (struct frame_info): Add field prev_p. Expand prev/next
+ comment.
+
+2002-11-09 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (get_prev_frame): Cleanups. Eliminate redundant tests
+ for a NULL NEXT_FRAME. Simplify fromleaf initialization. Add
+ more comments. Zap dead code.
+
+2002-11-09 Mark Kettenis <kettenis@gnu.org>
+
+ * infcmd.c (print_vector_info, print_float_info): Move code that
+ checks whether the target has any registers and whether there is a
+ selected frame up, such that it is also used if a target provides
+ multi-arch definitions of these functions.
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (DESTDIR): Define.
+ (install-only, install-gdbtk, uninstall-gdbtk): Add $(DESTDIR)
+ prefix.
+
+ * config/djgpp/fnchange.lst: 8.3 proof i386obsd-nat.c and
+ i386obsd-tdep.c. Rename to "gdb.cxx", paths containing "gdb.c++".
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * i386-linux-tdep.c: Include "reggroups.h".
+ (i386_linux_register_reggroup_p): New function.
+ (i386_linux_init_abi): Set register_reggroup_p to
+ i386_linux_register_reggroup_p.
+ * i386-tdep.h (i386_register_reggroup_p): Declare.
+ * i386-tdep.c: Include "reggroups.h".
+ (i386_init_reggroups): New function.
+ (i386_add_reggroups): New function.
+ (i386_register_reggroup_p): New function.
+ (i386_sse_reggroup, i386_mmx_reggroup): New variables.
+ (_initialize_i386_tdep): Call i386_init_reggroups.
+ (i386_gdbarch_init): Set register_reggroup_p and add in the i386
+ specific reggroups.
+
+2002-11-09 Mark Kettenis <kettenis@gnu.org>
+
+ * infptrace.c (child_xfer_memory): Make use of the new PT_IO
+ request that's available in *BSD.
+
+ * i386-tdep.h (IS_FPU_CTRL_REGNUM): Remove.
+
+ * i387-tdep.c (i387_fill_fxsave): Use FOOFF_REGNUM instead of
+ FDOFF_REGNUM.
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (set_unwind_by_pc): Use dummy_frame_register_unwind.
+ * dummy-frame.c (find_dummy_frame): Rename
+ generic_find_dummy_frame, make static. Return the dummy frame
+ instead of the regcache.
+ (generic_find_dummy_frame): Re-implement using find_dummy_frame,
+ (cached_find_dummy_frame): New function. Use find_dummy_frame.
+ (dummy_frame_register_unwind): Rename
+ generic_call_dummy_register_unwind. Use cached_find_dummy_frame.
+ * dummy-frame.h (dummy_frame_register_unwind): Rename
+ generic_call_dummy_register_unwind.
+
+2002-11-08 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386v42mp.h: Remove file. Move its contents,
+ except the inclusion of "i386/tm-i386.h", to...
+ * config/i386/nm-i386v42mp.h: ...here.
+ * config/i386/i386v42mp.mt (TM_FILE): Set to tm-i386.h.
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (frame.o): Update dependencies.
+ * blockframe.c (current_frame, frame_obstack_alloc)
+ (frame_saved_regs_zalloc, get_current_frame)
+ (set_current_frame, create_new_frame)
+ (set_unwind_by_pc, get_next_frame)
+ (flush_cached_frames, reinit_frame_cache)
+ (frame_saved_regs_register_unwind)
+ (deprecated_generic_get_saved_register)
+ (get_prev_frame, get_frame_pc, get_frame_saved_regs)
+ (_initialize_blockframe): Move frame code from here...
+ * frame.c: ...to here. Include "gdb_obstack.h", "gdbcore.h",
+ "annotate.h" and "dummy-frame.h".
+ (_initialize_frame): New function.
+
+2002-11-08 Jim Blandy <jimb@redhat.com>
+
+ * dwarf2read.c (read_func_scope): Restore list_in_scope properly
+ when we finish a function a context.
+ * buildsym.h (outermost_context_p): New macro.
+ (Bug analyzed by David Edelsohn.)
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c: Include "dummy-frame.h".
+ (struct dummy_frame, dummy_frame_stack)
+ (generic_find_dummy_frame, deprecated_generic_find_dummy_frame)
+ (generic_pc_in_call_dummy, deprecated_read_register_dummy)
+ (generic_push_dummy_frame, generic_save_dummy_frame_tos)
+ (generic_save_call_dummy_addr, generic_pop_current_frame)
+ (generic_pop_dummy_frame, generic_fix_call_dummy)
+ (generic_fix_call_dummy, generic_call_dummy_register_unwind): Move
+ dummy frame code from here...
+ * dummy-frame.c: ...to here. New file.
+ * dummy-frame.h: New file.
+ (generic_call_dummy_register_unwind): Declare.
+ (generic_find_dummy_frame): Declare.
+ * Makefile.in (SFILES): Add dummy-frame.c.
+ (dummy-frame.o): Specify dependencies.
+ (dummy_frame_h): Define.
+ (COMMON_OBS): Add dummy-frame.o.
+ (blockframe.o): Update dependencies.
+
+2002-11-08 Jim Blandy <jimb@redhat.com>
+
+ * dwarf2read.c (read_func_scope): Restore local_symbols and
+ param_symbols after we finish the function context. (Based on a
+ patch from David Edelsohn.)
+
+2002-11-08 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c (symbol_found): New function.
+ (minsym_found): New function.
+ (decode_line_1): Separate out some code into separate functions.
+
+2002-11-08 Joel Brobecker <brobecker@gnat.com>
+
+ * i386-tdep.c (i386_frameless_signal_p): Make non static for
+ the benefit of the interix target.
+ * i386-tdep.h (i386_frameless_signal_p): Declare.
+
+2002-11-08 Andrew Cagney <ac131313@redhat.com>
+
+ * i386-tdep.h (i386_linux_orig_eax_regnum_p): Delete stray
+ declaration that snuck in from change below.
+
+2002-11-06 Andrew Cagney <cagney@redhat.com>
+
+ * i386-tdep.c (i386_mmx_regnum_p): Rename mmx_regnum_p. Update
+ all callers.
+ (i386_fp_regnum_p): New function. Use instead of FP_REGNUM_P.
+ (i386_fpc_regnum_p): New function. Use instead of FPC_REGNUM_P.
+ (i386_sse_regnum_p): New function. Use instead of SSE_REGNUM_P.
+ (i386_mxcsr_regnum_p): new function. Use instead of
+ MXCSR_REGNUM_P.
+ * i386-tdep.h (SSE_REGNUM_P): Delete macro.
+ (i386_sse_regnum_p): Declare.
+ (i386_mxcsr_regnum_p): Declare.
+ (FP_REGNUM_P, FPC_REGNUM_P): Delete macros.
+ (i386_fp_regnum_p, i386_fpc_regnum_p): Declare.
+ (IS_FP_REGNUM): Update definition.
+ (IS_FPU_CTRL_REGNUM): Update definition..
+ (IS_SSE_REGNUM): Update definition..
+ * i386v-nat.c (register_u_addr): Update.
+ * go32-nat.c (fetch_register): Update.
+ (store_register): Update.
+
+2002-11-07 Joel Brobecker <brobecker@gnat.com>
+
+ Preparation work to convert the hppa targets to multiarch partial.
+
+ * hppa-tdep.c: Add new functions replacing macro bodies from
+ config/pa/tm-hppa.h. These function will be used to initialize
+ the gdbarch structure. Import some comments from tm-hppa.h,
+ and place them where appropriate, to avoid loosing them when
+ we cleanup this file.
+ (hppa_reg_struct_has_addr): New function.
+ (hppa_inner_than): New function.
+ (hppa_stack_align): New function.
+ (hppa_pc_requires_run_before_use): New function.
+ (hppa_instruction_nullified): New function.
+ (hppa_register_byte): New function.
+ (hppa_register_virtual_type): New function.
+ (hppa_store_struct_return): New function.
+ (hppa_cannot_store_register): New function.
+ (hppa_frame_args_address): New function.
+ (hppa_frame_locals_address): New function.
+ (hppa_smash_text_address): New function.
+ (hppa_coerce_float_to_double): New function. Requires the inclusion
+ of "language.h".
+
+ * Makefile.in (hppa-tdep.o): Add dependency on language.h.
+
+ * tm-hppa.h (REG_STRUCT_HAS_ADDR): Change the definition of this
+ gdbarch-eligible macro to a call to the new associated function
+ created in hppa-tdep.c.
+ (INNER_THAN): Likewise.
+ (STACK_ALIGN): Likewise.
+ (PC_REQUIRES_RUN_BEFORE_USE): Likewise.
+ (INSTRUCTION_NULLIFIED): Likewise.
+ (REGISTER_BYTE): Likewise.
+ (REGISTER_VIRTUAL_TYPE): Likewise.
+ (STORE_STRUCT_RETURN): Likewise.
+ (CANNOT_STORE_REGISTER): Likewise.
+ (FRAME_ARGS_ADDRESS): Likewise.
+ (FRAME_LOCALS_ADDRESS): Likewise.
+ (SMASH_TEXT_ADDRESS): Likewise.
+ (COERCE_FLOAT_TO_DOUBLE): Likewise.
+ (ABOUT_TO_RETURN): Delete, as no longer used.
+
+2002-11-07 Fernando Nasser <fnasser@redhat.com>
+
+ * printcmd.c (disassemble_command): Remove obsolete function.
+ (_initialize_printcmd): Do not create disassemble command here.
+ * cli/cli-cmds.c (disassemble_command): New function. Implements
+ disassemble command.
+ (init_cli_cmds): Create disassemble command here instead.
+
+2002-11-07 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Add Daniel Jacobowitz to global maintainers list.
+
+2002-11-07 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.h (regcache_cooked_read_using_offset_hack)
+ (regcache_cooked_write_using_offset_hack): Delete declarations.
+ (register_changed): Delete declaration.
+ * regcache.c (regcache_cooked_read_using_offset_hack)
+ (regcache_cooked_write_using_offset_hack): Delete functions.
+ (cooked_xfer_using_offset_hack): Delete function.
+ (register_changed): Delete function.
+
+2002-11-07 Jim Blandy <jimb@redhat.com>
+
+ * macroscope.c: #include "complaints.h".
+ (sal_macro_scope): Cope with filenames that appear in the symtabs,
+ but not in the macro table.
+ * Makefile.in (macroscope.o): Record dependency.
+
+2002-11-07 Joel Brobecker <brobecker@gnat.com>
+
+ * PROBLEMS: Document gdb/816 (unable to read core file on alpha-osf).
+
+2002-11-07 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (deprecated_registers_fetched): Update.
+ * regcache.h (deprecated_registers_fetched): Rename
+ registers_fetched.
+ * remote-vxsparc.c (vx_read_register): Update.
+ * remote-vxmips.c (vx_read_register): Update.
+ * remote-vx68.c (vx_read_register): Update.
+ * irix5-nat.c (fetch_core_registers): Update.
+ * mipsm3-nat.c (fetch_inferior_registers): Update.
+ * sun3-nat.c (fetch_inferior_registers): Update.
+ * symm-nat.c (fetch_inferior_registers): Update.
+ * ns32knbsd-nat.c (fetch_inferior_registers): Update.
+ (fetch_core_registers): Update.
+ (fetch_kcore_registers): Update.
+ * mips-nat.c (fetch_inferior_registers): Update.
+ * corelow.c (get_core_registers): Update.
+ * a68v-nat.c (fetch_inferior_registers): Update.
+
+2002-11-06 Joel Brobecker <brobecker@gnat.com>
+
+ Put in place the framework necessary for multiarching the hppa targets.
+ * hppa-tdep.c (hppa_gdbarch_init): New function.
+ (hppa_dump_tdep): New function.
+ (_initialize_hppa_tdep): Register the hppa gdbarch init function and
+ tdep structure dumper.
+ * config/pa/tm-hppa.h (GDB_MULTI_ARCH): New macro, defined to 0
+ until the multi-arching conversion has partially been completed.
+
+2002-11-06 Andrew Cagney <ac131313@redhat.com>
+
+ * valops.c (value_assign): Merge lval_register case into
+ lval_reg_frame_relative. Use frame_register and
+ regcache_cooked_write instead of get_saved_register and
+ write_register_bytes. After flushing the register cache, try to
+ re-select the selected frame.
+
+2002-11-06 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.h (deprecated_register_valid): Rename register_valid.
+ * regcache.c: Update.
+ * ia64-aix-nat.c: Update.
+ * i386gnu-nat.c: Update.
+ * alpha-nat.c: Update.
+ * sparc-nat.c: Update.
+ * lynx-nat.c: Update.
+ * remote-mips.c: Update.
+
+2002-11-06 Joel Brobecker <brobecker@gnat.com>
+
+ * hppa-tdep.c (_initialize_hppa_tdep): Move function body
+ to end of file, to be more consistent with the pratice followed
+ by other targets.
+
+2002-11-06 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c: Include "reggroups.h" and <ctype.h>.
+ (print_float_info): Print registers in float_reggroup.
+ (print_vector_info): Print registers in vector_reggroup.
+ (default_print_registers_info): When all, print registers in
+ all_reggroup. Otherwize, print registers in general_reggroup.
+ (registers_info): Rewrite. Add support for register groups.
+ Eliminate a goto.
+
+2002-11-06 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.c (methods_info): Delete. It has been ifdeffed out for
+ ages.
+ (symtab_symbol_info): Remove eons old ifdeffed out code.
+ (_initialize_symtab): Remove prehistoric disabled 'info methods'
+ command.
+
+2002-11-06 Theodore A. Roth <troth@openavr.org>
+
+ * c-exp.y: Add missing semi-colons.
+ * f-exp.y: Add missing semi-colons.
+ * m2-exp.y: Add missing semi-colons.
+ * p-exp.y: Add missing semi-colons.
+ Add empty action to start rule to avoid a type clash error when
+ building with bison >= 1.50.
+
+2002-11-06 Jim Blandy <jimb@redhat.com>
+
+ * macrotab.h (struct macro_source_file): Doc fix.
+
+2002-11-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * varobj.c (child_exists, cplus_number_of_children): Change
+ STREQ macro references to strcmp.
+ (cplus_name_of_child): Change code to handle the fact that
+ fields are not necessarily contiguous with regards to their
+ access control. This is a fix for PR gdb/792.
+
+2002-11-05 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (GET_SAVED_REGISTER): Change to a predicate function.
+ * gdbarch.h, gdbarch.c: Regnerate.
+ * frame.h (frame_register): Declare.
+ * frame.c (frame_register): New function.
+ (get_saved_register): Test GET_SAVED_REGISTER_P before calling
+ GET_SAVED_REGISTER, otherwize call
+ generic_unwind_get_saved_register.
+ (frame_register_read): Use frame_register instead of
+ get_saved_register.
+
+2002-11-05 Elena Zannoni <ezannoni@redhat.com>
+
+ From Jim Ingham <jingham@apple.com>:
+ * event-top.c (gdb_disable_readline): New function.
+ (_initialize_event_loop): Move comment.
+
+2002-11-05 Elena Zannoni <ezannoni@redhat.com>
+
+ * event-loop.c (start_event_loop): Add comment.
+ Update copyright.
+
+2002-11-05 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (default_print_registers_info): Do not call
+ PRINT_REGISTER_HOOK.
+
+2002-11-05 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc_print_register_hook): Make static.
+ (sparc_print_registers_info): New function.
+ (sparc_do_registers_info): New function.
+ (sparclet_print_registers_info): New function.
+ (sparclet_do_registers_info): New function.
+ (do_sparc_print_registers_info): New function.
+ (sparc_print_registers): New static function, clone of infcmd.c's
+ default_print_registers_info.
+ * config/sparc/tm-sparclet.h (PRINT_REGISTER_HOOK): Delete macro.
+ (sparclet_do_registers_info): Declare.
+ (DEPRECATED_DO_REGISTERS_INFO): Re-define.
+ * config/sparc/tm-sparc.h (DEPRECATED_DO_REGISTERS_INFO):
+ Re-define.
+ (sparc_do_registers_info): Declare.
+ (PRINT_REGISTER_HOOK): Delete macro.
+ (sparc_print_register_hook): Delete declaration.
+
+2002-11-05 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux): Move chunks of code into separate
+ functions.
+ (lookup_symbol_aux_local): New function.
+ (lookup_symbol_aux_symtabs): New function.
+ (lookup_symbol_aux_psymtabs): New function.
+
+2002-11-05 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (lookup_symbol_aux): In minsym sections, don't use the
+ previous values of 'objfile' and 'block'.
+
+2002-11-05 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * values.c (value_change_enclosing_type): Set
+ enclosing_type field correctly also for the case where
+ more memory needs to be allocated.
+
+2002-11-03 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-tdep.c (i387_print_float_info): Call fputs_filtered instead
+ of puts_filtered.
+
+ * i387-tdep.c (i387_print_float_info): Replace calls to
+ register_read and deprecated_read_register_gen with calls to
+ frame_register_read, and make the necessary adjustments to the
+ surrounding code.
+
+2002-11-02 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (register_reggroup_p): Allow default value.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-11-02 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.h: Add coment indicating replacements for deprecated
+ functions.
+
+2002-11-02 Andrew Cagney <cagney@redhat.com>
+
+ * reggroups.h, reggroups.c: New files.
+ * regcache.c: Include "reggroups.h".
+ (enum regcache_dump_what): Add `regcache_dump_groups'.
+ (regcache_dump): Contract size of the "Type" column. When
+ specified, dump the register's groups.
+ (maintenance_print_register_groups): New function.
+ (_initialize_regcache): Add command `maint print register-groups'.
+ * Makefile.in (COMMON_OBS): Add reggroups.o
+ (SFILES): Add reggroups.c.
+ (reggroups_h): Define.
+ (regcache.o, gdbarch.o): Update dependencies.
+ (reggroups.o): Specify dependencies.
+ * gdbarch.sh (register_reggroup_p): Add pure multi-arch method.
+ Add opaque declaration for `struct reggroup' in generated .h file.
+ Include "reggroups.h" in generated .c file.
+ gdbarch.h, gdbarch.c: Re-generate.
+
+2002-11-02 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.h (deprecated_read_register_gen): Rename
+ read_register_gen.
+ (deprecated_write_register_gen): Rename write_register_gen.
+ * i387-tdep.c: Update.
+ * x86-64-linux-nat.c: Update
+ * wince.c: Update.
+ * thread-db.c: Update.
+ * win32-nat.c: Update.
+ * mips-tdep.c: Update.
+ * d10v-tdep.c: Update.
+ * cris-tdep.c: Update.
+ * remote-sim.c: Update.
+ * remote-rdi.c: Update.
+ * remote-rdp.c: Update.
+ * frame.c: Update.
+ * target.c: Update.
+ * blockframe.c: Update.
+ * x86-64-tdep.c: Update.
+ * xstormy16-tdep.c: Update.
+ * sh-tdep.c: Update.
+ * s390-tdep.c: Update.
+ * rs6000-tdep.c: Update.
+ * sparc-tdep.c: Update.
+ * i386-tdep.c: Update.
+ * dwarf2cfi.c: Update.
+ * regcache.c: Update.
+
+2002-11-01 Joel Brobecker <brobecker@gnat.com>
+
+ New interix-specific files:
+ * config/i386/nm-interix.h: New file.
+ * config/i386/interix.mh: New file.
+ * config/i386/interix.mt: New file.
+ * i386-interix-nat.c: New file.
+ * i386-interix-tdep.c: New file.
+
+2002-11-01 Andrew Cagney <cagney@redhat.com>
+
+ * frame.h (deprecated_generic_get_saved_register): Rename
+ generic_get_saved_register.
+ * blockframe.c (deprecated_generic_get_saved_register): Update.
+ * xstormy16-tdep.c (xstormy16_get_saved_register): Update.
+ (xstormy16_frame_saved_register): Update.
+ * sh-tdep.c (sh_gdbarch_init): Update.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
+ * ia64-tdep.c (ia64_get_saved_register): Update.
+ * cris-tdep.c (cris_gdbarch_init): Update.
+ * config/m32r/tm-m32r.h (GET_SAVED_REGISTER): Update.
+ * arm-tdep.c (arm_gdbarch_init): Update.
+
+2002-10-31 Daniel Jacobowitz <drow@mvista.com>
+
+ * lin-lwp.c (lin_lwp_resume): Remove resume_all test for !step.
+
+2002-10-31 Daniel Jacobowitz <drow@mvista.com>
+
+ * i386-linux-tdep.c (i386_linux_pc_in_sigtramp): Check for
+ trampolines in sigaction.
+
+2002-10-31 Andrew Cagney <cagney@redhat.com>
+
+ * h8300-tdep.c: Include "gdb_assert.h".
+ (h8300_print_register): Add gdbarch, file and frame parameters.
+ Use frame_read_unsigned_register to read the register's value.
+ Use fprintf_filtered to display output.
+ (h8300_print_registers_info): Replace h8300_do_registers_info.
+ (h8300_gdbarch_init): Set print_registers_info.
+
+2002-10-31 Andrew Cagney <cagney@redhat.com>
+
+ * frame.c (frame_read_unsigned_register): New function.
+ (frame_read_signed_register): New function.
+ * frame.h (frame_read_unsigned_register): Declare.
+ (frame_read_signed_register): Declare.
+
+2002-10-31 Andrew Cagney <cagney@redhat.com>
+
+ * h8500-tdep.c (h8500_print_registers_info): New static function,
+ clone of infcmd.c's default_print_registers_info.
+ (h8500_do_registers_info): New funtion.
+ (h8500_print_register_hook): Rename print_register_hook, make
+ static.
+
+ * config/h8500/tm-h8500.h: Update copyright.
+ (DEPRECATED_DO_REGISTERS_INFO): Define.
+ (h8500_do_registers_info: Declare.
+ (PRINT_REGISTER_HOOK): Delete macro.
+ (print_register_hook): Delete function.
+
+2002-10-31 Andrew Cagney <cagney@redhat.com>
+
+ * z8k-tdep.c (z8k_print_register_hook): Make static.
+ (z8k_print_registers_info): New static function, clone of
+ infcmd.c's default_print_registers_info.
+ (z8k_do_registers_info): New function. Wrap
+ z8k_print_registers_info.
+ * config/z8k/tm-z8k.h: Update copyright.
+ (PRINT_REGISTER_HOOK): Delete macro.
+ (z8k_print_register_hook): Delete declaration.
+ (DEPRECATED_DO_REGISTERS_INFO): Define.
+ (z8k_do_registers_info): Declare.
+
+2002-10-30 Joel Brobecker <brobecker@gnat.com>
+
+ * hppa-tdep.c (find_function_in_inferior): Remove this extern,
+ as this is already provided by value.h, and was actually causing
+ a compilation error because of a conflict in parameter type
+ declaration due to a missing const keyword.
+ (low_text_segment_addres): Fix a compilation warning.
+
+2002-10-29 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-linux-nat.c (mips_linux_cannot_fetch_register): Don't fetch
+ registers without a name.
+ (mips_linux_cannot_store_register): Don't store registers without
+ a name.
+
+2002-10-28 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c (find_addr_symbol): Delete. (It was already commented
+ out.)
+ * symtab.h: Delete prototype for find_addr_symbol.
+
+2002-10-26 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_DO_REGISTERS_INFO): Rename
+ DO_REGISTERS_INFO.
+ gdbarch.h, gdbarch.c: Re-generate.
+ * infcmd.c (default_print_registers_info): Update reference.
+ * mips-tdep.c (mips_gdbarch_init): Set deprecated_do_registers_info.
+ (mips_dump_tdep): Do not print DO_REGISTERS_INFO.
+ * sh-tdep.c (sh_gdbarch_init): Ditto.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
+ * h8300-tdep.c (h8300_gdbarch_init): Ditto.
+
+2002-10-26 Mark Kettenis <kettenis@gnu.org>
+
+ * x86-64-tdep.c (x86_64_init_abi): Set init_extra_frame_info to
+ cfi_init_extra_frame_info.
+ * x86-64-tdep.h (x86_64_init_extra_frame_info): Remove prototype.
+ * x86-64-linux-tdep.c (x86_64_init_extra_frame_info): Remove function.
+
+ * x86-64-tdep.c (x86_64_init_abi): Add calls to override the i386
+ target where necessary. Add more comments and remove the ones
+ that don't provide any useful information.
+
+ * i386-tdep.c (i386_frame_saved_pc): Replace call to
+ deprecated_read_register_dummy with
+ frame_unwind_unsigned_register.
+
+ * i386-tdep.c (i386_extract_struct_value_address): Use
+ regcache_raw_read_unsigned instead of
+ regcache_cooked_read_unsigned since we know that the register
+ we're reading isn't a pseudo register. Rename variable 'val' into
+ the more descriptive 'addr'.
+
+ * x86-64-tdep.c: Fix some formatting problems, mostly in comments.
+ (x86_64_push_return_address): Add comment.
+ (x86_64_pop_frame): Make static.
+ (examine_argument): Clarify comment.
+ (x86_64_skip_prologue): Make prolog_expact variable static.
+
+ * dwarf2cfi.c: Fix some formatting problems.
+ (context_cpy, read_encoded_pointer): Clarify comments.
+
+ * x86-64-tdep.c (x86_64_breakpoint_from_pc): Constify.
+ (x86_64_init_abi): Move set_gdbarch_* calls that overlap with the
+ i386 target back into x86_64_gdbarch_init. Add some comments and
+ remove meaningless ones.
+
+2002-10-25 Andrew Cagney <cagney@redhat.com>
+
+ * complaints.h (struct deprecated_complaint): Rename `struct
+ complaint'.
+ * complaints.c (complain): Update.
+ * remote-vx68.c, remote-vxmips.c, remote-vxsparc.c: Delete
+ incorrect comment indicating that "symfile.h" was being included
+ for the `struct complaint' definition.
+ * remote-vx.c: Update.
+ * objc-lang.c: Update.
+ * xcoffread.c: Update.
+ * hpread.c: Update.
+ * mdebugread.c: Update.
+ * stabsread.c: Update.
+ * dwarf2read.c: Update.
+ * dwarfread.c: Update.
+ * elfread.c: Update.
+ * coffread.c: Update.
+ * stabsread.h: Update.
+ * dbxread.c: Update.
+ * buildsym.c: Update.
+ * gdbtypes.c: Update.
+ * macrotab.c: Update.
+
+2002-10-25 Mark Kettenis <kettenis@gnu.org>
+
+ * x86-64-tdep.c (x86_64_gdbarch_init): Make a bit more similar to
+ the version in i386-tdep.c. Move set_gdbarch_* calls out into...
+ (x86_64_init_abi): ...new function.
+
+ * Makefile.in (i386v-nat.o): Add $(i386_tdep_h).
+ * i386v-nat.c: Include "i386-tdep.h".
+
+2002-10-25 Andrew Cagney <cagney@redhat.com>
+
+ * gdbtypes.c (address_space_name_to_int): Update.
+ (address_space_int_to_name): Update.
+ * gdbarch.sh (address_class_type_flags_to_name): Change to a pure
+ multi-arch predicate.
+ (address_class_name_to_type_flags): Ditto.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * MAINTAINERS: Check all warnings when h8300hms and alpha-elf.
+
+2002-10-24 Martin M. Hunt <hunt@redhat.com>
+
+ * utils.c (string_to_core_addr): Revert patch from 11 Oct.
+
+2002-10-24 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.h (INIT_SAL): Delete macro.
+ (init_sal): Export.
+ * symtab.c (init_sal): New function.
+
+ * ada-lang.c (ada_finish_decode_line_1): Change INIT_SAL macro
+ to init_sal function call.
+ (find_sal_from_funcs_and_line): Ditto.
+ (all_sals_for_line): Ditto.
+ * breakpoint.c (create_internal_breakpoint): Ditto.
+ (create_fork_vfork_event_catchpoint): Ditto.
+ (create_exec_event_catchpoint): Ditto.
+ (parse_breakpoint_sals): Ditto.
+ (watch_command_1): Ditto.
+ (handle_gnu_4_16_catch_command): Ditto.
+ (clear_command): Ditto.
+ * hppa-tdep.c (child_enable_exception_callback): Ditto.
+ * infcmd.c (run_stack_dummy): Ditto.
+ * infrun.c (process_event_stop_test): Ditto.
+ (check_sigtramp2): Ditto.
+ (step_over_function): Ditto.
+ * linespec.c (decode_line_2): Ditto.
+ (decode_line_1): Ditto.
+ * source.c (line_info): Ditto.
+ * symtab.c (find_pc_sect_line): Ditto.
+
+2002-10-24 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c (struct context)
+ (struct context_reg): Moved to dwarf2cfi.h
+ (context_alloc, frame_state_alloc, context_cpy):
+ Made extern instead of static, removed prototypes.
+ * dwarf2cfi.h (struct context)
+ (struct context_reg): New, moved from dwarf2cfi.c
+ (context_alloc, frame_state_alloc, context_cpy):
+ New prototypes.
+ * x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
+ Changed from static to extern.
+ (LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
+ (LINUX_SIGCONTEXT_FP_OFFSET)
+ (LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
+ (x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
+ (x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Several
+ set_gdbarch_*() calls now use x86-64 specific functions
+ instead of DWARF2 CFI ones.
+ * x86-64-tdep.h (x86_64_linux_in_sigtramp)
+ (x86_64_linux_frame_chain, x86_64_init_frame_pc)
+ (x86_64_init_extra_frame_info): New prototypes.
+
+2002-10-23 David Carlton <carlton@math.stanford.edu>
+
+ * linespec.c: #include "parser-defs.h".
+ Delete prototype for find_template_name_end.
+ * Makefile.in (linespec.o): Depend on $(parser_defs_h).
+
+2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ * NEWS: add recent mi fixes.
+ * varobj.c (struct varobj): Add new "updated" flag.
+ (new_variable): Default "updated" flag to 0.
+ (varobj_set_value): Set "updated" flag to 1 if value
+ changes.
+ (varobj_update): Check varobj "updated" flag before
+ comparing old and refreshed values. Fix for
+ PR gdb/702.
+
+2002-10-23 David Carlton <carlton@math.stanford.edu>
+
+ * parse.c (parse_exp_1): Use BLOCK_START.
+ * x86-64-tdep.c (x86_64_skip_prologue): Use BLOCK_END,
+ SYMBOL_BLOCK_VALUE.
+ * objc-lang.c (find_methods): Use BLOCK_START, BLOCK_END.
+
+2002-10-23 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.c: Delete cplusplus_hint.
+ Delete prototype for find_template_name_end.
+
+2002-10-23 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.h: Update comment.
+
+2002-10-23 Michael Snyder <msnyder@redhat.com>
+
+ * printcmd.c (address_info): Restore quotes in output.
+ * valops.c (value_of_local): Restore quotes in error message.
+
+2002-10-23 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.c (symbol_demangled_name): New function.
+ * symtab.h (SYMBOL_DEMANGLED_NAME): Simplify macro, by
+ turning most of it into a function.
+ (symbol_demangled_name): Export.
+
+2002-10-23 Michael Snyder <msnyder@redhat.com>
+
+ * valops.c (value_of_local): Restore quotes in error message.
+
+2002-10-23 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.c (symbol_init_language_specific): New function.
+ * symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): Simplify macro, by
+ turning most of it into a function.
+ (symbol_init_language_specific): Export.
+
+2002-10-23 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (dwarf_tag_name): Add DWARF 3 names.
+ (dwarf_attr_name): Ditto.
+ (dwarf_type_encoding_name): Ditto.
+ (scan_partial_symbols): Descend into DW_TAG_namespace entries.
+ (process_die): Handle DW_TAG_namespace,
+ DW_TAG_imported_declaration, DW_TAG_imported_module.
+ (read_namespace): New function.
+
+2002-10-22 Joel Brobecker <brobecker@gnat.com>
+
+ * configure.in: Define NEW_PROC_API on Interix too.
+ * configure: Regenerate.
+
+2002-10-21 Joel Brobecker <brobecker@gnat.com>
+
+ * configure: Regenerate using the proper version of autoconf.
+
+2002-10-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * findvar.c (read_var_value): Temporarily disable TLS code, until
+ complete TLS support is added.
+
+2002-10-21 Jim Blandy <jimb@redhat.com>
+ Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.h (address_class): Re-add LOC_THREAD_LOCAL_STATIC
+ for thread local storage locations.
+ (struct symbol): Add objfile field.
+ (SYMBOL_OBJFILE): Define.
+ * dwarf2read.c (is_thread_local): New static variable.
+ (new_symbol): If variable is in thread local fill in address class
+ and objfile appropriately.
+ (decode_locdesc): Recognize and handle DW_OP_GNU_push_tls_address
+ stack operation.
+ * printcmd.c (address_info): Print the information for thread
+ local storage variable.
+ * findvar.c (read_var_value): In case of thread local variable,
+ defer to the target vector code to compute address.
+
+2002-10-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * solib-svr4.c (svr4_fetch_objfile_link_map): New function.
+ * solib-svr4.h (svr4_fetch_objfile_link_map): Export.
+
+2002-10-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * symtab.h (address_class): Rename
+ LOC_THREAD_LOCAL_STATIC to LOC_HP_THREAD_LOCAL_STATIC.
+ * hpread.c (hpread_process_one_debug_symbol): Ditto.
+ * printcmd.c (address_info): Ditto.
+ * findvar.c (symbol_read_needs_frame, read_var_value): Ditto.
+
+2002-10-20 Mark Kettenis <kettenis@gnu.org>
+
+ * i386bsd-nat.c (i386bsd_dr_set, i386bsd_dr_get_status): Use
+ DBREG_DRX macro to acces debug registers.
+
+ * Makefile.in (i386obsd-tdep.o): New target.
+
+ * solib-sunos.c: Include "bcache.h" and "regcache.h".
+ * Makefile.in (solib-sunos.o): Add $(bcache_h) and $(regcache_h).
+
+ * configure.tgt (i[3456]86-*-openbsd*): Set gdb_target to obds.
+ * config/i386/obsd.mt: New file.
+ * i386bsd-nat.c (_initialize_i386bsd_nat): Introduce
+ i386obsd_sc_pc_offset and i386obsd_sc_sp_offset;
+ * i386obsd-nat.c (_initialize_i386obsd_nat): Set
+ i386obsd_sigtramp_start and i386obsd_sigtramp_end instead of
+ i386nbsd_sigtramp_start and i386nbsd_sigtramp_end.
+ * i386obsd-tdep.c: New file.
+
+2002-10-19 Adam Fedor <fedor@gnu.org>
+
+ * objc-exp.y (name_not_typename): Fix invalid comment.
+
+2002-10-20 Mark Kettenis <kettenis@gnu.org>
+
+ * solib-sunos.c (allocate_rt_common_objfile): Use bcache_xmalloc
+ to allocate partial syms and macro byte caches.
+
+2002-10-18 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.h: Delete 'struct source' and 'struct sourcevector'.
+
+2002-10-18 Adam Fedor <fedor@gnu.org>
+
+ * stabsread.c (find_name_end): New function.
+ (define_symbol): Use it.
+
+2002-10-18 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/alpha/nm-fbsd.h (CANNOT_STEP_BREAKPOINT): Define to 1.
+ * config/alpha/nm-linux.h (CANNOT_STEP_BREAKPOINT): Define to 1.
+ * config/alpha/nm-nbsd.h (CANNOT_STEP_BREAKPOINT): Define to 1.
+ * config/alpha/nm-osf.h (CANNOT_STEP_BREAKPOINT): Define to 1.
+
+2002-10-17 David Carlton <carlton@math.stanford.edu>
+
+ * symfile.h: Add opaque declaration for struct obstack.
+ Declare obsavestring to take a const char *.
+ * symfile.c (obsavestring): Make first argument a const char *.
+
+2002-10-16 Adam Fedor <fedor@gnu.org>
+
+ * breakpoint.c (parse_breakpoint_sals): Ignore ObjC method
+ names when matching breakpoints in current file.
+
+2002-10-16 Kevin Buettner <kevinb@redhat.com>
+
+ * dwarf2read.c (dwarf2_invalid_pointer_size): New complaint.
+ (read_tag_pointer_type): Add address class support.
+ * gdbarch.sh (ADDRESS_CLASS_TYPE_FLAGS)
+ (ADDRESS_CLASS_TYPE_FLAGS_TO_NAME, ADDRESS_CLASS_NAME_TO_TYPE_FLAGS):
+ New methods.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * gdbtypes.c (address_space_name_to_int, address_space_int_to_name)
+ (make_type_with_address_space, recursive_type_dump): Add address
+ class support.
+ * gdbtypes.h (TYPE_FLAG_ADDRESS_CLASS_1, TYPE_FLAG_ADDRESS_CLASS_2)
+ (TYPE_FLAG_ADDRESS_CLASS_ALL, TYPE_ADDRESS_CLASS_1)
+ (TYPE_ADDRESS_CLASS_2, TYPE_ADDRESS_CLASS_ALL): New defines
+
+2002-10-16 Klee Dienes <kdienes@apple.com>
+
+ * stabsread.c (read_tilde_fields): Use name[sizeof(vptr_name)-2]
+ to get the last character of a char[] buffer, not
+ name[sizeof(vptr_name)-1].
+
+2002-10-14 Adam Fedor <fedor@gnu.org>
+
+ * symtab.h: New objc_specific struct.
+ (SYMBOL_INIT_LANGUAGE_SPECIFIC): Handle ObjC.
+ (SYMBOL_DEMANGLED_NAME): Likewise.
+
+2002-10-14 Adam Fedor <fedor@gnu.org>
+
+ * symfile.c (init_filename_language_table): Add ObjC file extension.
+
+2002-10-14 Adam Fedor <fedor@gnu.org>
+
+ * utils.c (puts_filtered_tabular): New function.
+ (fprintf_symbol_filtered): Get ObjC demangled name.
+ * defs.h (puts_filtered_tabular): Declared.
+
+2002-10-14 Kevin Buettner <kevinb@redhat.com>
+
+ * c-lang.h (c_type_print_varspec_prefix): Delete.
+ * c-typeprint.c (c_type_print_varspec_prefix): Make static. Add
+ ``need_post_space'' parameter. Adjust all callers.
+
+2002-10-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/mips/nm-irix4.h (HAVE_NONSTEPPABLE_WATCHPOINT): Define to 1.
+ * config/mips/nm-irix5.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.
+ * config/mips/tm-embed.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.
+ * config/pa/nm-hppah.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.
+
+2002-10-13 Adam Fedor <fedor@gnu.org>
+
+ * source.c (print_source_lines): Update comments.
+
+2002-10-13 Adam Fedor <fedor@gnu.org>
+
+ * valops.c (value_of_local): New function.
+ (value_of_this): Use it.
+ * value.h (value_of_local): Declared.
+
+2002-10-13 Adam Fedor <fedor@gnu.org>
+
+ * parse.c: (length_of_subexp, prefixify_subexp): Handle
+ OP_MSGCALL, OP_SELECTOR, OP_NSSTRING, and OP_SELF.
+
+2002-10-12 Adam Fedor <fedor@gnu.org>
+
+ * language.c (binop_result_type): Add language_objc to case.
+ (integral_type): Likewise.
+ (character_type): Likewise.
+ (string_type): Likewise.
+ (boolean_type): Likewise.
+ (structured_type): Likewise.
+ (binop_type_check): Likewise.
+
+2002-10-11 Adam Fedor <fedor@gnu.org>
+
+ * printcmd.c (address_info): Print 'self' for ObjC.
+
+2002-10-11 Adam Fedor <fedor@gnu.org>
+
+ * expression.h: New ops OP_NSSTRING, OP_SELECTOR, OP_MSGCALL, and
+ OP_SELF.
+
+2002-10-11 Adam Fedor <fedor@gnu.org>
+
+ * language.h (CAST_IS_CONVERSION): Add language_objc.
+
+2002-10-11 Adam Fedor <fedor@gnu.org>
+
+ * defs.h (enum language): Add language_objc.
+
+2002-10-11 Klee Dienes <kdienes@apple.com>
+
+ * corefile.c (read_memory_typed_address): New function.
+ * gdbcore.h (read_memory_typed_address): Add prototype.
+ * blockframe.c (sigtramp_saved_pc): Use read_memory_typed_address
+ to read a value destined for a CORE_ADDR, not read_memory_integer.
+ * f-valprint.c (f77_get_dynamic_upperbound): Ditto.
+ (f77_get_dynamic_lowerbound): Ditto.
+
+2002-10-11 Martin M. Hunt <hunt@redhat.com>
+
+ * utils.c (string_to_core_addr): After turning string into
+ a number, convert to a CORE_ADDR using INTEGER_TO_ADDRESS
+ which will do necessary sign-extension, etc.
+
+2002-10-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * c-exp.y (THIS): Delete token and grammar rule.
+ (yylex): Don't return THIS.
+ * cp-valprint.c (vtbl_ptr_name_old): Delete.
+ (cp_is_vtbl_ptr_type): Don't check vtbl_ptr_name_old.
+ * demangle.c (cplus_markers): Update comment. Put '$'
+ first. Remove CPLUS_MARKER.
+ (_initialize_demangler): Don't call set_cplus_marker_for_demangling.
+ * jv-exp.y (THIS): Delete token and grammar rule.
+ (yylex): Don't return THIS.
+ * mips-tdep.c (mips_dump_tdep): Don't dump CPLUS_MARKER.
+ * objc-exp.y (THIS): Delete token and grammar rule.
+ (yylex): Don't return THIS.
+ * p-exp.y (yylex): Remove reference to CPLUS_MARKER.
+ * stabsread.c (vptr_name, vb_name): Replace CPLUS_MARKER with '$'.
+ (read_member_functions): Likewise for opname.
+ (read_tilde_fields): Use is_cplus_marker.
+
+ * defs.h (CPLUS_MARKER): Don't define.
+ * config/tm-sysv4.h (CPLUS_MARKER): Likewise.
+ * config/i386/xm-i386sco.h (CPLUS_MARKER): Likewise.
+ * config/mips/tm-irix3.h (CPLUS_MARKER): Likewise.
+ * config/mips/tm-irix6.h (CPLUS_MARKER): Likewise.
+ * config/rs6000/tm-rs6000.h (CPLUS_MARKER): Likewise.
+
+ * config/i386/tm-i386v4.h: Delete file.
+ * config/djgpp/fnchange.lst: Delete tm-i386v4.h.
+ * config/i386/tm-i386sol2.h: Include "i386/tm-i386.h" instead.
+ * config/i386/tm-i386v42mp.h: Include "i386/tm-i386.h" instead.
+ * config/i386/tm-ptx.h: Include "i386/tm-i386.h" instead.
+ * config/i386/i386gnu.mt (TM_FILE): Use tm-i386.h.
+ * config/i386/i386sco5.mt (TM_FILE): Likewise.
+ * config/i386/i386v4.mt (TM_FILE): Likewise.
+ * config/i386/ncr3000.mt (TM_FILE): Likewise.
+
+2002-10-10 Marko Mlinar <markom@opencores.org>
+
+ * infrun.c (resume): Convert #ifdef HAVE_NONSTEPPABLE_WATCHPOINT into C,
+ accidentially not commited 2002-10-09
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-10-09 Marko Mlinar <markom@opencores.org>
+
+ * infrun.c (resume): Convert #ifdef HAVE_NONSTEPPABLE_WATCHPOINT into C.
+ * gdbarch.sh (HAVE_NONSTEPPABLE_WATCHPOINT): Add.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-10-08 Petr Sorfa <petrs@caldera.com>
+
+ Revised and re-submitted by John Wolfe <jlw@caldera.com>
+
+ Move the Dwarf 2 abbrev table to a per-compilation-unit structure,
+ so we can work on more than one compilation unit at a time. This
+ helps prepare GDB to handle inter-CU die references.
+ * dwarf2read.c (ABBREV_HASH_SIZE): moved definition forward in
+ the code to be defined before struct comp_unit_head.
+ (comp_unit_head): Added new members - offset, cu_head,
+ begin_die, next and dwarf2_abbrevs.
+ (dwarf2_abbrevs): Removed single static var; now member of
+ struct comp_unit_head.
+ dwarf2_build_psymtabs_hard): Complete new struct comp_unit_head
+ members.
+ (psymtab_to_symtab_1): Changed to work with the new
+ struct comp_unit_head.
+ (dwarf2_read_abbrevs): Now accepts a cu_header parameter and
+ constructs the dwarf2_abbrevs[] inside the cu_header.
+ (dwarf2_empty_abbrev_table): Now expects a ptr to a
+ dwarf2_abbrev table to clean up.
+ (dwarf2_lookup_abbrev): Now accepts a cu_header parameter and
+ handling of dwarf2_abbrevs inside the cu_header.
+ (read_partial_die): Now supports the call to the new
+ dwarf2_lookup_abbrev.
+ (read_full_die): Now supports the call to the new
+ dwarf2_lookup_abbrev.
+
+2002-10-06 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in (install-gdbtk): Add missing continuation backslash to
+ insure that shell variables, such as "transformed_name" are propagated
+ to later shell statements in rule.
+
+2002-10-06 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/nm-i386sco.h: Add protection against
+ multiple-inclusion. Include "i386/nm-i386v.h".
+ (REGISTER_U_ADDR): Remove define.
+ (i386_register_u_addr): Remove prototype.
+
+2002-10-04 Michael Snyder <msnyder@redhat.com>
+
+ * m32r-stub.c (handle_exception): Make sure exception is "trap"
+ before treating it as a single-step event.
+
+2002-10-03 Adam Fedor <fedor@gnu.org>
+
+ * objc-lang.c: ARI fixes. Change string.h to gdb_string.h.
+ (objc_demangle): Remove assignment in if statements, Replace
+ free with xfree.
+ (add_msglist): Likewise.
+ (end_msglist): Likewise.
+ (complare_selectors): Likewise.
+ (selectors_info): Likewise.
+ (compare_classes): Likewise.
+ (classes_info): Likewise.
+ (print_object_command): Likewise.
+ (find_objc_msgcall_submethod): Replace PTR with void *.
+ * objc-lang.h: Remove check for __STDC__.
+
+2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * ui-out.h (ui_out_field_fmt_int): New prototype.
+ * ui-out.c (ui_out_field_fmt_int): New function allowing specification
+ of field width and alignment.
+ * stack.c (print_frame_info_base): When printing frame level, use
+ ui_out_field_fmt_int with a width of 2 and left alignment. Fix for
+ PR gdb/192
+
+2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * MAINTAINERS: Add self to Write After Approval list.
+
+2002-10-02 Elena Zannoni <ezannoni@redhat.com>
+
+ * infcmd.c (interrupt_target_command_wrapper): Delete.
+ (interrupt_target_command): Make non static.
+ (nofp_registers_info): Make static.
+ * stack.c (return_command_wrapper): Delete.
+ (return_command): Make non static.
+
+2002-10-02 Elena Zannoni <ezannoni@redhat.com>
+
+ * event-top.c (gdb_setup_readline): New function. Code moved from
+ _initialize_event_loop().
+ (_initialize_event_loop): Call gdb_setup_readline().
+
+2002-10-02 Andrew Cagney <ac131313@redhat.com>
+
+ * infrun.c (resume): Convert #ifdef CANNOT_STEP_BREAKPOINT into C.
+ * gdbarch.sh (CANNOT_STEP_BREAKPOINT): Add.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-10-02 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/778
+ * gdbtypes.c (fill_in_vptr_fieldno): Call check_typedef
+ before recursing.
+ * gnu-v3-abi.c (gnuv3_virtual_fn_field): Check return value
+ of fill_in_vptr_fieldno.
+
+2002-10-02 Elena Zannoni <ezannoni@redhat.com>
+
+ * inferior.h (registers_info, stepi_command, nexti_command,
+ continue_command, interrupt_target_command): Export from infcmd.c.
+ * frame.h (args_info, selected_frame_level_changed_hook,
+ return_command): Export from stack.c.
+ * v850ice.c (stepi_command, nexti_command, continue_command): use
+ prototypes from inferior.h.
+ * tracepoint.c (registers_info, args_info, locals_info): Use
+ prototypes from frame.h and inferior.h.
+ * Makefile.in (mi-main.o): Add dependency on frame.h.
+
+2002-10-02 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_store_struct_return): Store struct_return
+ value in register 3 adjusted by ppc_gp0_regnum.
+
+ * rs6000-tdep.c (skip_prologue): Bias alloca_reg by ppc_gp0_regnum.
+
+2002-10-02 Marko Mlinar <markom@opencores.org>
+
+ * MAINTAINERS: Add myself to the Write After Approval list.
+
+2002-10-01 Alexandre Oliva <aoliva@redhat.com>
+
+ * mips-tdep.c (mips_find_abi_section): .mdebug.abi64 is the name
+ of the section for the N64 ABI, fixed.
+
+ * config/mips/tm-irix6.h: Include solib.h.
+
+2002-10-01 Elena Zannoni <ezannoni@redhat.com>
+
+ * dwarf2read.c (dwarf_stack_op_name): Recognize more dwarf3 and
+ GNU operators.
+
+2002-10-01 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Mention that MI syntax, selected by "mi" changed to "mi2"
+ and that "mi0" syntax has been removed.
+
+2002-09-30 David Carlton <carlton@math.stanford.edu>
+
+ * Makefile.in (ppc-sysv-tdep.o): Depend on gdb_string_h.
+ * ppc-sysv-tdep.c: #include "gdb_string.h".
+ * remote-sds.c (getmessage): Add semicolon after 'retry' label to
+ pacify GCC.
+
+2002-10-01 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): For powerpc:7400, fix
+ "vrsave"'s register number.
+
+2002-09-30 Andrew Cagney <ac131313@redhat.com>
+
+ * mips-tdep.c (mips_frame_saved_pc): When a generic dummy frame,
+ use frame_unwind_signed_register to obtain the PC.
+ (mips_frame_chain): Handle a generic dummy frame.
+ (mips_init_extra_frame_info): When a generic dummy frame, don't
+ re-compute the frame base.
+ (mips_pop_frame): Handle generic dummy frames.
+ (mips_gdbarch_init): When generic dummy frames, set
+ use_generic_dummy_frames, push_dummy_frame to
+ generic_push_dummy_frame, pc_in_call_dummy to
+ generic_pc_in_call_dummy, and save_dummy_frame_top_of_stack to
+ generic_save_dummy_frame_tos.
+
+2002-09-30 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c (generic_find_dummy_frame): Rewrite. Only test
+ against TOP when TOP was explictly set.
+ (generic_push_dummy_frame): Set TOP to zero.
+
+2002-09-30 Elena Zannoni <ezannoni@redhat.com>
+
+ * event-loop.c (start_event_loop): Rename variable 'result' to
+ 'gdb_result', to avoid conflicts with upcoming intepreters changes.
+
+2002-09-30 Keith Seitz <keiths@redhat.com>
+
+ * gdb-events.sh (selected_thread_changed): New event.
+ * gdb-events.c: Regenerated.
+ * gdb-events.h: Regenerated.
+
+2002-09-30 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * MAINTAINERS: Add self to Write After Approval list.
+
+2002-09-30 Fernando Nasser <fnasser@redhat.com>
+
+ * disasm.c: New file.
+ * disasm.h: New file.
+ * mi/mi-cmd-disas.c (gdb_dis_asm_read_memory): Moved to disasm.c.
+ (compare_lines): Ditto.
+ (dump_insns): Ditto.
+ (do_mixed_source_and_assembly): Moved to disasm.c. Added uiout
+ argument.
+ (do_assembly_only): Ditto.
+ (do_disassembly): Renamed to gdb_disassembly and moved to
+ disasm.c. Sdded uiout argument.
+ * Makefile.in: Add new files. Reorder SFILES list. Update
+ dependencies. Include libgdb.a later in the insight executable.
+
+2002-09-29 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Rename bfd/elf64-alpha.c and
+ bfd/elf64-alpha-fbsd.c.
+
+2002-09-29 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Rename i386gnu-nat.c and
+ i386gnu-tdep.c.
+
+2002-09-29 Andrew Cagney <ac131313@redhat.com>
+
+ * gnu-nat.h (debug): Use __FILE__ and __LINE__ instead of
+ __FUNCTION__.
+ * gnu-nat.c (do_mach_notify_no_senders): Replace __FUNCTION__ with
+ function name.
+ (do_mach_notify_port_deleted, do_mach_notify_msg_accepted): Ditto.
+ (do_mach_notify_port_destroyed, do_mach_notify_send_once): Ditto.
+ (S_proc_setmsgport_reply, S_proc_getmsgport_reply): Ditto.
+ (S_msg_sig_post_reply): Ditto.
+
+2002-09-28 Corinna Vinschen <vinschen@redhat.com>
+
+ * sh-tdep.c (sh_use_struct_convention): Use definition according
+ to ABI.
+ (sh_push_arguments): Store in register with correct endianess.
+ (sh_default_store_return_value): Ditto.
+ (sh_gdbarch_init): Set sizeof long double to 8.
+
+2002-09-27 Mark Kettenis <kettenis@gnu.org>
+
+ * defs.h: Move inclusion of "ansidecl.h" before "gdb_locale.h".
+ Fix some whitespace problems.
+
+2002-09-27 David Carlton <carlton@math.stanford.edu>
+
+ * Makefile.in (cris-tdep.o): Depend on gdb_string_h.
+ (mcore-tdep.o): Ditto.
+ (ns32k-tdep.o): Ditto.
+ (ns32knbsd-tdep.o): Ditto.
+ (sh3-rom.o): Ditto.
+ (vax-tdep.o): Ditto.
+ * cris-tdep.c: #include "gdb_string.h"
+ * mcore-tdep.c: Ditto.
+ * ns32k-tdep.c: Ditto.
+ * ns32knbsd-tdep.c: Ditto.
+ * sh3-rom.c: Ditto.
+ * vax-tdep.c: Ditto.
+
+2002-09-27 David Carlton <carlton@math.stanford.edu>
+
+ * config/djgpp/fnchange.lst: Add entries for
+ gdb/testsuite/gdb.c++/m-static files.
+
+2002-09-27 Jim Wilson <wilson@redhat.com>
+
+ * MAINTAINERS: Add myself to the Write After Approval list.
+
+2002-09-26 Martin M. Hunt <hunt@redhat.com>
+
+ * mips-tdep.c (find_proc_desc): Initialize startaddr.
+
+
+2002-09-26 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_frame_chain): Don't chain past the dummy
+ frame.
+
+2002-09-26 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_extract_struct_value_address): Return 0.
+ (rs6000_struct_return_address): Delete variable.
+ (rs6000_store_struct_return): Update.
+ (rs6000_gdbarch_init): Set extract_struct_value_address instead of
+ deprecated_extract_struct_value_address.
+ (rs6000_frame_align): New function.
+ (rs6000_gdbarch_init): Set frame_align.
+
+2002-09-26 Andrew Cagney <ac131313@redhat.com>
+
+ From Grace Sainsbury <graces@redhat.com>:
+ * Makefile.in (gdbtk-main.o): New target.
+ (gdb.o): New target.
+ (main_h): Define.
+ (main.o): Update dependencies.
+ (gdb$(EXEEXT)): Add gdb.o.
+ (SUBDIR_GDBTK_SRCS): Add gdbtk-main.c.
+ (SUBDIR_GDBTK_ALL, SUBDIR_GDBTK_UNINSTALL): Set.
+ (SUBDIR_GDBTK_CLEAN): Set.
+ (install-gdbtk): Install the insight binary.
+ (uninstall-gdbtk): New target.
+ (all-gdbtk, clean-gdbtk): New rule.
+ * top.c (use_windows): Default to zero.
+ * main.c: Include "main.h".
+ (main): Delete.
+ (struct captured_main_args): Delete.
+ (gdb_main): New function.
+ * main.h: New file.
+ * gdb.c: New File.
+
+2002-09-25 Andrew Cagney <cagney@redhat.com>
+
+ * frame.c: Include "gdb_string.h" and "builtin-regs.h".
+ (frame_map_regnum_to_name): New function.
+ (frame_map_name_to_regnum): New function.
+ * frame.h (frame_map_name_to_regnum): Declare.
+ (frame_map_regnum_to_name): Declare.
+ * builtin-regs.c (builtin_reg_map_regnum_to_name): New function.
+ * builtin-regs.h (builtin_reg_map_regnum_to_name): Declare.
+ * parse.c: Do not include "builtin-regs.h".
+ (target_map_name_to_register): Delete function.
+ (write_dollar_variable): Use frame_map_name_to_regnum.
+ * parser-defs.h (target_map_name_to_register): Delete declaration.
+ * expprint.c: Include "frame.h".
+ (print_subexp): Use frame_map_regnum_to_name.
+ * eval.c (evaluate_subexp_standard): Use frame_map_regnum_to_name.
+ * infcmd.c (registers_info): Use frame_map_name_to_regnum.
+
+2002-09-25 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_frame_saved_pc): If the link register
+ wasn't saved, and the next innermost frame is a dummy, return the
+ dummy frame's link register.
+
+2002-09-24 Jim Blandy <jimb@redhat.com>
+
+ Fix from Paul Breed:
+ * main.c (captured_main): Add a `break' after the case for 'b'.
+
+2002-09-24 Keith Seitz <keiths@redhat.com>
+
+ * varobj.c (c_type_of_child): Use get_target_type instead
+ of TYPE_TARGET_TYPE.
+
+2002-09-22 Fernando Nasser <fnasser@redhat.com>
+
+ * source.c (get_current_or_default_source_symtab_and_line): Remove
+ function.
+ (set_default_source_symtab_and_line): New function. Attempts to
+ determine a source file to list lines from if one is not currently
+ defined.
+ (get_current_source_symtab_and_line): Initialize sal.pc and
+ sal.end fields.
+ (set_current_source_symtab_and_line): Mark argument as const.
+ * source.h: Update declarations and comments.
+ * linespec.c (decode_line_1): Replace call to removed routine above.
+ * stack.c (print_frame_info_base): Ditto.
+ * cli/cli-cmds.c (edit_command): Ditto.
+ (list_command): Ditto.
+
+2002-09-22 Fernando Nasser <fnasser@redhat.com>
+
+ * source.c (get_current_or_default_source_symtab_and_line): Initialize
+ sal.pc and sal.end fields.
+ (get_current_or_default_source_symtab_and_line): Ditto.
+ * breakpoint.c (parse_breakpoint_sals): Use correct accessor function
+ so we do not cause a new source symtab to be searched for (reverting an
+ unintentional change from the 2002-09-20 patch).
+ * scm-lang.c (scm_unpac): Ditto.
+
+2002-09-21 Andrew Cagney <cagney@redhat.com>
+
+ * complaints.c (symfile_explanations): Remove new-line from
+ ``isolated_message''.
+ (vcomplaint): When ISOLATED_MESSAGE, force a line break.
+ (clear_complaints): When a SUBSEQUENT_MESSAGE, force a line break.
+
+2002-09-20 Nick Clifton <nickc@redhat.com>
+
+ * NEWS: Announce that V850EA ISA is no longer supported.
+ * v850-tdep.c: Remove reference to bfd_mach_v850ea.
+
+2002-09-20 David Carlton <carlton@math.stanford.edu>
+
+ * Makefile.in (c-lang.o): Correct dependencies.
+ (utils.o): Gather dependencies.
+ (charset.o): Move.
+ * c-lang.c: #include "gdb_string.h"
+
+2002-09-20 Fernando Nasser <fnasser@redhat.com>
+
+ From 2002-07-02 George Helffrich <george@gly.bris.ac.uk>
+ * cli/cli-cmds.c (list_command): New function. Implements the new
+ cli edit command.
+ (_init_cli_cmds): Add new command definition.
+ * gdb.1: Document edit command.
+ * doc/gdb.texinfo: Document edit command.
+
+2002-09-20 Fernando Nasser <fnasser@redhat.com>
+
+ * source.c: Make global variables current_source_symtab and
+ current_source_line static.
+ (list_command): Moved to cli/cli-cmds.c.
+ (ambiguous_line_spec): Moved to cli/cli-cmds.c.
+ (get_first_line_listed): New accessor function.
+ (get_lines_to_list): New accessor function.
+ (get_current_source_symtab_and_line): New function. Retrieves the
+ position in the source code that we consider current.
+ (get_current_or_default_source_symtab_and_line): New function.
+ Like the above but attempts to determine a default position if one
+ is not currently defined.
+ (set_current_source_symtab_and_line): New function. Sets the source
+ code position considered current and returns the previously set one.
+ (clear_current_source_symtab_and_line): Reset stored information about
+ a current source line.
+ (_initialize_source): Remove registration for the "list" command and
+ its alias.
+ * source.h: Add declarations for the new functions above.
+ * symtab.h: Remove declarations for the global variables mentioned
+ above.
+ * breakpoint.c (parse_breakpoint_sals): Use accessor functions to
+ obtain current source line.
+ * linespec.c (decode_line_1): Ditto.
+ * macroscope.c (default_macro_scope): Ditto.
+ * scm-lang.c (scm_unpac): Ditto.
+ * stack.c (print_frame_info_base): Ditto.
+ * symfile.c (clear_symtab_users): Ditto.
+ * symtab.c (decode_line_spec): Ditto.
+ * cli/cli-cmds.c (list_command): Moved here from source.c.
+ (ambiguous_line_spec): Moved here from source.c.
+ (_init_cli_cmds): Add definition for "list" and its alias.
+ * Makefile.in: Update dependencies.
+
+2002-09-20 Corinna Vinschen <vinschen@redhat.com>
+
+ * h8300-tdep.c (h8300_examine_prologue): Match saved regs location
+ with what gcc thinks is correct.
+
+2002-09-20 Corinna Vinschen <vinschen@redhat.com>
+
+ * h8300-tdep.c (h8300_examine_prologue): Fix loop for saved regs in
+ multiple register push instruction.
+
+2002-09-19 Jim Blandy <jimb@redhat.com>
+
+ Add support for distinct host and target character sets.
+ * charset.c, charset.h: New files.
+ * c-exp.y: #include "charset.h".
+ (yylex): Convert character and string literals to the target
+ character set, before returning them as the semantic value of the
+ token.
+ * c-lang.c: #include "charset.h".
+ (c_emit_char): Use charset-specific methods to recognize
+ characters with backslash escape forms, to decide which characters
+ to print literally and which to print using numeric escape
+ sequences, and to convert target characters to host characters
+ before printing.
+ * utils.c: #include "charset.h".
+ (no_control_char_error): New function.
+ (parse_escape): Use charset-specific methods to recognize
+ backslash escapes, parse `control character' notation, and convert
+ characters from the host character set to the target character set.
+ * configure.in: Set the default host character set.
+ Check where to find iconv, and what its argument types might be.
+ * acinclude.m4 (AM_ICONV): New macro, borrowed from GCC.
+ * Makefile.in (SFILES): List charset.c.
+ (COMMON_OBS): List charset.o.
+ (charset.o): New rule.
+ (charset_h): New header dependency variable.
+ (c-lang.o, utils.o, c-exp.tab.o): Note dependency on $(charset_h).
+ (LIBICONV): New variable, set by configure.
+ (CLIBS): Include $(LIBICONV) here.
+ * aclocal.m4, config.in, configure: Regenerated.
+
+2002-09-19 Joel Brobecker <brobecker@gnat.com>
+
+ * ada-exp.y: Add missing semicolons to end rules. Fixes a
+ bison 1.35 warning.
+
+2002-09-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * gdb_mbuild.sh: New file.
+
+2002-09-19 Andrew Cagney <ac131313@redhat.com>
+
+ * objc-exp.y, objc-lang.h, objc-lang.c: Fix copyright notice.
+
+2002-09-18 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.c, c-exp.y, defs.h, elfread.c, expression.h,
+ jv-exp.y, language.c, language.h, p-exp.y, parse.c, parser-defs.h,
+ printcmd.c, source.c, stabsread.c, symfile.c, symtab.h, utils.c,
+ valops.c, value.h: Revert previous change.
+
+2002-09-18 Michael Snyder <msnyder@redhat.com>
+
+ Preliminary support for Objective-C:
+ * defs.h (language_objc): New enum value.
+ (puts_filtered_tabular): Declaration only, exported from utils.c.
+ (skip_quoted): Delete, declared in completer.h.
+ * c-exp.y: Include completer.h.
+ * p-exp.y: Ditto.
+ * jv-exp.y: Ditto.
+ * expression.h (OP_MSGCALL, OP_SELECTOR, OP_SELF, OP_NSSTRING):
+ New operator enum values.
+ * language.h (CAST_IS_CONVERSION): Test for language_objc.
+ * language.c (binop_result_type): Handle language_objc case.
+ (integral_type, character_type, string_type, boolean_type,
+ structured_type, binop_type_check): Ditto.
+ * symtab.h (SYMBOL_OBJC_DEMANGLED_NAME): Define.
+ (struct objc_specific): Add to general_symbol_info.
+ (SYMBOL_INIT_LANGUAGE_SPECIFIC): Add objc initialization.
+ (SYMBOL_DEMANGLED_NAME): Handle objc case.
+ * parser-defs.h (struct objc_class_str): New struct type.
+ (start_msglist, end_msglist, add_msglist): Declaration only,
+ exported from objc-lang.c.
+ * value.h (value_of_local, value_nsstring,
+ call_function_by_hand_expecting_type): Exported from valops.c.
+ * valops.c (find_function_addr): Export.
+ (call_function_by_hand_expecting_type): New function.
+ (value_of_local): New function.
+ * symfile.c (init_filename_language_table): Add ".m" extension
+ for Objective-C.
+ * utils.c (puts_filtered_tabular): New function.
+ (fprintf_symbol_filtered): Add objc demangling support (disabled).
+ (set/show demangle): Extend help-string to refer to ObjC.
+ * elfread.c (elf_symtab_read): Skip Objective-C special symbols.
+ * stabsread.c (symbol_reference_defined): Objective-C symbols
+ may contain colons: make allowances when scanning stabs strings
+ for colons.
+ (objc_find_colon): New function.
+ * printcmd.c (address_info): If language == objc then print
+ "self" instead of "this".
+ * parse.c (length_of_subexp): Handle new operators OP_MSGCALL,
+ OP_NSSTRING, and OP_SELF.
+ (prefixify_subexp): Ditto.
+ * source.c (print_source_lines): Mention objc in comment.
+ * breakpoint.c (parse_breakpoint_sals): Recognize Objective-C
+ method names.
+
+2002-09-18 Andrew Cagney <ac131313@redhat.com>
+
+ * complaints.h: Update copyright.
+ (struct complaints): Declare.
+ (struct complaint): Make `message' constant.
+ (internal_complaint): Declare.
+ (complaint): Declare.
+ (complaint_root): Delete declaration.
+ (symfile_complaints): Delete declaration.
+ (struct complaints): Add opaque declaration.
+ (clear_complaints): Add a complaints parameter.
+ * complaints.c: Update copyright.
+ (enum complaint_series): Define.
+ (complaint_root): Delete.
+ (struct complaints): Define.
+ (complaint_sentinel, symfile_complaint_book): New variables.
+ (symfile_explanations, symfile_complaints): New variables.
+ New variables.
+ (get_complaints): New function.
+ (vcomplaint): New function.
+ (complaint): New function.
+ (internal_complaint): New function.
+ (complain): Call vcomplain with symfile_complaint.
+ (clear_complaints): Rewrite.
+ (_initialize_complaints): Use add_setshow_command.
+ * Makefile.in (complaints.o): Update dependencies.
+ * symfile.c (syms_from_objfile): Add symfile_complaints parameter
+ to call to clear_complaints.
+ (new_symfile_objfile, reread_symbols): Ditto.
+ (oldsyms_complaint): Delete.
+ (empty_symtab_complaint, unknown_option_complaint): Delete.
+ (free_named_symtabs): Use complaint instead of complain.
+
+2002-09-18 Michael Snyder <msnyder@redhat.com>
+
+ Contributed by Apple Computer, Inc. Merged with current sources
+ by Adam Fedor <fedor@doc.com> [cagney].
+
+ * objc-lang.c: First clean-up round: comments, indentation.
+ * objc-lang.h: Ditto.
+ * objc-lang.y: Ditto.
+
+2002-09-18 Andrew Cagney <ac131313@redhat.com>
+
+ * maint.c (maintenance_internal_error): Print the parameter as the
+ error message.
+ (maintenance_internal_warning): New function.
+ (_initialize_maint_cmds): Add command `maint internal-warning'.
+
+ * defs.h (internal_warning, internal_vwarning): Declare.
+ * utils.c (struct internal_problem): Define.
+ (internal_vproblem): New function.
+ (internal_warning): New function.
+ (internal_vwarning): New function.
+ (internal_warning_problem, internal_error_problem): New variables.
+ (internal_verror): Just call internal_vproblem.
+
+2002-09-18 Michael Snyder <msnyder@redhat.com>
+
+ * objc-lang.c: New file, support for Objective-C.
+ Preliminary check-in, not yet integrated into gdb.
+ * objc-lang.h: New file.
+ * objc-exp.y: New file.
+
+2002-09-18 Andrew Cagney <ac131313@redhat.com>
+
+ * infrun.c (signal_stop_update): Convert definition to ISO C.
+ (signal_print_update): Ditto.
+ (signal_pass_update): Ditto.
+ * inflow.c (terminal_save_ours): Ditto.
+
+ * h8300-tdep.c (h8300_gdbarch_init): Use C instead of C++
+ comments.
+
+ * config/djgpp/fnchange.lst: Handle name clashes between
+ bfd/coff-tic30.c, bfd/coff-tic4x.c, bfd/coff-tic54x.c and
+ bfd/coff-tic80.c.
+
+ * i386-linux-tdep.h: Fix tipo.
+
+2002-09-18 Adam Fedor <fedor@gnu.org>
+
+ * MAINTAINERS: Add myself to the Write After Approval list.
+
+2002-09-18 Jim Blandy <jimb@redhat.com>
+
+ * dbxread.c, mdebugread.c: Revert my change of 2001-10-23. Moving
+ texthigh and textlow to reader-specific structs caused
+ objfile_relocate to miss them. This is fixable, but the work that
+ the change was supposed to prepare GDB for never got done anyway.
+
+2002-09-18 David Carlton <carlton@math.stanford.edu>
+
+ * MAINTAINERS: Alphabetize Write After Approval list.
+
+2002-09-18 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/709
+ * values.c (value_static_field): Call read_var_value.
+
+2002-09-18 Andrew Cagney <ac131313@redhat.com>
+
+ * valops.c (hand_function_call): Align the initial stack pointer
+ and STRUCT_ADDR using frame_align. When STRUCT_RETURN and
+ FRAME_ALIGN_P, use STRUCT_ADDR to obtain the called function's
+ return value.
+ * mips-tdep.c (mips_frame_align): New function.
+ (mips_gdbarch_init): Set frame_align.
+ * gdbarch.sh (FRAME_ALIGN): New method.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-09-18 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-nat.c (x86_64_regmap): Added CS and SS
+ registers.
+
+2002-09-17 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Mention that MIPS $fp behavior changed.
+ * mipsnbsd-tdep.c (mipsnbsd_cannot_fetch_register): Delete
+ reference to FP_REGNUM.
+ (mipsnbsd_cannot_store_register): Ditto.
+ * mips-linux-nat.c: Update copyright.
+ (mips_linux_cannot_fetch_register): Delete reference to FP_REGNUM.
+ (mips_linux_cannot_store_register): Ditto.
+ * mips-linux-tdep.c (supply_gregset): Ditto. Update copyright.
+ * config/mips/tm-mips.h: Update copyright.
+ (FP_REGNUM): Delete macro.
+ (MIPS_REGISTER_NAMES): Replace "fp" with "".
+ * config/mips/tm-irix6.h (FP_REGNUM): Delete macro.
+ * mips-tdep.c (mips_gdbarch_init): Set read_fp to mips_read_sp.
+ (mips_r3041_reg_names, mips_r3051_reg_names)
+ (mips_r3081_reg_names): Replace "fp" with "".
+ Fix PR gdb/480.
+
+2002-09-17 Theodore A. Roth <troth@verinet.com>
+
+ * gdb/avr-tdep.c(avr_scan_prologue): Fix bad call to
+ generic_read_register_dummy() (PR gdb/703).
+ (avr_push_return_address): #if 0 out unused vars.
+ (avr_gdbarch_init): Enable use of avr_push_return_address().
+
+2002-09-17 Michael Snyder <msnyder@redhat.com>
+
+ * m32r-stub.c (restore_and_return): Postpone restoring of PSW.
+ RTE will take care of it.
+
+2002-09-17 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.c (legacy_virtual_frame_pointer): If FP_REGNUM is
+ invalid, return SP_REGNUM.
+
+2002-09-17 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_pop_frame): Read saved values of floating
+ point registers without sign extension.
+
+2002-09-17 Andrew Cagney <cagney@redhat.com>
+
+ * blockframe.c (deprecated_read_register_dummy): Rename
+ generic_read_register_dummy.
+ * frame.c (frame_unwind_signed_register): New function.
+ (frame_unwind_unsigned_register): New function.
+ * frame.h (frame_unwind_signed_register): Declare.
+ (frame_unwind_unsigned_register): Declare.
+ (deprecated_read_register_dummy): Rename
+ generic_read_register_dummy.
+
+ * h8300-tdep.c (h8300_frame_chain): Update.
+ (h8300_frame_saved_pc): Update.
+ * xstormy16-tdep.c (xstormy16_frame_saved_pc): Update.
+ * rs6000-tdep.c (rs6000_frame_saved_pc): Update.
+ * s390-tdep.c (s390_frame_saved_pc_nofix): Update.
+ (s390_frame_chain): Update.
+ * v850-tdep.c (v850_find_callers_reg): Update.
+ (v850_frame_saved_pc): Update.
+ * m32r-tdep.c (m32r_init_extra_frame_info): Update.
+ (m32r_find_callers_reg): Update.
+ (m32r_frame_saved_pc): Update.
+ * sh-tdep.c (sh_find_callers_reg): Update.
+ (sh64_get_saved_pr): Update.
+ (sh_init_extra_frame_info): Update.
+ (sh_init_extra_frame_info): Update.
+ (sh64_init_extra_frame_info): Update.
+ (sh64_init_extra_frame_info): Update.
+ * mcore-tdep.c (mcore_find_callers_reg): Update.
+ (mcore_frame_saved_pc): Update.
+ (mcore_init_extra_frame_info): Update.
+ * i386-tdep.c (i386_frame_saved_pc): Update.
+ * ia64-tdep.c (ia64_frame_saved_pc): Update.
+ (ia64_init_extra_frame_info): Update.
+ (ia64_init_extra_frame_info): Update.
+ * d10v-tdep.c (d10v_frame_saved_pc): Update.
+ * cris-tdep.c (cris_init_extra_frame_info): Update.
+ * avr-tdep.c (avr_frame_chain): Update.
+ (avr_init_extra_frame_info): Update.
+ (avr_frame_saved_pc): Update.
+ * arm-tdep.c (arm_find_callers_reg): Update.
+ (arm_init_extra_frame_info): Update.
+ (arm_frame_saved_pc): Update.
+
+2002-09-17 Tom Tromey <tromey@redhat.com>
+
+ * c-lang.c (c_emit_char): Don't treat \0 specially unless quoter
+ is "'".
+
+2002-09-17 Corinna Vinschen <vinschen@redhat.com>
+
+ * MAINTAINERS: Remove "non multi-arched" text from h8300.
+ * h8300-tdep.c (h8300_next_prologue_insn) Renamed from
+ NEXT_PROLOGUE_INSN.
+ (h8300_examine_prologue): Call h8300_next_prologue_insn instead of
+ NEXT_PROLOGUE_INSN.
+
+2002-09-16 Joel Brobecker <brobecker@gnat.com>
+
+ * osfsolib.c: Remove file, replaced by solib-osf.c.
+ * Makefile.in: Remove compilation rules for osfsolib.c.
+
+2002-09-16 David Carlton <carlton@math.stanford.edu>
+
+ * cp-valprint.c (cp_print_class_method): Correct args to
+ check_stub_method_group.
+
+2002-09-16 Corinna Vinschen <vinschen@redhat.com>
+
+ * h8300-tdep.c: Multiarch. Drop `set machine' command in favor of
+ `set architecture'. Unify naming convention of functions.
+ (h8300_skip_prologue): Improve prologue analysis.
+ (h8300_push_arguments): Rewritten to more closely match GCC's
+ bizarre argument-passing behavior, along with the comment describing
+ said behavior.
+ * remote-hms.c (hms_regnames): Don't use NUM_REGS in definition.
+ * config/h8300/tm-h8300.h: Multiarch. Just keep stuff needed by
+ sim, remote-e7000.c, remote-hms.c and remote.c
+
+2002-09-15 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (gdb_print_insn_i386): Removed.
+ (i386_print_insn): New function.
+ (i386_gdbarch_init): Set print_insn to i386_print_insns.
+ (_initialize_i386_tdep): Don't initialize tm_print_insn and
+ tm_print_insn_info.
+
+2002-09-14 Mark Kettenis <kettenis@gnu.org>
+
+ * gdbtypes.c (check_stub_method_group): Initialize found_stub to
+ zero.
+
+2002-09-14 Corinna Vinschen <vinschen@redhat.com>
+
+ * arch-utils.c (legacy_pc_in_sigtramp): Move preprocessor expression
+ for IN_SIGTRAMP to here. Use IN_SIGTRAMP only if it's defined.
+ Guard usage of SIGTRAMP_START() by using SIGTRAMP_START_P.
+
+2002-09-13 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (child_create_inferior): Honor 'tty' command.
+
+2002-09-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.c (check_stub_method): Make static.
+ (check_stub_method_group): New function.
+ * gdbtypes.h: Update prototypes.
+ * cp-support.c: New file.
+ * cp-support.h: New file.
+
+ * stabsread.c: Include "cp-abi.h" and "cp-support.h".
+ (update_method_name_from_physname): New function.
+ (read_member_functions): Correct method names for operators
+ and v3 constructors/destructors. Separate v2 constructors and
+ destructors.
+ * Makefile.in (stabsread.o): Update dependencies.
+ (SFILES): Add cp-support.c.
+ (COMMON_OBS): Add cp-support.o.
+ (cp_support_h, cp-support.o): Add.
+
+ * cp-valprint.c (cp_print_class_method): Call
+ check_stub_method_group instead of check_stub_method. Remove
+ extraneous QUITs.
+ * p-valprint.c (pascal_object_print_class_method): Likewise.
+ * valops.c (search_struct_method): Likewise.
+ (find_method_list, value_struct_elt_for_reference): Likewise.
+
+2002-09-13 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (SIGTRAMP_END): Change to a predicate function.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-09-13 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (find_saved_register): Delete function.
+ * frame.h (find_saved_register): Delete declaration.
+ Fix PR gdb/631.
+
+Fri Sep 13 14:59:55 2002 Andrew Cagney <cagney@redhat.com>
+
+ * mips-tdep.c (read_next_frame_reg): Re-hack using
+ frame_register_unwind.
+
+Fri Sep 13 07:42:09 2002 Andrew Cagney <cagney@redhat.com>
+
+ * mips-tdep.c (mips_get_saved_register): Re-hack using
+ frame_register_unwind.
+
+2002-09-12 Joel Brobecker <brobecker@gnat.com>
+
+ * gdbarch.sh (NAME_OF_MALLOC): New variable in the architecture
+ vector. Will be useful for Interix.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * valops.c (value_allocate_space_in_inferior): Replace hard-coded
+ name of the malloc function by NAME_OF_MALLOC.
+
+2002-09-12 Joel Brobecker <brobecker@gnat.com>
+
+ * value.h (find_function_in_inferior): Add const keyword to
+ one of the parameters. Allows us to invoke this function with
+ a const char *.
+ * valops.c (find_function_in_inferior): Likewise.
+
+2002-09-12 Joel Brobecker <brobecker@gnat.com>
+
+ * exec.c (xfer_memory): Fix compilation warning with old versions
+ of GCC.
+ * tracepoint.c (trace_find_tracepoint_command): Likewise.
+
+2002-09-12 David Carlton <carlton@math.stanford.edu>
+
+ * symtab.h: Run through gdb_indent.h.
+ Add 2002 to Copyright year list.
+
+2002-09-12 Alan Modra <amodra@bigpond.net.au>
+
+ * x86-64-tdep.c (_initialize_x86_64_tdep): Don't use hard-coded
+ mach constants.
+ * MAINTAINERS: Add myself to write after approval list.
+
+2002-09-11 J. Brobecker <brobecker@gnat.com>
+
+ * osabi.c (gdb_osabi_name): Add entry for GDB_OSABI_INTERIX.
+
+2002-09-11 J. Brobecker <brobecker@gnat.com>
+
+ * osabi.h (gdb_osabi): Add new GDB_OSABI_INTERIX enum value for
+ Interix.
+
+2002-06-05 Paul N. Hilfinger <hilfingr@otisco.mckusick.com>
+
+ * procfs.c (do_detach): Clear current signal, not just fault.
+ Corrects problem with breakpoint trap signal leaking to detached
+ process on Tru64.
+
+2002-09-10 Michael Snyder <msnyder@redhat.com>
+
+ * buildsym.c (finish_block): Protect against null pointer.
+
+2002-09-10 Andrew Cagney <cagney@redhat.com>
+
+ * infcmd.c (default_print_registers_info): Send all output to
+ ``file'' instead of ``gdb_stdout''.
+
+2002-09-10 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_extract_struct_value_address): Make val a
+ LONGEST, and use signed register read (addresses are sign-
+ extended for mips).
+
+2002-09-10 Stephane Carrez <stcarrez@nerim.fr>
+
+ * event-loop.c (gdb_do_one_event): Make public.
+ * event-loop.h (gdb_do_one_event): Declare.
+
+2002-09-10 Jeff Law <law@redhat.com>
+
+ * infttrace.c (child_resume): Simplify and rework to avoid
+ TT_PROC_CONTINUE.
+
+2002-09-09 Fred Fish <fnf@intrinsity.com>
+
+ * printcmd.c (print_scalar_formatted): "len" is the number of
+ target bytes, NOT the number of target bits.
+
+2002-09-09 Elena Zannoni <ezannoni@redhat.com>
+
+ From: Emmanuel Thome' <thome@lix.polytechnique.fr>
+ * top.c (init_main): Set rl_terminal_name.
+
+2002-09-08 Aidan Skinner <aidan@velvet.net>
+
+ * ada-lang.c (ada_array_bound, ada_type_match,
+ _initialize_ada_language): Fix K&R definitions.
+ * ada-tasks.c (get_current_task): Fix K&R definitions.
+ * ada-valprint.c (adjust_type_signedness): Fix K&R definitions.
+
+2002-09-07 Christopher Faylor <cgf@redhat.com>
+
+ * MAINTAINERS: Remove CE from list of maintainership responsibilities.
+ Add XP.
+
+2002-09-06 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_register_virtual_type,
+ i386_register_convertible, i386_register_convert_to_virtual,
+ i386_register_comvert_to_raw): Use FP_REGNUM_P and SSE_REGNUM_P
+ instead of IS_FP_REGNUM and IS_SSE_REGNUM.
+ (i386_gdbarch_init): Fix comment. Add comments on calls that set
+ sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum.
+ Don't set push_arguments twice.
+
+ * i386bsd-tdep.c (i386bsd_init_abi): Set sigtramp_start and
+ sigtramp_end to i386bsd_sigtramp_start and i386bsd_sigtramp_end.
+ * i386nbsd-tdep.c (i386nbsd_init_abi): Set sigtramp_start and
+ sigtramp_end to NULL.
+ * config/i386/tm-fbsd.h (SIGTRAMP_START, SIGTRAMP_END): Remove
+ defines.
+ (i386bsd_sigtramp_start, i386_sigtramp_end): Remove prototypes.
+
+ * i386nbsd-tdep.c (i386nbsd_pc_in_sigtramp): Remove spurious
+ whitespace.
+
+ * gdbarch.sh (SIGTRAMP_START, SIGTRAMP_END): New methods.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * blockframe.c (find_pc_sect_partial_function): Convert to use
+ SIGTRAMP_START_P predicate.
+
+2002-09-05 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c (arm_init_extra_frame_info): Distinguish between
+ generic_dummy_frame method and old method. Also distinguish
+ between ARM_FP_REGNUM and THUMB_FP_REGNUM.
+ (arm_extract_return_value): Use new regcache method.
+
+ * mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
+ adjustment that doesn't conform to the ABI.
+ (mips_extract_struct_value_address): Retrieve V0_REGNUM from
+ saved regcache, not from current regcache.
+
+2002-09-05 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Update for 5.3. Add new section ``Changes since 5.3''.
+ * README: Update.
+
+2002-09-04 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * arm-tdep.c (arm_addr_bits_remove): Don't check for Thumb mode
+ if arm_apcs_32 is false.
+
+2002-09-04 Andrew Cagney <ac131313@redhat.com>
+
+ GDB 5.3 branch created.
+
+2002-09-03 Theodore A. Roth <troth@verinet.com>
+
+ * gdb/avr-tdep.c (avr_gdbarch_init): Use
+ generic_unwind_get_saved_register.
+
+2002-09-03 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (dwarf2_add_member_fn): Add the 'type'
+ argument (PR gdb/653). Update call to smash_to_method_type.
+ (read_structure_scope): Update call to dwarf2_add_member_fn.
+
+2002-09-03 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-tdep.c: Include gdb_string.h
+ * x86-64-linux-nat.c: Ditto.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ada-exp.y (yyname, yyrule): Remap global variables that appear
+ when YYDEBUG is set to 1.
+ * c-exp.y: Likewise.
+ * f-exp.y: Likewise.
+ * jv-exp.y: Likewise.
+ * m2-exp.y: Likewise.
+ * p-exp.y: Likewise.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (i386nbsd-tdep.o): Add $(solib_svr4_h) to
+ dependency list.
+ * i386nbsd-tdep.c (i386nbsdelf_init_abi): Set
+ solib_svr4_fetch_link_map_offsets to
+ nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
+ * config/i386/nbsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
+ * config/i386/nbsdaout.mh (NATDEPFILES): Remove solib.o.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Remove solib.o,
+ solib-svr4.o, and solib-legacy.o.
+ * config/i386/tm-nbsd.h: Include solib.h.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * configure.tgt (i[3456]86-*-netbsdelf*): Merge with...
+ (i[3456]86-*-netbsd*): ...this. Set gdb_target to nbsd.
+ (i[3456]86-*-openbsd*): Make this a separate entry. Add a
+ comment noting that this needs its own target configuration.
+ * config/i386/nbsd.mt: New file.
+ * config/i386/nbsdaout.mt: Remove.
+ * config/i386/nbsdelf.mt: Ditto.
+ * config/i386/tm-nbsdaout.h: Ditto.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * i386nbsd-tdep.c (i386nbsd_sigtramp_offset): New function.
+ (i386nbsd_pc_in_sigtramp): Rewrite to use i386nbsd_sigtramp_offset.
+ (i386nbsd_init_abi): Don't initialize tdep->sigtramp_start or
+ tdep->sigtramp_end.
+ (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end): Remove.
+ * config/i386/tm-nbsd.h (SIGTRAMP_START, SIGTRAMP_END)
+ (i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
+ $(i386_tdep_h), and $(nbsd_tdep_h) to dependency list.
+ * i386-tdep.h (i386bsd_init_abi): New prototype.
+ * i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
+ function declaration.
+ (_initialize_i386bsd_tdep): Don't register OS ABI handlers
+ for NetBSD-a.out or NetBSD-ELF.
+ (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
+ (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
+ (i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
+ * i386nbsd-tdep.c: ...here. Include arch-utils.h, i386-tdep.h,
+ and nbsd-tdep.h.
+ (i386nbsd_pc_in_sigtramp): New function.
+ (i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ i386nbsd_pc_in_sigtramp.
+ (_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
+ and i386nbsdelf_init_abi OS ABI handlers.
+ * config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
+ * config/i386/nbsdelf.mt (TDEPFILES): Likewise.
+
+2002-09-02 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-nat.c (dummy_sse_values): Only try to fill in the SSE
+ registers if the target really has them.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (mipsnbsd-tdep.o): Use $(nbsd_tdep_h) rather
+ than nbsd-tdep.h.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
+ list.
+ * alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
+ (alphanbsd_skip_sigtramp_frame): New functions.
+ (alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
+ alphanbsd_skip_sigtramp_frame. Set tdep->sigcontext_addr
+ to alphanbsd_sigcontext_addr.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency
+ list.
+ (nbsd-tdep.o): Add $(gdb_string_h) to dependency list.
+ * alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use
+ nbsd_pc_in_sigtramp.
+ * mipsnbsd-tdep.c: Include nbsd-tdep.h.
+ (mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp.
+ * nbsd-tdep.c: Include gdb_string.h.
+ (nbsd_pc_in_sigtramp): New function.
+ * nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype.
+ * ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function.
+ (ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ ppcnbsd_pc_in_sigtramp.
+ * shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function.
+ (shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ shnbsd_pc_in_sigtramp.
+ * sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set
+ gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp.
+ * config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
+
+2002-08-30 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * breakpoint.c (breakpoint_init_inferior): Reset the val field of
+ watchpoints to NULL.
+ (insert_breakpoints): set val field of watchpoints if NULL.
+
+
+2002-08-29 Jim Blandy <jimb@redhat.com>
+
+ * symtab.c (lookup_symbol_aux): In the cases where we find a
+ minimal symbol of an appropriate name and use its address to
+ select a symtab to read and search, use `name' (as passed to us)
+ as the demangled name when searching the symtab's global and
+ static blocks, not the minsym's name.
+
+2002-08-29 Keith Seitz <keiths@redhat.com>
+
+ * stack.c (print_frame_info_base): Always set current_source_symtab
+ and current_source_line.
+
+2002-08-29 Donn Terry <donnte@microsoft.com>
+
+ * proc-api.c (rw_table): Fix typo in #ifdef PCSHOLD (missing S).
+
+2002-08-28 Keith Seitz <keiths@redhat.com>
+
+ * stack.c (select_frame): Add FIXME concerning selected-frame
+ events.
+ (select_frame_command): Send selected-frame-level-changed
+ event notification, but only if the level actually changed.
+ (up_silently_base): Add selected-frame-level-changed event
+ notification.
+ (down_silently_base): Likewise.
+
+2002-08-28 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in: Update dependencies for all gdb/*.c files.
+
+2002-08-27 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in (osabi.o, i387-tdep.o, i386-linux-nat.o, lin-lwp.o,
+ ax-gdb.o, signals.o, jv-valprint.o, c-valprint.o, cp-abi.o):
+ Update dependencies.
+ * i387-tdep.c: Include gdb_string.h.
+ * osabi.c: Likewise.
+ * i386-linux-nat.c: Likewise.
+ * lin-lwp.c: Likewise.
+ * ax-gdb.c: Likewise.
+ * signals/signals.c: Likewise.
+ * jv-valprint.c: Likewise.
+ * p-lang.c: Likewise.
+ * c-valprint.c: Likewise.
+ * cp-abi.c: Likewise.
+
+2002-08-27 Elena Zannoni <ezannoni@redhat.com>
+
+ * cli/cli-script.h (copy_command_lines): Export.
+ * breakpoint.c: Include cli/cli-script.h.
+ * Makefile.in (breakpoint.o): Update dependencies.
+
+2002-08-26 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (insert_breakpoints): Protect all references
+ to 'process_warning'. Shorten long lines.
+
+2002-08-26 Joel Brobecker <brobecker@gnat.com>
+
+ * cli/cli-script.c (copy_command_lines): New function.
+ * defs.h (copy_command_lines): Export.
+ * testsuite/gdb.base/commands.exp: New tests for commands
+ attached to a temporary breakpoint, and for commands that
+ delete the breakpoint they are attached to.
+
+2002-08-26 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (bpstat_stop_status): Instead of copying the
+ pointer to the breakpoint commands struct, make a new copy
+ of the struct and point to that.
+ (bpstat_clear): Free the commands struct.
+ (bpstat_clear_actions): Free the commands struct.
+ (bpstat_do_actions): Free the command actions. Also execute
+ the local cleanups, instead of deleting them.
+ (delete_breakpoint): Leave the commands field of the bpstat
+ chain alone -- it will be freed later.
+
+2002-08-26 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-tdep.c (altivec_register_p): Restore function inadvertently
+ deleted in 2002-08-20 commit. This function is still used by
+ ppc-linux-nat.c.
+
+2002-08-26 Keith Seitz <keiths@redhat.com>
+
+ * gdb-events.sh: Add selected-frame-level-changed event.
+ * gdb-events.c: Regenerated.
+ * gdb-events.h: Regenerated.
+
+2002-08-26 Stephane Carrez <stcarrez@nerim.fr>
+
+ Fix PR gdb/393:
+ * inflow.c (terminal_save_ours): New function to save terminal
+ settings.
+ * inferior.h (terminal_save_ours): Declare.
+ * target.c (debug_to_terminal_save_ours): New function.
+ (cleanup_target): Defaults to_terminal_save_ours.
+ (update_current_target): Inherit to_terminal_save_ours.
+ (setup_target_debug): Set to_terminal_save_ours.
+ * target.h (target_terminal_save_ours): New to save terminal settings.
+ (target_ops): New member to_terminal_save_ours.
+ * gnu-nat.c (init_gnu_ops): Set to_terminal_save_ours.
+ * hpux-thread.c (init_hpux_thread_ops): Likewise.
+ * inftarg.c (init_child_ops): Likewise.
+ * m3-nat.c (init_m3_ops): Likewise.
+ * procfs.c (init_procfs_ops): Likewise.
+ * wince.c (init_child_ops): Likewise.
+ * win32-nat.c (init_child_ops): Likewise.
+ * sol-thread.c (init_sol_thread_ops): Likewise.
+
+2002-08-26 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_store_return_value): Undeprecate. Convert to
+ use regcache_* functions.
+ (i386_gdbarch_init): Set store_return_value instead of
+ deprecated_store_return_value.
+
+ * regcache.c (regcache_raw_write_signed,
+ regcache_raw_write_unsigned): New functions.
+ * regcache.h (regcache_raw_write_signed,
+ regcache_raw_write_unsigned): New prototypes.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (c-exp.tab.o, jv-exp.tab.o, f-exp.tab.o)
+ (m2-exp.tab.o, p-exp.tab.o, ada-exp.tab.o): Move to before the
+ source file dependencies. Cleanup corresponding generator rules.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.h (register_offset_hack): Declare.
+ (regcache_cooked_read_using_offset_hack): Declare.
+ (regcache_cooked_write_using_offset_hack): Declare.
+
+ * regcache.c (register_offset_hack): New function.
+ (regcache_cooked_read_using_offset_hack): New function.
+ (regcache_cooked_write_using_offset_hack): New function.
+ (regcache_dump): Check that the registers, according to their
+ offset, are packed hard against each other.
+ (cooked_xfer_using_offset_hack): New function.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (struct regcache_descr): Add field register_type.
+ (init_legacy_regcache_descr): Pass a pre-allocated regcache_descr
+ in as a parameter
+ (init_regcache_descr): Initialize register_type. Pass the descr
+ to init_legacy_regcache_descr. Use register_type instead of
+ REGISTER_VIRTUAL_TYPE.
+ (register_type): New function.
+ (regcache_dump): Replace REGISTER_VIRTUAL_TYPE with register_type.
+ * regcache.h (register_type): Declare.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Set store_struct_return
+ instead of deprecated_store_return_value. Fix fallout from
+ 2002-08-23 Andrew Cagney <cagney@redhat.com>.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (max_register_size): New function.
+ (init_legacy_regcache_descr): Ensure that max_register_size is
+ large enough for REGISTER_VIRTUAL_SIZE.
+ * regcache.h (max_register_size): Declare.
+
+2002-08-24 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use deprecated version of
+ store_return_value.
+ (e500_extract_return_value): Change type of valbuf pointer to
+ void.
+
+2002-08-24 Mark Kettenis <kettenis@gnu.org>
+
+ * PROBLEMS: Clarify problems with FreeBSD's compiler and suggest
+ workaround.
+
+ * valprint.c (print_longest) [CC_HAS_LONG_LONG &&
+ PRINTF_HAS_LONG_LONG]: Cast val_long to (long long) or (unsigned
+ long long) to prevent compiler warning on 64-bit systems.
+
+2002-08-23 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter.
+ (DEPRECATED_STORE_RETURN_VALUE): New method.
+ (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * values.c (set_return_value): Pass current_regcache to
+ STORE_RETURN_VALUE.
+ * arch-utils.h (legacy_store_return_value): Declare.
+ * arch-utils.c (legacy_store_return_value): New function.
+ (legacy_extract_return_value): Update parameters.
+
+ * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename
+ STORE_RETURN_VALUE.
+ * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+ * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
+
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
+ * i386-tdep.c (i386_extract_return_value): Update.
+ * arch-utils.c (legacy_extract_return_value): Update.
+ * frv-tdep.c (frv_gdbarch_init): Update.
+ * cris-tdep.c (cris_gdbarch_init): Update.
+ * d10v-tdep.c (d10v_gdbarch_init): Update.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Update.
+ * m68k-tdep.c (m68k_gdbarch_init): Update.
+ * mcore-tdep.c (mcore_gdbarch_init): Update.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Update.
+ * s390-tdep.c (s390_gdbarch_init): Update.
+ * sparc-tdep.c (sparc_gdbarch_init): Update.
+ * sh-tdep.c (sh_gdbarch_init): Update.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Update.
+ * v850-tdep.c (v850_gdbarch_init): Update.
+ * avr-tdep.c (avr_gdbarch_init): Update.
+ * ia64-tdep.c (ia64_gdbarch_init): Update.
+ * ns32k-tdep.c (ns32k_gdbarch_init): Update.
+ * vax-tdep.c (vax_gdbarch_init): Update.
+ * alpha-tdep.c (alpha_gdbarch_init): Update.
+ * arm-tdep.c (arm_gdbarch_init): Update.
+ * mips-tdep.c (mips_gdbarch_init): Update.
+ * i386-tdep.c (i386_gdbarch_init): Update.
+
+2002-08-23 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Add entries for bfd/elf32-ppcqnx.c,
+ bfd/elf32-ppc.c, bfd/elf32-sh.c and bfd/elf32-shqnx.c.
+
+2002-08-24 Mark Kettenis <kettenis@gnu.org>
+
+ * PROBLEMS: Refer to GDB 5.3 instead of 5.2. Mention FreeBSD
+ problems.
+
+2002-08-23 Joel Brobecker <brobecker@gnat.com>
+
+ * infrun.c (handle_inferior_event): Move a comment outside of a
+ function call, in order to avoid indent reformatting this part
+ of the code in an unreadable way.
+
+2002-08-23 Grace Sainsbury <graces@redhat.com>
+
+ * infrun.c (normal_stop, proceed): Remove call to print_sys_errmsg
+ when breakpoints fail. Move general breakpoint error messages to
+ insert_breakpoints.
+ * breakpoint.c (insert_breakpoints): Change warnings when
+ breakpoints are nto inserted to specify the type. Remove call to
+ memory_error when hardware breakpoints can't be inserted. Remove
+ multiple calls to warning so all messages are sent to the user at
+ once.
+ (delete_breakpoints): Make insert error messsages more explicit.
+
+2002-08-23 Daniel Jacobowitz <drow@mvista.com>
+
+ * ChangeLog: Move gdbserver entries after GDB 5.2 to
+ gdbserver/ChangeLog.
+
+2002-08-23 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c: Include "objfiles.h".
+ (i386_svr4_init_abi): Set in_solib_call_trampoline and
+ skip_trampoline_code.
+ * config/i386/tm-i386v4.h: Don't include "config/tm-sysv4.h".
+ (CPLUS_MARKER): Define to '.'.
+
+ * linux-proc.c (struct linux_corefile_thread_data): Add num_notes
+ member.
+ (linux_corefile_thread_callback): Increase args->num_notes.
+ (linux_make_note_section): Initialize thread_args.num_notes, and
+ use it to determine whether notes for any threads were created.
+
+2002-08-23 Donn Terry <donnte@microsoft.com>
+
+ * proc-api.c (rw_table): Do not include a row for PCDSTOP if the
+ corresponding macro is not defined. Likewise for PCNICE, PCSHOLD
+ and PCUNKILL.
+ (write_with_trace): Conditionalize out the switch branch handling
+ PCSHOLD if the corresponding macro is not defined. Likewise for
+ PRSABORT and PRSTOP.
+ This change will be needed by the Interix port.
+
+2002-08-22 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): use
+ write_register wherever possible instead of manipulating the
+ register bytes directly.
+ Assign VALUE_CONTENTS to a variable and use that.
+ The GPR numbers are now dependent on the architecture.
+
+2002-08-22 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (struct rs6000_framedata): Add saved_ev and
+ ev_offset fields.
+ (skip_prologue): Add support for BookE/e500 instructions.
+ (e500_extract_return_value): New function.
+ (frame_get_saved_regs): Add support for saving ev registers and
+ pseudo gpr's.
+ (e500_store_return_value): New function.
+ (rs6000_gdbarch_init): Move up default intializations of
+ deprecated_extract_return_value and store_return_value. Overwrite
+ init of store_return_value with e500 specific version.
+ Set extract_return_value for e500.
+
+2002-08-22 Elena Zannoni <ezannoni@redhat.com>
+
+ * blockframe.c (generic_call_dummy_register_unwind): Use
+ regcache_cooked_read to catch cases in which the variable is
+ stored in a pseudo register.
+
+2002-08-22 Andrew Cagney <cagney@redhat.com>
+
+ * NEWS: Mention that the i960 has been made obsolete.
+ * Makefile.in (SFILES): Delete remote-nrom.c, remote-nindy.c and
+ i960-tdep.c
+ (remote-nrom.o): Obsolete target.
+ (remote-nindy.o, i960-tdep.o): Ditto.
+ * remote-nrom.c: Make file obsolete.
+ * remote-nindy.c, remote-vx960.c: Ditto.
+ * config/i960/vxworks960.mt, config/i960/nindy960.mt: Ditto.
+ * config/i960/mon960.mt, config/i960/tm-i960.h: Ditto.
+ * config/i960/tm-vx960.h, config/i960/tm-nindy960.h: Ditto.
+ * config/i960/tm-mon960.h, i960-tdep.c: Ditto.
+ * configure.tgt: Make i960-*-bout*, i960-nindy-coff*,
+ i960-*-coff*, i960-nindy-elf*, i960-*-elf*, i960-*-nindy* and
+ i960-*-vxworks* obsolete.
+ * MAINTAINERS: Note that the i960 is obsolete.
+
+2002-08-21 Corinna Vinschen <vinschen@redhat.com
+
+ * aix-thread.c (aix_thread_detach): Disable thread debugging on
+ detach to allow reinitialization.
+
+2002-08-22 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Change the s390 target to s390-linux-gnu (second
+ attempt).
+
+2002-08-22 Jim Blandy <jimb@redhat.com>
+
+ * coffread.c (coff_symfile_read): Don't try to read the line
+ number table from disk if the image file doesn't have a symbol
+ table; we'll never actually look at the info anyway, and Windows
+ ships DLL's with bogus file offsets for the line number data.
+
+2002-08-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Figure out whether we have
+ an e500 executable.
+
+2002-08-21 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (MSYMBOL_IS_SPECIAL): Replace macro with function.
+ (MSYMBOL_SIZE): Replace macro with function.
+ (DEFAULT_MIPS_TYPE): Delete unused macro.
+ * config/mips/tm-mips.h (DEFAULT_MIPS_TYPE): Delete unused macro.
+ * config/mips/tm-embed.h (DEFAULT_MIPS_TYPE): Delete unused macro.
+
+2002-08-21 Jim Blandy <jimb@redhat.com>
+
+ * valops.c (value_cast): Simplify and correct logic for doing a
+ static cast from a pointer to a base class to a pointer to a
+ derived class.
+
+2002-08-21 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (default_print_registers_info): Replace
+ do_registers_info.
+ (registers_info): Use gdbarch_print_registers_info instead of
+ DO_REGISTERS_INFO.
+ * inferior.h (default_print_registers_info): Replace
+ do_registers_info.
+ * gdbarch.sh (PRINT_REGISTERS_INFO): New method.
+ (DO_REGISTERS_INFO): Change to a predicate function.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-08-21 Keith Seitz <keiths@redhat.com>
+
+ * gdb-events.sh: Add target-changed event.
+ * gdb-events.c: Regenerated.
+ * gdb-events.c: Regenerated.
+ * valops.c (value_assign): Add target-changed event notification
+ to inlval_register, lval_memory, and lval_reg_frame_relative.
+
+2002-08-21 Joel Brobecker <brobecker@gnat.com>
+
+ * NEWS: Add an entry regarding the improvement of the next/step
+ operation on Alpha Tru64 multi-processor machines.
+
+2002-08-21 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in: Update dependencies for mi/ cli/ and tui/
+ directores.
+ * Makefile.in: Update all _h macro definitions.
+ * Makefile.in (install-gdbtk): Move to install section.
+ (rdi-share/libangsd.a): Move to end of file.
+
+2002-08-19 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (frame_register_unwind): When a register, set addrp to
+ the register's byte.
+
+2002-08-20 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): These are only
+ used locally, so move them from the target machine header to here.
+ (mips_set_processor_type, mips_register_name, mips32_next_pc,
+ mips16_next_pc, cached_proc_desc, mips_set_processor_type):
+ Make static.
+ * config/mips/tm-mips.h (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Delete.
+
+2002-08-20 Andrew Cagney <cagney@redhat.com>
+
+ * NEWS: Mention that the Apollo line was made obsolete.
+ * configure.tgt: Make m68*-apollo*-bsd*, m68*-hp-bsd*, and
+ m68*-hp-hpux* obsolete.
+ * configure.host: Make m68*-apollo*-sysv*, m68*-apollo*-bsd*,
+ m68*-hp-bsd* and m68*-hp-hpux* obsolete.
+ * buildsym.c (make_blockvector): Make static.
+ * buildsym.h (make_blockvector): Make extern declaration obsolete.
+ * Makefile.in (HFILES_NO_SRCDIR): Remove dst.h
+ (ALLDEPFILES): Remove dstread.c.
+ (dstread.o): Obsolete make rule.
+ * dstread.c: Makefile obsolete.
+ * dst.h: Ditto.
+ * config/m68k/hp300hpux.mt: Ditto.
+ * config/m68k/hp300hpux.mh: Ditto.
+ * config/m68k/hp300bsd.mt: Ditto.
+ * config/m68k/hp300bsd.mh: Ditto.
+ * config/m68k/apollo68b.mt: Ditto.
+ * config/m68k/apollo68v.mh: Ditto.
+ * config/m68k/apollo68b.mh: Ditto.
+
+2002-08-20 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_in_return_stub): Make static.
+ (mips_gdbarch_init): Set in_solib_return_trampoline.
+ * config/mips/tm-mips.h (IN_SOLIB_RETURN_TRAMPOLINE): Delete.
+
+2002-08-20 Michael Snyder <msnyder@redhat.com>
+
+ * gdbarch.sh (IN_SOLIB_RETURN_TRAMPOLINE): Add.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * arch-utils.c, arch-utils.h (generic_in_solib_return_trampoline):
+ Add.
+ * infrun.c (IN_SOLIB_RETURN_TRAMPOLINE): Delete default definition.
+
+2002-08-20 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_skip_stub, mips_in_call_stub): Make static.
+ (mips_gdbarch_init): Set skip_trampoline_code,
+ in_solib_call_trampoline.
+ * config/mips/tm-mips.h (REGISTER_NAME): Delete.
+ (IN_SOLIB_CALL_TRAMPOLINE, SKIP_TRAMPOLINE_CODE): Delete.
+
+2002-08-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-tdep.h (struct gdbarch_tdep): Add ev registers.
+
+ * rs6000-tdep.c (rs6000_register_virtual_type): Return 64 bit
+ vector type for ev registers.
+ (e500_pseudo_register_read): New function.
+ (e500_pseudo_register_write): New function.
+ (e500_dwarf2_reg_to_regnum): New function.
+ (PPC_UISA_NOFP_SPRS): New macro.
+ (PPC_EV_REGS): New macro.
+ (PPC_GPRS_PSEUDO_REGS): New macro.
+ (registers_e500): New register set for e500.
+ (variants): Add e500 variant.
+ (rs6000_gdbarch_init): Move setting of pc, sp, fp regnums to
+ before setting architectural dependent variations. Initialize ev
+ registers numbers. Add case for e500 architecture. Set the
+ number of pseudo registers.
+
+2002-08-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c: Clean up comments.
+
+2002-08-20 Andrew Cagney <cagney@redhat.com>
+
+ * h8300-tdep.c: Re-indent file.
+
+2002-08-20 Jim Blandy <jimb@redhat.com>
+
+ * Makefile.in (LDFLAGS): Allow the configure script to establish a
+ default for this.
+
+2002-08-20 Keith Seitz <keiths@redhat.com>
+
+ * breakpoints.c (watch_command_1): Use internal breakpoint
+ when setting a watchpoint_scope breakpoint.
+
+2002-08-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdbtypes.c (build_builtin_type_vec64): Add name to type.
+ (build_builtin_type_vec64i): Ditto.
+ (build_builtin_type_vec128): Ditto.
+ (build_builtin_type_vec128i): Ditto.
+
+2002-08-19 Michael Snyder <msnyder@redhat.com>
+
+ * config/mips/tm-mips.h (ELF_MAKE_MSYMBOL_SPECIAL): Delete.
+ (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Change into functions.
+ (FIX_CALL_DUMMY, PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME,
+ POP_FRAME, INIT_EXTRA_FRAME_INFO): Delete.
+ (CALL_DUMMY_START_OFFSET, CALL_DUMMY_BREAKPOINT_OFFSET,
+ CALL_DUMMY_ADDRESS): Delete.
+ * mips-tdep.c (mips_elf_make_msymbol_special, mips_msymbol_size,
+ mips_msymbol_is_special, mips_fix_call_dummy): New functions.
+ (mips_gdbarch_init): Set elf_make_msymbol_special, pop_frame,
+ push_dummy_frame, fix_call_dummy, init_extra_frame_info,
+ push_return_address.
+ (mips_register_raw_size, mips_eabi_use_struct_convention,
+ mips_n32n64_use_struct_convention, mips_o32_use_struct_convention,
+ mips_o32_reg_struct_has_addr, mips_frame_saved_pc, mips_frame_chain,
+ mips_init_extra_frame_info, mips_eabi_push_arguments,
+ mips_n32n64_push_arguments, mips_push_return_address,
+ mips_push_dummy_frame, mips_pop_frame, mips_skip_prologue,
+ mips_breakpoint_from_pc, mips_call_dummy_address): Make static.
+
+2002-08-19 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_frame_num_args): New function.
+ (mips_gdbarch_init): Set frame_chain, frameless_function_invocation,
+ frame_saved_pc, frame_args_address, frame_locals_address,
+ frame_num_args, and frame_args_skip.
+ * config/mips/tm-mips.h (FRAME_CHAIN, FRAMELESS_FUNCTION_INVOCATION,
+ FRAME_SAVED_PC, FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS,
+ FRAME_NUM_ARGS, FRAME_ARGS_SKIP): Delete.
+ * config/mips/tm-mipsv4.h (FRAME_CHAIN_VALID): Delete.
+
+2002-08-20 Michael Snyder <msnyder@redhat.com>
+
+ * config/mips/tm-mips.h (STORE_STRUCT_RETURN): Delete.
+ (EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
+ * mips-tdep.c (mips_store_struct_return): New function.
+ (mips_extract_struct_value_address): New function.
+ (mips_gdbarch_init): Set store_struct_return and
+ extract_struct_value_address.
+
+2002-08-20 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (dwarf2_build_psymtabs): Check that
+ dwarf_line_offset is nonzero before creating dwarf_line_buffer.
+ (read_file_scope): Check that line_header is nonzero before
+ decoding macro information.
+
+2002-08-20 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.h (FP_REGNUM_P): Change such that we don't incorrectly
+ flag the general-purpose registers as floating-point on targets
+ that don't support the floating-point registers.
+
+2002-08-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (altivec_register_p): Delete.
+ (rs6000_do_altivec_registers): Delete.
+ (rs6000_altivec_registers_info): Delete.
+ (rs6000_do_registers_info): Delete.
+ (_initialize_rs6000_tdep): Remove command 'info powerpc altivec'.
+ (rs6000_gdbarch_init): Remove setting of do_registers_info.
+
+2002-08-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * infcmd.c (do_registers_info): Print vector registers in hex
+ format only.
+ (print_vector_info): Check that printing registers
+ makes sense.
+ (print_float_info): Ditto.
+
+2002-08-20 Andrew Cagney <ac131313@redhat.com>
+
+ * mips-tdep.c (mips_gdbarch_init): Update.
+ (mips_o32_extract_return_value): Rewrite.
+ (mips_o32_store_return_value): Rewrite.
+ (mips_o32_xfer_return_value): New function.
+ (mips_xfer_register): Tweak debug print message. Allow for
+ buf_offset when dumping the value transfered.
+
+2002-08-20 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mips/tm-nbsd.h (MIPS_DEFAULT_ABI): Delete.
+ * config/mips/tm-linux.h (MIPS_DEFAULT_ABI): Delete.
+ * config/mips/tm-irix5.h (MIPS_DEFAULT_ABI): Delete.
+ * config/mips/tm-irix6.h (MIPS_DEFAULT_ABI): Delete.
+ * mips-tdep.c (mips_gdbarch_init) [MIPS_DEFAULT_ABI]: Delete code.
+
+2002-08-14 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_frame_chain): Check for call-dummy frames.
+
+2002-08-19 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (struct reg): Add field to indicate a pseudo
+ register.
+ (P): New macro to define a register as a pseudo register.
+ (R, R4, R8, R16, FR32, R64, R0): Updated.
+ (struct variant): Add new fields for number of pseudo registers
+ and number of total registers.
+ (tot_num_registers): New macro replacing....
+ (num_registers): ...deleted macro.
+ (num_registers): New function.
+ (num_pseudo_registers): New function.
+ (variants): Update all variants to intialize new fields correctly.
+ Postpone initialization of number of pseudo regs and real regs.
+ (init_variants): New function.
+ (rs6000_gdbarch_init): Initialize variants. Update calculation of
+ registers offsets.
+
+2002-08-19 David Carlton <carlton@math.stanford.edu>
+
+ * valops.c (search_struct_field): Change error message to treat
+ return value of 0 from value_static_field as meaning that field is
+ optimized out.
+ (value_struct_elt_for_reference): Ditto.
+ * values.c (value_static_field): Treat an unresolved location the
+ same as a nonexistent symbol. Fix PR gdb/635.
+ * gnu-v2-abi.c (gnuv2_value_rtti_type): Eliminate test for being
+ enclosed. Fix PR gdb/574.
+ * MAINTAINERS: Add self to Write After Approval list.
+
+2002-08-19 Andrew Cagney <ac131313@redhat.com>
+
+ * mips-tdep.c (mips_xfer_register): New function.
+ (mips_n32n64_extract_return_value): Rewrite.
+ (mips_gdbarch_init): For N32 and N64, set extract_return_value
+ instead of deprecated_extract_return_value.
+
+2002-08-19 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (TDEP): Delete macro.
+ (branch_dest): Replace use of TDEP macro with its body.
+ (rs6000_pop_frame): Ditto.
+ (rs6000_push_arguments): Ditto.
+ (rs6000_skip_trampoline_code): Ditto.
+ (rs6000_frame_saved_pc): Ditto.
+ (rs6000_frame_chain): Ditto.
+ (rs6000_register_name): Ditto.
+ (rs6000_register_byte): Ditto.
+ (rs6000_register_raw_size): Ditto.
+ (rs6000_register_virtual_type): Ditto.
+ (rs6000_register_convertible): Ditto.
+ (rs6000_convert_from_func_ptr_addr): Ditto.
+
+2002-08-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/mips/tm-linux.h (REALTIME_LO, REALTIME_HI): Define
+ conditionally.
+ (JB_PC, JB_ELEMENT_SIZE): Rename to MIPS_LINUX_JB_PC and
+ MIPS_LINUX_JB_ELEMENT_SIZE.
+ * mips-linux-tdep.c (supply_gregset, fill_gregset): Use alloca
+ for MAX_REGISTER_RAW_SIZE arrays.
+ (mips_linux_get_longjmp_target): Use MIPS_LINUX_JB_PC and
+ MIPS_LINUX_JB_ELEMENT_SIZE.
+
+2002-08-19 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * i387-tdep.c (i387_print_float_info): Fix typo in comment.
+
+2002-08-19 Aidan Skinner <aidan@velvet.net>
+
+ * Makefile.in (SFILES): Add ada-exp.y ada-lang.c ada-typeprint.c
+ ada-valprint.c ada-tasks.c.
+ (YYFILES): Add ada-exp.y.
+ (ada-exp.tab.c ada-lex.c ada-lang.o): New target.
+ (ada-tasks.o ada-typeprint.o ada-valprint.o): New target.
+ (ada-exp.tab.o): New target.
+
+2002-08-18 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (regcache_xfer_part): New function.
+ (regcache_raw_read_part): New function.
+ (regcache_raw_write_part): New function.
+ (regcache_cooked_read_part): New function.
+ (regcache_cooked_write_part): New function.
+ * regcache.h (regcache_raw_read_part): Declare.
+ (regcache_raw_write_part): Declare.
+ (regcache_cooked_read_part): Declare.
+ (regcache_cooked_write_part): Declare.
+
+2002-08-18 Daniel Jacobowitz <drow@mvista.com>
+
+ * remote.c (remote_open_1): Add async_p.
+ (remote_async_open_1): Delete.
+ (open_remote_target): Delete.
+ (remote_open, extended_remote_open): Update calls to remote_open_1.
+ (remote_async_open, extended_remote_async_open): Call
+ remote_open_1 instead of remote_async_open_1.
+
+2002-08-19 Mark Kettenis <kettenis@gnu.org>
+
+ * blockframe.c: Fix a few coding standard violations.
+
+2002-08-19 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/nm-i386sco5.h (START_INFERIOR_TRAPS_EXPECTED): Moved
+ here from ...
+ * config/i386/tm-i386sco5.h: ... here. File removed.
+ * config/i386/i386sco5.mt (TM_FILE): Set to tm-i386v4.h.
+
+ * config/i386/nm-i386v.h (START_INFERIOR_TRAPS_EXPECTED): New define.
+ * config/i386/i386aout.mt (TDEPFILES): Add i387-tdep.o
+ (TM_FILE): Set to tm-i386.h.
+ * config/i386/i386v.mt (TM_FILE): Set to tm-i386.h.
+ * config/i386/tm-i386v.h: Remove file.
+ * config/i386/tm-ptx.h [!SEQUENT_PTX4]: Include "i386/tm-i386.h"
+ instead of "i386/tm-i386v.h".
+ (START_INFERIOR_TRAPS_EXPECTED): Remove define.
+ * config/i386/tm-symmetry: Include "i386/tm-i386.h" instead of
+ "i386/tm-i386v.h".
+ (START_INFERIOR_TRAPS_EXPECTED): Remove define.
+ * config/i386/tm-vxworks.h: Include "i386/tm-i386.h" instead of
+ "i386/tm-i386.h".
+
+2002-08-18 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/nm-i386v.h: Add protection against
+ multiple-inclusion.
+ (i386_register_u_addr): Remove prototype.
+ (register_u_addr): New prototype.
+ (REGISTER_U_ADDR): Redefine accordingly.
+ * i386v-nat.c: Improve several comments.
+ (i386_register_u_addr): Change signature and rename to
+ register_u_addr. Use FP_REGNUM_P. Rewrite slightly to get rid of
+ ubase variable.
+
+2002-08-18 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mips/tm-mips.h (STORE_RETURN_VALUE): Delete macro.
+ (DEPRECATED_EXTRACT_RETURN_VALUE): Delete macro.
+ * mips-tdep.c (mips_gdbarch_init): Set store_return_value and
+ deprecated_extract_return_value.
+ (mips_o32_push_arguments, mips_o64_push_arguments): Clone and
+ rename mips_o32o64_push_arguments.
+ (mips_gdbarch_init): Update.
+ (mips_extract_return_value): Delete.
+ (mips_o32_extract_return_value): Clone mips_extract_return_value.
+ (mips_o64_extract_return_value): Clone mips_extract_return_value.
+ (mips_eabi_extract_return_value): Clone mips_extract_return_value.
+ (mips_n32n64_extract_return_value): Clone
+ mips_extract_return_value.
+ (mips_store_return_value): Delete.
+ (mips_o32_store_return_value): Clone mips_store_return_value.
+ (mips_o64_store_return_value): Clone mips_store_return_value.
+ (mips_eabi_store_return_value): Clone mips_store_return_value.
+ (mips_n32n64_store_return_value): Clone mips_store_return_value.
+
+2002-08-18 Aidan Skinner <aidan@velvet.net>
+
+ * ada-lang.c: Use gdb_string.h instead of <string.h>.
+ * ada-typeprint.c: Use gdb_string.h instead of <string.h>.
+
+2002-08-18 Aidan Skinner <aidan@velvet.net>
+
+ * ada-lang.c: Run through gdb_indent.sh.
+ * ada-lang.h: Run through gdb_indent.sh.
+ * ada-tasks.c: Run through gdb_indent.sh.
+ * ada-typeprint.c: Run through gdb_indent.sh.
+ * ada-valprint.c: Run through gdb_indent.sh.
+
+2002-08-18 Andrew Cagney <ac131313@redhat.com>
+
+ * osabi.c (gdbarch_init_osabi): Don't complain about an unknown
+ ABI.
+
+2002-08-18 Mark Kettenis <kettenis@gnu.org>
+
+ * i386b-nat.c [FETCH_INFERIOR_REGISTERS]: Remove dead code.
+
+ * config/i386/nm-i386bsd.h (FLOAT_INFO): Remove redundant #undef.
+ * i386b-nat.c [FLOAT_INFO]: Remove dead code.
+
+ * i386-tdep.c (i386_do_pop_frame, i386_store_return_value): Call
+ write_register_gen instead of write_register_bytes.
+
+ * NEWS: Mention that the i[3456]-*mach3*, i[3456]-*-mach* and
+ i[3456]-*-osf1mk* configurations have been made obsolete.
+ * configure.host: Make i[3456]86-*-mach3*, i[3456]86-*mach* and
+ i[3456]86-*-osf1mk* hosts obsolete.
+ * confighure.tgt: Make i[3456]86-*-mach3*, i[3456]86-*-osf1mk*
+ targets obsolete.
+ * config/i386/i386mach.mh, config/i386/nm-i386mach.h,
+ config/i386/xm-i386mach.h, config/i386/i386m3.mh,
+ config/i386/i386m3.mt, config/i386/nm-m3.h,
+ config/i386/tm-i386m3.h, config/i386/xm-i386m3.h,
+ config/i386/i386mk.mh, config/i386/i386mk.mt,
+ config/i386/tm-i386mk.h, config/i386/xm-i386mk.h: Make files
+ obsolete.
+ * i386mach-nat.c, i386m3-nat.c: Make files obsolete.
+ * Makefile.in (ALLDEPFILES): Remove i386mach.c i386m3-nat.c
+ (i386mach-nat.o, i386m3-nat.o):Make targets obsolete.
+
+2002-08-18 Andrew Cagney <ac131313@redhat.com>
+
+ * config/pa/tm-hppa.h (hppa_store_return_value): Declare.
+ (hppa_value_returned_from_stack): Declare.
+ (hppa_extract_return_value): Declare.
+ * config/pa/hppa.mt: New file.
+ * configure.tgt: Recognize hppa*-*-*.
+ * MAINTAINERS: Change HPPA target to hppa-elf. Still broken.
+
+2002-08-18 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Fix typo in
+ comment.
+
+2002-08-17 Mark Kettenis <kettenis@gnu.org>
+
+ * top.c (gdb_rl_operate_and_get_next): Make sure
+ operate-and-get-next functions correctly even when the history
+ list is completely filled.
+
+2002-08-18 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Target Instruction Set Architectures): Rename
+ Target/Architectures. Replace vax-dec-vms5.5 with vax-netbsd.
+ Replace s390-linux with s390-linux-gnu. Remove i386-aout,
+ mcore-pe, mips64-elf, sparc64-elf. Remove i586-pc-msdosdjgpp,
+ already listed under Host/Native.
+
+ * configure.tgt: Combine i[3456]86-*-coff*, i[3456]86-*-elf*,
+ i[3456]86-*-pe*, and i[3456]86-*-aout* into i[3456]86-*-*. Add
+ mips*-*-*.
+
+2002-08-17 Andrew Cagney <ac131313@redhat.com>
+
+ * config/ia64/ia64.mt: New file.
+ * config/alpha/alpha.mt: New file.
+ * MAINTAINERS: Change the alpha target to alpha-elf and IA-64 to
+ ia64-linux-gnu. Mention that ia64-elf is broken.
+ * configure.tgt: Add alpha*-*-* and ia64*-*-* patterns.
+
+2002-08-17 Mark Kettenis <kettenis@elgar.kettenis.dyndns.org>
+
+ * i386-tdep.c (i386_svr4_init_abi, i386_nw_init_abi): Use
+ generic_func_frame_valid instead of func_frame_valid.
+
+2002-08-16 Joel Brobecker <brobecker@gnat.com>
+
+ * alpha-osf1-tdep.c (alpha_osf1_init_abi): Unfortunately,
+ procfs appears to be broken when debugging on multi-processor
+ machines. So enable software single stepping in order to avoid
+ using the procfs interface to do next/step operations, using
+ internal breakpoints instead.
+
+ * infrun.c (handle_inferior_event): Readjust the stop_pc by
+ DECR_PC_AFTER_BREAK when hitting a single step breakpoint, to
+ make this pc address equal to the value it would have if the
+ system stepping capability was used. Also set a new flag used
+ to ensure that we don't readjust the PC one more time later.
+
+ * breakpoint.c (bpstat_stop_status): Do not adjust the PC
+ address by DECR_PC_AFTER_BREAK when software single step is
+ in use for this architecture, as this has already been taken
+ care of in handle_inferior_event().
+
+2002-08-16 Joel Brobecker <brobecker@gnat.com>
+
+ * infrun.c (handle_inferior_event): Minor reformatting, to make
+ a rather long condition expression easier to read.
+
+2002-08-16 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (gdbtk.o): Move to end of file.
+ (gdbtk-bp.o, gdbtk-cmds.o): Ditto.
+ (gdbtk-hooks.o, gdbtk-register.o): Ditto.
+ (gdbtk-stack.o, gdbtk-varobj.o): Ditto.
+ (gdbtk-wrapper.o, gdbres.o): Ditto.
+
+2002-08-16 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (copying.o): Separate out compile rule.
+ (hpux-thread.o, procfs.o, signals.o): Ditto.
+ (v850ice.o, z8k-tdep.o): Ditto.
+ (tui-file.o): Move to TUI section.
+ (xdr_ptrace.o, xdr_rdb.o, xdr_ld.o): Move to separate section.
+ (nindy.o, Onindy.o, ttyflush.o): Move to separate section.
+
+2002-08-16 Joel Brobecker <brobecker@gnat.com>
+
+ * i386-tdep.c (i386_pe_skip_trampoline_code): renamed from
+ skip_trampoline_code, for better namespace-proofing.
+
+ * i386-tdep.h (i386_pe_skip_trampoline_code): Add declaration.
+
+2002-08-16 Joel Brobecker <brobecker@gnat.com>
+
+ * config/i386/tm-cygwin.h: Remove some "#if 0"'ed macros.
+
+2002-08-16 Joel Brobecker <brobecker@gnat.com>
+
+ * infrun.c (handle_inferior_event): When receiving a SIGTRAP
+ signal, check whether we hit a breakpoint before checking for a
+ single step breakpoint. Otherwise, GDB fails to notice that a
+ breakpoint has been hit when stepping onto a breakpoint.
+
+2002-08-16 Keith Seitz <keiths@redhat.com>
+
+ * gdb-events.sh (clear_gdb_event_hooks): New function.
+ * gdb-events.c: Regenerate.
+ * gdb-events.h: Regenerate.
+
+2002-08-16 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.c (bpstat_stop_status): Rename not_a_breakpoint to
+ not_a_sw_breakpoint.
+ * breakpoint.h (bpstat_stop_status): Add parameter names.
+
+2002-08-16 Grace Sainsbury <graces@redhat.com>
+
+ * remote.c (remote_insert_hw_breakpoint)
+ (remote_remove_hw_breakpoint): Fix calculation of length field
+ for Z-packet.
+
+2002-08-15 Michael Snyder <msnyder@redhat.com>
+
+ * irix5-nat.c (supply_gregset): Allocate plenty-big buffer
+ (32 bytes) instead of using MAX_REGISTER_RAW_SIZE.
+ (supply_fpregset): Ditto.
+
+ * config/mips/tm-mips.h (REGISTER_CONVERT_TO_VIRTUAL,
+ REGISTER_CONVERT_TO_RAW, REGISTER_CONVERTIBLE,
+ MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE): Delete.
+ (TARGET_READ_SP): Delete.
+ (DO_REGISTERS_INFO): Delete.
+ (FUNCTION_START_OFFSET, IN_SIGTRAMP, REGISTER_VIRTUAL_SIZE):
+ Delete.
+ (REGISTER_CONVERT_FROM_TYPE, REGISTER_CONVERT_TO_TYPE): Convert
+ from macros to functions.
+
+ * mips-tdep.c (mips_gdbarch_init): Set the above in the gdbarch.
+ (mips_register_convertible, mips_register_convert_to_virtual,
+ mips_register_convert_to_raw): Make static.
+ (mips_read_sp): New function.
+ (mips_gdbarch_init): Set gdbarch read_sp to mips_read_sp.
+ (mips_do_registers_info): Make static.
+ (mips_gdbarch_init): Insert mips_do_registers_info into gdbarch.
+ (in_sigtramp): Make static, rename to mips_pc_in_sigtramp.
+ (mips_register_convert_from_type, mips_register_convert_to_type):
+ New functions.
+ (mips_gdbarch_init): Set up function_start_offset,
+ register_virtual_size, pc_in_sigtramp.
+
+2002-08-15 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (vector_info): New function.
+ (_initialize_infcmd): Add command "info vector".
+ (print_vector_info): New function.
+
+ * gdbarch.sh (PRINT_VECTOR_INFO): New method
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-08-15 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (do_registers_info): Rename parameter ``fpregs'' to
+ ``print_all''. Only print vector registers when ``print_all''.
+
+2002-08-15 Andrew Cagney <ac131313@redhat.com>
+
+ * i387-tdep.h (i387_print_float_info): Add `args' parameter.
+ * i387-tdep.c (i387_print_float_info): Add `args' parameter.
+
+ * gdbarch.sh (PRINT_FLOAT_INFO): Change to a predicate method.
+ Add `args' parameter.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * arm-tdep.c (arm_print_float_info): Add the parameter `args'.
+
+ * infcmd.c (float_info): Call print_float_info.
+ (print_float_info): New function. By default, print the
+ floating-point registers.
+
+ * arch-utils.h (default_print_float_info): Delete declaration.
+ * arch-utils.c (default_print_float_info): Delete function.
+
+2002-08-16 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/nm-i386v.h (FLOAT_INFO): Remove already commented
+ out define.
+
+ * i387-tdep.c (i387_print_float_info): Add comment about ignoring
+ FRAME.
+
+ * NEWS: Mention that the i[3456]-*-aix target has been made obsolete.
+ * configure.host: Make i[3456]86-*-aix host obsolete.
+ * configure.tgt: Make i[3456]86-*-aix target obsolete.
+ * config/i386/i386aix.mh, config/i386/i386aix.mt,
+ config/i386/nm-i386aix.h, condig/i386/tm-i386aix.h,
+ config/i386/xm-i386aix.h: Make files obsolete.
+ * i386aix-nat.c: Make file obsolete.
+ * Makefile.in (ALLDEPFILES): Remove i386aix-nat.c.
+ (i386aix-nat.o): Make target obsolete.
+
+ * config/i386/nm-gnu.h: Removed.
+ * config/i386/nm-i386gnu.h: New file.
+ (THREAD_STATE_FLAVOR, THREAD_STATE_SIZE,
+ THREAD_STATE_SET_TRACED, THREAD_STATE_CLEAR_STATE, ATTACH_DETACH):
+ Moved here from ...
+ * config/i386/tm-i386gnu.h: ... here. Removed.
+ * config/i386/xm-i386gnu.h: Removed.
+ * config/i386/i386gnu.mh (XM_FILE): Set to xm-i386.h.
+ (NAT_FILE): Set to nm-i386gnu.h.
+ * config/i386/i386gnu.mt (TDEPFILES): Add i386gnu-tdep.o.
+ * i386-tdep.c: New file.
+ * Makefile.in (ALLDEPFILES): Add i386gnu-nat.c and i386gnu-tdep.c.
+ (i386gnu-tdep.o): Specify dependencies.
+
+2002-08-15 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386sco5.h: Include "i386/tm-i386v4.h" instead of
+ "i386/tm-i386.h", "i386/tm-i386v.h" and "config/tm-sysv.h".
+ Adjust a few comments to reflect reality a bit closer.
+ (KERNEL_U_SIZE, TARGET_HAS_HARDWARE_WATCHPOINTS,
+ TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_CONTINUEABLE_WATCHPOINT,
+ HAVE_STEPPABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT,
+ target_insert_watchpoint, target_remove_watchpoint):
+ Move defines to ...
+ * config/i386/nm-i386sco5.h: ... here.
+ (kernel_u_size): Add prototype. Improve a few comments and add
+ protection against multiple inclusion.
+
+ * config/i386/nm-i386sco.h (FLOAT_INFO): Remove already commented
+ out define.
+
+ * uw-thread.c (SP_ARG0): Define if not already defined.
+ * config/i386/tm-i386.h (SO_ARG0): Remove define.
+
+ * config/i386/tm-i386v4.h (HAVE_I387_REGS): Remove define.
+
+ * config/i386/tm-i386.h: Don't include "regcache.h".
+
+ * i387-tdep.h (i387_print_float_info): New prototype.
+ * i387-tdep.c (print_i387_value, print_i387_ext,
+ print_i387_status_word, print_i387_control_word): Add `struct
+ ui_file *' argument and use it for output.
+ (i387_print_float_info): Renamed from i387_float_info. Add
+ `struct gdbarch *' and `struct ui_file *' arguments and use the
+ latter for output.
+ * i386-tdep.c: Include "i387-tdep.h".
+ (i386_gdbarch_init): Set print_float_info.
+ * config/i386/tm-i386.h (i387_float_info): Remove prototype.
+ (FLOAT_INFO): Remove define.
+
+2002-08-13 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_push_arguments): Rename to
+ mips_eabi_push_arguments, and tune for EABI.
+ (MIPS_REGS_HAVE_HOME_P): Delete.
+ (struct gdbarch_tdep): Remove mips_regs_have_home_p field.
+ (mips_gdbarch_init): Set gdbarch push_arguments for eabi.
+ Delete references to mips_regs_have_home_p.
+
+2002-08-14 Keith Seitz <keiths@redhat.com>
+
+ * Makefile.in (install-gdbtk): Create insight plugin directory.
+ Install plugins.tcl file.
+
+2002-08-14 Keith Seitz <keiths@redhat.com>
+
+ * configure.in: Move SUBDIRS to near top of the file so that
+ --enable options may add things to it.
+ If gdbtk is enabled, add gdbtk directory to SUBDIRS and configdirs.
+ * configure: Regenerate.
+
+2002-08-13 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_o32o64_push_arguments): New function,
+ cloned from mips_push_arguments, tuned for o32/o64 ABI.
+ (mips_gdbarch_init): Set gdbarch_push_arguments to new func.
+
+2002-08-13 Andrew Cagney <ac131313@redhat.com>
+
+ * vax-tdep.c (vax_get_saved_register): Delete function.
+ (vax_gdbarch_init): Update.
+ * ns32k-tdep.c (ns32k_get_saved_register): Delete function.
+ (ns32k_gdbarch_init): Update.
+ * alpha-tdep.c (alpha_get_saved_register): Delete function.
+ (alpha_gdbarch_init): Update.
+
+2002-08-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (init_regcache_descr): Overallocate the
+ raw_register_valid_p array including space for NUM_PSEUDO_REGS.
+ (registers_changed): Replace NUM_REGS+NUM_PSEUDO_REGS with
+ nr_raw_registers.
+ (set_register_cached): Add range checking assertions. Use
+ current_regcache.
+
+2002-08-13 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_stab_reg_to_regnum): Return correct register
+ numbers for MMX registers.
+
+2002-08-13 Andrew Cagney <cagney@redhat.com>
+
+ * i386-tdep.c (i386_gdbarch_init): Use
+ generic_unwind_get_saved_register.
+
+2002-08-13 Kevin Buettner <kevinb@redhat.com>
+
+ * procfs.c (procfs_can_use_hw_breakpoint): New function.
+ (init_procfs_ops): Define ``to_can_use_hw_breakpoint'' for procfs
+ target vector.
+ * config/mips/nm-irix5.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
+ Delete. Add comment regarding this now-deleted target method.
+
+2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (M68HC12_NUM_PSEUDO_REGS): New define.
+ (M68HC12_HARD_PC_REGNUM): Define specific PC for 68HC12 (pseudo reg).
+ (m68hc11_pseudo_register_read): Compute the 68HC12 PC using the
+ real PC and the page number (if it's within the memory bank window).
+ (m68hc11_pseudo_register_write): Likewise when saving.
+ (m68hc11_register_name): Name the virtual pc 'pc' and the real one ppc.
+ (m68hc11_register_virtual_type): Return uint32 for virtual pc.
+ (m68hc11_register_raw_size): And use 32-bit for it.
+ (m68hc11_gdbarch_init): Use 32-bit address for 68HC12 if the
+ 16K memory bank is used by the prog; also use the virtual pc.
+
+2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (m68hc11_elf_make_msymbol_special): New function.
+ (m68hc11_gdbarch_init): Install it in gdbarch.
+ (MSYMBOL_SET_RTC, MSYMBOL_SET_RTI): New to set symbol specific flags.
+ (MSYMBOL_IS_RTC, MSYMBOL_IS_RTI): New to test these flags.
+ (MSYMBOL_SIZE): New for documentation.
+ (insn_return_kind): Enum to specify how a function returns.
+ (frame_extra_info): Cleanup and record the return mode.
+ (gdbarch_tdep, USE_PAGE_REGISTER): New to control the use of page
+ register in address computation.
+ (m68hc11_get_return_insn): New to obtain the return instruction used
+ by the function.
+ (m68hc11_frame_init_saved_regs): Take into account the return
+ instruction used by the function for far and interrupt functions.
+ (m68hc11_init_extra_frame_info): Take into account page register.
+ (m68hc11_frame_args_address): Adjust according to the return mode.
+ (show_regs): Print page register only when it's used.
+
+2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (HARD_PAGE_REGNUM): Define for 68HC12 page register.
+ (M68HC11_LAST_HARD_REG, m68hc11_register_names): Update.
+ (m68hc11_register_virtual_type): Return a 8-bit type for 8-bit
+ registers.
+ (m68hc11_register_raw_size): Likewise.
+
+2002-08-13 Andrew Cagney <cagney@redhat.com>
+
+ * i386-tdep.c (i386_register_name): Handle mmx registers.
+ (mmx_regnum_p): New function.
+ (i386_mmx_names): New array.
+ (mmx_num_regs): New variable.
+ (i386_pseudo_register_read): New function.
+ (i386_pseudo_register_write): New function.
+ (mmx_regnum_to_fp_regnum): New function. Code from Fernando Nasser.
+
+ * regcache.c (regcache_raw_read_unsigned): New function.
+ (regcache_raw_read_signed): New function.
+ * regcache.h (regcache_raw_read_unsigned): Declare.
+ (regcache_raw_read_signed): Declare.
+
+2002-08-13 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (regcache_raw_read_as_address): Delete function.
+ (regcache_cooked_read_signed): New function.
+ (regcache_cooked_read_unsigned): New function.
+ * regcache.h (regcache_cooked_read_signed): Declare.
+ (regcache_cooked_read_unsigned): Declare.
+ (regcache_raw_read_as_address): Delete declaration.
+
+ * blockframe.c (generic_read_register_dummy): Use
+ regcache_cooked_read_unsigned.
+ * i386-tdep.c (i386_extract_struct_value_address): Use
+ regcache_cooked_read_unsigned.
+
+2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Set int, double and long
+ double sizes according to ELF ABI flags.
+ (gdbarch_tdep): Record elf_flags.
+
+2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
+
+ * m68hc11-tdep.c (M6812_OP_PSHX, M6812_OP_PSHY): New defines.
+ (m6812_prolog): They can appear in 68HC12 function prologue.
+ (m68hc11_frame_chain): Cleanup.
+
+2002-08-12 Andrew Cagney <cagney@redhat.com>
+
+ * i386-tdep.h (i386_register_byte, i386_register_raw_size): Delete
+ declarations.
+ * i386-linux-tdep.c (i386_linux_register_byte): Delete function.
+ (i386_linux_register_raw_size): Delete function.
+ (i386_linux_init_abi): Update.
+ * i386-tdep.c (i386_register_raw_size): Delete function.
+ (i386_register_byte): Delete function.
+ (i386_gdbarch_init): Update.
+ (i386_register_size): Delete array.
+ (i386_register_offset): Delete array.
+
+ * config/i386/tm-symmetry.h (REGISTER_BYTE): Delete macro.
+ (REGISTER_RAW_SIZE): Delete macro.
+ * config/i386/tm-ptx.h (REGISTER_RAW_SIZE): Delete macro.
+ (REGISTER_BYTE): Delete macro.
+
+2002-08-11 Aidan Skinner <aidan@velvet.net>
+
+ * ada-lang.c (ada_lookup_partial_symbol)
+ (to_fixed_variant_branch_type) (find_line_in_linetable): Fix
+ prototype names so that grep ^func works properly.
+
+ * ada-lang.c (ada_array_element_type)
+ (ada_lookup_partial_symbol): Fix typos in parameter list.
+
+ * ada-valprint.c (val_print_packed_array_elements) (ada_val_print_1):
+ Fix prototype names so that grep ^func works properly.
+
+2002-08-10 Andrew Cagney <cagney@redhat.com>
+ Elena Zannoni <ezannoni@redhat.com>
+ Martin M. Hunt <hunt@redhat.com>
+
+ * gdbtypes.c (build_builtin_type_vec128): Set the vector bit.
+ (build_builtin_type_vec128i): Set the vector bit.
+ * gdbtypes.h (builtin_type_vec64, builtin_type_vec64i): Declare.
+ * gdbtypes.c (builtin_type_vec64, builtin_type_vec64i): Define.
+ (build_builtin_type_vec64): New function.
+ (build_builtin_type_vec64i): New function.
+ (build_gdbtypes): Initialize builtin_type_vec64 and
+ builtin_type_vec64i.
+
+2002-08-09 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (regcache_dump): Compare the register offset
+ with REGISTER_BYTE.
+ * arch-utils.c (generic_register_byte): New function.
+ * arch-utils.h (generic_register_byte): Declare.
+ * gdbarch.sh (REGISTER_BYTE): Default to generic_register_byte.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-08-09 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c: Include "gdbcmd.h"
+ (_initialize_regcache): Add commands "maintenance print
+ registers", "maintenance print raw-registers" and "maintenance
+ print cooked-registers".
+ (enum regcache_dump_what): Define.
+ (dump_endian_bytes): New function.
+ (regcache_dump): New function.
+ (regcache_print): New function.
+ (maintenance_print_registers): New function.
+ (maintenance_print_raw_registers): New function.
+ (maintenance_print_cooked_registers): New function.
+ * Makefile.in (regcache.o): Update dependencies.
+
+2002-08-09 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (ROUND_DOWN, ROUND_UP): Move to global scope.
+ (mips_push_arguments): Correct some comments. Use paddr_nz
+ for printing addresses in debug output. Replace static
+ allocation using MAX_REGISTER_RAW_SIZE with alloca.
+ (mips_n32n64_push_arguments): New function, cloned from
+ mips_push_arguments and tuned for the n32/n64 ABI.
+ (mips_push_register): Buffer needs dynamic allocation.
+ (mips_print_register): Ditto.
+ (do_gp_register_row): Ditto.
+ (mips_store_return_value): Ditto.
+ (mips_gdbarch_init): Set gdbarch_push_arguments per ABI.
+
+2002-08-09 Don Howard <dhoward@redhat.com>
+
+ * memattr.c (mem_info_command): Print special case of upper bound
+ as max CORE_ADDR + 1.
+
+2002-08-08 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_n32n64_use_struct_convention): N32 only
+ returns structs by ref if they're too big to fit in two registers.
+
+2002-08-09 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_init_extra_frame_info): Initialize SP_REGNUM's
+ saved regs value.
+ (read_next_frame_reg): Call FRAME_INIT_SAVED_REGS instead of
+ mips_find_saved_regs().
+ (mips_pop_frame): Likewise.
+
+2002-08-09 Kevin Buettner <kevinb@redhat.com>
+
+ * blockframe.c (frame_saved_regs_register_unwind): Revise
+ PC_IN_CALL_DUMMY assertion to only apply when generic dummy
+ frames are in use.
+
+2002-08-09 Grace Sainsbury <graces@redhat.com>
+
+ * remote.c: (remote_wait, remote_async_wait): Add check for awatch
+ T-packets; the 'a' is not taken as a register number.
+ (remote_check_watch_resources, remote_stopped_by_watchpoint)
+ (remote_stopped_data_address): New functions; add to target
+ vector.
+ (remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Change
+ prototypes to match other implementations of this
+ function. replace integer argument with pointer -- the length
+ field in the Z-packet is the length of what is pointed to or 1 if
+ pointer is null. Add to target vector.
+ (remote_insert_watchpoint, remote_remove_watchpoint): Add to
+ target vector.
+
+ From Mark Salter:
+ * remote.c (remote_wait): Add support to extract optional
+ watchpoint information from T-packet. Ignore unrecognized
+ optional info in T-packet.
+ (remote_async_wait): Ditto.
+
+2002-08-09 Corinna Vinschen <vinschen@redhat.com>
+
+ * cli/cli-dump.c: Change fopen modes to use binary open modes
+ as defined in include/fopen-bin.h throughout.
+
+2002-08-08 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c: Minor whitespace and indentation clean-ups.
+
+2002-08-08 Kevin Buettner <kevinb@redhat.com>
+
+ * doublest.c (store_floating): Avoid floatformat_from_doublest()
+ assertion failure by returning early after a warning.
+
+2002-08-08 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_find_saved_regs): Make static.
+ (mips_frame_init_saved_regs): New function.
+ (mips_gdbarch_init): Setup FRAME_INIT_SAVED_REGS method.
+ * config/mips/tm-mips.h (FRAME_INIT_SAVED_REGS): Delete macro.
+ (mips_find_saved_regs): Delete declaration.
+
+2002-08-08 Grace Sainsbury <graces@redhat.com>
+
+ * remote.c (remote_wait, remote_async_wait): Change
+ thread_num from int to ULONGEST.
+ (unpack_varlen_hex): Change result parameter from
+ int * to ULONGEST *.
+
+2002-08-08 Andrew Cagney <ac131313@redhat.com>
+
+ * configure.tgt: Replace powerpc-*-sysv*, powerpc-*-elf*,
+ powerpcle-*-eabi*, powerpcle-*-sysv* and powerpcle-*-elf* with
+ powerpc*-*-*.
+ * MAINTAINERS: Remove redundant rs6000-ibm-aix4.1 target.
+
+2002-08-08 Andrew Cagney <cagney@redhat.com>
+
+ * gcore.c (override_derive_stack_segment): Delete variable.
+ (preempt_derive_stack_segment): Delete function.
+ (derive_stack_segment): Delete function.
+ (default_derive_stack_segment): Renamed to derive_stack_segment.
+ (override_derive_heap_segment): Delete variable.
+ (preempt_derive_heap_segment): Delete function.
+ (derive_heap_segment): Delete function.
+ (default_derive_heap_segment): Rename to derive_heap_segment.
+
+2002-08-06 Michael Snyder <msnyder@redhat.com>
+
+ * config/mips/tm-mips.h: Remove #define USE_STRUCT_CONVENTION.
+ * mips-tdep.c (mips_EABI_use_struct_convention,
+ mips_OABI_use_struct_convention, mips_NABI_use_struct_convention):
+ New functions. (mips_use_struct_convention): Delete.
+ (mips_gdbarch_init): set use_gdbarch_convention.
+
+2002-08-06 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c: gdbarch-ify reg_struct_has_addr.
+ (mips_eabi_reg_struct_has_addr, mips_n32n64_reg_struct_has_addr,
+ mips_o32_reg_struct_has_addr): New functions.
+ (mips_gdbarch_init): Set gdbarch reg_struct_has_addr.
+
+2002-08-07 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (pseudo_register): Delete function.
+ (fetch_register): Delete function.
+ (store_register): Delete function.
+ (regcache_raw_read, legacy_read_register_gen): Use
+ target_fetch_registers instead of fetch_register.
+ (legacy_write_register_gen, regcache_raw_write): Use
+ target_store_register instead of store_register.
+ (write_register_bytes): Ditto.
+
+ * gdbarch.sh (FETCH_PSEUDO_REGISTER): Delete.
+ (STORE_PSEUDO_REGISTER): Delete.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-08-06 Corinna Vinschen <vinschen@redhat.com>
+
+ * cli/cli-dump.c (add_dump_command): Explicitely use "b" flag to
+ write dump file binary.
+
+2002-08-05 Michael Snyder <msnyder@redhat.com>
+
+ * mips-tdep.c (mips_find_saved_regs): Adjust stack according
+ to MIPS_SAVED_REGSIZE, not GDB_TARGET_IS_MIPS64. Enhance comment.
+ (mips_gdbarch_init): Set N32 target to be mips64.
+
+2002-08-06 Kevin Buettner <kevinb@redhat.com>
+
+ * frame.c (find_saved_register): Break out of loop once saved
+ register address is found. Don't mention sparc in loop comment
+ anymore.
+
+2002-08-06 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_gdbarch_init): For the N32 ABI, set
+ mips_default_saved_regsize to 8.
+
+2002-08-06 Andrew Cagney <ac131313@redhat.com>
+
+ * gcore.c: Do not include <sys/procfs.h>.
+ * Makefile.in (gcore.o): Update dependencies.
+
+2002-08-06 Andrew Cagney <cagney@redhat.com>
+
+ * configure.tgt: Make arc-*-* obsolete.
+ * NEWS: Mention that arc-*-* has been identifed as obsolete.
+ * MAINTAINERS: Make arc-elf obsolete.
+ * arc-tdep.c: Make file obsolete.
+ * config/arc/arc.mt: Ditto.
+ * config/arc/tm-arc.h: Ditto.
+
+2002-08-05 Theodore A. Roth <troth@verinet.com>
+
+ * avr-tdep.c (avr_skip_prologue): Fix to return the correct pc.
+
+2002-08-05 Andrew Cagney <ac131313@redhat.com>
+
+ * mcore-tdep.c (mcore_gdbarch_init): Use
+ generic_unwind_get_saved_register instead of
+ generic_get_saved_register.
+ * v850-tdep.c (v850_gdbarch_init): Ditto.
+ * frv-tdep.c (frv_gdbarch_init): Ditto.
+ * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
+ * s390-tdep.c (s390_gdbarch_init): Ditto.
+ * d10v-tdep.c (d10v_gdbarch_init): Ditto.
+ * config/mn10200/tm-mn10200.h (GET_SAVED_REGISTER): Ditto.
+ * config/h8300/tm-h8300.h (GET_SAVED_REGISTER): Ditto.
+
+2002-08-05 Joel Brobecker <brobecker@gnat.com>
+
+ * objfiles.h: Add missing #include "symfile.h"
+
+ * Makefile.in (objfiles_h): Add dependency on symfile.h and dependents.
+
+2002-08-04 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-08-01 david carlton <carlton@math.stanford.edu>:
+ * hpread.c (hpread_read_struct_type): Deleted superfluous setting
+ of FIELD_BITSIZE.
+
+2002-08-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * NEWS: Cleanup and nitpick.
+
+2002-08-03 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Cleanup. Use *-linux*-gnu*. Only use `*' for headings.
+
+2002-08-03 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (gdbtk-bp.o): Update dependencies.
+ (gdbtk-register.o): Ditto.
+ (gdbtk-varobj.o): Ditto.
+
+2002-08-03 Andrew Cagney <cagney@redhat.com>
+
+ * m68hc11-tdep.c (m68hc11_pseudo_register_read): Replace
+ m68hc11_fetch_pseudo_register.
+ (m68hc11_pseudo_register_write): Replace
+ m68hc11_store_pseudo_register.
+ (m68hc11_gdbarch_init): Update.
+
+Fri Aug 2 15:53:50 2002 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh: Include "gdb_string.h".
+ * gdbarch.c: Regenerate.
+
+ * regcache.c: Include "gdb_string.h".
+ * ax-general.c: Ditto.
+ * varobj.c: Ditto.
+ * std-regs.c: Ditto.
+ * fbsd-proc.c: Ditto.
+ * thread.c: Ditto.
+
+ * Makefile.in (regcache.o): Update dependencies.
+ (thread.o, gdbarch.o): Ditto.
+ (ax-general.o, gdbarch.o): Ditto.
+ (varobj.o, std-regs.o): Ditto.
+ (fbsd-proc.o): Specify dependencies.
+
+2002-08-02 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (regcache_cooked_read): Rename rawnum parameter to
+ regnum.
+ (regcache_cooked_write): Ditto.
+
+2002-08-02 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (regcache_cooked_read): New function.
+ (regcache_cooked_write): New function.
+ (read_register_gen): Rewrite using regcache_cooked_read.
+ (write_register_gen): Rewrite using regcache_cooked_write.
+
+ * regcache.h (regcache_cooked_read, regcache_cooked_write):
+ Declare.
+
+2002-08-02 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (pseudo_register_read, pseudo_register_write):
+ Replace the architecture methods register_read and register_write.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * regcache.c (init_regcache_descr): Update.
+ (read_register_gen): Update.
+ (write_register_gen): Update.
+ (supply_register): Update comment.
+
+ * sh-tdep.c (sh_gdbarch_init): Update.
+ (sh_pseudo_register_read, sh64_pseudo_register_read): Add
+ `regcache' and `gdbarch' parameters. Make `buffer' a void
+ pointer. Update code.
+ (sh_pseudo_register_write, sh64_pseudo_register_write): Add
+ `regcache' and `gdbarch' parameters. Make `buffer' a constant
+ void pointer. Update code.
+ (sh64_register_write): Delete.
+ (sh4_register_read): Delete.
+ (sh64_register_read): Delete.
+ (sh4_register_write): Delete.
+ (sh_sh4_register_convert_to_raw): Make `from' parameter a constant
+ void pointer, `to' parameter a void pointer.
+ (sh_sh64_register_convert_to_raw): Ditto.
+
+2002-08-01 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_register_virtual_type): Use architecture
+ invariant return values.
+
+2002-08-01 Andrew Cagney <cagney@redhat.com>
+
+ * linux-proc.c: Include "gdb_string.h".
+ * Makefile.in (linux-proc.o): Update dependency list.
+
+2002-08-01 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_gdbarch_init): Add comments. Fix typo in
+ comment.
+
+2002-08-01 Grace Sainsbury <graces@redhat.com>
+
+ * target.h: Add to_insert_hw_breakpoint, to_remove_hw_breakpoint,
+ to_insert_watchpoint, to_remove_watchpoint,
+ to_stopped_by_watchpoint, to_stopped_data_address,
+ to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint to
+ target vecctor. Define their corresponding macros so they call
+ them.
+
+ * target.c: Add default and debug versions of for
+ to_insert_hw_breakpoint, to_remove_hw_breakpoint,
+ to_insert_watchpoint, to_remove_watchpoint,
+ to_stopped_by_watchpoint, to_stopped_data_address,
+ to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint.
+
+2002-08-01 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_register_virtual_type): New function.
+ (mips_gdbarch_init): Register mips_register_virtual_type()
+ with gdbarch machinery.
+ * config/mips/tm-irix6.h (mips/tm-bigmips64.h): Include
+ this file instead of tm-bigmips.h.
+ (MIPS_REGSIZE): Delete this macro.
+ (REGISTER_VIRTUAL_TYPE): Delete macro. Undef macro so that
+ multiarch version in mips-tdep.c will be found.
+
+2002-08-01 Andrew Cagney <cagney@redhat.com>
+
+ * NEWS: Menion that CHILL has been made obsolete.
+
+ * gdbtypes.c (chill_varying_type): Make chill references obsolete.
+ * stabsread.c (read_range_type): Ditto.
+ * gdbtypes.h: Ditto.
+ * language.c (binop_type_check): Ditto.
+ (binop_result_type): Ditto.
+ (integral_type): Ditto.
+ (character_type): Ditto.
+ (string_type): Ditto.
+ (boolean_type): Ditto.
+ (structured_type): Ditto.
+ (lang_bool_type): Ditto.
+ (binop_type_check): Ditto.
+ * language.h (_LANG_chill): Ditto.
+ * dwarfread.c (set_cu_language): Ditto.
+ * dwarfread.c (CHILL_PRODUCER): Ditto.
+ * dwarfread.c (handle_producer): Ditto.
+ * expression.h (enum exp_opcode): Ditto.
+ * eval.c: Ditto for comments.
+ * typeprint.c (typedef_print) [_LANG_chill]: Ditto.
+ * expprint.c (print_subexp): Ditto.
+ (print_subexp): Ditto.
+ * valops.c (value_cast): Ditto.
+ (search_struct_field): Ditto.
+ * value.h (COERCE_VARYING_ARRAY): Ditto.
+ * symfile.c (init_filename_language_table): Ditto.
+ (add_psymbol_with_dem_name_to_list): Ditto.
+ * valarith.c (value_binop): Ditto.
+ (value_neg): Ditto.
+ * valops.c (value_slice): Ditto.
+ * symtab.h (union language_specific): Ditto.
+ (SYMBOL_INIT_LANGUAGE_SPECIFIC): Ditto.
+ (SYMBOL_DEMANGLED_NAME): Ditto.
+ (SYMBOL_CHILL_DEMANGLED_NAME): Ditto.
+ * defs.h (enum language): Ditto.
+ * symtab.c (got_symtab): Ditto.
+ * utils.c (fprintf_symbol_filtered): Ditto.
+
+ * ch-typeprint.c: Make file obsolete.
+ * ch-valprint.c: Make file obsolete.
+ * ch-lang.h: Make file obsolete.
+ * ch-exp.c: Make file obsolete.
+ * ch-lang.c: Make file obsolete.
+
+ * Makefile.in (FLAGS_TO_PASS): Do not pass CHILL or CHILLFLAGS or
+ CHILL_LIB.
+ (TARGET_FLAGS_TO_PASS): Ditto.
+ (CHILLFLAGS): Obsolete.
+ (CHILL): Obsolete.
+ (CHILL_FOR_TARGET): Obsolete.
+ (CHILL_LIB): Obsolete.
+ (SFILES): Remove ch-exp.c, ch-lang.c, ch-typeprint.c and
+ ch-valprint.c.
+ (HFILES_NO_SRCDIR): Remove ch-lang.h.
+ (COMMON_OBS): Remove ch-valprint.o, ch-typeprint.o, ch-exp.o and
+ ch-lang.o.
+ (ch-exp.o, ch-lang.o, ch-typeprint.o, ch-valprint.o): Delete
+ targets.
+
+2002-07-31 Joel Brobecker <brobecker@gnat.com>
+
+ * dwarf2read.c (set_cu_language): Add handler for LANG_Ada95.
+ This does not change anything at the moment, but will be helpful
+ later when full Ada support is integrated.
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (_initialize_mips_tdep): Add "n64" to "set mips abi"
+ help message.
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_push_arguments): Fetch gdbarch_tdep struct
+ and save it in a local variable. Use variable in later test.
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (mips_find_abi_section): Add N64 ABI recognition
+ test. (Thanks to Daniel Jacobowitz.)
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * mips-tdep.c (enum mips_abi): Add MIPS_ABI_N64.
+ (mips_abi_strings): Add "n64".
+ (mips_gdbarch_init): Add test for n64 abi. Add MIPS_ABI_N64 case.
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * config/mips/tm-irix6.h (MIPS_REGSIZE): Define to be 8.
+ (REGISTER_VIRTUAL_TYPE): Some registers are now 64 bits wide.
+
+2002-07-31 Kevin Buettner <kevinb@redhat.com>
+
+ * utils.c (host_pointer_to_address, address_to_host_pointer):
+ Use gdb_assert() instead of explicit call to internal_error().
+
+2002-07-30 Kevin Buettner <kevinb@redhat.com>
+
+ * Makefile.in (rs6000-nat.o): Update dependencies.
+
+ From Nicholas Duffek:
+ * Makefile.in (ALLDEPFILES): Add aix-thread.c.
+ (aix-thread.o): New rule.
+ * configure.host (gdb_host): Set to aix432 on AIX 4.3.2+.
+ * config/powerpc/aix432.mh: New file.
+
+2002-07-30 Daniel Jacobowitz <drow@mvista.com>
+
+ * ppc-linux-tdep.c (ELF_NGREG, ELF_NFPREG, ELF_NVRREG)
+ (ELF_FPREGSET_SIZE, ELF_GREGSET_SIZE): New enums.
+ (fetch_core_registers, ppc_linux_supply_gregset)
+ (ppc_linux_supply_fpregset): New functions.
+ (ppc_linux_regset_core_fns): New.
+ (_initialize_ppc_linux_tdep): Call add_core_fns.
+ * ppc-tdep.h: Add prototypes for ppc_linux_supply_fpregset
+ and ppc_linux_supply_gregset.
+ * ppc-linux-nat.c (supply_gregset): Call ppc_linux_supply_gregset.
+ (supply_fpregset): Call ppc_linux_supply_fpregset.
+ * config/powerpc/linux.mh (NATDEPFILES): Remove core-regset.o and
+ corelow.o.
+ * config/powerpc/linux.mt (TDEPFILES): Add corelow.o.
+
+2002-07-30 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.c (lookup_symbol): Demangle before lowercasing.
+
+2002-07-30 Andrew Cagney <ac131313@redhat.com>
+
+ * symtab.h: Replace #include "gdb_obstack.h" with opaque
+ declaration.
+ * cli/cli-cmds.c, cli/cli-script.c: Include "gdb_string.h".
+ * gnu-v3-abi.c, arc-tdep.c, cli/cli-decode.c: Ditto.
+ * avr-tdep.c, mon960-rom.c, i960-tdep.c: Ditto.
+ * arch-utils.c, cli/cli-setshow.c: Unconditionally include
+ "gdb_string.h".
+ * Makefile.in (cli-script.o, cli-cmds.o): Update dependencies.
+ (gnu-v3-abi.o, cli-setshow.o, i960-tdep.o): Ditto.
+ (cli-decode.o, mi-cmd-var.o, mi-cmd-disas.o): Ditto.
+ (avr-tdep.o, mon960-rom.o): Ditto.
+ (aout_stabs_gnu_h): Define.
+ (symtab_h): Remove $(gdb_obstack_h).
+
+2002-07-30 Jim Blandy <jimb@redhat.com>
+
+ Patch from David Carlton <carlton@math.stanford.edu>:
+ * gdbinit.in: Move the `dir' commands that add GDB's own source
+ directory to the search path to the end, so that the `gdb' source
+ directory will be searched first.
+
+2002-07-29 Andrew Cagney <ac131313@redhat.com>
+
+ * gdb_obstack.h: New file.
+ * symtab.h: Include "gdb_obstack.h" instead of "obstack.h".
+ (obstack_chunk_alloc, obstack_chunk_free): Delete macros.
+ * objfiles.h: Include "gdb_obstack.h".
+ * Makefile.in (gdb_obstack_h): Define.
+ (symtab_h): Add $(gdb_obstack_h).
+ (objfiles_h): Add $(gdb_obstack_h).
+
+ * objfiles.c: Include "gdb_obstack.h" instead of "obstack.h".
+ * macrotab.c, cp-valprint.c, dbxread.c: Ditto.
+ * ch-typeprint.c, ch-valprint.c, dstread.c: Ditto.
+ * macroexp.c, p-typeprint.c, stabsread.c: Ditto.
+ * symtab.c, f-typeprint.c, mdebugread.c: Ditto.
+ * p-valprint.c, symmisc.c, typeprint.c: Ditto.
+ * symfile.c, coffread.c, c-typeprint.c: Ditto.
+ * buildsym.c, bcache.c, ada-typeprint.c: Ditto.
+
+ * Makefile.in (bcache.o): Update dependencies.
+ (buildsym.o, c-typeprint.o, ch-typeprint.o): Ditto.
+ (ch-valprint.o, coffread.o, cp-valprint.o): Ditto.
+ (dbxread.o, dstread.o, f-typeprint.o): Ditto.
+ (objfiles.o, p-typeprint.o, p-valprint.o): Ditto.
+ (stabsread.o, symfile.o, symmisc.o): Ditto.
+ (symtab.o, typeprint.o, macroexp.o): Ditto.
+ (macrotab.o, mdebugread.o): Ditto.
+ (f_lang_h, coff_sym_h, coff_symconst_h): Define.
+ (coff_ecoff_h, aout_aout64_h): Define.
+ (aout_stabs_gnu_h, libaout_h): Define.
+
+2002-07-29 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (struct regcache_descr): Rename nr_registers to
+ nr_cooked_registers. Revise comments describing the structure
+ member fields.
+ (init_regcache_descr): Update.
+ (init_legacy_regcache_descr): Update.
+ (read_register_gen, write_register_gen): When a cooked register in
+ the raw register range, directly access the value from the raw
+ register cache.
+
+2002-07-29 Andrew Cagney <ac131313@redhat.com>
+
+ * z8k-tdep.c: Do not include "obstack.h".
+ * h8300-tdep.c, h8500-tdep.c: Ditto.
+ * m68hc11-tdep.c, sh-tdep.c: Ditto.
+ * valprint.c, v850-tdep.c: Ditto.
+ * d10v-tdep.c, mn10300-tdep.c: Ditto.
+ * mn10200-tdep.c: Ditto.
+
+ * Makefile.in (z8k-tdep.o): Update dependencies.
+ (m68hc11-tdep.o, valprint.o): Ditto.
+ (v850-tdep.o, d10v-tdep.o): Ditto.
+ (mn10300-tdep.o, sparc-tdep.o): Ditto.
+ (sh-tdep.o, h8500-tdep.o, h8300-tdep.o): Ditto.
+ (m32r-tdep.o, mn10200-tdep.o): Specify dependencies.
+ (sh_opc_h, gdb_sim_sh_h): Define.
+ (elf_sh_h, elf_bfd_h): Define.
+ (opcode_m68hc11_h): Define.
+ (OPCODES_SRC, OPCODES_DIR): define.
+ (OPCODES): Use $(OPCODES_DIR).
+ (gdb_sim_d10v_h): Rename sim_d10v_h.
+ (gdb_sim_arm_h): Rename sim_arm_h.
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * utils.c (host_pointer_to_address, address_to_host_pointer):
+ Change internal_error() message to indicate function responsible
+ for the error.
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * ui-out.c (ui_out_field_core_addr): Remove unnecessary cast in
+ calls to local_hex_string_custom().
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * irix5-nat.c: Move IRIX shared library support from here...
+ * solib-irix.c: ...to here. Revised substantially to work with
+ generic solib framework.
+
+ * osabi.h (gdb_osabi): Add new enum constant GDB_OSABI_IRIX.
+ * osabi.c (gdb_osabi_names): Add corresponding string for Irix.
+ * mips-irix-tdep.c: New file.
+
+ * Makefile.in (ALLDEPFILES): Add mips-irix-tdep.c and solib-irix.c.
+ (mips-irix-tdep.o, solib-irix.o): New rules.
+ * config/mips/irix5.mt (TDEPFILES): Add mips-irix-tdep.o, solib.o,
+ solib-irix.o.
+ * config/mips/irix6.mt (TDEPFILES): Likewise.
+ * config/mips/irix6.mh (NATDEPFILES): Remove solib.o.
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (coff/internal.h, bfd/libcoff.h, pthread.h): Remove
+ disabled (via ``#if 0'') includes.
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (special_register_p, supply_sprs64, supply_sprs32)
+ (fetch_regs_user_thread, fetch_regs_kernel_thread, fill_sprs64)
+ (fill_sprs32, store_regs_user_thread, store_regs_kernel_thread):
+ Add support for the fpscr register.
+ * rs6000-nat.c (regmap, fetch_inferior_registers)
+ (store_inferior_registers, fetch_core_registers): Likewise.
+
+2002-07-26 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-nat.c (language.h): Include.
+ (special_regs): Delete this array.
+ (regmap): New function.
+ (fetch_register, store_register): Use regmap() to map gdb
+ register numbers to ptrace register numbers. Also, use
+ outputs from regmap() to make decisions regarding type of
+ ptrace() call to make. In particular, don't compare against
+ FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
+ (fetch_inferior_registers, store_inferior_registers): Where
+ possible, obtain register numbers from tdep struct. Don't
+ refer to FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
+ * config/rs6000/tm-rs6000.h (FIRST_UISA_SP_REGNUM)
+ (LAST_UISA_SP_REGNUM): Delete.
+
+2002-07-25 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-nat.c (ppc-tdep.h): Include.
+ (fetch_registers, store_register, fetch_core_registers): Don't
+ access registers[] directly. Instead, use supply_register() or
+ regcache_collect() as appropriate.
+ (find_toc_address): Format hex address with local_hex_string().
+
+2002-07-25 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Rename bfd/elf32-fr30.c and
+ bfd/elf32-frv.c.
+
+2002-07-24 Tom Tromey <tromey@redhat.com>
+
+ * jv-exp.y: Marked all strings with _().
+ (ClassInstanceCreationExpression, ArrayCreationExpression): Use
+ internal_error.
+ (MethodInvocation, CastExpression, parse_number, yyerror,
+ java_type_from_name, push_expression_name, yylex): Typo fixes.
+
+2002-07-24 Daniel Jacobowitz <drow@mvista.com>
+
+ * ui-file.c (struct tee_file, tee_file_new, tee_file_delete)
+ (tee_file_flush, tee_file_write, tee_file_fputs)
+ (tee_file_isatty): New.
+ * ui-file.h (tee_file_new): Add prototype.
+
+2002-07-24 Aidan Skinner <aidan@velvet.net>
+
+ * ada-lang.c: Change k&r style function definitions to prototyped
+ form.
+ * ada-typeprint.c: Change k&r style function definitions to prototyped
+ form.
+ * ada-valprint.c: Change k&r style function definitions to prototyped
+ form.
+
+2002-07-24 Andrew Cagney <cagney@redhat.com>
+
+ * README: Remove reference to remote-bug.
+ * Makefile.in (ALLDEPFILES): Remove m88k-nat.c, m88k-tdep.c and
+ remote-bug.c.
+ (m88k-nat.o): Delete rule.
+ (m88k-tdep.o): Delete rule.
+ (remote-bug.o): Delete rule.
+ * MAINTAINERS: Mark as obsolete.
+ * elfread.c (elf_symtab_read): Mention that m88k is obsolete.
+ * m88k-tdep.c: Make file obsolete.
+ * config/m88k/m88k.mh: Ditto.
+ * config/m88k/delta88v4.mh: Ditto.
+ * config/m88k/delta88v4.mt: Ditto.
+ * config/m88k/delta88.mt: Ditto.
+ * config/m88k/delta88.mh: Ditto.
+ * remote-bug.c: Ditto.
+ * config/m88k/tm-delta88.h: Ditto.
+ * config/m88k/nm-delta88v4.h: Ditto.
+ * config/m88k/xm-delta88.h: Ditto.
+ * config/m88k/xm-dgux.h: Ditto.
+ * config/m88k/tm-m88k.h: Ditto.
+ * config/m88k/nm-m88k.h: Ditto.
+ * config/m88k/tm-delta88v4.h: Ditto.
+ * m88k-nat.c: Ditto.
+ * cxux-nat.c: Ditto.
+ * configure.host: Make m88*-motorola-sysv4*, m88*-motorola-sysv*
+ and m88*-*-* obsolete.
+ * configure.tgt: Make m88*-motorola-sysv4*, m88*-motorola-* and
+ m88*-*-* obsolete.
+
+2002-07-24 Andrew Cagney <cagney@redhat.com>
+
+ * findvar.c (extract_unsigned_integer): Make `addr' parameter
+ constant. Same for local pointer variables.
+ (extract_signed_integer): Ditto.
+ * defs.h (extract_unsigned_integer): Update.
+ (extract_signed_integer): Update.
+
+2002-07-24 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.c (regcache_raw_write): Change buf parameter to a
+ constant void pointer.
+ (regcache_raw_read): Change buf parameter to a void pointer.
+ (legacy_write_register_gen): Change myaddr parameter a constant
+ void pointer.
+ (supply_register): Change val parameter to a const void pointer.
+ * regcache.h (regcache_raw_write): Update declaration.
+ (regcache_raw_read): Update declaration.
+ (supply_register): Update declaration.
+
+2002-07-24 Tom Tromey <tromey@redhat.com>
+
+ * defs.h (gdb_readline_wrapper): Declare.
+ * utils.c (prompt_for_continue): Use gdb_readline_wrapper.
+ * tracepoint.c (read_actions): Use gdb_readline_wrapper.
+ * top.c (gdb_readline_wrapper): New function.
+ (command_line_input): Use it.
+
+2002-07-24 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.h (regcache_raw_read, regcache_raw_write): Replace
+ regcache_read and regcache_write.
+ (regcache_raw_read_as_address): Replace regcache_read_as_address.
+ * regcache.c: Update.
+ * sh-tdep.c (sh64_push_arguments): Update comment.
+ (sh_pseudo_register_read): Update.
+ (sh_pseudo_register_write): Update.
+ (sh4_register_read): Update.
+ (sh4_register_write): Update.
+ (sh64_pseudo_register_read): Update.
+ (sh64_pseudo_register_write): Update.
+ (sh64_register_read): Update.
+ (sh64_register_write): Update.
+ * i386-tdep.c (i386_extract_return_value): Update.
+ (i386_extract_struct_value_address): Update.
+ (i386_extract_return_value): Update.
+ * blockframe.c (generic_read_register_dummy): Update.
+ (generic_call_dummy_register_unwind): Update
+ * infrun.c (write_inferior_status_register): Update.
+
+2002-07-23 Jim Blandy <jimb@redhat.com>
+
+ * parser-defs.h (expression_context_pc): Make this extern.
+ (Thanks to Michael Snyder.)
+
+2002-07-23 Andrew Cagney <ac131313@redhat.com>
+
+ GDB 5.2.1 released from 5.2 branch.
+ * NEWS: Mention changes in 5.2.1 including addition of AVR target.
+ * README: Update to mention 5.2.1.
+
+2002-07-23 Mark Salter <msalter@redhat.com>
+
+ * remote.c (remote_read_bytes): Fix check for error.
+
+2002-07-22 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (language.h): Include.
+ (ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
+ (pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc):
+ Print newlines at end of debug messages.
+ (pdc_symbol_addrs, pdc_read_regs, pdc_write_regs, pdc_read_data)
+ (pdc_write_data): Use local_hex_string() instead of %llx formats.
+
+2002-07-22 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (ppc-tdep.h): Include.
+ (special_register_p): New function.
+ (supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32)
+ (store_regs_user_thread): Use register number information from
+ gdbarch_tdep struct instead of hardcoded offsets relative to
+ FIRST_UISA_SP_REGNUM.
+ (fetch_regs_kernel_thread, store_regs_kernel_thread): Call
+ special_register_p() instead of using FPLAST_REGNUM and
+ LAST_UISA_SP_REGNUM as lower and upper bounds on the special
+ register numbers. Also, don't assume that LAST_UISA_SP_REGNUM
+ will be MQ's register number.
+
+2002-07-22 Michael Snyder <msnyder@redhat.com>
+
+ * aix-thread.c (ops): Rename to aix_thread_ops.
+ (base_ops): Rename to base_target.
+ (ops_attach): Rename to aix_thread_attach.
+ (ops_detach): Rename to aix_thread_detach.
+ (ops_resume): Rename to aix_thread_detach.
+ (ops_wait): Rename to aix_thread_wait.
+ (ops_kill): Rename to aix_thread_kill.
+ (init_ops): Rename to init_aix_thread_ops.
+ (ops_fetch_register): Rename to aix_thread_fetch_register.
+ (ops_store_register): Rename to aix_thread_store_register.
+ (ops_mourn_inferior): Rename to aix_thread_mourn_inferior.
+ (ops_thread_alive): Rename to aix_thread_thread_alive.
+ (ops_extra_thread_info: Rename to aix_thread_extra_thread_info.
+ (ops_pid_to_str): Rename to aix_thread_pid_to_str.
+ (ops_xfer_memory): Rename to aix_thread_xfer_memory.
+ (fetch_regs_lib): Rename to fetch_regs_user_thread.
+ (fetch_regs_kern): Rename to fetch_regs_kernel_thread.
+ (store_regs_lib): Rename to store_regs_user_thread.
+ (store_regs_kern): Rename to store_regs_kernel_thread.
+
+2002-07-22 Michael Snyder <msnyder@redhat.com>
+
+ * aix-thread.c (ops_prepare_to_store): Eliminate.
+ (init_ops): Don't initialize ops.prepare_to_store.
+ (store_regs_kern): Pre-fetch register buffers from child,
+ because some registers may not be in the cache. Copy
+ regs from register cache only if they are cached.
+ (store_regs_lib): Copy regs from register cache only
+ if they are cached.
+ (fill_sprs32, (fill_sprs64, fill_fprs, fill_gprs32,
+ fill_gprs64): Ditto.
+
+2002-07-22 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (gdb_assert.h): Include.
+ (fill_sprs64, fill_sprs32): Add selected asserts to make sure that
+ register sizes (from register cache) match size of buffer holding
+ register data.
+ (fill_sprs32): Change parameter types to match those in the ptrace()
+ buffer.
+ (store_regs_lib): Likewise, but for 32-bit temporary variables.
+ (ops_prepare_to_store): Rename loop variable ``i'' to ``regno''.
+
+2002-07-22 Michael Snyder <msnyder@redhat.com>
+
+ * aix-thread.c (supply_sprs64): Cosmetic change.
+ (supply_sprs32): Cosmetic change.
+ (fill_gprs64, fill_gprs32, fill_fprs, fill_sprs32): New funcs.
+ (fill_sprs64): Use regcache_collect instead of read_register.
+ (store_regs_lib): Use regcache_collect instead of
+ read_register. Use fill_sprs32 instead of fill_sprs64,
+ if debugging a 32-bit architecture.
+ (store_regs_kern): Use fill_gprs64 etc. to pull the values
+ out of the register cache, instead of passing a pointer into
+ the register cache directly to ptrace. Use regcache_collect
+ insteaad of read_register.
+ (ops_prepare_to_store): Use target_read_registers instead
+ of read_register_bytes.
+
+2002-07-20 Aidan Skinner <aidan@velvet.net>
+
+ * MAINTAINERS: Add self under write after approval.
+
+2002-07-20 Aidan Skinner <aidan@velvet.net>
+
+ * ada-tasks.c: Change k&r style function definitions to prototyped
+ form.
+
+2002-07-19 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (x86-64-tdep.o): Add $(objfiles_h).
+ * x86-64-tdep.c: Include "objfiles.h".
+ (x86_64_gdbarch_init): Set in_solib_call_trampoline to
+ in_plt_section. From 2002-07-18 Michal Ludvig <mludvig@suse.cz>.
+
+2002-07-17 Michal Ludvig <michal@suse.cz>
+
+ * dwarf2cfi.c (execute_stack_op): Complain on unknown DW_OP_ value.
+ (update_context): Initialise cfa variable.
+
+2002-07-17 Michael Snyder <msnyder@redhat.com>
+
+ * aix-thread.c: Shorten some long lines.
+ Bring comments into line with code spec.
+
+2002-07-18 Joel Brobecker <brobecker@gnat.com>
+
+ * infrun.c: Re-indent using gdb_indent.sh.
+
+2002-07-18 Joel Brobecker <brobecker@gnat.com>
+
+ * infrun.c (handle_inferior_event): Remove unneeded extra brace.
+ Leave the indentation temporarily untouched, to minimize the diffs.
+
+2002-07-18 Elena Zannoni <ezannoni@redhat.com>
+
+ * stabsread.c: Make os9k sections of the code obsolete,
+ for real this time.
+ * stabsread.h: Make os9k sections of the code obsolete.
+
+2002-07-18 Michal Ludvig <mludvig@suse.cz>
+
+ * linux-low.c (regsets_store_inferior_registers): Add free()
+ at the end of a loop to prevent memory leak.
+ * linux-x86-64-low.c (x86_64_regmap): Add CS, SS registers.
+ (X86_64_NUM_GREGS): Count it from the size of x86_64_regmap.
+ * config/sparc/tm-sp64linux.h: Make the rest of #endif
+ line a comment.
+ * Makefile.in (x86-64-linux-nat.o): Remove dependency on i387-tdep.h
+
+2002-07-17 Jim Blandy <jimb@redhat.com>
+
+ * macrocmd.c (info_macro_command): Remove newline from error
+ message.
+
+2002-07-17 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * sh-tdep.c (sh_dsp_register_sim_regno): New function.
+ (sh_gdbarch_init): Use it for sh-dsp.
+
+2002-07-16 Kevin Buettner <kevinb@redhat.com>
+
+ * dwarf2read.c (read_initial_length): Handle older, non-standard,
+ 64-bit DWARF2 format.
+
+2002-07-16 Joel Brobecker <brobecker@gnat.com>
+
+ * proc-api.c: use HAVE_SYS_PROC_H macro to avoid including
+ <sys/proc.h> when not available.
+
+2002-07-16 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Mention that the i[34]86-*-os9k has been made obsolete.
+ * stabsread.c: Make os9k sections of the code obsolete.
+ * configure.tgt: Make i[3456]86-*-os9k target obsolete.
+ * config/i386/i386os9k.mt: Make file obsolete.
+ * Makefile.in (ALLDEPFILES): Remove remote-os9k.c.
+ (COMMON_OBS): Remove os9kread.o
+ (SFILES): Remove os9kread.c.
+ (os9kread.o, remote-os9k.o): Make target obsolete.
+ * remote-os9k.c: Make file obsolete.
+ * os9kread.c: Make file obsolete.
+ * Makefile.in
+
+2002-07-16 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Mention that the FR30 has been made obsolete.
+ * fr30-tdep.c: Make file obsolete.
+ * config/fr30/tm-fr30.h: Ditto.
+ * config/fr30/fr30.mt: Ditto.
+ * configure.tgt: Make fr30-*-elf obsolete.
+ * MAINTAINERS: Make fr30-elf obsolete.
+
+2002-07-16 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * blockframe.c (get_pc_function_start): return 0 if the minimal symbol
+ found is not inside a section.
+
+2002-07-15 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (ptrace_check): Use safe_strerror() instead of
+ strerror().
+ (pdc_realloc): Use xrealloc() instead of realloc().
+
+2002-07-15 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (PD_ERROR, CALL_BASE): Delete.
+ (ops_resume, ops_wait, fetch_regs_lib, store_regs_lib)
+ (ops_xfer_memory, ops_kill): Don't use PD_ERROR or CALL_BASE
+ macros.
+
+2002-07-15 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (ptrace_check): Eliminate goto.
+ (sync_threadlists): Eliminate gotos. Also, fix array overrun
+ problem.
+
+2002-07-15 Kevin Buettner <kevinb@redhat.com>
+
+ * aix-thread.c (gdbcmd.h): Include.
+ (DEBUG, DBG, DBG2, dbg): Eliminate.
+ (debug_aix_thread): New static global.
+ (ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
+ (pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc)
+ (fetch_regs_lib, store_regs_lib, store_regs_kern): Rewrite
+ invocations to DBG and DBG2 macros to test against
+ ``debug_aix_thread'' and call fprintf_unfiltered().
+ (_initialize_aix_thread): Add new command "set debug aix-thread".
+
+2002-07-15 Andrew Cagney <ac131313@redhat.com>
+
+ From Gerhard Tonn <TON@de.ibm.com>:
+ * s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect
+ instead of supply_register.
+
+2002-07-15 Andrew Cagney <ac131313@redhat.com>
+
+ * dwarf2cfi.c: Include "gdb_assert.h".
+ (frame_state_for): Use gdb_assert to check that fde->cie_ptr is
+ non-NULL.
+ (update_context): Do not use __func__. Add missing ``break''.
+ (update_context): Do not use __func__.
+
+2002-07-15 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Remove variable print_insn
+ and its setting. Set gdbarch instruction printing functions
+ directly. For non-rs6000 case use new function
+ gdb_print_insn_powerpc.
+ (gdb_print_insn_powerpc): New function.
+
+2002-07-13 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Mention that the d30v has been marked obsolete.
+ * MAINTAINERS: Note that d30v / d30v-elf has been made obsolete.
+ * configure.tgt: Mark d30v-*-* as obsolete.
+ * d30v-tdep.c: Mark file as obsolete.
+ * config/d30v/d30v.mt: Ditto.
+ * config/d30v/tm-d30v.h: Ditto.
+
+2002-07-13 Aidan Skinner <aidan@velvet.net>
+
+ * ada-tasks.c (add_task_entry): replace calls to
+ malloc() with xmalloc
+ * ada-tasks.c (init_task_list): replace calls to free with xfree()
+
+ * ada-lang.c (replace_operator_with_call, fill_in_ada_prototype,
+ ada_finish_decode_line_1, all_sals_for_line
+ ada_breakpoint_rewrite): replace calls to free() with xfree()
+
+2002-07-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Nicholas Duffek (with minor changes by Martin Hunt,
+ Louis Hamilton, and Kevin Buettner):
+ * aix-thread.c: New file.
+
+2002-07-12 Petr Sorfa <petrs@caldera.com>
+
+ * dwarf2read.c (dwarf2_invalid_attrib_class): New
+ complaint for invalid attribute class or form.
+ (read_func_scope): DW_AT_frame_base
+ better handling of DW_AT_block*.
+ (dwarf2_add_member_fn): DW_AT_vtable_elem_location
+ better handling of DW_AT_block*.
+ (read_common_block): DW_AT_location
+ better handling of DW_AT_block*.
+ (read_partial_die): DW_AT_location better handling
+ of DW_AT_block*.
+ (new_symbol): DW_AT_external better handling of
+ DW_AT_block*. Proper initialization of variable
+ "addr".
+ (attr_form_is_block): New function that returns true
+ if the attribute's form is of DW_FORM_block*.
+
+2002-07-12 Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>
+
+ * valops.c (find_method_list): Remove comment about
+ removed STATIC_MEMFUNCP argument.
+ (value_find_oload_method_list): Likewise.
+
+2002-07-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Nicholas Duffek:
+ * rs6000-nat.c (vmap_ldinfo, xcoff_relocate_core): Call
+ target_new_objfile_hook.
+
+2002-07-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Nicholas Duffek:
+ * xcoffread.c (scan_xcoff_symtab): Recognize XMC_TD as a data storage
+ csect.
+
+2002-07-12 Andrew Cagney <cagney@redhat.com>
+
+ * MAINTAINERS: Mention --enable-sim-build-warnings.
+ (m68hc11-elf): Disable sim build warnings.
+ (m32r-elf): Mark as broken obsolete candidate.
+ (x86_64-linux-gnu): Mark as buildable with -Werror.
+ (arm-elf): Change -w to ``,'' which enables warnings but not
+ -Werror.
+
+2002-07-12 Andrew Cagney <ac131313@redhat.com>
+
+ * bcache.h: Update copyright.
+ (struct bstring, struct bcache): Move definition to "bcache.c".
+ Replaced by opaque declaration.
+ (bcache_xfree): Replace free_bcache.
+ (bcache_xmalloc, bcache_memory_used): Declare.
+
+ * bcache.c: Update copyright.
+ (struct bstring, struct bcache): Moved to here from "bcache.h".
+ Update comments.
+ (bcache_xmalloc, bcache_memory_used): New functions.
+ (bcache_xfree): Replace function free_bcache.
+
+ * Makefile.in (objfiles.o): Add $(bcache_h).
+ (objfiles_h): Remove $(bcache_h).
+ (symfile.o): Add $(bcache_h).
+
+ * symmisc.c: Update copyright.
+ (print_symbol_bcache_statistics): Pass psymbol_cache by value.
+ (print_objfile_statistics): Use bcache_memory_used.
+
+ * symfile.c: Include "bcache.h".
+ (reread_symbols): Use bcache_xfree.
+ (reread_symbols): Use bcache_xmalloc and bcache_xfree.
+ (add_psymbol_to_list): Pass psymbol_cache by value.
+ (add_psymbol_with_dem_name_to_list): Ditto.
+
+ * objfiles.h: Update copyright.
+ (struct bcache): Declare opaque. Do not include "bcache.h".
+ (struct objfile): Change psymbol_cache and macro_cache to ``struct
+ bcache'' pointers.
+ * dwarf2read.c (macro_start_file): Pass macro_cache by value.
+
+ * objfiles.c: Include "bcache.h". Update copyright.
+ (allocate_objfile): Use bcache_xmalloc to create psymbol_cache and
+ macro_cache.
+ (free_objfile): Use bcache_xfree.
+
+2002-07-11 Grace Sainsbury <graces@redhat.com>
+
+ * monitor.c (monitor_fetch_register): Make name a constant.
+ (monitor_store_register): Same.
+
+2002-07-11 Daniel Jacobowitz <drow@mvista.com>
+
+ Based on patch from Daniel Berlin <dberlin@dberlin.org>.
+ * buildsym.c: Include "demangle.h" for SYMBOL_INIT_DEMANGLED_NAME.
+ (finish_block) For non-function blocks, hash the symbol table. For
+ function blocks, mark the symbol table as unhashed.
+ * minsyms.c (msymbol_hash): Return hash value without taking modulus.
+ (msymbol_hash_iw): Likewise.
+ (add_minsym_to_hash_table): Take modulus of msymbol_hash's return
+ value.
+ (add_minsym_to_demangled_hash_table): Likewise for msymbol_hash_iw.
+ (lookup_minimal_symbol): Likewise for both.
+ * symtab.h (struct block): Add `hashtable' flag. Comment the
+ hashtable.
+ (BLOCK_HASHTABLE, BLOCK_BUCKETS, BLOCK_BUCKET): New macro.
+ (ALL_BLOCK_SYMBOLS): Update.
+ (BLOCK_SHOULD_SORT): Do not sort hashed blocks.
+ (struct symbol): Add `hash_next' pointer.
+ * symtab.c (lookup_block_symbol): Search using the hash table when
+ possible.
+ (find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
+ (search_symbols, find_addr_symbol): Likewise.
+
+ * dstread.c (process_dst_block): Clear hashtable bit for new block.
+ (read_dst_symtab): Likewise.
+ * jv-lang.c (get_java_class_symtab): Likewise.
+ * mdebugread.c: Include "gdb_assert.h".
+ (shrink_block): Assert that the block being modified is not hashed.
+ * coffread.c (patch_opaque_types): Use ALL_BLOCK_SYMBOLS.
+ * symmisc.c (free_symtab_block): Walk the hash table when freeing
+ symbols.
+ (dump_symtab): Recognize hashed blocks.
+ * printcmd.c (print_frame_args): Assert that function blocks do not
+ have hashed symbol tables.
+ * ada-lang.c (symtab_for_sym): Use ALL_BLOCK_SYMBOLS.
+ (fill_in_ada_prototype, debug_print_block): Likewise.
+ (ada_add_block_symbols): Use ALL_BLOCK_SYMBOLS. Handle hash tables.
+
+2002-07-11 Corinna Vinschen <vinschen@redhat.com>
+
+ * stack.c (print_frame): Use result of frame_address_in_block()
+ instead of fi->pc when evaluating symbols.
+ (backtrace_command_1): Ditto.
+
+2002-07-11 Andrew Cagney <cagney@redhat.com>
+
+ * cris-tdep.c (cris_saved_pc_after_call): Fix parameter type.
+ Make static.
+
+ * arm-tdep.c (arm_register_name): Make return type constant.
+
+2002-07-10 Andrew Cagney <ac131313@redhat.com>
+
+ * win32-nat.c (has_detach_ability): Convert to strict ISO C
+ prototype.
+ * top.c (gdb_rl_operate_and_get_next_completion): Ditto.
+ * s390-tdep.c (s390_fp_regnum): Ditto.
+ (s390_read_fp): Ditto.
+ (s390_pop_frame): Ditto.
+ (_initialize_s390_tdep): Ditto.
+ * remote.c (get_remote_state): Ditto.
+ * procfs.c (mappingflags): Ditto.
+ * memattr.c (_initialize_mem): Ditto.
+ * mcore-tdep.c (mcore_pop_frame): Ditto.
+ * m68klinux-nat.c (_initialize_m68k_linux_nat): Ditto.
+ * m68k-tdep.c (m68k_register_bytes_ok): Ditto.
+ * language.c (set_case_str): Ditto.
+ * gnu-v3-abi.c (vtable_address_point_offset): Ditto.
+ * frv-tdep.c (new_variant): Ditto.
+ (frv_stopped_data_address): Ditto.
+ * dwarf2cfi.c (fde_chunks_need_space): Ditto.
+ (context_alloc): Ditto.
+ (frame_state_alloc): Ditto.
+ (unwind_tmp_obstack_init): Ditto.
+ (unwind_tmp_obstack_free): Ditto.
+ (cfi_read_fp): Ditto.
+ * cris-tdep.c (cris_saved_pc_after_call): Ditto.
+ (cris_pop_frame): Ditto.
+ * c-lang.c (scanning_macro_expansion): Ditto.
+ (finished_macro_expansion): Ditto.
+ (c_preprocess_and_parse): Ditto.
+ * gdbarch.sh: Ditto.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * config/mn10200/tm-mn10200.h: Adjust indentation.
+ * target.c: Adjust indentation.
+ * symtab.h: Adjust indentation.
+ * stabsread.h: Adjust indentation.
+ * remote-es.c: Adjust indentation.
+ * os9kread.c: Adjust indentation.
+
+2002-07-10 Andrew Cagney <ac131313@redhat.com>
+
+ * wince.c (_initialize_wince): Rename _initialize_inftarg.
+ * win32-nat.c (_initialize_win32_nat): Rename _initialize_inftarg.
+
+2002-07-10 Grace Sainsbury <graces@redhat.com>
+
+ * NEWS: Mention m68k, mcore multi-arching.
+ * MAINTAINERS: Change status of m68k, mcore to reflect
+ multi-arching.
+
+2002-07-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * valops.c (find_overload_match): Free oload_syms.
+
+2002-07-09 Joel Brobecker <brobecker@gnat.com>
+
+ Define HAVE_SYS_PROC_H if sys/proc.h exists
+ * configure.in: Add check for sys/proc.h
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2002-07-09 Grace Sainsbury <graces@redhat.com>
+
+ * config/m68k/tm-m68k.h: Remove macros wrapped in
+ #if !GDB_MULTI_ARCH.
+
+2002-07-08 Andrew Cagney <ac131313@redhat.com>
+
+ * config.in, configure: Regenerate.
+
+2002-07-08 Mark Kettenis <kettenis@gnu.org>
+
+ * dwarf2cfi.c: Include "gcore.h".
+ (execute_stack_op): Fix implementation of the
+ DW_OP_deref and DW_OP_deref_size operators by letting do their
+ lookup in the target.
+
+2002-07-07 Mark Kettenis <kettenis@gnu.org>
+
+ From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>:
+ * i386-sol2-tdep.c (i386_sol2_init_abi): Correct value for
+ tdep->sc_sp_offset.
+
+2002-07-05 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/595, gdb/602
+ * gnu-v3-abi.c (gnuv3_baseclass_offset): Remove unused variables.
+ Don't call value_cast, just read the vtable pointer; update comments
+ to match.
+
+2002-07-05 Grace Sainsbury <graces@redhat.com>
+
+ * config/mcore/tm-mcore.h: Remove file.
+ * config/mcore/mcore.mt: Remove definition of TM_FILE
+ * configure.tgt: Set gdb_multi_arch to yes for the mcore target.
+
+2002-07-05 Mark Kettenis <kettenis@gnu.org>
+
+ * i386bsd-tdep.c: Include "gdb_string.h".
+
+2002-07-04 Grace Sainsbury <graces@redhat.com>
+
+ * config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Set to 2.
+ (PR_REGNUM, FIRST_ARGREG, LAST_ARGREG,RETVAL_REGNUM): Move to
+ mcore-tdep.
+ (REG_STRUCT_HAS_ADDR, USE_STRUCT_CONVENTION, GET_SAVED_REGISTER)
+ (TARGET_VIRTUAL_FRAME_POINTER, BELIEVE_PCC_PROMOTION): Remove.
+ * mcore-tdep.c (PR_REGNUM, FIRST_ARGREG, LAST_ARGREG)
+ (RETVAL_REGNUM): Move macros from tm-mcore.h
+ (mcore_reg_struct_has_addr): New function.
+ (mcore_gdbarch_init): Added initializations for the macros removed
+ from tm-mcore.h.
+
+2002-07-04 Mark Kettenis <kettenis@gnu.org>
+
+ * osabi.c (generic_elf_osabi_sniffer): Add check for FreeBSD 3.x's
+ traditonal string branding within the ELF header.
+
+2002-07-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.c (remove_params): New function.
+ (make_symbol_overload_list): Use it instead of cplus_demangle.
+ (overload_list_add_symbol): Likewise. Reorder. Fix memory leak.
+
+2002-07-04 Mark Kettenis <kettenis@gnu.org>
+
+ * i386obsd-nat.c (_initialize_i386obsd_nat): Fix typo in prototype.
+
+ * i386bsd-tdep.c (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end):
+ New variables.
+ (i386nbsd_init_abi): Use these to initialize tdep->sigtramp_start
+ and tdep->sigtramp_end.
+ * i386obsd-nat.c: New file.
+ * config/i386/obsd.mh (NATDEPFILES): Add i386obsd-nat.o.
+
+ * dwarf2cfi.c (cfi_pop_frame): Use alloca() for regbuf.
+ Don't call get_current_frame().
+
+2002-07-04 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * i386-nat.c (child_post_startup_inferior): New function
+ calling i386_cleanup_dregs if
+ I386_USE_GENERIC_WATCHPOINTS is defined.
+ * config/i386/nm-i386.h: define CHILD_POST_STARTUP_INFERIOR
+ conditional to acknowledge that i386-nat.c has its
+ own child_post_startup_inferior function.
+
+2002-07-04 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.h (I386_MAX_REGISTER_SIZE): New define.
+ * i386-tdep.c (i386_do_pop_frame): Use I386_MAX_REGISTER_SIZE
+ instead of MAX_REGISTER_RAW_SIZE.
+ (i386_extract_return_value, i386_extract_struct_value_address):
+ Convert to use regcache.
+ (i386_gdbarch_init): Set max_register_raw_size and
+ max_register_virtual_size to I386_MAX_REGISTER_SIZE.
+ Set extract_return_value and extract_struct_value_address instead
+ of their deprecated variants.
+
+ Convert i386 target to generic dummy frames.
+ * i386-tdep.c: Include "symfile.h".
+ (i386_frameless_signal_p): Consider a function to be frameless if
+ the pc points at the first instruction of the function.
+ (i386_frame_chain): Handle (generic) call dummies.
+ (i386_frame_saved_pc): Likewise.
+ (i386_frame_init_saved_regs): Remove code dealing with call
+ dummies on the stack.
+ (i386_push_dummy_frame): Removed.
+ (i386_call_dummy_words): Removed.
+ (i386_fix_call_dummy): Removed.
+ (i386_push_return_address): New function.
+ (i386_do_pop_frame): Renamed from i386_pop_frame. Add FRAME
+ parameter, and don't call get_current_frame.
+ (i386_pop_frame): New function.
+ (i386_gdbarch_init): Set use_generic_dummy_frames to 1, set
+ call_dummy_location to AT_ENTRY_POINT, set call_dummy_address to
+ entry_point_address, set call_dummy_breakpoint_offset to 0, set
+ call_dummy_length to 0, set call_dummy_words to NULL, set
+ sizeof_call_dummy_words to 0, set fix_call_dummy to
+ generic_fix_call_dummy, set pc_in_call_dummy to
+ pc_in_call_dummy_at_entry_point, set push_dummy_frame to
+ generic_push_dummy_frame, set push_return_address to
+ i386_push_return_address and set frame_chain_valid to
+ generic_file_frame_chain_valid.
+
+2002-07-03 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (struct regcache): Add opaque declaration.
+ (EXTRACT_RETURN_VALUE): New architecture method.
+ (EXTRACT_STRUCT_VALUE_ADDRESS): Ditto.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * arch-utils.c (legacy_extract_return_value): New function.
+ * arch-utils.h (legacy_extract_return_value): Declare.
+ * values.c (value_being_returned): Re-enable code handling
+ EXTRACT_STRUCT_VALUE_ADDRESS. Move
+ deprecated_grub_regcache_for_registers call to block handling
+ DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
+ (EXTRACT_RETURN_VALUE): Do not define.
+
+2002-07-03 Grace Sainsbury <graces@redhat.com>
+
+ * config/mcore/tm-mcore.h (REGISTER_BYTES, NUM_REGS, PC_REGNUM)
+ (SP_REGNUM, FP_REGNUM, FUNCTION_START_OFFSET, DECR_PC_AFTER_BREAK)
+ (BREAKPOINT_FROM_PC, INNER_THAN, SAVED_PC_AFTER_CALL)
+ (INIT_EXTRA_FRAME_INFO, FRAME_INIT_SAVED_REGS, INIT_FRAME_PC)
+ (FRAME_CHAIN, FRAME_CHAIN_VALID, FRAME_SAVED_PC)
+ (STORE_RETURN_VALUE, DEPRECATED_EXTRACT_RETURN_VALUE)
+ (STORE_STRUCT_RETURN, DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
+ (SKIP_PROLOGUE, FRAME_ARGS_SKIP, FRAME_ARGS_ADDRESS)
+ (FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, POP_FRAME)
+ (PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME, PUSH_ARGUMENTS): Remove.
+ * mcore-tdep.c (mcore_init_extra_frame_info): Add fromleaf
+ argument so the function fits the prototype in the architecture
+ vector.
+ (mcore_pop_frame): Remove argument so the function fits the
+ prototype. Use get_current_frame instead of the argument.
+ (mcore_push_arguments): Change type of struct_return so the
+ function can be used in the architecture vector.
+ (mcore_store_struct_return): Add.
+ (mcore_frame_init_saved_regs): Add.
+ (mcore_gdbarch_init): Add function calls to replace the macros
+ removed from tm-mcore.h
+
+2002-07-03 Andrew Cagney <ac131313@redhat.com>
+
+ * infcmd.c (print_return_value): Remove compatibility code calling
+ deprecated_grub_regcache_for_registers.
+
+ * values.c: Include "regcache.h".
+ (value_being_returned): Update. Use
+ deprecated_grub_regcache_for_registers to extract the register
+ buffer address.
+ * value.h (value_being_returned): Change ``retbuf'' parameter to a
+ ``struct regcache''.
+ * Makefile.in (values.o): Add dependency on $(regcache_h).
+
+ * inferior.h (run_stack_dummy): Change type of second parameter to
+ a ``struct regcache''.
+ * valops.c (hand_function_call): Change type of retbuf to ``struct
+ regcache''. Allocate using regcache_xmalloc, clean using
+ make_cleanup_regcache_xfree.
+ * infcmd.c (run_stack_dummy): Update. Use
+ regcache_cpu_no_passthrough instead of memcpy to copy the buffer.
+
+ * regcache.c (do_regcache_xfree): New function.
+ (make_cleanup_regcache_xfree): New function.
+ * regcache.h (make_cleanup_regcache_xfree): Declare.
+
+2002-07-03 Martin M. Hunt <hunt@redhat.com>
+
+ * event-top.c (command_line_handler): Don't read past
+ beginning of buffer.
+
+2002-07-03 Martin M. Hunt <hunt@redhat.com>
+
+ * varobj.c (struct varobj_root): Change frame from CORE_ADDR to
+ struct frame_id.
+ (varobj_create): Store frame_id for root.
+ (varobj_gen_name): Use xasprintf.
+ (varobj_update): Save and restore frame using get_frame_id() and
+ frame_find_by_id().
+ (create_child): Use xasprintf.
+ (new_root_variable): Initialize frame_id.
+ (c_name_of_child): Use xasprintf. Call find_frame_by_id().
+ (c_value_of_variable): Use xasprintf. Move mem_fileopen call
+ to prevent memory leak.
+
+2002-07-03 Andrew Cagney <ac131313@redhat.com>
+
+ * valops.c (hand_function_call): Move declaration of retbuf to
+ start of function, allocate using malloc, add a cleanup but before
+ the inf_status cleanup, cleanup the buffer. Rename local variable
+ old_chain to inf_status_cleanup.
+
+2002-07-03 Martin M. Hunt <hunt@redhat.com>
+
+ * top.c (execute_command): Use cmd_func() and cmd_func_p().
+
+ * cli/cli-decode.c (cmd_func_p): New function.
+ (cmd_func): New function.
+
+ * command.h: Add cmd_func() and cmd_func_p().
+
+2002-07-03 Grace Sainsbury <graces@redhat.com>
+
+ * config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Add macro. Set to 0.
+ (REGISTER_SIZE): Remove.
+ (MAX_REGISTER_RAW_SIZE): Remove.
+ (REGISTER_VIRTUAL_TYPE): Remove.
+ (MAX_REGISTER_VIRTUAL_SIZE): Remove.
+ (REGISTER_NAME): Remove.
+ (USE_GENERIC_DUMMY_FRAMES): Remove.
+ (CALL_DUMMY): Remove.
+ (CALL_DUMMY_START_OFFSET): Remove.
+ (CALL_DUMMY_BREAKPOINT_OFFSET): Remove.
+ (CALL_DUMMY_LOCATION): Remove.
+ (FIX_CALL_DUMMY): Remove.
+ (CALL_DUMMY_ADDRESS): Remove.
+ (SIZEOF_CALL_DUMMY_WORDS): Remove.
+ (SAVE_DUMMY_FRAME_TOS): Remove.
+ * mcore-tdep.c (MCORE_REG_SIZE, MCORE_NUM_REGS): Add macros.
+ (mcore_register_virtual_type): New function.
+ (mcore_register_byte): New function.
+ (mcore_register_size): New function.
+ (mcore_register_name): New function.
+ (mcore_gdbarch_init): New function. Add set_gdbarch calls for
+ macros removed from tm-mcore.h.
+ (mcore_dump_tdep): Add.
+ (_initialize_mcore_tdep): Add gdbarch_register call.
+
+2002-07-03 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_frameless_signal_p): Provide an argument in to
+ frameless_look_for_prologue, such that we actually call this
+ function.
+
+2002-07-02 Joel Brobecker <brobecker@gnat.com>
+
+ * frame.h (frame_address_in_block): New function.
+
+ * blockframe.c (frame_address_in_block): New function extracted
+ from get_frame_block().
+ (get_frame_block): Use frame_address_in_block().
+ (block_innermost_frame): Use frame_address_in_block() to match
+ the frame pc address against the block boundaries rather than
+ the frame pc directly. This prevents a failure when a frame pc
+ is actually a return-address pointing immediately after the end
+ of the given block.
+
+2002-07-02 Grace Sainsbury <graces@redhat.com>
+
+ * MAINTAINERS: Add self under write after approval.
+
+2002-07-02 Grace Sainsbury <graces@redhat.com>
+
+ * m68k-tdep.c (m68k_remote_breakpoint_from_pc): Add. Currently not
+ used in architecture vector. The default is
+ m68k_local_breakpoint_from_pc.
+ (m68k_local_breakpoint_from_pc): Add.
+ (enum): Add register numbers from tm-m68k.h.
+ (m68k_gdbarch_init): Add breakpoint_from_pc to architecture
+ vector.
+ * config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Set to
+ GDB_MULTI_ARCH_PARTIAL.
+ (BPT_VECTOR, REGISTER_BYTES_FP, REGISTER_BYTES_NOFP)
+ (NUM_FREGS, SIG_PC_FP_OFFSET, SP_ARG0, REMOTE_BPT_VECTOR): Move to
+ m68k-tdep.c.
+ (BREAKPOINT, REMOTE_BREAKPOINT): Remove.
+ (A1_REGNUM, FP0_REGNUM, FPC_REGNUM, FPS_REGNUM, FPI_REGNUM): Move
+ to enum in m68k-tdep.c
+
+2002-07-02 Joel Brobecker <brobecker@gnat.com>
+
+ * solib-osf.c (open_map): Compute the list of shared libraries
+ loaded by the inferior, rather than the list of libraries loaded
+ by GDB itself. Otherwise, GDB ends up reading the symbols from
+ the wrong shared libraries...
+
+2002-07-02 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-tdep.c (i386_linux_sigcontext_addr): Make static.
+ (LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONEXT_SP_OFFSET): Remove
+ macros.
+ (i386_linux_sigtramp_saved_pc, i386_linux_sigtramp_saved_sp):
+ Remove functions.
+ (FRAMELESS_SIGNAL): Remove function.
+ (i386_linux_frame_chain, i386_linux_frame_saved_pc,
+ i386_linux_saved_pc_after_call): Removed.
+ (i386_linux_init_abi): Initialize tdep->sigcontext_addr,
+ tdep->sc_pc_offset and tdep->sc_sp_offset. Don't override
+ frame_chain, frame_saved_pc and saved_pc_after_call any longer.
+
+ * i386-tdep.c (i386_frameless_signal_p): New function.
+ (i386_frame_chain): Deal with frameless signals.
+ (i386_sigtramp_saved_sp): New function.
+ (i386_frame_saved_pc): Deal with frameless signals.
+ (i386_saved_pc_after_call): Make sure the correct value is
+ returned just after entry into a sigtramp.
+ * i386bsd-tdep.c (i386bsd_sc_sp_offset, i386nbsd_sc_sp_offset,
+ i386fbsd4_sc_sp_offset): New variables.
+ (i386bsd_init_abi, i386nbsd_init_abi, i386fbsd4_init_abi): Use
+ these variables to initialize tdep->sc_sp_offset. * i386bsd-nat.c
+ (_initialize_i386bsd_nat): Add sanity check for sc_sp_offset
+ similiar to what we already did for sc_pc_offset.
+ * i386-sol2-tdep.c (i386_sol2_init_abi): Initialize
+ tdep->sc_sp_offset.
+
+ * i386nbsd-tdep.c (fetch_elfcore_registers): Wrap long line.
+
+2002-07-02 Michal Ludvig <mludvig@suse.cz>
+
+ * config/i386/tm-x86-64linux.h: New.
+ * config/i386/x86-64linux.mt: Add GDB_MULTI_ARCH and TM_FILE
+ definitions.
+ * config/i386/nm-x86-64.h: Rename to ...
+ * config/i386/nm-x86-64linux.h: ... this one.
+ * config/i386/x86-64linux.mh: Reflect the above change.
+
+2002-07-01 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.h (struct gdbarch_tdep): Replace sigtramp_saved_pc
+ with sigcontext_addr. Add sc_sp_offset.
+ (i386bsd_sigtramp_saved_pc): Remove prototype.
+ (i386bsd_sicontext_addr): Add prototype.
+ * i386-tdep.c (i386_sigtramp_saved_pc): New function.
+ (i386_frame_saved_pc): Rewrite to call i386_sigtramp_saved_pc.
+ (i386_svr4_sigtramp_saved_pc): Removed.
+ (i386_svr4_sigcontext_addr): New function.
+ (i386_svr4_init_abi): Don't initialize tdep->sigtramp_saved_pc.
+ Initialize tdep->sigcontext_addr instead. Initialize
+ tdep->sc_pc_offset and tdep->sc_sp_offset.
+ (i386_gdbarch_init): Likewise.
+ * i386bsd-tdep.c (i386bsd_sigcontext_addr): Don't make it static
+ any more.
+ (i386bsd_sigtramp_saved_pc): Remove function.
+ (i386bsd_init_abi): Don't initialize tdep->sigtramp_saved_pc.
+ Initialize tdep->sigcontext_addr instead. Initialize
+ tdep->sc_pc_offset.
+ * i386-linux-tdep.c (i386_linux_init_abi): Remove initialization
+ of tdep->sigtramp_saved_pc.
+ * i386-sol2-tdep.c (i386_sol2_init_abi): Don't initialize
+ tdep->sigtramp_saved_pc. Initialize tdep->sigcontext_addr
+ instead.
+
+ * i386-tdep.c (i386_frameless_function_invocation,
+ i386_frame_num_args, i386_frame_init_saved_regs,
+ i386_skip_prologue, i386_push_dummy_frame, i386_fix_call_dummy,
+ i386_pop_frame, i386_push_arguments, i386_store_struct_return,
+ i386_extract_return_value, i386_store_return_value,
+ i386_extract_struct_value_address, i386_register_virtual_type,
+ i386_register_convertible, i386_register_convert_to_virtual,
+ i386_register_convert_to_raw, i386_svr4_sigtramp_saved_pc,
+ i386_go32_init_abi, i386_nw_init_abi, i386_gdbarch_init): Make
+ static.
+
+2002-07-01 Mark Kettenis <kettenis@gnu.org>
+
+ * i386bsd-tdep.c (i386bsd_frame_saved_pc): Removed.
+
+ * config/i386/tm-i386sol2.h (COERCE_FLOAT_TO_DOUBLE): Removed.
+ * i386-sol2-tdep.c (i386_sol2_init_abi): Adjust for the removal of
+ this macro. Include "value.h".
+
+2002-06-30 Aidan Skinner <aidan@velvet.net>
+
+ * ada-exp.tab.c: remove as it's a generated file
+ * ada-lex.c: remove as it's a generated file
+
+2002-06-30 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386.h (struct frame_info, struct
+ frame_saved_regs, struct value, struct type): Remove forward
+ declarations.
+
+ * config/i386/tm-linux.h [HAVE_PTRACE_GETFPXREGS]
+ (FILL_FPXREGSET, HAVE_SSE_REGS): Remove define.
+ * config/i386/nm-linux.h [HAVE_PTRACE_GETFPXREGS]
+ (FILL_FPXREGSET): Define.
+
+ * config/i386/tm-nbsd.h (HAVE_SSE_REGS): Remove define.
+
+ * configure.tgt (i[3456]86-*-openbsd*): Fold into
+ i[3456]86-*-netbsd* case.
+ * config/i386/tm-obsd.h: Removed.
+ * config/i386/obsd.mt: Removed.
+ * config/i386/obsd.mh (NATDEPFILES): Remove corelow.o and
+ core-aout.o.
+ (MH_CFLAGS): Add -DYYDEBUG=0.
+
+ * i386bsd-nat.c (_initialize_i386bsd_nat): Define SC_PC_OFFSET to
+ i386nbsd_sc_pc_offset on OpenBSD too.
+
+ * config/i386/tm-fbsd.h [!SVR4_SHARED_LIBS]
+ (IN_SOLIB_CALL_TRAMPOLINE): Remove define.
+ * config/i386/tm-nbsdaout.h (IN_SOLIB_CALL_TRAMPOLINE): Remove
+ define.
+ * i386bsd-tdep.c: Include "arch-utils.h".
+ (i386bsd_aout_in_solib_call_trampoline): New function.
+ (i386bsd_init_abi): Set in_solib_call_trampoline to
+ i386bsd_aout_in_solib_call_trampoline.
+ (i386nbsdelf_init_abi, i386fbsd_init_abi): Set
+ in_solib_call_trampoline to generic_in_solib_call_trampoline.
+
+2002-06-28 Andrew Cagney <ac131313@redhat.com>
+
+ * macrotab.h: Do not include "obstack.h" or "bcache.h".
+ (struct obstack, struct bcache): Add opaque declarations.
+ * Makefile.in (macrotab_h): Update
+
+2002-06-28 Andrew Cagney <ac131313@redhat.com>
+
+ * blockframe.c (generic_find_dummy_frame): Change return type to
+ ``struct regcache''.
+ (struct dummy_frame): Replace field ``registers'' with regcache, a
+ struct regcache object.
+ (generic_find_dummy_frame): Update.
+ (generic_push_dummy_frame): Update. Use regcache_xfree,
+ regcache_xmalloc and regcache_cpy.
+ (generic_pop_dummy_frame): Update. Use regcache_cpy and
+ regcache_xfree.
+ (deprecated_generic_find_dummy_frame): Update.
+ (generic_read_register_dummy): Update. Use
+ regcache_read_as_address.
+ (generic_call_dummy_register_unwind): Update. Use regcache_read.
+ (generic_get_saved_register): Update. Use regcache_read.
+
+2002-06-28 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (objfiles_h): Add $(bcache_h).
+ * objfiles.h: Include "bcache.h".
+
+ * Makefile.in (symtab_h): Remove $(bcache_h).
+ * symtab.h: Do not include "bcache.h".
+
+2002-06-28 Andrew Cagney <ac131313@redhat.com>
+
+ * ppcnbsd-tdep.c (ppcnbsd_init_abi): Set frame_chain_valid to
+ generic_func_frame_chain_valid.
+
+2002-06-28 David O'Brien <obrien@FreeBSD.org>
+
+ * config/i386/nm-fbsd.h: Include <sys/param.h>.
+ * config/i386/tm-fbsd.h: Likewise.
+
+2002-06-28 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use
+ generic_unwind_get_saved_register.
+
+2002-06-27 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-06-27 John David Anglin <dave@hiauly1.hia.nrc.ca>:
+ * regcache.c (supply_register): Add missing argument to
+ register_buffer call.
+
+2002-06-27 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (init.c): Drop -e option to grep. Not necessary and
+ Solaris /bin/grep does not not like it. From Peter Schauer.
+
+2002-06-26 Tom Tromey <tromey@redhat.com>
+
+ * command.h (add_setshow_cmd): Declare.
+ (add_setshow_cmd_full): Declare.
+ * cli/cli-decode.c (add_setshow_cmd): No longer static. Now
+ returns void. Use add_setshow_cmd_full.
+ (add_setshow_cmd_full): New function.
+ (add_setshow_auto_boolean_cmd): Use add_setshow_cmd_full.
+ (add_setshow_boolean_cmd): Likewise.
+
+2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/vax/tm-vax.h: Protect from multiple inclusion.
+ (TARGET_UPAGES, TARGET_NBPG, STACK_END_ADDR)
+ (SIGTRAMP_START, SIGTRAMP_END, SIGCONTEXT_PC_OFFSET): Move to...
+ * config/vax/tm-vaxbsd.h: ...here. New file.
+ * config/vax/vax.mt (TM_FILE): Set to tm-vaxbsd.h.
+
+2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/vax/tm-vax.h (BREAKPOINT): Remove.
+ (BELIEVE_PCC_PROMOTION): Remove.
+ (AP_REGNUM): Move to...
+ * config/vax/nm-vax.h: ...here.
+ * vax-tdep.c: Use VAX_AP_REGNUM instead of AP_REGNUM.
+ (vax_breakpoint_from_pc): New function.
+ (vax_gdbarch_init): Initialize gdbarch_breakpoint_from_pc
+ and gdbarch_believe_pcc_promotion.
+
+2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (vax_tdep_h): Define.
+ (vax-tdep.o): Use $(vax_tdep_h).
+ * vax-tdep.c (vax_gdbarch_init): Use generic OS ABI framework.
+ (vax_dump_tdep): New function.
+ (_initialize_vax_tdep): Register vax_dump_tdep.
+ * vax-tdep.h: Include osabi.h.
+ (struct gdbarch_tdep): New.
+
+2002-06-26 Andrew Cagney <cagney@redhat.com>
+
+ * frame.h (deprecated_generic_find_dummy_frame): Rename
+ generic_find_dummy_frame.
+ * blockframe.c (generic_find_dummy_frame): Make static.
+ (deprecated_generic_find_dummy_frame): New function.
+ * sh-tdep.c (sh_nofp_frame_init_saved_regs): Replace
+ generic_find_dummy_frame with deprecated_find_dummy_frame.
+ (sh64_nofp_frame_init_saved_regs): Ditto.
+ (sh_fp_frame_init_saved_regs): Ditto.
+ * s390-tdep.c (s390_frame_saved_pc_nofix): Ditto.
+ (s390_frame_chain): Ditto.
+ * cris-tdep.c (cris_frame_init_saved_regs): Ditto.
+
+2002-06-26 Grace Sainsbury <graces@redhat.com>
+
+ * config/m68k/tm-m68k.h: Rearrange code so macros not in the
+ gdbarch vector are at the top.
+ (NUM_REGS): Remove.
+ (FP_REGNUM, SP_REGNUM, PS_REGNUM, PC_REGNUM, FP0_REGNUM): Remove.
+ (FRAME_ARGS_ADDRESS): Remove.
+ (FRAME_LOCALS_ADDRESS): Remove.
+ (FRAME_NUM_ARGS): Remove.
+ (FRAME_ARGS_SKIP): Remove.
+ * m68k-tdep.c (enum): Add eumeration of special register numbers.
+ (m68k_gdbarch_init): Add gdbarch initializations for macros
+ undefined in tm-m68k.h
+
+2002-06-26 Grace Sainsbury <graces@redhat.com>
+
+ * monitor.h: Add the function regname to monitor_ops
+ structure. This way NUM_REGS does not have to be a constant.
+ * monitor.c (monitor_fetch_register): Added support for regname
+ function. The function is called if the array regnames is NULL.
+ (monitor_store_register): Same.
+ * cpu32bug-rom.c (cpu32bug_regname): Add function. Replaces
+ regnames array.
+ (init_cpu32bug_cmds): set cpu32bug_cmds.regnames to NULL,
+ cpu32bug_cmds.regname to point to new function.
+ * abug-rom.c (abug_regname): Same as above.
+ (init_abug_cmds): Same.
+ * dbug-rom.c (dbug_regname): Same as above.
+ (init_dbug_cmds): Same.
+ * remote-est.c (est_regname): Same.
+ (init_est_cmds): Same.
+ * rom68k-rom.c (rom68k_regname): Same.
+ (init_rom68k_cmds): Same.
+
+2002-06-25 Tom Tromey <tromey@redhat.com>
+
+ * breakpoint.c (delete_command): Don't repeat `delete' commands.
+
+2002-06-25 Andrew Cagney <cagney@redhat.com>
+
+ * infrun.c (stop_registers): Change variable's type to ``struct
+ regcache'''.
+ (xmalloc_inferior_status): Delete function.
+ (free_inferior_status): Delete function.
+ (normal_stop): Use regcache_cpy.
+ (struct inferior_status): Change type of fields ``stop_registers''
+ and ``registers'' to ``struct regcache''.
+ (write_inferior_status_register): Use regcache_write.
+ (save_inferior_status): Instead of calling
+ xmalloc_inferior_status, allocate the inf_status buffer directly.
+ Use regcache_dup_no_passthrough and regcache_dup to save the
+ buffers.
+ (restore_inferior_status): Use regcache_xfree and regcache_cpy.
+ Replace the stop_registers regcache instead of overriding it. Use
+ regcache_xfree. Instead of calling free_inferior_status, xfree
+ the buffer directly.
+ (discard_inferior_status): Use regcache_xfree. Instead of calling
+ free_inferior_status, xfree the buffer directly.
+ (build_infrun): Use regcache_xmalloc.
+ (_initialize_infrun): Delete redundant call to build_infrun.
+
+ * Makefile.in (infcmd.o): Add $(regcache_h).
+
+ * infcmd.c: Include "regcache.h".
+ (run_stack_dummy): Use deprecated_grub_regcache_for_registers to
+ obtain the address of `stop_registers' register buffer.
+ (print_return_value): Ditto.
+
+ * inferior.h (struct regcache): Add opaque declaration.
+ (stop_registers): Change variable's declared type to ``struct
+ regcache''.
+
+2002-06-24 Tom Tromey <tromey@redhat.com>
+
+ * cli/cli-decode.c (add_show_from_set): Fixed typo in comment.
+ * target.c (initialize_targets): Fixed typo in
+ trust-readonly-sections `show' documentation.
+
+ * main.c: Marked all strings with _().
+
+2002-06-24 Don Howard <dhoward@redhat.com>
+
+ * memattr.c (create_mem_region): Treat hi == 0 as a special case
+ that means max CORE_ADDR+1.
+ (lookup_mem_region): Ditto.
+ (mem_info_command): Ditto.
+
+2002-06-24 Grace Sainsbury <graces@redhat.com>
+
+ * config/m68k/tm-m68k.h (DECR_PC_AFTER_BREAK): Remove.
+ (REGISTER_BYTES_OK): Remove.
+ (REGISTER_BYTES): Remove.
+ (STORE_STRUCT_RETURN): Remove.
+ (DEPRECATED_EXTRACT_RETURN_VALUE): Remove.
+ (STORE_RETURN_VALUE): Remove.
+ (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove.
+ (FRAME_CHAIN): Remove.
+ (FRAMELESS_FUNCTION_INVOCATION): Remove.
+ (FRAME_SAVED_PC): Remove.
+ * m68k-tdep.c (m68k_register_bytes_ok):Add.
+ (m68k_store_struct_return): Add.
+ (m68k_deprecated_extract_return_value): Add.
+ (m68k_deprecated_extract_struct_value_address): Add.
+ (m68k_store_return_value): Add.
+ (m68k_frame_chain): Add.
+ (m68k_frameless_function_invocation): Add.
+ (m68k_frame_saved_pc): Add.
+ (m68k_gdbarch_init): added set_gdbarch calls for new
+ functions and deleted macros.
+
+2002-06-23 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in (HFILES_NO_SRCDIR): Remove old files.
+ (ALLDEPFILES): Likewise.
+ (udiheaders): Removed.
+ (udip2soc.o): Likewise.
+ (udi2go32.o): Likewise.
+ (udr.o): Likewise.
+ (HFILES_WITH_SRCDIR): Don't mention udiheaders.
+
+2002-06-22 Andrew Cagney <ac131313@redhat.com>
+
+ * infrun.c (_initialize_infrun): Delete unnecessary call to
+ build_infrun.
+
+ * regcache.h: Update comments describing the regcache_cpy family
+ of functions.
+ (regcache_save, regcache_restore): Delete declaration.
+ (regcache_save_no_passthrough): Delete declaration.
+ (regcache_restore_no_passthrough): Delete declaration.
+ * regcache.c (regcache_save): Delete function.
+ (regcache_save_no_passthrough): Delete function.
+ (regcache_restore): Delete function.
+ (regcache_restore_no_passthrough): Delete function.
+
+2002-06-21 Andrew Cagney <ac131313@redhat.com>
+
+ * config/m68k/tm-m68k.h: Fix typo.
+ (FRAME_INIT_SAVED_REGS): Define when non-multi-arch.
+ (m68k_frame_init_saved_regs): Declare.
+
+2002-06-21 Jim Blandy <jimb@redhat.com>
+
+ Remove some vestiges of Harris 88k support.
+ * dwarf2read.c (decode_locdesc): Remove `#if' block for Harris 88k
+ register numbering quirk.
+ * elfread.c (elf_symtab_read): Remove `#if' block for skipping
+ odd symbols occurring in Harris 88k ELF targets.
+
+2002-06-21 Tom Tromey <tromey@redhat.com>
+
+ * gdb_locale.h: New file.
+ * Makefile.in (GDB_CFLAGS): Define LOCALEDIR.
+ (defs_h): Added gdb_locale.h.
+ * configure, config.in: Rebuilt.
+ * configure.in (PACKAGE): Define.
+ * defs.h: Include gdb_locale.h.
+ * main.c (captured_main): Call setlocale, bindtextdomain,
+ textdomain.
+
+2002-06-21 Dave Brolley <brolley@redhat.com>
+
+ From Stan Shebs, Jim Blandy, Mark Salter, Kevin Buettner:
+ * config/frv/frv.mt: New file.
+ * config/frv/tm-frv.h: New file.
+ * configure.tgt: Support frv-*-*.
+ * Makefile.in (frv-tdep.o): New target.
+ * frv-tdep.c: New file.
+ * NEWS: Mention frv.
+
+2002-06-21 Dave Brolley <brolley@redhat.com>
+
+ * MAINTAINERS: Add self to "Write After Approval" list.
+
+2002-06-21 Grace Sainsbury <graces@redhat.com>
+
+ * config/m68k/tm-m68k.h (REGISTER_BYTE, REGISTER_RAW_SIZE)
+ (REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
+ (REGISTER_VIRTUAL_TYPE, REGISTER_NAMES, TARGET_LONG_DOUBLE_FORMAT)
+ (FUNCTION_START_OFFSET, SKIP_PROLOGUE, SAVED_PC_AFTER_CALL)
+ (INNER_THAN, STACK_ALIGN, REGISTER_SIZE): Remove macros.
+
+ * m68k-tdep.c: Include arch-utils.h
+ (m68k_register_raw_size): Add.
+ (m68k_register_virtual_size): Add.
+ (m68k_register_virtual_type): Add.
+ (m68k_register_name): Add.
+ (m68k_stack_align): Add.
+ (m68k_register_byte): Add.
+ (m68k_gdbarch_init): Add set_gdbarch calls for macros removed in
+ tm-m68k.h.
+
+2002-06-21 Grace Sainsbury <graces@redhat.com>
+
+ * m68k-tdep.c (m68k_frame_init_saved_regs): Replace
+ m68k_find_saved_regs.
+ (m68k_pop_frame): Removed saved_regs structure, and replaced
+ references to it with frame->saved_regs.
+ (m68k_gdbarch_init): Added function calls to initialize the
+ gdbarch structure.
+ (m68k_fix_call_dummy): Add.
+ * config/m68k/tm-m68k.h: (FRAME_FIND_SAVED_REGS): Remove.
+ (CALL_DUMMY): Remove.
+ (CALL_DUMMY_LENGTH): Remove.
+ (CALL_DUMMY_START_OFFSET): Remove.
+ (CALL_DUMMY_BREAKPOINT_OFFSET): Remove.
+ (FIX_CALL_DUMMY): Remove.
+ (PUSH_DUMMY_FRAME): Remove.
+ (POP_FRAME): Remove.
+
+2002-06-19 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * parse.c (parse_fprintf): New function used to avoid calls to
+ fprintf in bison parser generated debug code.
+ * parser-defs.h: Declaration of new parse_fprintf function.
+ * ada-exp.y, c-exp.y, f-exp.y, jv-exp.y, m2-exp.y, p-exp.y:
+ Set YYDEBUG to 1 by default.
+ Set YYFPRINTF as parse_fprintf.
+
+2002-06-21 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c (read_encoded_pointer): Don't handle pointer
+ encoding anymore.
+ (pointer_encoding, enum ptr_encoding): New.
+ (execute_cfa_program): Take care about pointer encoding.
+ (dwarf2_build_frame_info): Only call parse_frame_info for
+ .debug_frame and .eh_frame.
+ (parse_frame_info): New, derived from former dwarf2_build_frame_info.
+ fixed augmentation handling, added relative addressing,
+ ignore duplicate FDEs. Added comments.
+ * dwarf2cfi.c: Reindented.
+
+2002-06-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * event-top.c (command_handler): Don't use space_at_cmd_start
+ unless there is sbrk() on the host. Assign time and space data
+ to union fields of the appropriate length.
+
+2002-06-20 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_register_nr2name): Rename to
+ x86_64_register_name. Return type changed to 'const char *'.
+ (x86_64_register_name2nr): Rename to x86_64_register_number.
+ (x86_64_gdbarch_init): Update to reflect the change.
+ * x86-64-tdep.h: Ditto.
+ * x86-64-linux-nat.c (x86_64_fxsave_offset)
+ (supply_fpregset): Ditto.
+
+2002-06-19 Andrew Cagney <cagney@redhat.com>
+
+ * regcache.h: Update copyright.
+ (struct regcache, struct gdbarch): Add opaque declarations.
+ (current_regcache): Declare global variable.
+ (regcache_read, regcache_write): Add gdbarch parameter.
+ (regcache_save, regcache_save_no_passthrough)
+ (regcache_restore, regcache_restore_no_passthrough)
+ (regcache_dup, regcache_dup_no_passthrough)
+ (regcache_cpy, regcache_cpy_no_passthrough)
+ (deprecated_grub_regcache_for_registers)
+ (deprecated_grub_regcache_for_register_valid)
+ (regcache_valid_p): Add function declarations.
+
+ * regcache.c: Update copyright.
+ (regcache_descr_handle): New global variable.
+ (struct regcache_descr): Define.
+ (init_legacy_regcache_descr, init_regcache_descr): New functions.
+ (regcache_descr, xfree_regcache_descr): New functions.
+ (struct regcache): Define.
+ (regcache_xmalloc, regcache_xfree): New functions.
+ (regcache_cpy, regcache_cpy_no_passthrough): New functions.
+ (regcache_dup, regcache_dup_no_passthrough): New functions.
+ (regcache_valid_p, regcache_read_as_address): New functions.
+ (deprecated_grub_regcache_for_registers): New function.
+ (deprecated_grub_regcache_for_register_valid): New function.
+ (current_regcache): New global variable.
+ (register_buffer): Add regcache parameter. Update calls.
+ (regcache_read, regcache_write): Add regcache parameter. Rewrite.
+ (read_register_gen, write_register_gen): Update register_buffer
+ call. Test for legacy_p instead of gdbarch_register_read_p or
+ gdbarch_register_write_p.
+ (regcache_collect): Update register_buffer call.
+ (build_regcache): Rewrite. Use deprecated grub functions.
+ (regcache_save, regcache_save_no_passthrough): New functions.
+ (regcache_restore, regcache_restore_no_passthrough): New
+ functions.
+ (_initialize_regcache): Create the regcache_data_handle. Swap
+ current_regcache global variable.
+
+ * sh-tdep.c (sh_pseudo_register_read): Add current_regcache
+ parameter to regcache_read and regcache_write calls.
+ (sh4_register_read): Ditto.
+ (sh64_pseudo_register_read): Ditto.
+ (sh64_register_read): Ditto.
+ (sh_pseudo_register_write): Ditto.
+ (sh4_register_write): Ditto.
+ (sh64_pseudo_register_write): Ditto.
+ (sh64_register_write): Ditto.
+
+ * defs.h (XCALLOC): Define.
+
+2002-06-19 Grace Sainsbury <graces@redhat.com>
+
+ * config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Added (set to 0).
+ * m68k-tdep.c (m68k_gdbarch_init): Added.
+ (m68k_dump_tdep): Added.
+
+2002-06-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * ada-lang.c (fill_in_ada_prototype): Update comment.
+
+2002-06-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-tdep.c (enum mips_abi): Explicitly start at 0. Add
+ MIPS_ABI_LAST.
+ (mips_abi_string, mips_abi_strings): New.
+ (struct gdbarch_tdep): Remove mips_abi_string, add found_abi.
+ (mips_gdbarch_init): Set tdep->found_abi. Don't set
+ tdep->mips_abi_string. Honor mips_abi_string. Default to
+ O32 if no ABI is found.
+ (mips_dump_tdep): Use mips_abi_strings.
+ (mips_abi_update): New function.
+ (_initialize_mips_tdep): Initialize mips_abi_string. Add
+ ``set mips abi'' and ``show mips abi''. Check the size of
+ mips_abi_strings.
+
+2002-06-19 Andrew Cagney <cagney@redhat.com>
+
+ * i386-linux-tdep.c (i386_linux_register_name): Make return type
+ constant.
+
+2002-06-18 Joel Brobecker <brobecker@gnat.com>
+
+ * alpha-tdep.c (heuristic_proc_desc): Compute the size of the
+ current frame using only the first stack size adjustment. All
+ subsequent size adjustments are not considered to be part of
+ the "static" part of the current frame.
+ Compute the address of the saved registers relative to the
+ Frame Pointer ($fp) instead of the Stack Pointer if $fp is
+ in use in this frame.
+
+2002-06-18 Don Howard <dhoward@redhat.com>
+
+ * valops.c (value_ind): Use value_at_lazy() when dereferencing
+ type int expressions. Thanks to Jim Blandy <jimb@redhat.com> for
+ suggesting this solution.
+
+2002-06-18 Andrew Cagney <ac131313@redhat.com>
+
+ * config/romp/xm-rtbsd.h: Delete file.
+ * config/romp/rtbsd.mh: Delete file.
+
+2002-06-18 Keith Seitz <keiths@redhat.com>
+
+ * breakpoint.c (condition_command): Post breakpoint_modify
+ when a condition is added to an existing breakpoint.
+ (commands_command): Likewise for commands.
+ (set_ignore_count): Likewise for ignore counts.
+ If no tty, do not simply return, still need to send event
+ notification.
+ (ignore_command): Only print a newline if the command came
+ from a tty.
+ Don't call breakpoints_changed, since this is now properly
+ handled by set_ignore_count.
+
+2002-06-18 Andrew Cagney <cagney@redhat.com>
+
+ * MAINTAINERS: Note that cris-elf target can be compiled with
+ -Werror.
+ * cris-tdep.c (cris_register_name): Make return type constant.
+ (cris_breakpoint_from_pc): Ditto.
+
+2002-06-18 Michal Ludvig <mludvig@suse.cz>
+
+ * frame.h (struct frame_info): Change type of context to
+ 'struct context'.
+
+2002-06-17 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (REGISTER_NAME): Change return type a constant string
+ pointer.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * config/mips/tm-mips.h (mips_register_name): Update.
+ * i386-tdep.h (i386_register_name): Update.
+ * mips-tdep.c (mips_register_name): Update
+ * alpha-tdep.c (alpha_register_name): Update.
+ * arch-utils.c (legacy_register_name): Update.
+ * arch-utils.h (legacy_register_name): Update.
+ * avr-tdep.c (avr_register_name): Update.
+ * ia64-tdep.c (ia64_register_name): Update.
+ * i386-tdep.c (i386_register_name): Update.
+ * sparc-tdep.c (sparc32_register_name): Update.
+ (sparc64_register_name): Update.
+ (sparclite_register_name): Update.
+ (sparclet_register_name): Update.
+ * sh-tdep.c (sh_generic_register_name): Update.
+ (sh_sh_register_name): Update.
+ (sh_sh3_register_name): Update.
+ (sh_sh3e_register_name): Update.
+ (sh_sh_dsp_register_name): Update.
+ (sh_sh3_dsp_register_name): Update.
+ (sh_sh4_register_name): Update.
+ (sh_sh64_register_name): Update.
+ * s390-tdep.c (s390_register_name): Update.
+ * rs6000-tdep.c (rs6000_register_name): Update.
+ * ns32k-tdep.c (ns32k_register_name_32082): Update.
+ (ns32k_register_name_32382): Update.
+ * d10v-tdep.c (d10v_ts2_register_name): Update.
+ (d10v_ts3_register_name): Update.
+ * xstormy16-tdep.c (xstormy16_register_name): Update.
+ * vax-tdep.c (vax_register_name): Update.
+ * v850-tdep.c (v850_register_name): Update.
+ * m68hc11-tdep.c (m68hc11_register_name): Update.
+ * mn10300-tdep.c (mn10300_generic_register_name): Update.
+ (am33_register_name): Update.
+
+2002-06-17 Grace Sainsbury <graces@redhat.com>
+
+ * m68k-tdep.c: Reindented.
+
+2002-06-17 Andrew Cagney <ac131313@redhat.com>
+
+ * gdb_indent.sh: Add prgregset_t, fpregset_t, and gregset_t to the
+ list of predefined types.
+
+2002-06-16 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE,
+ REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL,
+ REGISTER_CONVERT_TO_RAW): Remove defines.
+ (i386_register_virtual_type, i386_register_convertible,
+ i386_register_convert_to_virtual, i386_register_convert_to_raw):
+ Remove prototypes.
+ * i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
+ macros mentioned above.
+
+ * config/i386/tm-i386lynx.h (SAVED_PC_AFTER_CALL): Remove define.
+ (i386lynx_saved_pc_after_call): Remove prototype.
+ * i386ly-tdep.c: Include "i386-tdep.h".
+ (i386lynx_saved_pc_after_call): Make static. Use
+ read_memory_nobpt instead of read_memory. Use
+ read_memory_unsigned_integer instead of read_memory_integer.
+ (i386lynx_init_abi): New function.
+ (i386lynx_coff_osabi_sniffer): New function.
+ (_initialize_i386bsd_tdep): New function.
+
+ * config/i386/tm-i386.h (PARM_BOUNDARY, CALL_DUMMY,
+ CALL_DUMMY_LENGTH, CALL_DUMMY_START_OFFSET,
+ CALL_DUMMY_BREAKPOINT_OFFSET, FIX_CALL_DUMMY): Remove defines.
+ (i386_fix_call_dummy): Remove prototype.
+ * i386-tdep.c (i386_call_dummy_words): New variable.
+ (i386_gdbarch_init): Adjust for removal of the
+ macros mentioned above.
+
+2002-06-15 Andrew Cagney <ac131313@redhat.com>
+
+ * command.h (add_setshow_auto_boolean_cmd): Replace
+ add_set_auto_boolean_cmd.
+ * cli/cli-decode.c (add_setshow_auto_boolean_cmd): Replace
+ add_set_auto_boolean_cmd.
+ * cli/cli-decode.h (add_set_auto_boolean_cmd): Delete declaration.
+ * mips-tdep.c (_initialize_mips_tdep): Update ``set mips
+ mask-address'' command.
+ (show_mask_address): Add cmd parameter.
+ * remote.c (add_packet_config_cmd): Update. Change type of
+ set_func and show_func to cmd_sfunc_ftype.
+ (_initialize_remote): Update `set remote Z-packet'
+ (show_remote_protocol_qSymbol_packet_cmd): Add cmd parameter.
+ (show_remote_protocol_e_packet_cmd): Ditto.
+ (show_remote_protocol_E_packet_cmd): Ditto.
+ (show_remote_protocol_P_packet_cmd): Ditto.
+ (show_remote_protocol_Z_software_bp_packet_cmd): Ditto.
+ (show_remote_protocol_Z_hardware_bp_packet_cmd): Ditto.
+ (show_remote_protocol_Z_write_wp_packet_cmd): Ditto.
+ (show_remote_protocol_Z_read_wp_packet_cmd): Ditto.
+ (show_remote_protocol_Z_access_wp_packet_cmd): Ditto.
+ (show_remote_protocol_Z_packet_cmd): Ditto.
+ (show_remote_protocol_binary_download_cmd): Ditto.
+ (show_remote_cmd): Pass NULL to all of above.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386.h (PUSH_ARGUMENTS, STORE_STRUCT_RETURN,
+ DEPRECATED_EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE,
+ DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS, PUSH_DUMMY_FRAME,
+ POP_FRAME): Remove defines.
+ (i386_push_arguments, i386_store_struct_return,
+ i386_extract_return_value, i386_store_return_value,
+ i386_extract_struct_value_address, i386_push_dummy_frame,
+ i386_pop_frame): Renove prototypes.
+ * i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
+ macros mentioned above.
+
+2002-06-15 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (add_setshow_boolean_cmd): Replace
+ add_set_boolean_cmd.
+ (add_setshow_cmd): New function.
+ * command.h (add_setshow_boolean_cmd): Replace
+ add_set_boolean_cmd.
+ * remote-rdi.c (_initialize_remote_rdi): Update ``set rdiheartbeat''
+ and ``set rdiromatzero''.
+ * maint.c (_initialize_maint_cmds): Update commented out code.
+ * cli/cli-decode.h (add_set_boolean_cmd): Delete declaration.
+ * target.c (initialize_targets): Update `set
+ trust-readonly-sections'.
+ * remote.c (_initialize_remote): Update `set remotebreak'.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386.h (FUNCTION_START_OFFSET, INNER_THAN,
+ BREAKPOINT, DECR_PC_AFTER_BREAK): Removed.
+ * i386-tdep.c (i386_skip_prologue): Adjust function signature to
+ fit into multi-arch framework.
+ (i386_breakpoint_from_pc): New function.
+ (i386_gdbarch_init): Adjust for removal of the macros mentioned
+ above.
+
+ * config/i386/tm-i386.h (FRAMELESS_FUNCTION_INVOCATION,
+ FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS,
+ FRAME_ARGS_SKIP, FRAME_INIT_SAVED_REGS): Remove defines.
+ (i386_frameless_function_invocation, i386_frame_num_args,
+ i386_frame_init_saved_regs): Remove prototypes.
+ * i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
+ macros mentioned above.
+
+2002-06-15 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (set_cmd_cfunc): Update.
+ (set_cmd_sfunc): Update.
+ * command.h (cmd_cfunc_ftype, cmd_sfunc_ftype): Declare.
+ (set_cmd_sfunc, set_cmd_cfunc): Update.
+ * cli/cli-decode.h: Update.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-sol2-tdep.c (i386_sol2_osabi_sniffer): New function.
+ (_initialize_i386_sol2_tdep): Register i386_sol2_osabi_sniffer.
+
+2002-06-15 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (auto_boolean): Declare enum.
+ * command.h (cmd_auto_boolean): Delete enum.
+ * mips-tdep.c (mask_address_var): Update.
+ (mips_mask_address_p): Update.
+ (show_mask_address): Update.
+ * remote.c (struct packet_config): Update.
+ (update_packet_config): Update.
+ (show_packet_config_cmd): Update.
+ (packet_ok): Update.
+ (add_packet_config_cmd): Update.
+ (_initialize_remote):
+ * command.h: Update.
+ * cli/cli-setshow.c (parse_auto_binary_operation): Update.
+ (do_setshow_command): Update.
+ * cli/cli-decode.c (add_set_auto_boolean_cmd): Update.
+ * cli/cli-decode.h: Update.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-cygwin.h, config/i386/tm-fbsd.h,
+ config/i386/tm-go32.h, config/i386/tm-i386gnu.h,
+ config/i386/tm-i386sol2.h, config/i386/tm-i386v4.h,
+ config/i386/tm-linux.h, config/i386/tm-nbsd.h,
+ config/i386/tm-obsd.h (HAVE_I387_REGS): Remove define.
+ * config/i386/tm-i386.h: Unconditionally define FLOAT_INFO.
+
+ * i386-tdep.c (i386_coff_osabi_sniffer): Add "coff-go32" to the
+ list of DJGPP COFF targets.
+
+ * config/i386/tm-i386.h (REGISTER_SIZE): Remove define.
+ (NUM_GREGS, NUM_FREGS, NUM_SSE_REGS): Remove defines.
+ (FP_REGNUM, SP_REGNUM, PC_REGNUM, PS_REGNUM): Remove defines.
+ (FP0_REGNUM): Remove define.
+ (MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE,
+ MAX_REGISTER_VIRTUAL_SIZE): Remove define.
+ (i386_register_virtual_size): Remove protoype.
+ * i386-tdep.c (i386_register_virtual_size): Removed.
+ (i386_extract_return_value, i386_store_return_value): Use
+ FP0_REGNUM instead of NUM_FREGS to determine whether the
+ floating-point registers are available.
+ (i386_gdbarch_init): Tweak FIXME about FPU registers.
+ Adjust for removal of macros mentioned above.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * i386v4-nat.c: Include "i386-tdep.h". Reformat and tweak various
+ comments.
+ (fill_gregset, supply_gregset, supply_fpregset, fill_fpregset):
+ Remove prototypes.
+ (supply_gregset, fill_gregset): Remove use of register keyword and
+ remove declaration for regmap. Use I386_NUM_GREGS instead of
+ NUM_REGS and NUM_FREGS.
+ (FPREGSET_FSAVE_OFFSET): Remove.
+ (supply_fpregset, fill_fpregset): Use FPO_REGNUM instead of
+ NUM_FREGS to determine whether the floating-point registers are
+ available.
+
+ * i386gnu-nat.c (supply_gregset, gnu_fetch_registers,
+ gnu_store_registers): Replace usage of NUM_GREGS with
+ I386_NUM_GREGS.
+
+ * i386-linux-nat.c (OLD_CANNOT_FETCH_REGISTER,
+ OLD_CANNOT_STORE_REGISTER, supply_gregset, fill_gregset): Replace
+ usage of NUM_GREGS with I386_NUM_GREGS.
+
+ * i386-linux-nat.c (fill_gregset): Remove redundant parentheses.
+
+ * i386bsd-nat.c: Include "i386-tdep.h".
+ (supply_gregset, fill_gregset): Replace usage of NUM_GREGS with
+ I386_NUM_GREGS.
+
+ * i386v-nat.c: Remove copnditional inclusion of <asm/debugreg.h>,
+ and associated comment. They no longer make any sense, since we
+ don't use this file anymore on Linux.
+
+ * config/i386/tm-i386.h (MAX_NUM_REGS): Removed.
+ * i386-tdep.c (i386_register_offset, i386_register_size): Use
+ I386_SSE_NUM_REGS instead of MAX_NUM_REGS for the number of
+ elements in these arrays.
+ (_initialize_i386_tdep): Use I386_SSE_NUM_REGS instead of
+ MAX_NUM_REGS.
+
+2002-06-15 Mark Kettenis <kettenis@gnu.org>
+
+ * osabi.h (gdb_osabi): Add GDB_OSABI_LYNXOS.
+ * osabi.c (gdb_osabi_names): Add entry for "LynxOS".
+
+2002-06-14 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename
+ EXTRACT_RETURN_VALUE.
+ (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename
+ EXTRACT_STRUCT_VALUE_ADDRESS.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * values.c (value_being_returned): Handle
+ DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
+ (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE.
+
+ * arm-linux-tdep.c (arm_linux_init_abi): Update.
+ * arm-tdep.c (arm_gdbarch_init): Update.
+ * avr-tdep.c (avr_gdbarch_init): Update.
+ * cris-tdep.c (cris_gdbarch_init): Update.
+ * d10v-tdep.c (d10v_gdbarch_init): Update.
+ * ia64-tdep.c (ia64_gdbarch_init): Update.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Update.
+ * s390-tdep.c (s390_gdbarch_init): Update.
+ * sh-tdep.c (sh_gdbarch_init): Update.
+ * s390-tdep.c (s390_gdbarch_init): Update.
+ * sparc-tdep.c (sparc_gdbarch_init): Update.
+ * ns32k-tdep.c (ns32k_gdbarch_init): Update.
+ * v850-tdep.c (v850_gdbarch_init): Update.
+ * vax-tdep.c (vax_gdbarch_init): Update.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Update.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
+
+ * config/arc/tm-arc.h: Update.
+ * config/d30v/tm-d30v.h: Update.
+ * config/fr30/tm-fr30.h: Update.
+ * config/h8300/tm-h8300.h: Update.
+ * config/h8500/tm-h8500.h: Update.
+ * config/i386/tm-i386.h: Update.
+ * config/i386/tm-ptx.h: Update.
+ * config/i386/tm-symmetry.h: Update.
+ * config/i960/tm-i960.h: Update.
+ * config/m32r/tm-m32r.h: Update.
+ * config/m68k/tm-delta68.h: Update.
+ * config/m68k/tm-linux.h: Update.
+ * config/m68k/tm-m68k.h: Update.
+ * config/m88k/tm-m88k.h: Update.
+ * config/mcore/tm-mcore.h: Update.
+ * config/mips/tm-mips.h: Update.
+ * config/mn10200/tm-mn10200.h: Update.
+ * config/pa/tm-hppa.h: Update.
+ * config/pa/tm-hppa64.h: Update.
+ * config/sparc/tm-sp64.h: Update.
+ * config/sparc/tm-sparc.h: Update.
+ * config/sparc/tm-sparclet.h: Update.
+ * config/z8k/tm-z8k.h: Update.
+
+2002-06-14 Andrew Cagney <cagney@redhat.com>
+
+ * Makefile.in (i386_linux_tdep_h): Define.
+ (i386_tdep_h, i387_tdep_h): Define.
+ (i386-linux-nat.o): Add $(i386_linux_tdep_h),
+ $(i386_tdep_h) and $(i387_tdep_h).
+ * i386-linux-nat.c: Include "i386-linux-tdep.h".
+
+2002-06-14 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/tm-i386.h (START_INFERIOR_TRAPS_EXPECTED): Removed.
+ Already covered by the default.
+
+ * config/i386/tm-i386.h (TARGET_LONG_DOUBLE_FORMAT,
+ TARGET_LONG_DOUBLE_BIT): Remove. * i386-tdep.c
+ (i386_gdbarch_init): Initialize long_double_format and long_double
+ bit.
+
+ * config/i386/i386sol2.mt (TDEPFILES): Add i386-sol2-tdep.o and
+ i386bsd-tdep.o. Remove solib.o, solib-svr4.o and solib-legacy.o.
+ Move these to ...
+ * config/i386/i386sol2.mh: ... here.
+ * config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Remove define.
+ (sigtramp_saved_pc, I386V4_SIGTRAMP_SAVED_PC): Don't #undef.
+ (SIGCONTEXT_PC_OFFSET): Remove define.
+ (IN_SIGTRAMP): Remove define.
+ * i386-sol2-tdep.c: New file.
+
+ * config/i386/i386nw.mt (TM_FILE): Change to tm-i386.h.
+ * config/i386/tm-i386nw.h: Removed.
+
+ * config/i386/tm-fbsd.h (STAB_REG_TO_REGNUM,
+ USE_STRUCT_CONVENTION): Remove defines.
+ (JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
+ (get_longjmp_target): Remove prototype.
+ (IN_SIGTRAMP): Remove define.
+ (i386bsd_in_sigtramp): Remove prototype.
+ (i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
+ function. Update comment accordingly
+ (SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
+ (FRAME_SAVED_PC): Remove define.
+ (i386bsd_frame_saved_pc): Remove prototype.
+ * config/i386/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC,
+ GET_LONGJMP_TARGET): Remove defines.
+ (get_longjmp_target): Remove prototype.
+ (IN_SIGTRAMP): Remove define.
+ (i386bsd_in_sigtramp): Remove prototype.
+ (i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
+ function. Update comment accordingly
+ (SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
+ (FRAME_SAVED_PC): Remove define.
+ (i386bsd_frame_saved_pc): Remove prototype.
+ * config/i386/tm-nbsdaout.h (i386nbsd_aout_use_struct_convention):
+ Remove prototype.
+ (USE_STRUCT_CONVENTION): Remove prototype.
+ * i386bsd-nat.c (i386bsd_sigcontext_pc_offset): Remove
+ declaration.
+ (_initialize_i386bsd_nat): Revise logic to determine some
+ constants at compile time when compiling a native GDB. Warn if
+ things don't match up with what we expect.
+ * i386bsd-tdep.c (i386bsd_sigtramp_start, i386bsd_sigtramp_end):
+ Remove variables.
+ (i386bsd_in_sigtramp): Rename tp i386bsd_pc_in_sigtramp. Rewrite
+ to use date stored in `struct gdbarch_tdep'.
+ (i386bsd_sigcontext_offset): Remove varaible.
+ (i386bsd_sigtramp_saved_pc): Make public. Rewrite to use data
+ stored in `struct gdbarch_tdep'.
+ (i386bsd_frame_saved_pc): Make static.
+ (i386bsd_sigtramp_start, i386bsd_sigtramp_end): New functions.
+ (i386bsd_sc_pc_offset, i386nbsd_sc_pc_offset,
+ i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
+ i386fbsd4_sc_pc_offset): New variables.
+ (i386bsd_init_abi, i386nbsd_init_abi, i386nbsdelf_init_abi,
+ i386fbsdaout_init_abi, i386fbsd_init_abi, i386fbsd4_init_abi): New
+ functions.
+ (i386bsd_aout_osabi_sniffer, _initialize_i386bsd_tdep): New
+ functions.
+ * i386fbsd-nat.c (_initialize_i386fbsd_nat): Fix type in comment.
+ Modify the value of i386fbsd_sigtramp_start and
+ i386fbsd_sigtramp_end instead of i386bsd_sigtramp_start and
+ i386fbsd_sigtramp_end.
+ * i386nbsd-tdep.c: (i386nbsd_aout_use_struct_convention): Remove
+ function.
+
+ * config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): Move
+ define to i386-linux-tdep.h.
+ (NUM_REGS, MAX_NUM_REGS, REGISTER_BYTES, REGISTER_NAME,
+ REGISTER_BYTE, REGISTER_RAW_SIZE, STAB_REG_TO_REGNUM): Remove
+ defines.
+ (i386_linux_register_name, i386_linux_register_byte,
+ i386_linux_register_raw_size): Remove prototypes.
+ (i386_linux_svr4_fetch_link_map_offsets): Remove prototype.
+ (SVR4_FETCH_LINK_MAP_OFFSETS): Remove define.
+ (IN_SIGTRAMP, FRAME_CHAIN, FRAME_SAVED_PC, SAVED_PC_AFTER_CALL,
+ TARGET_WRITE_PC): Remove defines.
+ (i386_linux_in_sigtramp, i386_linux_frame_chain,
+ i386_linux_frame_saved_pc, i386_linux_saved_pc_after_call,
+ i386_linux_write_pc): Remove prototypes.
+ (JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
+ (get_longjmp_target): Remove prototype.
+ * i386-linux-tdep.h: New file.
+ * i386-linux-nat.c: Include "i386-linux-tdep.h".
+ * i386-linux-tdep.c: Include "i386-tdep.h" and
+ "i386-linux-tdep.h".
+ (i386_linux_register_name, i386_linux_register_byte,
+ i386_linux_register_raw_size, i386_linux_in_sigtramp,
+ i386_linux_write_pc, i386_linux_svr4_fetch_link_map_offsets):
+ Make static.
+ (i386_linux_init_abi): New function.
+ (_initialize_i386_linux_tdep): New function.
+
+ * config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Remove define.
+ (i386_saved_pc_after_call): Remove prototype.
+ (MAX_NUM_REGS): Increase to deal with Linux's orig_eax "register".
+ (REGISTER_NAME, STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
+ DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): Remove defines.
+ (i386_register_name, i386_stab_reg_to_regnum,
+ i386_dwarf_reg_to_regnum): Remove prototypes.
+ (SIZEOF_GREGS, SIZEOF_FPU_REGS, SIZEOF_FPU_CTL_REGS,
+ SIZEOF_SSE_REGS): Remove defines.
+ (REGISTER_BYTES): Remove define.
+ (REGISTER_BYTE, REGISTER_RAW_SIZE): Remove defines.
+ (i386_register_byte, i386_register_raw_size): Remove prototypes.
+ (FRAME_CHAIN, FRAME_SAVED_PC): Remove defines.
+ (i386_frame_chain, i386_frame_saved_pc): Remove prototypes.
+ * config/i386/tm-i386v4.h (FRAME_CHAIN_VALID): Remove define.
+ (JB_ELEMENT_SIZE, JB_PC, JB_EBX, JB_ESI, JB_EDI, JB_EBP, JB_ESP,
+ JB_EDX, GET_LONGJMP_TARGET): Remove defines.
+ (get_longjmp_target): Remove prototype.
+ (I386V4_SIGTRAMP_SAVED_PC, IN_SIGTRAMP): Remove defines.
+ (sigtramp_saved_pc): Remove define.
+ (i386v4_sigtramp_saved_pc): Remove prototype.
+ * config/i386/tm-go32.h (FRAME_CHAIN,
+ FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC): Remove defines.
+ (i386go32_frame_saved_pc): Remove prototype.
+ (JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
+ (get_longjmp_target): Remove prototype.
+ * i386-tdep.h: Include "osabi.h".
+ (enum i386_abi): Removed.
+ (enum struct_return): New enum.
+ (struct gdbarch_tdep): Remove abi member, add osabi, jb_pc_offset,
+ struct_return, sigtramp_saved_pc, sigtramp_start, sigtramp_end and
+ sc_pc_offset members.
+ (i386_gdbarch_register_os_abi): Remove prototype.
+ (I386_NUM_GREGS, I386_NUM_FREGS, I386_NUM_XREGS,
+ I386_SSE_NUM_REGS): New defines.
+ (I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS,
+ I386_SSE_SIZEOF_REGS): New defines.
+ (i386_register_name, i386_register_byte, i386_register_raw_size):
+ New prototypes.
+ (i386_elf_init_abi, i386_svr4_init_abi): New prototypes.
+ (i386bsd_sigtramp_saved_pc): New prototype.
+ * i386-tdep.c: Don't include "elf-bfd.h".
+ (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum,
+ i386_frame_chain, i386_saved_pc_after_call): Make static.
+ (i386_frame_saved_pc): Rewrite to call architecture dependent
+ function to deal with signal handlers. Make static.
+ (i386go32_frame_saved_pc): Removed.
+ [GET_LONGJMP_TARGET] (JB_PC, JB_ELEMENT_SIZE, get_longjmp_target):
+ Removed.
+ (i386_get_longjmp_target): New function.
+ (default_struct_convention, pcc_struct_convention,
+ reg_struct_convention, valid_conventions, struct_convention): New
+ variables.
+ (i386_use_struct_convention): New function.
+ (i386v4_sigtramp_saved_pc): Renamed to
+ i386_svr4_sigtramp_saved_pc. Made static. Moved.
+ (i386_pc_in_sigtramp): New function.
+ (i386_abi_names): Removed.
+ (ABI_TAG_OS_GNU_LINUX, ABI_TAG_OS_GNU_HURD,
+ ABI_TAG_OS_GNU_SOLARIS, ABI_TAG_OS_FREEBSD, ABI_TAG_OS_NETBSD):
+ Removed.
+ (process_note_sections, i386_elf_abi_from_note, i386_elf_abi,
+ i386_gdbarch_register_os_abi): Removed.
+ (struct i386_abi_handler): Removed.
+ (i386_abi_handler_list): Removed.
+ (i386_svr4_pc_in_sigtramp, i386_go32_pc_in_sigtramp): New
+ functions.
+ (i386_elf_init_abi, i386_svr4_init_abi, i386_go32_init_abi,
+ i386_nw_init_abi): New functions.
+ (i386_gdbarch_init): Rewritten to use generic OS ABI framework.
+ Use set_gdbarch_xxx() calls instead of relying on macros for a
+ number of calls.
+ (i386_coff_osabi_sniffer, i386_nlm_osabi_sniffer): New functions.
+ (_initialize_i386_tdep): Add new 'struct-convcention' command.
+ Register the various architecture variants defined in this file.
+
+2002-06-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h (TYPE_FLAG_VARARGS): Update comment.
+ (struct main_type): Remove arg_types member. Update comments for
+ struct field.
+ (TYPE_ARG_TYPES): Remove.
+ (TYPE_FN_FIELD_ARGS): Update.
+ (smash_to_method_type): Update prototype.
+
+ * c-typeprint.c (cp_type_print_method_args): Take method type
+ instead of argument list. Use new argument layout. Simplify.
+ (c_type_print_args): Use new argument layout. Simplify.
+ (c_type_print_base): Update call to cp_type_print_method_args.
+ * dwarf2read.c (dwarf2_add_member_fn): Remove unneeded type
+ argument; use die->type instead. Update call to
+ smash_to_method_type.
+ (read_structure_scope): Update call to dwarf2_add_member_fn.
+ * gdbtypes.c (allocate_stub_method): Update comment.
+ (smash_to_method_type): Take new NARGS and VARARGS arguments.
+ Use new argument layout.
+ (check_stub_method): Use new argument layout. Don't count
+ void as an argument.
+ (print_arg_types): Update comments. Use new argument layout.
+ (recursive_dump_type): Don't print arg_types member.
+ * hpread.c (hpread_read_struct_type): Use new argument layout.
+ (fixup_class_method_type): Likewise.
+ (hpread_type_lookup): Likewise.
+ * stabsread.c (read_type): Update calls to read_args and
+ smash_to_method_type.
+ (read_args): Use new argument layout. Simplify.
+ * valops.c (typecmp): Use new argument layout. Update parameters
+ and comments. Simplify.
+ (hand_function_call): Use new argument layout.
+ (search_struct_method): Update call to typecmp.
+ (find_overload_match): Use new argument layout.
+
+2002-06-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * NEWS: Mention multithreaded debug support for gdbserver.
+
+2002-06-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * MAINTAINERS: Mention NEWS.
+
+2002-06-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-tdep.c (PROC_SYMBOL): Add warning comment.
+ (struct mips_objfile_private, compare_pdr_entries): New.
+ (non_heuristic_proc_desc): Read the ".pdr" section if it
+ is present.
+
+2002-06-12 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_push_arguments): Rewrite using a two-pass loop.
+ (arm_debug): New static variable.
+ (_initialize_arm_tdep): Add ``set debug arm'' command.
+
+2002-06-12 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (sim_arm_h): Define.
+ (arm-tdep.o): Add $(sim_arm_h) and $(gdb_assert_h).
+ * arm-tdep.c: Include "gdb/sim-arm.h" and "gdb_assert.h".
+ (arm_register_sim_regno): New function, map an internal REGNUM
+ onto a simulator register number.
+ (arm_gdbarch_init): Set register_sim_regno.
+
+2002-06-09 Aldy Hernandez <aldyh@redhat.com>
+
+ * MAINTAINERS: Add self.
+
+2002-06-11 Jim Blandy <jimb@redhat.com>
+
+ * source.c (source_info): Mention whether the symtab has
+ information about preprocessor macros.
+
+ Call the command `info macro', not `show macro'.
+ * macrocmd.c (info_macro_command): Renamed from `show_macro_command'.
+ Fix error message.
+ (_initialize_macrocmd): Register `info_macro_command' in
+ `infolist', not `showlist'.
+
+2002-06-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
+ (MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
+ (MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
+ (MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
+ (MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions. Define
+ unconditionally.
+ (set_mipsfpu_single_command, set_mipsfpu_double_command)
+ (set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
+ (_initialize_mips_tdep): Remove dead code.
+ * config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
+ (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
+ * config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
+ (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
+ * config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
+ MIPS_LAST_FP_ARG_REGNUM): Remove.
+
+2002-06-11 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c (unwind_tmp_obstack_init): New.
+ (unwind_tmp_obstack_free, parse_frame_info)
+ (update_context, cfi_read_fp, cfi_write_fp)
+ (cfi_frame_chain, cfi_init_extra_frame_info)
+ (cfi_virtual_frame_pointer): Use the above function.
+ * dwarf2cfi.c: Reindented (using 'indent dwarf2cfi.c').
+
+2002-06-11 Corinna Vinschen <vinschen@redhat.com>
+
+ * v850-tdep.c (v850_type_is_scalar): New function.
+ (v850_use_struct_convention): Match current gcc implementation
+ as close as possible.
+ (v850_push_arguments): Fix stack_offset handling. Don't write
+ struct_addr into register. This is done by v850_store_struct_return.
+ (v850_extract_return_value): Care for structs.
+ (v850_store_return_value): Ditto.
+ (v850_store_struct_return): Actually write address.
+
+2002-06-11 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_skip_prologue): Fix to work on functions
+ without debug information too.
+
+2002-06-10 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (PRINT_FLOAT_INFO): Add frame and ui_file parameters.
+ Make multi-arch pure.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * arm-tdep.c (arm_print_float_info): Update.
+ * arch-utils.h (default_print_float_info): Update.
+ * arch-utils.c (default_print_float_info): Update.
+ * infcmd.c (float_info): Update call.
+
+2002-06-10 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (init.c): Move the call to _initialize_gdbtypes to
+ the front of the initialize list.
+
+2002-06-10 Andrew Cagney <ac131313@redhat.com>
+
+ * infrun.c (struct inferior_status): Replace fields
+ selected_frame_address and selected_level with field
+ selected_frame_id.
+ (save_inferior_status): Update. Use get_frame_id.
+ (struct restore_selected_frame_args): Delete.
+ (restore_selected_frame): Update. Use frame_find_by_id.
+ (restore_inferior_status): Update.
+
+ * breakpoint.h (struct breakpoint): Change type of
+ watchpoint_frame to frame_id.
+ * breakpoint.c (insert_breakpoints): Use frame_find_by_id. Remove
+ call to get_current_frame.
+ (do_enable_breakpoint): Use frame_find_by_id. Remove call to
+ get_current_frame.
+ (watchpoint_check): Use frame_find_by_id.
+
+ * frame.h (record_selected_frame): Delete declaration.
+ * stack.c (record_selected_frame): Delete function.
+
+ * frame.h (struct frame_id): Define.
+ (get_frame_id): Declare.
+ (frame_find_by_id): Declare.
+ * frame.c (frame_find_by_id): New function.
+ (get_frame_id): New function.
+
+2002-06-10 Andrey Volkov <avolkov@transas.com>
+
+ * ser-e7kpc.c: Fix duplicated define and call of
+ _initialize_ser_e7000pc
+
+2002-06-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * signals/signals.c (target_signal_from_host): Fix #ifdef
+ SIGRTMIN case.
+ (do_target_signal_to_host): Likewise.
+
+2002-06-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-tdep.c (mips_find_abi_section): New function.
+ (mips_gdbarch_init): Call it.
+
+2002-06-09 Mark Kettenis <kettenis@gnu.org>
+
+ * solib-svr4.c (init_fetch_link_map_offsets): Simply return
+ legacy_fetch_link_map_offsets. Adjust comment to reflect reality
+ after Andrew's 2002-06-08 gdbarch change.
+
+2002-06-09 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-nat.c (suppy_gregset): Don't supply
+ I386_LINUX_ORIG_EAX_REGNUM if there isn't room for it in GDB's
+ register cache.
+ (fill_gregset): Don't fetch it under the same circumstances.
+
+2002-06-09 Andrew Cagney <cagney@redhat.com>
+
+ * Makefile.in (callback_h): Define.
+ (remote_sim_h): Update path to remote-sim.h.
+ (remote-rdp.o): Add $(callback_h).
+ (remote-sim.o): Use $(callback_h).
+ * remote-sim.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
+ * remote-rdp.c: Include "gdb/callback.h".
+
+2002-06-09 Mark Kettenis <kettenis@gnu.org>
+
+ * osabi.h (gdb_osabi): Add GDB_OSABI_GO32 and GDB_OSABI_NETWARE.
+ * osabi.c (gdb_osabi_names): Add "DJGPP" and "NetWare".
+
+2002-06-08 Andrew Cagney <ac131313@redhat.com>
+
+ * sparcl-tdep.c: Use __CYGWIN__ instead of __CYGWIN32__.
+ * rdi-share/serpardr.c: Ditto.
+ * rdi-share/unixcomm.c: Ditto.
+ * rdi-share/serdrv.c: Ditto.
+ * rdi-share/hostchan.h: Ditto.
+ * rdi-share/hostchan.c: Ditto.
+ * rdi-share/host.h: Ditto.
+ * rdi-share/devsw.c: Ditto.
+
+ * objfiles.h: Change type of obj_private to void pointer.
+ * pa64solib.c: Update copyright. Don't include "assert.h", use
+ strcmp instead of STREQ, use LONGEST, do not use PTR
+ * somsolib.c: Ditto.
+
+ * config/djgpp/fnchange.lst: Fix problems with bfd/elf32-i386.c,
+ bfd/elf32-i386qnx.c, bfd/elf32-sh.c, bfd/elf32-sh64-nbsd.c,
+ bfd/elf64-sh64-nbsd.c bfd/elf64-sh64.c.
+
+2002-06-08 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (GET_SAVED_REGISTER): Delete macro definition.
+ (default_get_saved_register): Delete function.
+ * gdbarch.sh (GET_SAVED_REGISTER): Set default to
+ generic_unwind_get_saved_register.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-06-08 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (FRAME_CHAIN_VALID): Set default to
+ generic_func_frame_chain_valid.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * blockframe.c (generic_func_frame_chain_valid): Only check
+ PC_IN_CALL_DUMMY when generic dummy frames. Don't worry about
+ passing FP to PC_IN_CALL_DUMMY.
+ Fix PR gdb/360.
+
+2002-06-08 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (struct gdbarch_data): Add field init_p.
+ (register_gdbarch_data): Initialize init_p.
+ (gdbarch_data): Initialize data pointer using the init function.
+ (init_gdbarch_data): Delete function.
+ (gdbarch_update_p): Update.
+ (initialize_non_multiarch): Update.
+ (struct gdbarch): Add field initialized_p.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-06-07 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-nat.c (x86_64_fxsave_offset): New.
+ (supply_fpregset, fill_fpregset): Don't call i387_*_fxsave,
+ better do the things actually here.
+ * x86-64-tdep.c (x86_64_register_name2nr): New.
+ (x86_64_register_name): Renamed to x86_64_register_nr2name.
+ (x86_64_gdbarch_init): Respect the above change.
+ * x86-64-tdep.h (x86_64_register_name2nr)
+ (x86_64_register_nr2name): Add prototypes.
+ * config/i386/x86-64linux.mt (TDEPFILES): Remove i387-tdep.o.
+
+2002-06-06 Michael Snyder <msnyder@redhat.com>
+
+ * d10v-tdep.c (d10v_push_arguments): Handle struct_return.
+ Delete extra braces and re-indent.
+ (d10v_store_return_value): Char return values
+ must be shifted over by one byte in R0.
+ (d10v_extract_return_value): Delete extra braces, re-indent.
+
+2002-06-06 Elena Zannoni <ezannoni@redhat.com>
+
+ * d10v-tdep.c (d10v_read_sp, d10v_read_fp): Add prototype.
+ (d10v_register_virtual_type): Make $fp and $sp be pointer to data.
+ (d10v_integer_to_address): Rewrite.
+ (d10v_frame_init_saved_regs): When reading fp and sp registers use
+ the d10v specific functions which take care of converting to the
+ correct space.
+
+2002-06-06 Elena Zannoni <ezannoni@redhat.com>
+
+ * config/djgpp/fnchange.lst: Add testsuite files altivec-abi.c,
+ altivec-abi.exp, altivec-regs.c, altivec-regs.exp.
+
+2002-06-02 Andrew Cagney <ac131313@redhat.com>
+
+ * config/alpha/nm-linux.h: Add "config/" prefix to tm, nm and xm
+ includes.
+ * config/tm-linux.h: Ditto.
+ * config/alpha/tm-alphalinux.h: Ditto.
+ * config/arm/nm-linux.h, config/arm/tm-linux.h: Ditto.
+ * config/arm/xm-nbsd.h, config/i386/nm-gnu.h: Ditto.
+ * config/i386/nm-i386lynx.h, config/i386/nm-i386sol2.h: Ditto.
+ * config/i386/nm-i386v4.h, config/i386/nm-i386v42mp.h: Ditto.
+ * config/i386/nm-linux.h, config/i386/nm-m3.h: Ditto.
+ * config/i386/nm-ptx4.h, config/i386/nm-x86-64.h: Ditto.
+ * config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h: Ditto.
+ * config/i386/tm-i386m3.h, config/i386/tm-i386sco5.h: Ditto.
+ * config/i386/tm-i386v4.h, config/i386/tm-linux.h: Ditto.
+ * config/i386/tm-ptx4.h, config/i386/tm-vxworks.h: Ditto.
+ * config/i386/xm-i386v4.h, config/i386/xm-nbsd.h: Ditto.
+ * config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto.
+ * config/i960/tm-vx960.h, config/ia64/nm-aix.h: Ditto.
+ * config/ia64/nm-linux.h, config/ia64/tm-aix.h: Ditto.
+ * config/ia64/tm-linux.h, config/ia64/xm-aix.h: Ditto.
+ * config/m68k/nm-linux.h, config/m68k/nm-m68klynx.h: Ditto.
+ * config/m68k/nm-sysv4.h, config/m68k/tm-linux.h: Ditto.
+ * config/m68k/tm-m68klynx.h, config/m68k/tm-m68kv4.h: Ditto.
+ * config/m68k/tm-sun2os4.h, config/m68k/tm-sun3os4.h: Ditto.
+ * config/m68k/tm-vx68.h, config/m68k/xm-m68kv4.h: Ditto.
+ * config/m68k/xm-nbsd.h, config/m88k/nm-delta88v4.h: Ditto.
+ * config/m88k/tm-delta88v4.h, config/m88k/xm-delta88v4.h: Ditto.
+ * config/mips/nm-irix5.h, config/mips/nm-linux.h: Ditto.
+ * config/mips/tm-linux.h, config/mips/tm-mips64.h: Ditto.
+ * config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h: Ditto.
+ * config/mips/tm-vxmips.h, config/mips/xm-irix5.h: Ditto.
+ * config/mips/xm-mipsv4.h, config/ns32k/xm-nbsd.h: Ditto.
+ * config/pa/nm-hppao.h, config/powerpc/nm-linux.h: Ditto.
+ * config/powerpc/tm-linux.h, config/powerpc/tm-vxworks.h: Ditto.
+ * config/powerpc/xm-aix.h, config/rs6000/nm-rs6000ly.h: Ditto.
+ * config/rs6000/tm-rs6000ly.h, config/rs6000/xm-aix4.h: Ditto.
+ * config/sh/tm-linux.h, config/sparc/nm-linux.h: Ditto.
+ * config/sparc/nm-sparclynx.h, config/sparc/nm-sun4sol2.h: Ditto.
+ * config/sparc/tm-linux.h, config/sparc/tm-sp64linux.h: Ditto.
+ * config/sparc/tm-sp64sim.h, config/sparc/tm-sparclynx.h: Ditto.
+ * config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h: Ditto.
+ * config/sparc/tm-vxsparc.h, config/sparc/xm-sun4sol2.h: Ditto.
+
+2002-05-04 Aidan Skinner <aidan@velvet.net>
+
+ * ada-exp.tab.c: New file
+ * ada-exp.y: New file
+ * ada-lang.c: New file
+ * ada-lang.h: New file
+ * ada-lex.c: New file
+ * ada-lex.l: New file
+ * ada-tasks.c: New file
+ * ada-typeprint.c: New file
+ * ada-valprint.c: New file
+
+2002-06-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ppcnbsd-tdep.c (ppcnbsd_init_abi): Don't set
+ use_struct_convention to ppc_sysv_abi_broken_use_struct_convention.
+
+2002-06-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/rs6000/aix4.mt (TDEPFILES): Use ppc-sysv-tdep.o
+ insetead of ppc-linux-tdep.o.
+ * config/rs6000/rs6000.mt (TDEPFILES): Likewise.
+ * config/rs6000/rs6000lynx.mt (TDEPFILES): Likewise.
+
+2002-06-02 Andrew Cagney <ac131313@redhat.com>
+
+ 2002-05-07 Christian Groessler <chris@groessler.org>
+ * z8k-tdep.c (z8k_print_register_hook): Fix display of 32 and 64
+ bit register contents for little endian hosts.
+
+2002-06-01 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Mention that any `HP/UX reader' can be changed by
+ any maintainer.
+
+2002-06-01 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.h: Regenerate.
+
+2002-06-01 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Add everyone to write-after-approval list.
+
+2002-06-01 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (frame_info): Use frame_register_unwind instead of
+ saved_regs. Mention when the SP is on the stack or in a register.
+
+ * frame.h (frame_register_unwind_ftype): Define. Document.
+ (struct frame_info): Add field register_unwind and
+ register_unwind_cache.
+ (frame_register_unwind): Declare.
+ (generic_unwind_get_saved_register): Declare.
+
+ * frame.c (frame_register_unwind): New function.
+ (generic_unwind_get_saved_register): New function.
+
+ * blockframe.c (generic_call_dummy_register_unwind): New function.
+ (frame_saved_regs_register_unwind): New function.
+ (set_unwind_by_pc): New function.
+ (create_new_frame): New function.
+ (get_prev_frame): New function.
+
+2002-05-30 Andrew Cagney <ac131313@redhat.com>
+
+ * a29k-share/: Delete directory.
+ * remote-vx29k.c: Delete file.
+
+2002-05-30 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/djgpp/fnchange.lst: Add ns32knbsd-nat.c, ns32knbsd-tdep.c,
+ ppcnbsd-nat.c, ppcnbsd-tdep.c, sparcnbsd-nat.c, and sparcnbsd-tdep.c.
+
+2002-05-30 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add sparc64nbsd-nat.c,
+ sparcnbsd-nat.c, and sparcnbsd-tdep.c.
+ (sparc64nbsd-nat.o)
+ (sparcnbsd-nat.o)
+ (sparcnbsd-tdep.o): New dependency lists.
+ * NEWS: Note new UltraSPARC NetBSD native configuration.
+ * configure.host (sparc64-*-netbsd*): New host.
+ * configure.tgt (sparc-*-netbsdelf*)
+ (sparc-*-netbsd*): Set gdb_target to nbsd.
+ (sparc64-*-netbsd*): New target.
+ * sparc64nbsd-nat.c: New file.
+ * sparcnbsd-nat.c: New file.
+ * sparcnbsd-tdep.c: New file.
+ * sparcnbsd-tdep.h: New file.
+ * config/sparc/nbsd.mt: New file.
+ * config/sparc/nbsd64.mh: New file.
+ * config/sparc/nbsd64.mt: New file.
+ * config/sparc/nbsdaout.mh (NATDEPFILES): Remove corelow.o,
+ sparc-nat.o, and solib.o. Add sparcnbsd-nat.o.
+ (HOST_IPC): Remove.
+ * config/sparc/nbsdaout.mt: Remove.
+ * config/sparc/nbsdelf.mh (NATDEPFILES): Remove corelow.o,
+ sparc-nat.o, and solib.o. Add sparcnbsd-nat.o.
+ (HOST_IPC): Remove.
+ * config/sparc/nbsdelf.mt: Remove.
+ * config/sparc/nm-nbsd.h: Update copyright years. Remove all
+ sparc-nat.c compatiblity defines.
+ * config/sparc/tm-nbsd.h: Update copyright years. Include solib.h.
+ (GDB_MULTI_ARCH): Set to GDB_MULTI_ARCH_PARTIAL.
+ * config/sparc/tm-nbsd64.h: New file.
+ * config/sparc/tm-nbsdaout.h: Remove.
+ * config/sparc/xm-nbsd.h: Remove.
+
+2002-05-30 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (sparc-tdep.o): Add osabi.h to dependency list.
+ * sparc-tdep.c: Include osabi.h.
+ (gdbarch_tdep): Add osabi member.
+ (_initialize_sparc_tdep): Use gdbarch_register.
+ (sparc_gdbarch_init): Use generic OS ABI framework.
+ (sparc_dump_tdep): New function.
+
+2002-05-30 Kevin Buettner <kevinb@redhat.com>
+
+ * corefile.c (do_captured_read_memory_integer): Return non-zero
+ result.
+ (safe_read_memory_integer): Copy result of memory read when
+ status is non-zero. Also, add comments.
+
+2002-05-20 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ppc_tdep_h): Define.
+ (ppc-linux-nat.o)
+ (ppc-linux-tdep.o)
+ (rs6000-tdep.o): Use $(ppc_tdep_h).
+ (ppc-sysv-tdep.o)
+ (ppcnbsd-nat.o)
+ (ppcnbsd-tdep.o): New dependency lists.
+ * ppc-tdep.h: Use generic OS ABI framework.
+ * ppc-linux-tdep.c (_initialize_ppc_linux_tdep)
+ (ppc_linux_init_abi): New functions.
+ (ppc_sysv_abi_broken_use_struct_convention)
+ (ppc_sysv_abi_use_struct_convention)
+ (ppc_sysv_abi_push_arguments): Move to...
+ * ppc-sysv-tdep.c: ...here.
+ * ppcnbsd-nat.c: Don't include gdbcore.h and regcache.h.
+ * rs6000-tdep.c (process_note_abi_tag_sections)
+ (get_elfosabi): Remove.
+ (rs6000_gdbarch_init): Use generic OS ABI framework.
+ (rs6000_dump_tdep): New function.
+ (_initialize_rs6000_tdep): Use gdbarch_register.
+ * config/powerpc/linux.mt (TDEPFILES): Add ppc-sysv-tdep.o.
+ * config/powerpc/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.
+ * config/powerpc/aix.mt (TDEPFILES): Use ppc-sysv-tdep.o instead
+ of ppc-linux-tdep.o.
+ * config/powerpc/nbsd.mt (TDEPFILES): Likewise.
+ * config/powerpc/ppc-eabi.mt (TDEPFILES): Likewise.
+ * config/powerpc/ppc-sim.mt (TDEPFILES): Likewise.
+ * config/powerpc/ppcle-eabi.mt (TDEPFILES): Likewise.
+ * config/powerpc/ppcle-sim.mt (TDEPFILES): Likewise.
+ * config/powerpc/vxworks.mt (TDEPFILES): Likewise.
+
+2002-05-29 Jim Blandy <jimb@redhat.com>
+
+ * macroscope.c (default_macro_scope): Put `void' in empty argument
+ list.
+
+2002-05-29 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (arch-utils.o): Add $(sim_regno_h).
+ * arch-utils.c: Include "sim-regno.h".
+ * gdbarch.sh: Don't include "sim-regno.h".
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * sim-regno.h (legacy_register_sim_regno): Move declaration from
+ here.
+ * arch-utils.h (legacy_register_sim_regno): To here.
+ * remote-sim.c (legacy_register_sim_regno): Move function from
+ here.
+ * arch-utils.c (legacy_register_sim_regno): To here.
+
+2002-05-28 Andrew Cagney <ac131313@redhat.com>
+
+ * sim-regno.h: New file.
+ * Makefile.in (sim_regno_h): Define.
+ (d10v-tdep.o, remote-sim.o): Add dependency on $(sim_regno_h).
+ * remote-sim.c: Include "sim-regno.h" and "gdb_assert.h".
+ (legacy_register_sim_regno): New function.
+ (one2one_register_sim_regno): New function.
+ (gdbsim_fetch_register): Rewrite.
+ (gdbsim_store_register): Only store a register when
+ REGISTER_SIM_REGNO is valid.
+ * d10v-tdep.c: Include "sim-regno.h".
+ (d10v_ts2_register_sim_regno): Add legacy_regiter_sim_regno check.
+ (d10v_ts3_register_sim_regno): Ditto.
+ * gdbarch.sh: Include "sim-regno.h".
+ (REGISTER_SIM_REGNO): Set default to legacy_register_sim_regno.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * arch-utils.h (default_register_sim_regno): Delete declaration.
+ * arch-utils.c (default_register_sim_regno): Delete function.
+
+2002-05-28 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ppcnbsd-nat.c: Rewrite.
+ * ppcnbsd-tdep.c: New file.
+ * ppcnbsd-tdep.h: New file.
+ * config/powerpc/nbsd.mh (NATDEPFILES): Remove corelow.o,
+ solib.o, and solib-svr4.o.
+ * config/powerpc/nbsd.mt (TDEPFILES): Add ppcnbsd-tdep.o,
+ nbsd-tdep.o, and corelow.o.
+
+2002-05-28 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (--enable-gdb-build-warnings): Rewrite script to use
+ `tr' and `sed'. Mention that `broken' targets are not expected to
+ build.
+
+2002-05-27 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_skip_prologue): Remove obsolete note.
+ Let PC point right after the prologue before looking up symbols.
+
+2002-05-27 Martin M. Hunt <hunt@redhat.com>
+
+ * i386-tdep.c (i386_register_virtual_type): Return
+ builtin_type_vec128i for SSE registers.
+
+ * gdbtypes.h (builtin_type_vec128i): Declare.
+
+ * gdbtypes.c (build_builtin_type_vec128i): New function.
+ (builtin_type_v2_double, builtin_type_v4_int64): New types.
+ (builtin_type_vec128i): New type for SSE2 128-bit registers.
+ (build_gdbtypes): Initialize new builtin vector types.
+ (_initialize_gdbtypes): Register new vector types with gdbarch.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * MAINTAINERS: ns32k is not longer an obsolete candidate,
+ since it has been multi-arch'd.
+ * NEWS: Note that ns32k-*-* is now partial multi-arch.
+ Move Alpha and VAX multi-arch news entries to same section
+ as other multi-arch news.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c: include gdbtypes.h, inferior.h, regcache.h,
+ target.s, arch-utils.h, ns32k-tdep.h. Make many functions
+ static. Rename some register numbers to put them in ns32k-tdep
+ private namespace.
+ (ns32k_get_saved_register, ns32k_gdbarch_init_32082,
+ ns32k_gdbarch_init_32382, ns32k_gdbarch_init, ns32k_dump_tdep): New
+ functions.
+ (_initialize_ns32k_tdep): Use gdbarch_register.
+ * ns32k-tdep.h: New file.
+ * ns32knbsd-tdep.c: New file.
+ * config/ns32k/nbsdaout.mt (TDEPFILES): Add ns32knbsd-tdep.o.
+ * config/ns32k/tm-nbsd.h: Include "ns32k/tm-ns32k.h".
+ (IN_SOLIB_CALL_TRAMPOLINE, REGISTER_NAME, NUM_REGS,
+ REGISTER_BYTES, REGISTER_BYTE): Remove.
+ * config/ns32k/tm-ns32k.h: New file.
+ * config/ns32k/tm-umax.h: Remove.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c (ns32k_saved_pc_after_call,
+ ns32k_store_struct_return, ns32k_extract_return_value,
+ ns32k_store_return_value, ns32k_extract_struct_value_address): New
+ functions.
+ * config/ns32k/tm-umax.h (SAVED_PC_AFTER_CALL): Define as
+ ns32k_saved_pc_after_call.
+ (STORE_STRUCT_RETURN): Define as ns32k_store_struct_return.
+ (EXTRACT_RETURN_VALUE): Define as ns32k_extract_return_value.
+ (STORE_RETURN_VALUE): Define as ns32k_store_return_value.
+ (EXTRACT_STRUCT_VALUE_ADDRESS): Define as
+ ns32k_extract_struct_value_address.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c (ns32k_call_dummy_words, sizeof_ns32k_call_dummy_words,
+ ns32k_fix_call_dummy): New.
+ * config/ns32k/tm-umax.h (CALL_DUMMY_WORDS): Define as
+ ns32k_call_dummy_words.
+ (SIZEOF_CALL_DUMMY_WORDS): Define as sizeof_ns32k_call_dummy_words.
+ (CALL_DUMMY, CALL_DUMMY_LENGTH, CALL_DUMMY_ADDR,
+ CALL_DUMMY_NARGS): Remove.
+ (FIX_CALL_DUMMY): Define as ns32k_fix_call_dummy.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c (ns32k_breakpoint_from_pc, ns32k_frame_chain,
+ ns32k_frame_saved_pc, ns32k_frame_args_address,
+ ns32k_frame_locals_address, ns32k_frame_init_saved_regs,
+ ns32k_push_dummy_frame, ns32k_pop_frame): New functions.
+ * config/ns32k/tm-nbsd.h (FRAME_SAVED_PC): Remove.
+ * config/ns32k/tm-umax.h (INNER_THAN): Define as core_addr_lessthan.
+ (BREAKPOINT_FROM_PC): Define as ns32k_breakpoint_from_pc.
+ (BREAKPOINT): Remove..
+ (FRAME_CHAIN): Define as ns32k_frame_chain.
+ (FRAME_SAVED_PC): Define as ns32k_frame_saved_pc.
+ (FRAME_ARGS_ADDRESS): Define as ns32k_frame_args_address.
+ (FRAME_LOCALS_ADDRESS): Define as ns32k_frame_locals_address.
+ (FRAME_FIND_SAVED_REGS): Remove.
+ (FRAME_INIT_SAVED_REGS): Define as ns32k_frame_init_saved_regs.
+ (PUSH_DUMMY_FRAME): Define as ns32k_push_dummy_frame.
+ (POP_FRAME): Define as ns32k_pop_frame.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c (ns32k_register_byte_32082,
+ ns32k_register_byte_32382, ns32k_register_raw_size,
+ ns32k_register_virtual_size, ns32k_register_virtual_type): New
+ functions.
+ * config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as
+ ns32k_register_byte_32382.
+ * config/ns32k/tm-umax.h: Update copyright years.
+ (REGISTER_BYTE): Define as ns32k_register_byte_32082.
+ (REGISTER_RAW_SIZE): Define as ns32k_register_raw_size.
+ (REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size.
+ (REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type.
+ (ns32k_get_enter_addr): Fix prototype.
+
+2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ns32k-tdep.c: Update copyright years.
+ (ns32k_register_name_32082): New function.
+ (ns32k_register_name_32382): Ditto.
+ * config/ns32k/tm-nbsd.h (REGISTER_NAMES): Remove.
+ (REGISTER_NAME): Define as ns32k_register_name_32382.
+ * config/ns32k/tm-umax.h (REGISTER_NAMES): Remove.
+ (REGISTER_NAME): Define as ns32k_register_name_32082.
+
+2002-05-24 Jim Blandy <jimb@redhat.com>
+
+ * dwarf2read.c (free_line_header): Use xfree, not free.
+
+2002-05-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/djgpp/fnchange.lst: Add alphabsd-nat.c,
+ alphabsd-tdep.c, mipsnbsd-nat.c, and mipsnbsd-tdep.c
+
+2002-05-23 Andrew Cagney <ac131313@redhat.com>
+
+ * PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.
+
+2002-05-23 Andrew Cagney <ac131313@redhat.com>
+
+ From Ross Alexander at NEC Europe:
+ * config/pa/hpux11w.mh (NATDEPFILES): Add solib.o.
+
+2002-05-23 Michael Snyder <msnyder@redhat.com>
+
+ * cli/cli-dump.c (restore_command): Use parse_and_eval_long
+ for input, rather than parse_and_eval_address.
+
+2002-05-23 Andrew Cagney <ac131313@redhat.com>
+
+ * d10v-tdep.c: Include "gdb/sim-d10v.h" instead of "sim-d10v.h".
+ * Makefile.in (sim_d10v_h): Update definition.
+
+2002-05-24 Andrew Cagney <cagney@redhat.com>
+
+ * d10v-tdep.c (d10v_gdbarch_init): Revert old code included in
+ change `2002-05-22 Michael Snyder' below.
+ (d10v_push_arguments): Ditto.
+ (d10v_extract_return_value): Ditto.
+
+2002-05-23 Jim Blandy <jimb@redhat.com>
+
+ * macrotab.c (check_for_redefinition): Don't complain if the new
+ definition is the same as the previous one. Take more arguments
+ to allow the comparison.
+ (macro_define_object, macro_define_function): Pass more arguments
+ to check_for_redefinition.
+
+2002-05-22 Michael Snyder <msnyder@redhat.com>
+
+ * d10v-tdep.c: Change a few macros to enums for ease of debugging.
+ (d10v_frame_chain_valid): Add PC_IN_CALL_DUMMY clause.
+ (d10v_frame_saved_pc): Add PC_IN_CALL_DUMMY clause.
+ (d10v_frame_chain): Bail immediately if PC_IN_CALL_DUMMY.
+ Don't bail if return_pc is PC_IN_CALL_DUMMY.
+ Add a temp variable to save a call (and a memory read).
+ (d10v_init_extra_frame_info): Get fi->pc from callee's return_pc
+ if possible (so that PC_IN_CALL_DUMMY will work).
+
+2002-05-22 Corinna Vinschen <vinschen@redhat.com>
+
+ * MAINTAINERS: Remove status `OBSOLETE' from v850.
+
+2002-05-22 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c (frame_state_for): Added safety check for a valid
+ fde->cie_ptr.
+ (dwarf2_build_frame_info): Corrected handling of eh_frame.
+ (dwarf2_build_frame_info): Add offset to fde->initial_location
+ so that frames of shared libraries are mapped correctly.
+ (execute_stack_op): Change type of 'result' from ULONGEST to
+ CORE_ADDR.
+
+2002-05-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/alpha/tm-nbsd.h: Include solib.h.
+
+2002-05-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make
+ assumptions about the host's byte order.
+
+2002-05-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (alphanbsd-tdep.o, shnbsd-tdep.o): Add solib-svr4.h
+ to dependency list.
+ * alphanbsd-tdep.c: Include solib-svr4.h.
+ * shnbsd-tdep.c: Ditto.
+
+2002-05-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (armnbsd-tdep.o): Add solib-svr4.h and
+ nbsd-tdep.h to dependency list.
+ * configure.host (arm*-*-netbsdelf*, arm*-*-netbsd*,
+ i[3456]86-*-netbsdaout*, i[3456]86-*-netbsd*, m68*-*-netbsd*,
+ ns32k-*-netbsd*, sparc-*-netbsdaout*, sparc-*-netbsd*): Use
+ nbsdaout.mh and nbsdelf.mh consistently.
+ * configure.tgt (i[3456]86-*-netbsd*, m68*-*-netbsd*,
+ ns32k-*-netbsd*, sparc-*-netbsdelf*, sparc-*-netbsd*) Use
+ nbsdaout.mt and nbsdelf.mh consistently.
+ * armnbsd-tdep.c: Include nbsd-tdep.h and solib-svr4.h.
+ (arm_netbsd_elf_init_abi): Use set_solib_svr4_fetch_link_map_offsets
+ to set nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
+ * config/nm-nbsd.h: Garbage-collect SVR4_SHARED_LIBS. Move
+ a.out shared library stuff from here...
+ * config/nm-nbsdaout.h: ...to here.
+ * config/tm-nbsd.h: Remove.
+ * config/alpha/nm-nbsd.h (SVR4_SHARED_LIBS): Remove.
+ * config/arm/nbsd.mh: Remove.
+ * config/arm/nbsd.mt (TDEPFILES): Remove solib-sunos.o, add
+ nbsd-tdep.o.
+ * config/arm/nbsdaout.mh: New file.
+ * config/arm/nbsdelf.mh: New file.
+ * config/arm/nm-nbsdaout.h: New file.
+ * config/i386/nbsd.mh: Remove.
+ * config/i386/nbsd.mt: Remove.
+ * config/i386/nbsdaout.mh: New file.
+ * config/i386/nbsdaout.mt: New file.
+ * config/i386/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
+ * config/i386/nbsdelf.mt (TM_FILE): Use tm-nbsd.h.
+ * config/i386/nm-nbsd.h (REGISTER_U_ADDR,
+ i386_register_u_addr): Remove.
+ * config/i386/nm-nbsdaout.h: New file.
+ * config/i386/nm-nbsdelf.h: Remove.
+ * config/i386/tm-nbsd.h: Don't include config/tm-nbsd.h.
+ (USE_STRUCT_CONVENTION): Remove.
+ * config/i386/tm-nbsdaout.h: New file.
+ * config/i386/tm-nbsdelf.h: Remove.
+ * config/m68k/nbsd.mh: Remove.
+ * config/m68k/nbsd.mt: Remove.
+ * config/m68k/nbsdaout.mh: New file.
+ * config/m68k/nbsdaout.mt: New file.
+ * config/m68k/nm-nbsd.h: Use config/nm-nbsd.h.
+ * config/m68k/nm-nbsdaout.h: New file.
+ * config/m68k/tm-nbsd.h: Don't include config/tm-nbsd.h.
+ (IN_SOLIB_CALL_TRAMPOLINE): Define.
+ * config/ns32k/nbsd.mh: Remove.
+ * config/ns32k/nbsd.mt: Remove.
+ * config/ns32k/nbsdaout.mh: New file.
+ * config/ns32k/nbsdaout.mt: New file.
+ * config/ns32k/nm-nbsd.h: Include config/nm-nbsd.h.
+ * config/ns32k/nm-nbsdaout.h: New file.
+ * config/ns32k/tm-nbsd.h: Don't include config/tm-nbsd.h.
+ (IN_SOLIB_CALL_TRAMPOLINE): Define.
+ * config/powerpc/nm-nbsd.h: Include config/nm-nbsd.h.
+ (SVR4_SHARED_LIBS): Remove.
+ * config/powerpc/tm-nbsd.h: Dont' include config/tm-nbsd.h.
+ * config/sparc/nbsd.mh: Remove.
+ * config/sparc/nbsd.mt: Remove.
+ * config/sparc/nbsdaout.mh: New file.
+ * config/sparc/nbsdaout.mt: New file.
+ * config/sparc/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
+ * config/sparc/nbsdelf.mt: New file.
+ * config/sparc/nm-nbsdaout.h: New file.
+ * config/sparc/nm-nbsdelf.h: Remove.
+ * config/sparc/tm-nbsd.h: Don't include config/tm-nbsd.h.
+ * config/sparc/tm-nbsdaout.h: New file.
+
+2002-05-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add mipsnbsd-nat.c and
+ mipsnbsd-tdep.c
+ (mipsnbsd-nat.o, mipsnbsd-tdep.o): New dependency lists.
+
+2002-05-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add shnbsd-tdep.c and
+ shnbsd-nat.c.
+ (shnbsd-tdep.o, shnbsd-nat.o): New dependency lists.
+
+2002-05-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * NEWS: Note new MIPS NetBSD native configuration.
+ * configure.host (mips*-*-netbsd*): New host.
+ * configure.tgt (mips*-*-netbsd*): New target.
+ * mipsnbsd-nat.c: New file.
+ * mipsnbsd-tdep.c: New file.
+ * mipsnbsd-tdep.h: New file.
+ * config/mips/nbsd.mh: New file.
+ * config/mips/nbsd.mt: New file.
+ * config/mips/nm-nbsd.h: New file.
+ * config/mips/tm-nbsd.h: New file.
+
+2002-05-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (SFILES): Add osabi.c.
+ (COMMON_OBS): Add osabi.o.
+ (osabi.o): New dependency list.
+ * osabi.c: New file.
+ * osabi.h: New file.
+ * doc/gdbint.texinfo: Document new generic OS ABI framework.
+
+ * Makefile.in (alpha_tdep_h): Define and use instead of
+ alpha-tdep.h.
+ * alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections,
+ get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi):
+ Remove.
+ (alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework.
+ * alpha-tdep.h: Include osabi.h.
+ (alpha_abi): Remove.
+ (gdbarch_tdep): Use generic OS ABI framework.
+ * alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use
+ gdbarch_register_osabi.
+ * alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
+ * alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
+ * alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.
+
+ * Makefile.in (sh_tdep_h): Add osabi.h.
+ * sh-tdep.h (sh_osabi): Remove.
+ (gdbarch_tdep): Use generic OS ABI framework.
+ * sh-tdep.c (sh_osabi_names, process_note_abi_tag_sections,
+ sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove.
+ (sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework.
+ * shnbsd-tdep.c (_initialize_shnbsd_tdep): Use gdbarch_register_osabi.
+
+ * Makefile.in (arm_tdep_h): Define and use instead of arm-tdep.h.
+ * arm-linux-tdep.c (_initialize_arm_linux_tdep): Use
+ gdbarch_register_osabi.
+ * arm-tdep.c (arm_abi_names, process_note_abi_tag_sections,
+ arm_abi_handler_list, arm_gdbarch_register_os_abi): Remove.
+ (get_elfosabi): Rename to...
+ (arm_elf_osabi_sniffer): ...this. Adjust to use generic OS
+ ABI framework support routines.
+ (arm_gdbarch_init): Use generic OS ABI framework.
+ (arm_dump_tdep): Likewise.
+ (_initialize_arm_tdep): Likewise.
+ * arm-tdep.h: Include osabi.h.
+ (arm_abi): Remove.
+ (gdbarch_tdep): Remove arm_abi and abi_name members. Add
+ osabi member.
+ (arm_gdbarch_register_os_abi): Remove prototype.
+ * armnbsd-tdep.c (arm_netbsd_aout_osabi_sniffer): New function.
+ (_initialize_arm_netbsd_tdep): Use gdbarch_register_osabi.
+
+ * Makefile.in (mips-tdep.o): Add osabi.h to dependency list.
+ * mips-tdep.c: Include osabi.h.
+ (gdbarch_tdep, mips_gdbarch_init, mips_dump_tdep): Use generic
+ OS ABI framework.
+
+2002-05-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * h8300-tdep.c: Fix formatting.
+
+2002-05-20 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_do_registers_info): Simplify code for
+ printing vector registers.
+
+2002-05-19 Andrew Cagney <ac131313@redhat.com>
+
+ From Fernando Nasser:
+ * remote.c (remote_async_open_1): Re-throw the exception when the
+ connection fails.
+ (remote_cisco_open): Ditto.
+ (remote_open_1): Ditto.
+
+2002-05-19 Andrew Cagney <ac131313@redhat.com>
+
+ * remote.c (remote_start_remote_dummy): Add uiout parameter.
+ (remote_start_remote): Add uiout parameter. Pass through to
+ remote_start_remote_dummy.
+ (remote_open_1): Use catch_exception instead of catch_errors.
+ (remote_async_open_1): Ditto.
+ (remote_cisco_open): Ditto.
+
+2002-05-19 Andrew Cagney <ac131313@redhat.com>
+
+ * remote.c (remote_start_remote): Replace PTR with void pointer.
+ (sigint_remote_twice_token, sigint_remote_token): Ditto. Make
+ static.
+
+2002-05-18 Andrew Cagney <ac131313@redhat.com>
+
+ * gdb_indent.sh: Allow the script to be run in the sim directory.
+
+2002-05-18 Mark Kettenis <kettenis@gnu.org>
+
+ * config/i386/nm-cygwin.h (NO_PTRACE_H): Remove define.
+ * config/i386/nm-go32.h (NO_PTRACE_H): Remove define.
+
+ * corelow.c (core_open): Only call set_gdbarch_from_file if
+ exec_bfd is NULL.
+
+2002-05-17 Andrey Volkov <avolkov@transas.com>
+
+ * h8300-tdep.c: Add support of EXR register
+ * config/h8300/tm-h8300.h: Ditto.
+
+2002-05-17 Andrey Volkov <avolkov@transas.com>
+
+ * h8300-tdep.c: Add additional CCR flags (I,UI,H,U)
+
+2002-05-17 Andrey Volkov <avolkov@transas.com>
+
+ * h8300-tdep.c: Change literal regnums to REGNO.
+
+2002-05-17 Jim Blandy <jimb@redhat.com>
+
+ * NEWS: Note addition of macro support.
+
+ Expand preprocessor macros in C expressions.
+ * c-lang.h: #include "macroexp.h", for macro_lookup_ftype.
+ (scan_macro_expansion, scanning_macro_expansion,
+ finished_macro_expansion): New function declarations.
+ (expression_macro_lookup_func, expression_macro_lookup_baton): New
+ variable declarations.
+ * parser-defs.h (expression_context_pc): New declaration.
+ * parse.c (expression_context_pc): New variable.
+ (parse_exp_1): Set expression_context_pc, as well as
+ expression_context_block.
+ * c-exp.y (yylex): If we're not already reading the result of a
+ macro expansion, try to macro-expand the next token. When we're
+ done scanning a macro expansion, switch back to the mainline text.
+ Commas and `if's in a macro's expansion don't terminate the input.
+ * c-lang.c: #include "macroscope.h" and "gdb_assert.h".
+ (macro_original_text, macro_expanded_text,
+ expression_macro_lookup_func, expression_macro_lookup_baton): New
+ variables.
+ (scan_macro_expansion, scanning_macro_expansion,
+ finished_macro_expansion, scan_macro_cleanup, null_macro_lookup,
+ c_preprocess_and_parse): New functions.
+ (c_language_defn, cplus_language_defn, asm_language_defn): Call
+ c_preprocess_and_parse, instead of c_parse.
+ * Makefile.in (c_lang_h): Note that this #includes macroexp.h.
+ (c-lang.o): Note dependency on macroscope.h and gdb_assert.h.
+
+Fri May 17 14:26:19 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * sh-tdep.c (gdb_print_insn_sh64): Delete.
+ (gdb_print_insn_sh): Just set info->endian and use print_insn_sh.
+ (sh_gdbarch_init): Always use gdb_print_insn_sh.
+
+2002-05-17 Corinna Vinschen <vinschen@redhat.com>
+
+ * NEWS: Add section for multi-arched targets. Add v850 to that section.
+
+2002-05-17 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (sh_tdep_h): Define and use.
+ * config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep,
+ register enum): Move to...
+ * * sh-tdep.h: ...here.
+ * sh-tdep.c: Include sh-tdep.h.
+ * sh3-rom.c: Likewise.
+ * shnbsd-tdep.c: Likewise.
+
+2002-05-16 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c: Spelling fix in comment.
+
+2002-05-16 Jim Blandy <jimb@redhat.com>
+
+ Add commands for manually expanding macros and showing their
+ definitions.
+ * macrocmd.c, macroscope.c, macroscope.h: New files.
+ * Makefile.in (SFILES): Add macrocmd.c, macroscope.c.
+ (macroscope_h): New variable.
+ (HFILES_NO_SRCDIR): Add macroscope.h.
+ (COMMON_OBS): Add macrocmd.o, macroscope.o.
+ (macroscope.o, macrocmd.o): New rules.
+
+ Teach the Dwarf 2 reader to read macro information.
+ * dwarf2read.c: #include "macrotab.h".
+ (dwarf_macinfo_buffer): New variable.
+ (struct dwarf2_pinfo): New members: dwarf_macinfo_buffer, and
+ dwarf_macinfo_size.
+ (DWARF_MACINFO_BUFFER, DWARF_MACINFO_SIZE): New macros.
+ (dwarf2_missing_macinfo_section, dwarf2_macros_too_long,
+ dwarf2_macros_not_terminated, dwarf2_macro_outside_file,
+ dwarf2_macro_unmatched_end_file, dwarf2_macro_malformed_definition,
+ dwarf2_macro_spaces_in_definition): New complaints.
+ (dwarf2_has_info): Initialize dwarf_macinfo_offset.
+ (dwarf2_build_psymtabs): Read the .dwarf_macinfo section.
+ (dwarf2_build_psymtabs_hard): Record the buffer and its size in
+ the partial symbol table.
+ (psymtab_to_symtab_1): Set the macinfo buffer and size globals
+ from what's recorded in the partial symbol table.
+ (read_file_scope): If the compilation unit has a
+ `DW_AT_macro_info' attribute, read its macro information.
+ * Makefile.in (dwarf2read.o): Depend on macrotab.h.
+
+2002-05-16 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/546
+ * ser-tcp.c: Don't include <netinet/udp.h>.
+
+2002-05-16 Stephane Carrez <stcarrez@nerim.fr>
+
+ * MAINTAINERS: Update my email address.
+
+2002-05-16 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/nm-nbsd.h: Use "config/nm-nbsd.h" to include generic
+ include file of the same name.
+
+2002-05-16 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.tgt: Mark v850 as multi-arched.
+ * config/v850/tm-v850.h: Remove file.
+ * config/v850/v850.mt: Eliminate TM_FILE.
+
+2002-05-16 Corinna Vinschen <vinschen@redhat.com>
+
+ * v850-tdep.c: Full multi-arch.
+ * config/v850/tm-v850.h: Eliminate or move to v850-tdep.c everything.
+ Define GDB_MULTI_ARCH to 2.
+
+2002-05-16 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y (current_type): New static variable.
+ Carries the type of the expression at the position that is parsed.
+ (push_current_type, pop_current_type): Two new functions. Used
+ to store/restore current_type in expression on specific tokens.
+ (search_field): New static variable. Set to one after parsing a point
+ as at that point only a FIELDNAME token should be searched.
+ (FIELDNAME): New token. After a point only a token belonging to
+ current_type type definition is allowed.
+ (all over token rules): reset and change current_type according
+ to rules.
+ (exp '[' rule): insert implicit array index field if
+ exp is a pascal string type.
+
+2002-05-16 Corinna Vinschen <vinschen@redhat.com>
+
+ * v850-tdep.c: Fix comment for v850_scan_prologue. Remove extra
+ frame info. Use frame_info's saved_regs instead of matching member
+ in extra_frame_info throughout.
+ (v850_frame_init_saved_regs): New function.
+ (v850_init_extra_frame_info): Move most functionality into
+ v850_frame_init_saved_regs().
+ * config/v850/tm-v850.h (EXTRA_FRAME_INFO): Remove definition.
+ (v850_frame_find_saved_regs): Remove declaration.
+ (FRAME_FIND_SAVED_REGS): Remove definition.
+ (v850_frame_init_saved_regs): Add declaration.
+ (FRAME_INIT_SAVED_REGS): Add definition.
+
+2002-05-16 Corinna Vinschen <vinschen@redhat.com>
+
+ * v850-tdep.c: Begin multi-arch'ing v850.
+ (v850_target_architecture_hook): Remove function.
+ (v850_gdbarch_init): New function. Add code previously in
+ v850_target_architecture_hook().
+ (_initialize_v850_tdep): Don't set target_architecture_hook.
+ Call register_gdbarch_init() instead.
+
+2002-05-16 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h (struct cplus_struct_type): Remove args field.
+ * hpread.c (hpread_read_struct_type): Remove assignments to args.
+ (fixup_class_method_type): Likewise.
+
+2002-05-15 Jim Blandy <jimb@redhat.com>
+
+ Add macro structures to GDB's symbol tables. Nobody puts anything
+ in them yet.
+ * symtab.h (struct symtab): New member: `macro_table'.
+ * buildsym.h (pending_macros): New global variable.
+ * buildsym.c: #include "macrotab.h".
+ (buildsym_init): Initialize `pending_macros'.
+ (end_symtab): If we found macro information while reading a CU's
+ debugging info, do build a symtab structure for it. Make the
+ symtab point to the macro information, and clear the
+ `pending_macros' pointer which held it while we were reading the
+ debug info.
+ (really_free_pendings): Free any pending macro table.
+ * objfiles.h (struct objfile): New member: `macro_cache'.
+ * objfiles.c (allocate_objfile): Set allocate and free functions
+ for the macro cache's objstack.
+ (free_objfile): Empty the macro cache's obstack.
+ * symfile.c (reread_symbols): Empty the macro cache's obstack, and
+ set new allocate and free functions for it.
+ * solib-sunos.c (allocate_rt_common_objfile): Set allocate and
+ free functions for the macro cache's objstack. (Why is this
+ function building its own objfile?)
+ * symmisc.c (print_objfile_statistics): Print statistics on the
+ macro bcache.
+ * Makefile.in: Note that buildsym.o depends on macrotab.h.
+
+2002-05-15 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/nm-nbsd.h: Use <> for include of config/nm-nbsd.h.
+ (REGISTER_U_ADDR): Delete definition.
+ (arm_register_u_addr): Delete declaration.
+
+2002-05-15 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-tdep.c (ARM_LINUX_JB_PC): Renamed from JB_PC.
+ (ARM_LINUX_JB_ELEMENT_SIZE): Likewise.
+
+2002-05-14 Andrew Cagney <ac131313@redhat.com>
+
+ * regcache.c (register_valid): Revise comments refering to "Not
+ available" and "unavailable".
+ * frame.c (frame_register_read): Ditto.
+ * findvar.c (value_of_register): Ditto.
+
+2002-05-15 Andrew Cagney <cagney@redhat.com>
+
+ * Makefile.in (remote_sim_h): Replace remote-sim_h.
+ (remote-sim.o): Update dependencies.
+ (d10v-tdep.o): Specify dependencies.
+ (sim_d10v_h): Define.
+
+2002-05-14 Jim Blandy <jimb@redhat.com>
+
+ * macroexp.c (init_buffer, gather_arguments, expand): Use NULL, not 0.
+ * macrotab.c (macro_lookup_inclusion, find_definition,
+ new_macro_table): Same.
+
+ * macroexp.c (currently_rescanning, expand): Use `strcmp () == 0',
+ not `! strcmp ()'. This is a dubious improvement.
+ * macrotab.c (macro_lookup_inclusion, find_definition): Same.
+
+ * macrotab.c (macro_lookup_inclusion): Initialize `best_depth',
+ although it's not necessary, to avoid a warning.
+
+2002-05-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h: Update accessor macros to use TYPE_MAIN_TYPE.
+ (TYPE_CONST, TYPE_VOLATILE, TYPE_CODE_SPACE, TYPE_DATA_SPACE): Use
+ TYPE_INSTANCE_FLAGS.
+ (struct main_type): New.
+ (struct type): Move most members to struct main_type. Change
+ cv_type and as_type to new type_chain member. Add instance_flags.
+ (TYPE_MAIN_TYPE, TYPE_CHAIN, TYPE_INSTANCE_FLAGS): New macros.
+ (TYPE_CV_TYPE, TYPE_AS_TYPE): Remove.
+ (finish_cv_type): Remove prototype.
+ * gdbtypes.c (alloc_type): Update comment. Allocate TYPE_MAIN_TYPE.
+ Set TYPE_CHAIN.
+ (alloc_type_instance): New function.
+ (smash_type): New function.
+ (make_pointer_type, make_reference_type, make_function_type)
+ (smash_to_member_type, smash_to_method_type): Call smash_type.
+ (make_qualified_type): New function.
+ (make_type_with_address_space): Call make_qualified_type.
+ (make_cv_type): Likewise.
+ (finish_cv_type): Remove unnecessary function.
+ (replace_type): Update comment. Copy TYPE_MAIN_TYPE.
+ (recursive_dump_type): Dump TYPE_CHAIN and TYPE_INSTANCE_FLAGS;
+ remove TYPE_CV_TYPE and TYPE_AS_TYPE.
+ * c-typeprint.c (c_type_print_modifier): Use TYPE_INSTANCE_FLAGS.
+ * dwarf2read.c (read_structure_scope): Don't call finish_cv_type.
+ * hpread.c (hpread_read_struct_type): Likewise.
+ * stabsread.c (read_struct_type): Likewise.
+
+2002-05-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * configure.tgt: Add a catch all sh* target, for cases like
+ sh[2,3,4]-elf and sh-hms.
+
+2002-05-14 Keith Seitz <keiths@redhat.com>
+
+ * event-loop.c (create_file_handler): Don't do anything but
+ update data when we are given a fd which we are already
+ monitoring.
+
+2002-05-14 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c (context_cpy): Copy registers correctly.
+ (update_context): Use __func__ in warnings.
+
+2002-05-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * ser-tcp.c: Include <netinet/udp.h>. Rename tcp_open
+ and tcp_close to net_open and net_close.
+ (net_open): Accept "udp:" and "tcp:" specifications. Connect
+ using UDP if requested. Don't try to disable Nagle on UDP
+ sockets.
+ * remote.c (remote_serial_open): New function. Warn about UDP.
+ (remote_open_1, remote_async_open_1, remote_cisco_open): Call it.
+
+2002-05-13 Elena Zannoni <ezannoni@redhat.com>
+
+ * MAINTAINERS: List sh-elf as buildable with ,-Werror.
+
+2002-05-13 Elena Zannoni <ezannoni@redhat.com>
+
+ * configure.tgt: Remove sh-hms target.
+ * MAINTAINERS: Don't list sh-hms as a separate target.
+
+2002-05-13 Jim Blandy <jimb@redhat.com>
+
+ Add first preprocessor macro-expansion files.
+ * macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
+ * Makefile.in (SFILES): Add macrotab.c, macroexp.c.
+ (splay_tree_h, macroexp_h, macrotab_h): New variable.
+ (HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
+ (COMMON_OBS): Add macrotab.o, macroexp.o.
+ (macroexp.o, macrotab.o): New rules.
+
+2002-05-13 Andrew Cagney <ac131313@redhat.com>
+
+ * config/m88k/tm-m88k.h: Update copyright.
+ (m88k_target_write_pc): Declare
+ (TARGET_WRITE_PC): Redefine using m88k_target_write_pc.
+ (M88K_NNPC_REGNUM): Rename NNPC_REGNUM.
+ (SHIFT_INST_REGS): Update definition.
+ * m88k-tdep.c (m88k_target_write_pc): New function. Implement
+ using old definition of TARGET_WRITE_PC.
+ * regcache.c (generic_target_write_pc): Delete code handling
+ NNPC_REGNUM.
+ * gdbarch.sh (NNPC_REGNUM): Delete.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-05-13 Richard Earnshaw <rearnsha@arm.com>
+
+ * builtin-regs.c (value_of_builtin_reg): Correctly calculate the
+ builtin reg number.
+
+2002-05-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * ax-gdb.c (gen_sign_extend, gen_fetch, gen_usual_unary)
+ (gen_cast, gen_scale, gen_add, gen_sub, gen_binop, gen_deref)
+ (gen_address_of, gen_struct_ref, gen_repeat): Use type
+ access macros.
+ * c-typeprint.c (cp_type_print_method_args): Likewise.
+ (c_type_print_args): Likewise.
+ * d10v-tdep.c (d10v_push_arguments): Likewise.
+ (d10v_extract_return_value): Likewise.
+ * expprint.c (print_subexp): Likewise.
+ * gdbtypes.c (lookup_primitive_typename): Likewise.
+ (lookup_template_type, add_mangled_type, print_arg_types): Likewise.
+ * gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_STUB)
+ (TYPE_TARGET_STUB, TYPE_STATIC, TYPE_CONST, TYPE_VOLATILE)
+ (TYPE_PROTOTYPED, TYPE_INCOMPLETE, TYPE_CODE_SPACE, TYPE_VARARGS)
+ (TYPE_VECTOR): Likewise.
+ * hpread.c (hpread_read_struct_type)
+ (fix_static_member_physnames, fixup_class_method_type)
+ (hpread_type_lookup): Likewise.
+ * mdebugread.c (parse_symbol, parse_type): Likewise.
+ * p-lang.c (is_pascal_string_type): Likewise.
+ * valops.c (hand_function_call): Likewise.
+ * x86-64-tdep.c (classify_argument): Likewise.
+
+ * hpread.c (hpread_read_function_type)
+ (hpread_read_doc_function_type): Call replace_type.
+ * dstread.c (create_new_type): Delete.
+ (decode_dst_structure, process_dst_function): Call alloc_type.
+ Use type access macros.
+
+2002-05-12 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
+ the're not supported by the current architecture.
+ (i387_fill_fxsave): Likewise.
+
+2002-05-12 Fred Fish <fnf@redhat.com>
+
+ * symfile.c (default_symfile_offsets): Arrange for uninitialized
+ sect_index_xxx members to index the first slot in section_offsets
+ if all of the section_offsets are zero.
+
+2002-05-12 Mark Kettenis <kettenis@gnu.org>
+
+ * configure.tgt (sparc-*openbsd): Remove entry accidentially
+ checked in with last change.
+
+2002-05-12 Mark Kettenis <kettenis@gnu.org>
+
+ * configure.tgt (i[3456]86-*-unixware*, i[3456]86-*-unixware2*):
+ Remove targets. These are canonicalized to i386-*-sysv4.2uw by
+ config.sub.
+
+2002-05-12 Daniel Jacobowitz <drow@mvista.com>
+
+ * Makefile.in: Update dependencies.
+
+2002-05-11 Andrew Cagney <ac131313@redhat.com>
+
+ * language.c (local_hex_string_custom): Simplify. Do not depend
+ on PRINTF_HAS_LONG_LONG or CC_HAS_LONG_LONG.
+
+ * memattr.c (mem_info_command): Replace calls to
+ longest_local_hex_string and longest_local_hex_string_custom.
+ * buildsym.c (make_blockvector): Ditto.
+ * solib.c (info_sharedlibrary_command): Ditto.
+ * tracepoint.c (tracepoints_info): Ditto.
+ * symtab.c (print_msymbol_info): Ditto.
+
+ * language.c (local_hex_string): Delete.
+ (local_hex_string_custom): Delete.
+ (longest_local_hex_string): Rename to local_hex_string.
+ (longest_local_hex_string_custom): Rename to
+ local_hex_string_custom.
+ * language.h (local_hex_string): Change parameter type to LONGEST.
+ (local_hex_string_custom): Ditto.
+ (longest_local_hex_string): Delete declaration.
+ (longest_local_hex_string_custom): Ditto.
+
+ * solib.c: Update copyright.
+ * memattr.c: Update copyright.
+
+2002-05-11 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.h (legacy_register_to_value): Declare.
+ (legacy_value_to_register): Declare.
+ (legacy_convert_register_p): Declare.
+ * arch-utils.c (legacy_register_to_value): New function.
+ (legacy_value_to_register): New function.
+ (legacy_convert_register_p): New function.
+
+ * gdbarch.sh (REGISTER_TO_VALUE): Define.
+ (VALUE_TO_REGISTER): Define.
+ (CONVERT_REGISTER_P): Define.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * valops.c (value_assign): Use CONVERT_REGISTER_P and
+ VALUE_TO_REGISTER.
+ * findvar.c (value_from_register): Use REGISTER_TO_VALUE and
+ CONVERT_REGISTER_P.
+
+2005-05-11 Daniel Jacobowitz <drow@mvista.com>
+ Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * Makefile.in: Update dependencies for valops.c.
+ * valops.c: Include "gdb_assert.h".
+ (typecmp): Skip THIS parameter to methods.
+ (find_method_list): Remove static_memfuncp argument,
+ update callers. Check for stub methods.
+ (find_value_oload_method_list): Don't set *static_memfuncp.
+ (find_overload_match): Don't check for stub methods. Assert
+ that methods are not stubbed. Handle static methods.
+ (value_find_oload_method_list): Remove static_memfuncp argument.
+ * gdbtypes.c (check_stub_method): Do not add THIS pointer
+ to the argument list for static stub methods.
+ * value.h (value_find_oload_method_list): Update prototype.
+
+2002-05-11 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.h (generic_register_size): Declare.
+ (generic_register_raw_size, generic_register_virtual_size): Delete
+ declarations.
+ * arch-utils.c (generic_register_raw_size): Delete.
+ (generic_register_size): New function.
+ (generic_register_virtual_size): Delete.
+
+ * gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make
+ default generic_register_size.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for
+ register_virtual_size.
+ * x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
+
+2002-05-11 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (gdbarch_data): Add gdbarch parameter.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * gnu-v3-abi.c: Update copyright.
+ (vtable_address_point_offset): Update.
+ (gnuv3_rtti_type): Update.
+ (gnuv3_baseclass_offset): Update.
+ * solib-svr4.c (svr4_fetch_link_map_offsets): Update.
+ (init_fetch_link_map_offsets): Update.
+ * remote.c (get_remote_state): Update.
+
+2002-05-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * TODO: Remove value_headof/value_from_vtable_info comment.
+ * printcmd.c (print_command_1): Don't call value_from_vtable_info.
+ * values.c (value_headof, value_from_vtable_info): Delete.
+ * value.h (value_from_vtable_info): Delete prototype.
+
+2002-05-11 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in: Replace gdb_assert.h with $(gdb_assert_h),
+ gdb_string.h with $(gdb_string_h) and gdb_regex.h with
+ $(gdb_regex_h).
+ (gdb_assert_h): Define.
+ (gdb_wait_h): Define.
+ (gdb_regex_h): Define.
+
+2002-05-11 Daniel Jacobowitz <drow@mvista.com>
+
+ From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
+ * linespec.c (find_methods): Handle GCC 3.x template constructors.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * nbsd-tdep.c: Fix comment.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add nbsd-tdep.c.
+ (alphanbsd-tdep.o): Add nbsd-tdep.h to dependency list.
+ (nbsd-tdep.o): New dependency list.
+ * alphanbsd-tdep.c: Don't include solib-svr4.h. Include
+ nbsd-tdep.h.
+ (alphanbsd_solib_svr4_fetch_link_map_offsets): Remove.
+ (alphanbsd_init_abi): Use nbsd_lp64_solib_svr4_fetch_link_map_offsets.
+ * nbsd-tdep.c: New file.
+ * nbsd-tdep.h: New file.
+ * shnbsd-tdep.c: Don't include solib-svr4.h. Include
+ nbsd-tdep.h.
+ (shnbsd_solib_svr4_fetch_link_map_offsets): Remove.
+ (shnbsd_init_abi): Use nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
+ * config/alpha/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
+ * config/sh/nbsd.mt (TDEPFILES): Ditto.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/alpha/nbsd.mh (NATDEPFILES): Remove corelow.o.
+ * config/alpha/nbsd.mt (TDEPFILES): Add corelow.o.
+ * config/i386/nbsd.mh (NATDEPFILES): Remove corelow.o.
+ * config/i386/nbsd.mt (TDEPFILES): Add corelow.o.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Remove corelow.o.
+ * config/i386/nbsdelf.mt (TDEPFILES): Add corelow.o.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/i386/nbsd.mh (NATDEPFILES): Use line continuations.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
+ * config/m68k/nbsd.mh (NATDEPFILES): Likewise.
+ * config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
+ * config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
+ * config/sparc/nbsd.mh (NATDEPFILES): Likewise.
+ * config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * i386nbsd-nat.c: Delete file. Move fetch_core_registers and
+ fetch_elfcore_registers to...
+ * i386nbsd-tdep.c: ...here.
+ (i386nbsd_use_struct_convention): Rename to...
+ (i386nbsd_aout_use_struct_convention): ...this.
+ (i386nbsd_supply_reg): New function.
+ (i386nbsd_fill_reg): New function.
+ (fetch_core_registers): Use i386nbsd_supply_reg.
+ (fetch_elfcore_registers): Likewise.
+ (_initialize_i386nbsd_tdep): New function.
+ * config/i386/nbsd.mh (NATDEPFILES): Remove i386nbsd-nat.o.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
+ * config/i386/nbsdelf.mt (TDEPFILES): Add i386nbsd-tdep.o.
+ * config/i386/tm-nbsd.h (i386nbsd_use_struct_convention): Rename to...
+ (i386nbsd_aout_use_struct_convention): ...this.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * shnbsd-nat.c (fetch_inferior_registers): Use shnbsd_supply_reg.
+ (store_inferior_registers): Use shnbsd_fill_reg.
+ * shnbsd-tdep.c (sh_nbsd_supply_registers,
+ sh_nbsd_supply_register): Collapse into...
+ (shnbsd_supply_reg): ...this.
+ (sh_nbsd_fill_registers, sh_nbsd_fill_register): Collapse into...
+ (shnbsd_fill_reg): ...this.
+ (sh_nbsd_solib_svr4_fetch_link_map_offsets): Rename to...
+ (shnbsd_solib_svr4_fetch_link_map_offsets): ...this.
+ (fetch_core_registers): Use shnbsd_supply_reg.
+ (fetch_elfcore_registers): Use shnbsd_supply_reg.
+ (sh_nbsd_core_fns): Rename to...
+ (shnbsd_core_fns): ...this.
+ (sh_nbsd_elfcore_fns): Rename to...
+ (shnbsd_elfcore_fns): ...this.
+ (sh_nbsd_init_abi): Rename to...
+ (shnbsd_init_abi): ...this.
+ (_initialize_sh_nbsd_tdep): Rename to...
+ (_initialize_shnbsd_tdep): ...this.
+ * shnbsd-tdep.h (sh_nbsd_supply_registers,
+ sh_nbsd_supply_register, sh_nbsd_fill_registers,
+ sh_nbsd_fill_register): Remove prototypes.
+ (shnbsd_supply_reg, shnbsd_fill_reg): Add prototypes.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Remove i387-nat.c.
+ (i387-nat.o): Delete dependency list.
+ (go32-nat.o): Change i387-nat.h to i387-tdep.h.
+ (x86-64-linux-nat.o): Likewise.
+ * i387-nat.c: Delete file, moving contents to...
+ * i387-tdep.c: ...here.
+ * i387-nat.h: Rename...
+ * i387-tdep.h: ...to this.
+ * go32-nat.c: Include i387-tdep.h instead of i387-nat.h.
+ * i386-linux-nat.c: Likewise.
+ * i386bsd-nat.c: Likewise.
+ * i386gnu-nat.c: Likewise.
+ * i386nbsd-nat.c: Likewise.
+ * i386v4-nat.c: Likewise.
+ * x86-64-linux-nat.c: Likewise.
+ * config/i386/fbsd.mh (NATDEPFILES): Remove i387-nat.o.
+ * config/i386/go32.mh (NATDEPFILES): Likewise.
+ * config/i386/i386gnu.mh (NATDEPFILES): Likewise.
+ * config/i386/i386sol2.mh (NATDEPFILES): Likewise.
+ * config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
+ * config/i386/linux.mh (NATDEPFILES): Likewise.
+ * config/i386/nbsd.mh (NATDEPFILES): Likewise.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
+ * config/i386/obsd.mh (NATDEPFILES): Likewise.
+ * config/i386/x86-64linux.mh (NATDEPFILES): Likewise.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Remove alphanbsd-nat.c.
+ (alphanbsd-nat.o): Remove dependency list.
+ (alphanbsd-tdep.o): Add $(regcache_h) to dependency list.
+ * alphanbsd-nat.c: Delete. Contents moved to...
+ * alphanbsd-tdep.c: ...here.
+ (_initialize_alphanbsd_tdep): Register core functions.
+ * config/alpha/nbsd.mh (NATDEPFILES): Remove alphanbsd-nat.o.
+
+2002-05-11 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add alphabsd-tdep.c.
+ (alphabsd-nat.o): Depend on alphabsd-tdep.h.
+ (alphanbsd-nat.o): Likewise.
+ (alphabsd-tdep.o): New dependency list.
+ * alphabsd-nat.c (supply_gregset): Use alphabsd_supply_reg.
+ (fill_gregset): Use alphabsd_fill_reg.
+ (supply_fpregset): Use alphabsd_supply_fpreg.
+ (fill_fpregset): Use alphabsd_fill_fpreg.
+ (fetch_inferior_registers): Use struct reg and struct fpreg
+ rather than gregset_t and fpregset_t. Use alphabsd_supply_reg
+ and alphabsd_supply_fpreg.
+ (store_inferior_registers): Use struct reg and struct fpreg
+ rather than gregset_t and fpregset_t. Use alphabsd_fill_reg
+ and alphabsd_fill_fpreg.
+ * alphabsd-tdep.c: New file.
+ * alphabsd-tdep.h: New file.
+ * alphanbsd-nat.c (fetch_core_registers): Use alphabsd_supply_fpreg.
+ (fetch_elfcore_registers): Use alphabsd_supply_reg and
+ alphabsd_supply_fpreg.
+ * config/alpha/fbsd.mt (TDEPFILES): Add alphabsd-tdep.o.
+ * config/alpha/nbsd.mt (TDEPFILES): Likewise.
+
+2002-05-11 Eric Christopher <echristo@redhat.com>
+
+ * mips-tdep.c (mips_double_register_type): Fix thinko.
+ (mips_single_register_type): Ditto.
+ * MAINTAINERS: Add self.
+
+2002-05-11 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-nat.c (i387_supply_register, i387_fill_fsave,
+ i387_supply_fxsave, i387_fill_fxsave): Rewrite in order to do the
+ right thing on architectures with different endianness and/or
+ integer sizes.
+
+2002-05-10 Jason Thorpe <thorpej@wasabisystems.com>
+
+ From Christian Limpach <chris@Pin.LU>
+ * configure.in: Change sed expression which comments out
+ NATDEPFILES to also comment out continuation lines.
+ * configure: Regenerate.
+
+2002-05-10 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c: Clean up code erroneously reintroduced by previous
+ big patch.
+
+2002-05-10 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c: Include correct file.
+
+2002-05-10 Elena Zannoni <ezannoni@redhat.com>
+
+ New support for sh64-elf (sh5) target.
+
+ * configure.tgt: For sh64-elf target, default to sh-elf.
+
+ * config/sh/tm-sh.h (enum sh-abi): Possible ABI's.
+ (struct gdbarch_tdep): Add new fields for new registers and ABI
+ info.
+
+ * sh-tdep.c: Include elf-bfd.h, elf/sh.h, gdb/sim-sh.h.
+ (NUM_PSEUDO_REGS_SH_MEDIA, NUM_PSEUDO_REGS_SH_COMPACT,
+ MSYMBOL_IS_SPECIAL, IS_ISA32_ADDR, MAKE_ISA32_ADDR,
+ UNMAKE_ISA32_ADDR, IS_PTABSL_R18, IS_STS_R0, IS_STS_PR,
+ IS_MOV_TO_R15, IS_MOV_R14, IS_STQ_R18_R14, IS_STQ_R18_R15,
+ IS_STL_R18_R15, IS_STQ_R14_R15, IS_STL_R14_R15, IS_ADDIL_SP_MEDIA,
+ IS_ADDI_SP_MEDIA, IS_ADDL_SP_FP_MEDIA, IS_ADD_SP_FP_MEDIA,
+ IS_MOV_SP_FP_MEDIA, IS_MOV_R0, IS_MOVL_R0, IS_ADD_SP_R0,
+ IS_MOV_R14_R0, IS_MEDIA_IND_ARG_MOV, IS_MEDIA_ARG_MOV,
+ IS_MEDIA_MOV_TO_R14, IS_COMPACT_IND_ARG_MOV, IS_COMPACT_ARG_MOV,
+ IS_COMPACT_MOV_TO_R14, IS_JSR_R0, IS_NOP): New macros.
+ (sh_sh64_register_name, sh64_elf_make_msymbol_special,
+ pc_is_isa32, sh_sh64_breakpoint_from_pc, look_for_args_moves,
+ sh64_skip_prologue_hard_way, sh64_use_struct_convention,
+ gdb_print_insn_sh64, translate_insn_rn, sh64_frame_chain,
+ sh64_get_saved_pr, fpp_reg_base_num, is_media_pseudo,
+ sh64_get_gdb_regnum, sh64_media_reg_base_num,
+ sh64_compact_reg_base_num, translate_rn_to_arch_reg_num,
+ sign_extend, sh64_nofp_frame_init_saved_regs,
+ sh64_init_extra_frame_info, sh64_get_saved_register,
+ sh64_extract_struct_value_address, sh64_pop_frame,
+ sh64_push_arguments, sh64_extract_return_value,
+ sh64_store_return_value, sh64_show_media_regs,
+ sh64_show_compact_regs, sh64_show_regs, sh_sh64_register_byte,
+ sh_sh64_register_raw_size, sh_sh64_register_virtual_size,
+ sh_sh64_register_virtual_type,
+ sh_sh64_register_convert_to_virtual,
+ sh_sh64_register_convert_to_raw, sh64_pseudo_register_read,
+ sh64_register_read, sh64_pseudo_register_write,
+ sh64_register_write, do_fv_c_register_info, do_dr_c_register_info,
+ do_r_c_register_info, do_fpp_register_info, do_cr_c_register_info,
+ sh64_do_pseudo_register, sh_compact_do_registers_info,
+ sh64_do_registers_info, sh_gdbarch_init): New functions.
+
+2002-05-10 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_breakpoint_from_pc): Add 'const' to return type.
+
+2002-05-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * linespec.c (decode_line_1): Check for a double quote after
+ a filename correctly.
+
+2002-05-10 Jim Blandy <jimb@redhat.com>
+
+ Properly track the size of the current objfile's .debug_line section.
+ * dwarf2read.c (struct dwarf2_pinfo): New member: dwarf_line_size.
+ (DWARF_LINE_SIZE): New macro.
+ (dwarf2_build_psymtabs_hard): Record the line section's size in
+ the partial symbol table.
+ (psymtab_to_symtab_1): Restore dwarf_line_size from the partial
+ symbol table.
+
+2002-05-10 Petr Sorfa <petrs@caldera.com>
+
+ * ia64-tdep.c: Handle breakpoints on L instruction type
+ in MLX instruction bundle by moving the breakpoint to
+ the third slot (X instruction type) as L holds only data.
+
+2002-05-10 Kevin Buettner <kevinb@redhat.com>
+
+ * dbxread.c (discarding_local_symbols_complaint): New complaint.
+ (process_one_symbol): Complain about discarding local symbols
+ due to a misplaced N_LBRAC entry.
+
+2002-05-09 Elena Zannoni <ezannoni@redhat.com>
+
+ From Daniel Berlin <dan@cgsoftware.com>
+ * linespec.c (find_toplevel_char): '<' and '>' also increase and
+ decrease the depth we are at, in the case of templates.
+
+2002-05-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-tdep.c (mips_float_register_type): New function.
+ (mips_double_register_type): New function.
+ (mips_print_register): Use them.
+ (do_fp_register_row): Likewise.
+
+2002-05-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * signals/signals.c (signals): Remove conditional compilation around
+ Mach-specific signals. Move them to after TARGET_SIGNAL_DEFAULT.
+ (target_signal_from_name): Loop until TARGET_SIGNAL_LAST.
+
+2002-05-09 Michael Snyder <msnyder@redhat.com>
+
+ * remote-rdp.c (remote_rdp_can_run): Remove.
+
+2002-05-09 Tom Tromey <tromey@redhat.com>
+
+ * jv-valprint.c (java_val_print): Handle `char' as a special case
+ of TYPE_CODE_INT.
+
+2002-05-09 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c (arm_scan_prologue): Accept strb r(0123),[r11,#-nn],
+ strh r(0123),[r11,#-nn], str r(0123),[r11,#-nn], as well as
+ strb r(0123),[sp,#nn], strh r(0123),[sp,#nn] and
+ str r(0123),[sp,#nn].
+ (arm_skip_prologue): Ditto. Also make disassembly
+ order-independent by placing it in a loop.
+
+2002-05-06 Michael Snyder <msnyder@redhat.com>
+
+ * stabsread.c (read_type): Add recognition for new attribute:
+ "@V;" means that an array type is actually a vector.
+ This is analogous to the vector flag that's been added to dwarf2.
+
+2002-05-09 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.h (i386_abi): New enum.
+ (struct gdbarch_tdep): Replace os_ident member with abi.
+ (i386_gdbarch_register_os_abi): New prototype.
+ * i386-tdep.c (i386_abi_names): New array.
+ (process_note_abi_tag_sections): Removed.
+ (process_note_sections): New function.
+ (i386_elf_abi_from_note, i386_elf_abi): New functions.
+ (struct i386_abi_handler): New struct.
+ (i386_abi_handler_list): New variable.
+ (i386_gdbarch_register_os_abi): New function.
+ (i386_gdbarch_init): Adapt for the changes given above.
+
+2002-05-08 Daniel Jacobowitz <drow@mvista.com>
+
+ * gregset.h: Say "GNU/Linux".
+
+2002-05-08 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdbtypes.c : Add new builtin type for 64 bit vectors.
+ (build_gdbtypes): Build builtin_type_v2_float.
+ (_initialize_gdbtypes): Register new builtin type.
+
+2002-05-08 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (init_gdbarch_swap): Do not clear the swap section.
+ (clear_gdbarch_swap): New function.
+ (initialize_non_multiarch): Call.
+ (gdbarch_update_p): Before calling init(), swap out and clear the
+ existing architecture.
+ * gdbarch.c: Regenerate.
+
+2002-05-08 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/djgpp/fnchange.lst: Add alphanbsd-nat.c and
+ alphanbsd-tdep.c.
+
+2002-05-08 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * sh-nbsd-nat.c: Rename to...
+ * shnbsd-nat.c: ...this.
+ * sh-nbsd-tdep.c: Rename to...
+ * shnbsd-tdep.c: ...this.
+ * sh-nbsd-tdep.h: Rename to...
+ * shnbsd-tdep.h: ...this.
+ * config/sh/nbsd.mh: Use shnbsd-nat.o.
+ * config/sh/nbsd.mt: Use shnbsd-tdep.o.
+
+2002-05-08 Richard Earnshaw <rearnsha@arm.com>
+
+ * remote-rdi.c (_initializie_remote_rdi): Use ANSI-style string
+ concatenation for command help messages.
+
+2002-05-08 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * NEWS: Note new sh*-*-netbsdelf* configuration.
+ * configure.host: Set gdb_host_cpu to sh for all sh*.
+ (sh*-*-netbsdelf*): New host.
+ * configure.tgt: Set gdb_target_cpu to sh for all sh*.
+ (sh*-*-netbsdelf*): New target.
+ * sh-nbsd-nat.c: New file.
+ * sh-nbsd-tdep.c: New file.
+ * sh-nbsd-tdep.h: New file.
+ * config/sh/nbsd.mh: New file.
+ * config/sh/nbsd.mt: New file.
+ * config/sh/nm-nbsd.h: New file.
+ * config/sh/tm-nbsd.h: New file.
+
+2002-05-08 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * sh-tdep.c (sh_osabi_names): Declare.
+ (process_note_abi_tag_sections): New function.
+ (get_elfosabi): Ditto.
+ (sh_gdbarch_register_os_abi): Ditto.
+ (sh_dump_tdep): Ditto.
+ _initialize_sh_tdep): Use gdbarch_register to register
+ sh_gdbarch_init and sh_dump_tdep.
+ * config/sh/tm-sh.h (sh_osabi): Declare.
+ (gdbarch_tdep): Add sh_osabi and osabi_name members.
+
+2002-05-07 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_skip_prologue): Handle generic dummy frames.
+ (thumb_scan_prologue): Ditto.
+ (arm_find_callers_reg): Ditto.
+ (arm_frame_chain): Ditto.
+ (arm_init_extra_frame_info): Ditto.
+ (arm_frame_saved_pc): Ditto.
+ (arm_pop_frame): Ditto.
+ (arm_push_return_address): New function.
+ (arm_gdbarch_init): Initialize use_generic_dummy_frames,
+ call_dummy_location, call_dummy_breakpoint_offset_p,
+ call_dummy_breakpoint_offset, call_dummy_p,
+ call_dummy_stack_adjust_p, call_dummy_words,
+ sizeof_call_dummy_words, call_dummy_start_offset,
+ call_dummy_length, fix_call_dummy, pc_in_call_dummy,
+ call_dummy_address, push_return_address and push_dummy_frame for
+ generic dummy frames.
+
+2002-05-07 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * sh-tdep.c (sh_nofp_frame_init_saved_regs): Fix error in
+ size computation for alloca.
+ (sh_fp_frame_init_saved_regs): Likewise.
+
+2002-05-07 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.h (ARM_MAX_REGISTER_RAW_SIZE): Define.
+ (ARM_MAX_REGISTER_VIRTUAL_SIZE): Define.
+ * arm-tdep.c (arm_store_return_value): Use them.
+ Use FP_REGISTER_RAW_SIZE when setting the FPA return value.
+ * remote-rdp.c (remote_rdp_fetch_register): Use
+ ARM_MAX_REGISTER_RAW_SIZE.
+ (remote_rdp_store_register): Likewise.
+
+2002-05-07 Michal Ludvig <mludvig@suse.cz>
+
+ * dwarf2cfi.c: Code cleanup, removed unused variables,
+ added default labels to switch {} statements.
+ * x86-64-tdep.c: Ditto.
+ * x86-64-linux-nat.c: Ditto.
+
+2002-05-07 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * solib.h: Protect against multiple inclusion.
+
+2002-05-06 Jim Blandy <jimb@redhat.com>
+
+ Add first preprocessor macro-expansion files.
+ * macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
+ * Makefile.in (SFILES): Add macrotab.c, macroexp.c.
+ (splay_tree_h, macroexp_h, macrotab_h): New variable.
+ (HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
+ (COMMON_OBS): Add macrotab.o, macroexp.o.
+ (macroexp.o, macrotab.o): New rules.
+
+ Separate the job of reading the line number info statement program
+ header (...expialidocious) out into its own function.
+ * dwarf2read.c (struct line_head, struct filenames, struct
+ directories): Replace with...
+ (struct line_header): New structure, containing the full
+ contents of the statement program header, including the
+ include directory and file name tables.
+ (read_file_scope): If we have line number info, instead of just
+ calling dwarf_decode_lines to do all the work, call
+ dwarf_decode_line_header first to get a `struct line_header'
+ containing the data in the statement program header, and then
+ pass that to dwarf_decode_lines, which will pick up where that
+ left off. Be sure to clean up the `struct line_header' object.
+ (dwarf_decode_line_header, free_line_header, add_include_dir,
+ add_file_name): New functions.
+ (dwarf_decode_lines): Move all the code to read the statement
+ program header into dwarf_decode_line_header. Take the line
+ header it built as the first argument, instead of the offset to
+ the compilation unit's line number info. Use the new `struct
+ line_header' type instead of the old structures. No need to do
+ cleanups here now, since we don't allocate anything.
+ (dwarf2_statement_list_fits_in_line_number_section,
+ dwarf2_line_header_too_long): New complaints.
+
+2002-05-06 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdbtypes.c (init_vector_type): New function.
+ (build_builtin_type_vec128): Simplify the representation of SIMD
+ registers.
+ (build_gdbtypes): Initialize new builtin vector types.
+ (_initialize_gdbtypes): Register new vector types with gdbarch.
+ (builtin_type_v4_float, builtin_type_v4_int32,
+ builtin_type_v8_int16, builtin_type_v16_int8,
+ builtin_type_v2_int32, builtin_type_v4_int16,
+ builtin_type_v8_int8): New (renamed) SIMD types.
+
+2002-05-06 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-nat.c (i387_fill_fsave): Use regcache_collect.
+ (i387_fill_fxsave): Likewise.
+
+2002-05-05 Alexandre Oliva <aoliva@redhat.com>
+
+ * alpha-tdep.c (alpha_extract_return_value): Don't use
+ non-constant array size in prototype.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ From Brian Taylor <briant at model dot com>:
+ * ui-out.c (ui_out_field_core_addr): Use the function
+ longest_local_hex_string_custom'to format addresses > 32 bits
+ wide.
+
+ * ui-out.c (ui_out_field_core_addr): Update comment.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (select_and_print_frame): Make static. Delete the
+ parameter `level'.
+ (func_command): Update call.
+ (select_frame_command): Delete code computing the frame level.
+ * frame.h (select_and_print_frame): Delete declaration.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc_get_saved_register): Comment why
+ get_prev_frame call is safe.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (select_frame): Delete level parameter.
+ * stack.c (select_frame): Update. Use frame_relative_level to
+ obtain the frame's level.
+ (select_and_print_frame): Update call.
+ (select_frame_command): Ditto.
+ (up_silently_base): Ditto.
+ (down_silently_base): Ditto.
+ * ocd.c (ocd_start_remote): Ditto.
+ * remote-rdp.c (remote_rdp_open): Ditto.
+ * remote-mips.c (mips_initialize): Ditto.
+ (common_open): Ditto.
+ * remote-e7000.c (e7000_start_remote): Ditto.
+ * m3-nat.c (select_thread): Ditto.
+ * hppa-tdep.c (child_get_current_exception_event): Ditto.
+ (child_get_current_exception_event): Ditto.
+ * varobj.c (varobj_create): Ditto.
+ (varobj_update): Ditto.
+ (c_value_of_root): Ditto.
+ * tracepoint.c (finish_tfind_command): Ditto.
+ * corelow.c (core_open): Ditto.
+ * arch-utils.c (generic_prepare_to_proceed): Ditto.
+ * thread.c (info_threads_command): Ditto.
+ (switch_to_thread): Ditto.
+ * infrun.c (normal_stop): Ditto.
+ (restore_selected_frame): Ditto.
+ (restore_inferior_status): Ditto.
+ * breakpoint.c (insert_breakpoints): Ditto.
+ (watchpoint_check): Ditto.
+ (bpstat_stop_status): Ditto.
+ (do_enable_breakpoint): Ditto.
+ * blockframe.c (flush_cached_frames): Ditto.
+ (reinit_frame_cache): Ditto.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Host/Native): Add Jason Thorpe as NetBSD
+ maintainer.
+
+2002-05-04 Jim Blandy <jimb@redhat.com>
+
+ * gdbtypes.c (replace_type): Doc fix.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * valprint.c (strcat_longest): Delete commented out function.
+ Update copyright.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Mark a29k as deleted.
+ * NEWS: Mention that a29k was removed. Add OBSOLETE section.
+ Move new configurations to the top.
+ * configure.tgt: Remove a29k.
+ * config/a29k/tm-vx29k.h: Delete.
+ * config/a29k/vx29k.mt: Delete.
+ * config/a29k/tm-a29k.h: Delete.
+ * config/a29k/a29k-udi.mt: Delete.
+ * config/a29k/a29k.mt: Delete.
+ * a29k-tdep.c: Delete.
+ * remote-udi.c: Delete.
+ * remote-mm.c: Delete.
+ * remote-eb.c: Delete.
+ * remote-adapt.c: Delete.
+ * Makefile.in: Remove obsolete code.
+ * config/s390/s390x.mt: Ditto.
+ * config/s390/s390.mt: Ditto.
+ * config/sparc/sparclynx.mh: Ditto.
+ * config/sparc/linux.mh: Ditto.
+ * config/pa/hppaosf.mh: Ditto.
+ * config/pa/hppabsd.mh: Ditto.
+ * config/ns32k/nbsd.mt: Ditto.
+ * config/mips/vr5000.mt: Ditto.
+ * config/m68k/sun3os4.mh: Ditto.
+ * config/m68k/nbsd.mt: Ditto.
+ * config/m68k/m68klynx.mh: Ditto.
+ * config/m32r/m32r.mt: Ditto.
+ * config/i386/x86-64linux.mt: Ditto.
+ * config/i386/nbsdelf.mt: Ditto.
+ * config/i386/nbsd.mt: Ditto.
+ * config/i386/i386lynx.mh: Ditto.
+
+2002-05-04 Andrew Cagney <ac131313@redhat.com>
+
+ * target.c (debug_print_register): New function. Handle oversize
+ registers.
+ (debug_to_fetch_registers): Call.
+ (debug_to_store_registers): Call.
+
+2002-05-03 Jim Blandy <jimb@redhat.com>
+
+ * stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
+ (read_type): Doc fix.
+ * gdbtypes.c (replace_type): Doc fix.
+
+ * stabsread.c (multiply_defined_struct): New complaint.
+ (read_struct_type): If the type we were passed isn't empty, or
+ incomplete, don't read the new struct type into it; complain,
+ and return the original type unchanged. Take a new `type_code'
+ argument, which is the type code for the new type.
+ (read_type): Rather than storing the type's type code here, pass
+ it as an argument to read_struct_type, and let that take care of
+ storing it. That way, we don't overwrite the original type code,
+ so read_struct_type can use it to decide whether we're overwriting
+ something we shouldn't.
+ (complain_about_struct_wipeout): New function.
+
+2002-05-03 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh: Assert that gdbarch is non-NULL.
+ * gdbarch.c: Regenerate.
+
+2002-05-03 Jason Merrill <jason@redhat.com>
+
+ * gnu-v3-abi.c (gnuv3_rtti_type): If we get confused, just warn
+ and return NULL.
+
+2002-05-03 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_dwarf2gdb_regno_map),
+ (x86_64_dwarf2gdb_regno_map_length),
+ (x86_64_dwarf2_reg_to_regnum): Added.
+ (x86_64_gdbarch_init): Added registration of x86_64_dwarf2_reg_to_regnum.
+ (x86_64_gdbarch_init): Renamed from i386_gdbarch_init.
+ (_initialize_x86_64_tdep): Synced with the change above.
+ (x86_64_skip_prologue): Reformulated message.
+
+2002-05-03 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * f-exp.y: Also use new prev_lexptr variable
+ to improve error reporting. Based on Michael Snyder
+ 2002-04-24 dated patch to c-exp.y.
+ * jv-exp.y: Likewise.
+ * m2-exp.y: Likewise.
+
+2002-05-02 Elena Zannoni <ezannoni@redhat.com>
+
+ * valops.c (value_arg_coerce): Don't coerce arrays to pointers if
+ we are dealing with vectors.
+
+2002-05-02 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * config/m68k/tm-nbsd.h: Obvious fix,
+ correct machine name.
+
+2002-05-02 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-typeprint.c (pascal_type_print_base): Add support
+ for TYPE_CODE_STRING and TYPE_CODE_BITSTRING.
+
+2002-05-02 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-lang.c (pascal_create_fundamental_type): Use TYPE_CODE_CHAR
+ for fondamental pascal 'char' type.
+
+2002-05-02 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-lang.h (is_pascal_string_type): Declaration changed,
+ new sixth argument of type char ** added.
+ * p-lang.c (is_pascal_string_type): Implementation
+ changed. Args length_pos, length_size, string_pos, char_size
+ can now be NULL. New argument arrayname set to the field
+ name of the char array. Return value set to char array
+ field index plus one.
+ * p-valprint.c (pascal_val_print): Adapt to new declaration of
+ is_pascal_string_type function.
+
+2002-05-02 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (gdbarch_update_p): Revert 2002-05-02 Andrew Cagney
+ <cagney@redhat.com> change.
+ * gdbarch.c: Regenerate.
+
+2002-05-02 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (gdbarch_update_p): Swap out the old architecture
+ before probing for a new one. Detect errorenous gdbarch_init
+ functions.
+ * gdbarch.c: Regenerate.
+
+2002-05-01 Andrew Cagney <cagney@redhat.com>
+
+ * config/mn10200/tm-mn10200.h: Include "symfile.h" and "symtab.h".
+ * config/mcore/tm-mcore.h: Ditto. Update copyright.
+ * config/v850/tm-v850.h: Ditto. Update copyright.
+
+2002-04-30 Andrew Cagney <ac131313@redhat.com>
+
+ * cris-tdep.c (cris_gdbarch_init): Use arches instead of
+ current_gdbarch.
+
+2002-04-30 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c: Whitespace clean-ups.
+ (arm_skip_prologue): Fix thinko; two lines
+ should have been removed as part of 4/24 change.
+
+2002-04-30 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-tdep.c: Added comment describing how fpscr register
+ numbers were chosen.
+
+2002-04-30 Michael Snyder <msnyder@redhat.com>
+
+ * gnu-nat.c (gnu_find_memory_regions): Fix merge botch.
+
+2002-04-29 Elena Zannoni <ezannoni@redhat.com>
+
+ * hpread.c (DNTT_TYPE_VECTOR): Rename from TYPE_VECTOR.
+ (DNTT_TYPE_VECTOR_LENGTH): Rename from TYPE_VECTOR_LENGTH.
+ (hpread_symfile_init, hpread_lookup_type): Substitute throughout.
+
+2002-04-29 Kevin Buettner <kevinb@redhat.com>
+
+ From Louis Hamilton <hamilton@redhat.com>:
+ * rs6000-tdep.c (coff/xcoff.h, libxcoff.h): Include.
+ * xcoffread.c (coff/xcoff.h, libxcoff.h): Likewise.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use bfd_xcoff_is_xcoff64(),
+ not bfd-private xcoff data, to determine wordsize.
+ * xcoffread.c (read_xcoff_xymtab, read_symbol_lineno): Likewise.
+
+2002-04-29 Andrew Cagney <ac131313@redhat.com>
+
+ GDB 5.2 released from 5.2 branch.
+
+2002-04-29 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-nat.c (fill_gregset): Explicit cast to avoid warning.
+ * x86-64-tdep.c (i386_gdbarch_init): Ditto.
+ (x86_64_register_info_table): Added comments with register numbers.
+
+2002-04-29 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_extract_return_value,
+ rs6000_store_return_value): Handle returning vectors.
+ (rs6000_gdbarch_init): Use
+ ppc_sysv_abi_broken_use_struct_convention for native sysv cases.
+ * ppc-linux-tdep.c (ppc_sysv_abi_broken_use_struct_convention):
+ New function.
+ (ppc_sysv_abi_use_struct_convention): Deal with functions returning
+ vectors.
+ (ppc_sysv_abi_push_arguments): Handle vector parameters.
+ * ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Export.
+
+2002-04-24 Pierre Muller <ics.u-strasbg.fr>
+
+ * hpread.c (hpread_psymtab_to_symtab_1,
+ hpread_psymtab_to_symtab): Replace fprintf tab_to_s...)
+ with fprintf_unfiltered (gdb_stderr,...).
+
+2002-04-24 Pierre Muller <ics.u-strasbg.fr>
+
+ * remote-array.c (printf_monitor, write_monitor,
+ array_insert_breakpoint, array_remove_breakpoint ):
+ Replace fprintf (stderr,...
+ with fprintf_unfiltered (gdb_stderr,....
+ * remote-es.c: Likewise.
+ * remote-os9k.c: Likewise.
+ * remote-st.c: Likewise.
+
+2002-04-28 Andreas Schwab <schwab@suse.de>
+
+ * config/s390/s390.mh (NATDEPFILES): Remove solib.o, add
+ linux-proc.o and gcore.o.
+
+2002-04-26 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_skip_prologue): Print note when debugging
+ code without frame pointers.
+
+2002-04-26 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc_gdbarch_init): Add comment explaining why
+ ON_STACK is needed.
+
+2002-04-26 Ben Elliston <bje@redhat.com>
+
+ * target.c (do_xfer_memory): Correct reference to the new option
+ "trust-readonly-sections".
+
+2002-04-26 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
+ * gdbtypes.c (recursive_dump_type): Output the vector flag.
+ * dwarf2read.c (dwarf_attr_name): Handle new attribute for
+ vectors.
+ (read_array_type): Record the fact that this array type is really a
+ vector (i.e. are passed in by value).
+
+2002-04-26 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
+ * alpha-tdep.c (alpha_sigcontext_addr): New function.
+ (alpha_find_saved_regs): Use alpha_sigcontext_addr.
+ (alpha_gdbarch_init): Initialize tdep->sigcontext_addr.
+ * alpha-linux-tdep.c: Include frame.h.
+ (alpha_linux_sigcontext_addr): New function.
+ (alpha_linux_init_abi): Set tdep->sigcontext_addr to
+ alpha_linux_sigcontext_addr.
+ * alpha-osf1-tdep.c: Include gdbcore.h.
+ (alpha_osf1_sigcontext_addr): New function.
+ (alpha_osf1_init_abi): Set tdep->sigcontext_addr to
+ alpha_osf1_sigcontext_addr.
+ * config/alpha/tm-alpha.h (SIGCONTEXT_ADDR): Remove.
+ * config/alpha/tm-alphalinux.h (SIGCONTEXT_ADDR): Remove.
+
+2002-04-26 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (selected_frame_level):
+ (select_frame): Do not set selected_frame_level.
+ * frame.h (selected_frame_level): Delete declaration.
+
+2002-04-26 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Only set
+ convert_from_func_ptr-addr when AIX / PowerOpen.
+
+2002-04-25 Andrew Cagney <ac131313@redhat.com>
+
+ * valops.c (hand_function_call): Call
+ generic_save_call_dummy_addr.
+ * frame.h (generic_save_call_dummy_addr): Declare.
+ * blockframe.c (struct dummy_frame): Add fields call_lo and
+ call_hi.
+ (generic_find_dummy_frame): Check for PC in range call_lo to
+ call_hi instead of entry_point_address.
+ (generic_pc_in_call_dummy): Search the dummy frames for a PC in
+ the call_lo to call_hi range. Allow for DECR_PC_AFTER_BREAK.
+ (generic_save_call_dummy_addr): New function.
+
+2002-04-24 David S. Miller <davem@redhat.com>
+
+ * sparc-tdep.c (sparc_gdbarch_skip_prologue): Kill, duplicates
+ sparc_skip_prologue.
+ (sparc_skip_prologue): Kill frameless_p arg, and use line number
+ information to find prologue when possible.
+ (sparc_prologue_frameless_p): Call examine_prologue directly.
+ (sparc_gdbarch_init): Update set_gdbarch_skip_prologue call.
+ * config/sparc/tm-sparc.h (sparc_skip_prologue): Update for killed
+ second argument.
+ (SKIP_PROLOGUE): Likewise.
+
+2002-04-25 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_skip_prologue_internal): Remove
+ GDB_TARGET_HAS_SHARED_LIBS #ifdef and update comment to
+ indicate that the condition it was testing is always true.
+ * config/alpha/nm-linux.h (GDB_TARGET_HAS_SHARED_LIBS): Remove.
+ * config/alpha/nm-nbsd.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.
+ * config/alpha/nm-osf.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.
+
+2002-04-25 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.h (gdbarch_tdep): Add jb_pc and jb_elt_size members.
+ * alpha-linux-tdep.c (alpha_linux_init_abi): Initialize
+ tdep->jb_pc and tdep->jb_elt_size.
+ * alpha-osf1-tdep.c (alpha_osf1_init_abi): Likewise.
+ * alphafbsd-tdep.c (alphafbsd_init_abi): Likewise.
+ * alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
+ * alpha-nat.c (get_longjmp_target): Remove.
+ (JB_ELEMENT_SIZE): Ditto.
+ (JB_PC): Ditto.
+ * alpha-tdep.c (alpha_get_longjmp_target): New function.
+ (alpha_gdbarch_init): Default tdep->jb_pc to -1. If the
+ OS ABI sets jb_pc to a valid value, set gdbarch_get_longjmp_target
+ to alpha_get_longjmp_target.
+ (alpha_dump_tdep): Report tdep->jb_pc and tdep->jb_elt_size.
+ * config/alpha/nm-linux.h (GET_LONGJMP_TARGET): Remove.
+ * config/alpha/nm-osf.h (GET_LONGJMP_TARGET): Remove.
+
+2002-04-25 Andrew Cagney <ac131313@redhat.com>
+
+ * README: Update to GDB 5.2.
+
+2002-04-25 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (LC_ALL): Set to `c'.
+
+2002-04-25 Theodore A. Roth <troth@verinet.com>
+
+ * avr-tdep.c: Ran through gdb_indent.sh.
+
+2002-04-25 Theodore A. Roth <troth@verinet.com>
+
+ * MAINTAINERS: Add myself as AVR maintainer.
+ * NEWS: Note new target avr.
+
+2002-04-25 Theodore A. Roth <troth@verinet.com>
+
+ * Makefile.in: Add support for AVR target.
+ * configure.tgt: Add support for AVR target.
+ * avr-tdep.c: New file
+ * config/avr/avr.mt: New file.
+
+2002-04-25 Theodore A. Roth <troth@verinet.com>
+
+ * MAINTAINERS: Add myself to write-after-approval.
+
+2002-04-24 Pierre Muller <ics.u-strasbg.fr>
+
+ * f-lang.c (get_bf_for_fcn): Replace fprintf (stderr,...
+ with fprintf_unfiltered (gdb_stderr,....
+
+2002-04-25 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ Fix PR gdb/508.
+ * symfile.c (add_filename_language): Fix wrong xrealloc size argument.
+
+2002-04-25 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y: Also use new prev_lexptr variable
+ to improve error reporting. Based on Michael Snyder
+ 2002-04-24 dated patch to c-exp.y.
+
+2002-04-25 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_breakpoint_from_pc): New function.
+ (alpha_gdbarch_init): Set gdbarch_breakpoint_from_pc to
+ alpha_breakpoint_from_pc. Set gdbarch_function_start_offset
+ to 0.
+ * config/alpha/tm-alpha.h: Remove forward decls of struct type
+ and struct value.
+ (FUNCTION_START_OFFSET): Remove.
+ (BREAKPOINT): Ditto.
+
+2002-04-25 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * MAINTAINERS: Reflect that multi-arch is enabled for VAX.
+ * NEWS: Ditto.
+
+2002-04-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-linux-tdep.c (alpha_linux_pc_in_sigtramp): New function.
+ (alpha_linux_init_abi): Set gdbarch_pc_in_sigtramp to
+ alpha_linux_pc_in_sigtramp.
+ * alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): New function.
+ (alpha_osf1_init_abi): Set gdbarch_pc_in_sigtramp to
+ alpha_osf1_pc_in_sigtramp.
+ * alpha-tdep.c (alpha_osf_in_sigtramp): Remove.
+ * alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): New function.
+ (alphafbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ alphafbsd_pc_in_sigtramp.
+ * alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): New function.
+ (alphanbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ alphanbsd_pc_in_sigtramp.
+ * config/alpha/tm-alpha.h (IN_SIGTRAMP): Remove.
+ * config/alpha/tm-alphalinux.h (IN_SIGTRAMP): Remove.
+
+2002-04-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/alpha/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.
+
+2002-04-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add alphanbsd-nat.c and
+ alphanbsd-tdep.c.
+ (alphanbsd-nat.o): New dependency list.
+ (alphanbsd-tdep.o): Ditto.
+ * NEWS: Note new native NetBSD/alpha configuration.
+ * alphanbsd-nat.c: New file.
+ * alphanbsd-tdep.c: Ditto.
+ * configure.host (alpha*-*-netbsd*): New host.
+ * configure.tgt (alpha*-*-netbsd*): New target.
+ * config/alpha/nbsd.mh: New file.
+ * config/alpha/nbsd.mt: Ditto.
+ * config/alpha/nm-nbsd.h: Ditto.
+ * config/alpha/tm-nbsd.h: Ditto.
+
+2002-04-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add alpha-osf1-tdep.c.
+ (alpha-osf1-tdep.o): New dependency list.
+ * alpha-tdep.h (gdbarch_tdep): Add dynamic_sigtramp_offset
+ and skip_sigtramp_frame members.
+ * alpha-linux-tdep.c: Include gdbcore.h.
+ (alpha_linux_sigtramp_offset): Change return type to LONGEST.
+ (alpha_linux_init_abi): Initialize tdep->dynamic_sigtramp_offset.
+ * alpha-osf1-tdep.c: New file.
+ * alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Moved to
+ alpha-osf1-dep.c.
+ (alpha_frame_past_sigtramp_frame): New function.
+ (alpha_dynamic_sigtramp_offset): Ditto.
+ (alpha_proc_desc_is_dyn_sigtramp): Ditto.
+ (alpha_set_proc_desc_is_dyn_sigtramp): Ditto.
+ (ALPHA_PROC_SIGTRAMP_MAGIC): Define.
+ (push_sigtramp_desc): Use alpha_set_proc_desc_is_dyn_sigtramp.
+ (after_prologue): Use alpha_proc_desc_is_dyn_sigtramp.
+ (find_proc_desc): Use alpha_dynamic_sigtramp_offset.
+ (alpha_frame_chain): Use alpha_frame_past_sigtramp_frame.
+ (alpha_init_extra_frame_info): Use alpha_proc_desc_is_dyn_sigtramp.
+ (alpha_pop_frame): Use alpha_proc_desc_is_dyn_sigtramp.
+ (alpha_gdbarch_init): Initialize tdep->dynamic_sigtramp_offset
+ and tdep->skip_sigtramp_frame. Set gdbarch_skip_trampoline_code
+ to find_solib_trampoline_target.
+ * config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-osf1-tdep.o.
+ * config/alpha/tm-alpha.h: Remove inclusion of regcache.h.
+ (SKIP_TRAMPOLINE_CODE): Remove.
+ (PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
+ (SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
+ (DYNAMIC_SIGTRAMP_OFFSET): Ditto.
+ (FRAME_PAST_SIGTRAMP_FRAME): Ditto.
+ * config/alpha/tm-alphalinux.h (PROC_DESC_IS_DYN_SIGTRAMP): Remove.
+ (PROC_SIGTRAMP_MAGIC): Ditto.
+ (PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
+ (SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
+ (SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
+ (DYNAMIC_SIGTRAMP_OFFSET): Ditto.
+ (FRAME_PAST_SIGTRAMP_FRAME): Ditto.
+
+2002-04-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * NEWS: Note that Alpha targets are now multi-arch.
+
+2002-04-24 Michael Snyder <msnyder@redhat.com>
+
+ * parser-defs.h (prev_lexptr): New external variable.
+ * parse.c (parse_exp_1): Set prev_lexptr to null before
+ calling the language-specific parser.
+ * c-exp.y (yylex): Set prev_lexptr to start of current token.
+ (yyerror): Use prev_lexptr in error reporting.
+
+2002-04-24 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/i386/tm-linux.h: Define FILL_FPXREGSET.
+ * gregset.h: If FILL_FPXREGSET is defined, provide
+ gdb_fpxregset_t, supply_fpxregset, and fill_fpxregset.
+ * linux-proc.c (linux_do_thread_registers): If FILL_FPXREGSET
+ is defined, call fill_fpxregset.
+
+2002-04-24 Roland McGrath <roland@frob.com>
+
+ * config/i386/i386gnu.mh (NATDEPFILES): Add core-regset.o here.
+ * i386gnu-nat.c [HAVE_SYS_PROCFS_H]
+ (supply_gregset, supply_fpregset): New functions.
+
+ * gnu-nat.c (gnu_find_memory_regions): New function.
+ (init_gnu_ops): Set `to_find_memory_regions' hook to that.
+ (gnu_xfer_memory): Add a cast.
+
+2002-04-24 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c (arm_scan_prologue): Move "mov ip, sp" into the
+ loop. Add handling for "str lr, [sp, #-4]!" and for saves
+ of argument regs ("str r(0123), [r11, #-nn"]).
+ (arm_skip_prologue): Better handling for frameless functions.
+ Treat "mov ip, sp" as optional. Recognize "str lr, [sp, #-4]".
+ (arm_skip_prologue): Recognize str r(0123), [r11, #-nn].
+
+Wed Apr 24 14:22:21 2002 Andrew Cagney <cagney@redhat.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Add comment that NUM_REGS nor
+ NUM_PSEUDO_REGS can be used.
+
+2002-04-24 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.h: Update copyright.
+
+ * gdbarch.sh (PC_IN_SIGTRAMP): Add.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * inferior.h (IN_SIGTRAMP): Delete definition.
+ * arch-utils.c (legacy_pc_in_sigtramp): New function.
+ * arch-utils.h (legacy_pc_in_sigtramp): Declare.
+
+ * mips-tdep.c (mips_init_extra_frame_info): Use PC_IN_SIGTRAMP.
+ (mips_dump_tdep): Do not print value of IN_SIGTRAMP.
+ * hppa-tdep.c (pc_in_interrupt_handler): Use PC_IN_SIGTRAMP.
+ (find_proc_framesize): Ditto.
+ * alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Ditto.
+ (alpha_init_extra_frame_info): Ditto.
+ * infrun.c (handle_inferior_event): Ditto.
+ (handle_inferior_event): Ditto.
+ (check_sigtramp2): Ditto.
+ * blockframe.c (create_new_frame): Ditto.
+ (get_prev_frame): Ditto.
+ * ppc-linux-tdep.c: Update comments.
+ * i386-linux-tdep.c: Update comments.
+ * breakpoint.c (bpstat_what): Update comment.
+
+2002-04-24 David S. Miller <davem@redhat.com>
+
+ * i960-tdep.c (register_in_window_p): New function.
+ (i960_find_saved_register): Use it instead of
+ REGISTER_IN_WINDOW_P.
+ * config/i960/tm-i960.h (REGISTER_IN_WINDOW): Delete.
+
+ * symtab.h (find_stab_function_addr): Kill extern.
+ * minsyms.c (find_stab_function_addr): Remove from here...
+ * dbxread.c: ... to here, and mark it static.
+
+2002-04-20 David S. Miller <davem@redhat.com>
+
+ * sparc-tdep.c (sparc_pop_frame): Only need to allocate
+ SPARC_INTREG_SIZE * 16 bytes for reg_temp.
+
+2002-04-21 David S. Miller <davem@redhat.com>
+
+ * remote-vxsparc.c (vx_read_register): Fix typo, we want
+ REGISTER_RAW_SIZE of SP_REGNUM not CORE_ADDR.
+ (vx_write_register): Likewise.
+
+2002-04-23 J. Brobecker <brobecker@gnat.com>
+
+ * source.c (is_regular_file): New function.
+ (openp): Check wether file to open is a regular file
+ to avoid opening directories.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * findvar.c (extract_signed_integer): Cast printf argument
+ to suppress format warning.
+ (extract_unsigned_integer): Likewise.
+ * infcmd.c (registers_info): Likewise.
+ * top.c (get_prompt_1): Likewise.
+ * valops.c (value_assign): Likewise.
+ * valprint.c (print_decimal): Likewise.
+
+2002-04-22 H.J. Lu (hjl@gnu.org)
+
+ * c-exp.y (typebase): Support
+
+ [long|long long|short] [signed|unsigned] [int|]
+
+ and
+
+ signed [long|long long|short] int
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (vax-tdep.o): Add $(arch_utils_h), $(inferior_h),
+ and vax-tdep.h.
+ * vax-tdep.h: New file.
+ * vax-tdep.c: Include inferior.h, arch-utils.h, and vax-tdep.h.
+ Make several routines static.
+ (vax_get_saved_register): New function.
+ (vax_gdbarch_init): New function.
+ (_initialize_vax_tdep): Register vax_gdbarch_init.
+ * config/vax/tm-vax.h: Set GDB_MULTI_ARCH to GDB_MULTI_ARCH_PARTIAL.
+ Remove macros now under the control of gdbarch.
+
+2002-04-22 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.c (arm_skip_prologue): Recognize "sub sp, sp, #nn".
+ Some whitespace and coding standards tweaks.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c: Include regcache.h.
+ (vax_call_dummy_words): New.
+ (sizeof_vax_call_dummy_words): New.
+ (vax_fix_call_dummy): New function.
+ (vax_saved_pc_after_call): Ditto.
+ * config/vax/tm-vax.h: Don't include regcache.h.
+ (SAVED_PC_AFTER_CALL): Use vax_saved_pc_after_call.
+ (CALL_DUMMY): Remove.
+ (CALL_DUMMY_WORDS): Define.
+ (SIZEOF_CALL_DUMMY_WORDS): Define.
+ (FIX_CALL_DUMMY): Use vax_fix_call_dummy.
+
+2002-04-18 Michael Snyder <msnyder@redhat.com>
+
+ * arm-tdep.h: Change regnum defines to enums for ease of debugging.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c (vax_frame_chain): New function.
+ (vax_push_dummy_frame): Ditto.
+ (vax_pop_frame): Ditto.
+ * config/vax/tm-vax.h (FRAME_CHAIN): vax_frame_chain.
+ (FRAMELESS_FUNCTION_INVOCATION): Use
+ generic_frameless_function_invocation_not.
+ (PUSH_DUMMY_FRAME): Use vax_push_dummy_frame.
+ (POP_FRAME): Use vax_pop_frame.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c (vax_store_struct_return): New function.
+ (vax_extract_return_value): Ditto.
+ (vax_store_return_value): Ditto.
+ (vax_extract_struct_value_address): Ditto.
+ * config/vax/tm-vax.h (STORE_STRUCT_RETURN): Use
+ vax_store_struct_return.
+ (EXTRACT_RETURN_VALUE): Use vax_extract_return_value.
+ (STORE_RETURN_VALUE): Use vax_store_return_value.
+ (EXTRACT_STRUCT_VALUE_ADDRESS): Use vax_extract_struct_value_address.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c (vax_frame_saved_pc): New function.
+ (vax_frame_args_address_correct): Ditto.
+ (vax_frame_args_address): Ditto.
+ (vax_frame_locals_address): Ditto.
+ (vax_frame_num_args): Move code to be in proximity to
+ other frame-related functions.
+ * config/vax/tm-vax.h (INNER_THAN): Use core_addr_lessthan.
+ (FRAME_SAVED_PC): Use vax_frame_saved_pc.
+ (FRAME_ARGS_ADDRESS_CORRECT): Use vax_frame_args_address_correct.
+ (FRAME_ARGS_ADDRESS): Use vax_frame_args_address.
+ (FRAME_LOCALS_ADDRESS): Use vax_frame_locals_address.
+
+2002-04-22 H.J. Lu (hjl@gnu.org)
+
+ * Makefile.in (FLAGS_TO_PASS): Add libdir, mandir, datadir and
+ includedir.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c (vax_frame_init_saved_regs): New function.
+ * config/vax/tm-vax.h (FRAME_FIND_SAVED_REGS): Remove.
+ (FRAME_INIT_SAVED_REGS): New macro.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * MAINTAINERS: Reflect that the Alpha target has been multi-arch'd.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-nat.c (get_longjmp_target): Use ALPHA_* constants
+ where needed.
+ (fetch_osf_core_registers): Likewise.
+ (supply_gregset): Likewise.
+
+2002-04-22 J. Brobecker <brobecker@gnat.com>
+
+ * symfile.h (get_section_index): Define.
+ * symfile.c (get_section_index): New function.
+ * mdebugread.c (SC_IS_SBSS): New macro.
+ (SC_IS_BSS): Return true for the scBss storage class only, as
+ the scSBss storage class refers to the .sbss section.
+ (parse_partial_symbols): Discard the symbols which associated
+ section does not exist.
+ Make sure to use the .sbss section index for symbols which
+ storage class is scBss, rather than using the .bss section index.
+
+2002-04-22 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * vax-tdep.c: Update copyright years.
+ (vax_register_name): New function.
+ (vax_register_byte): Ditto.
+ (vax_register_raw_size): Ditto.
+ (vax_register_virtual_size): Ditto.
+ (vax_register_virtual_type): Ditto.
+ * config/vax/tm-vax.h: Update copyright years.
+ (REGISTER_NAMES): Remove.
+ (REGISTER_NAME): Define.
+ (REGISTER_BYTE): Use vax_register_byte.
+ (REGISTER_RAW_SIZE): Use vax_register_raw_size.
+ (REGISTER_VIRTUAL_SIZE): Use vax_register_virtual_size.
+ (REGISTER_VIRTUAL_TYPE): Use vax_register_virtual_type.
+
+2002-04-21 Andrew Cagney <ac131313@redhat.com>
+
+ * config/sparc/tm-sparc.h (sparc_skip_prologue): Restore
+ declaration
+ * arc-tdep.c (arc_prologue_frameless_p): Fix syntax error.
+
+2002-04-21 David S. Miller <davem@redhat.com>
+
+ * arch-utils.c (generic_prologue_frameless_p): Kill
+ SKIP_PROLOGUE_FRAMELESS_P code.
+ * config/arc/tm-arc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
+ references.
+ (PROLOGUE_FRAMELESS_P, arc_prologue_frameless_p): New.
+ * arc-tdep.c (arc_prologue_frameless_p): Implement.
+ * config/arc/tm-sparc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
+ references.
+ (PROLOGUE_FRAMELESS_P, sparc_prologue_frameless_p): New.
+ * sparc-tdep.c (sparc_prologue_frameless_p): Implement.
+ (sparc_gdbarch_init): Pass it to
+ set_gdbarch_prologue_frameless_p.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add alphabsd-nat.c.
+ (alphabsd-nat.o): New dependency list.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (ALLDEPFILES): Add alpha-linux-tdep.c and
+ alphafbsd-tdep.c.
+ (alpha-linux-tdep.o): New dependency list.
+ (alphafbsd-tdep.o): Likewise.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-linux-tdep.c: New file. Move alpha_linux_sigtramp_offset
+ to here...
+ * alpha-tdep.c: ...from here.
+ * config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-linux-tdep.o.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/alpha/tm-alpha.h: Move alpha_software_single_step
+ prototype from here...
+ * alpha-tdep.h: ...to here.
+
+2002-04-21 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.h (selected_frame_level): Document as deprecated.
+ (frame_relative_level): Declare.
+ * stack.c (frame_relative_level): New function.
+ (selected_frame_level): Document as deprecated.
+ (select_frame): Do not set the selected_frame_level.
+
+ * stack.c (frame_info, record_selected_frame): Update.
+ (frame_command, current_frame_command): Update.
+ (up_silently_base, up_command, down_silently_base): Update.
+ (down_command): Update.
+ * inflow.c (kill_command): Update.
+ * tracepoint.c (finish_tfind_command): Update.
+ * corelow.c (core_open): Update.
+ * thread.c (info_threads_command): Update.
+ (do_captured_thread_select): Update.
+ * infcmd.c (finish_command): Update.
+ * breakpoint.c (insert_breakpoints, do_enable_breakpoint): Update.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/alpha/tm-fbsd.h (FRAME_CHAIN_VALID): Remove.
+
+2002-04-21 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_breakpoint_from_pc): Make static. Make return
+ type const.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alphafbsd-tdep.c: Update copyright years. Include
+ alpha-tdep.h.
+ (alphafbsd_use_struct_convention): Make static.
+ (alphafbsd_init_abi): New function.
+ (_initialize_alphafbsd_tdep): New function.
+ * config/alpha/tm-fbsd.h: Update copyright years.
+ (USE_STRUCT_CONVENTION): Remove.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_abi_handler): New structure to describe
+ an Alpha ABI variant.
+ (alpha_abi_handler_list): Declare.
+ (alpha_gdbarch_register_os_abi): New function.
+ (alpha_gdbarch_init): Give registered ABI variant handlers a
+ chance to tweak the gdbarch once we have set up defaults.
+ * alpha-tdep.h: Prototype alpha_gdbarch_register_os_abi.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_gdbarch_init): Set coerce_float_to_double
+ to standard_coerce_float_to_double.
+ * config/alpha/tm-alpha.h (COERCE_FLOAT_TO_DOUBLE): Remove.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.h (gdbarch_tdep): Add vm_min_address member.
+ * alpha-tdep.c (heuristic_proc_start): Use vm_min_address
+ from gdbarch_tdep rather than a constant.
+ (alpha_gdbarch_init): Initialize tdep->vm_min_address to
+ the default text address for all Alpha Unix ABIs.
+ (alpha_dump_tdep): Report the value of tdep->vm_min_address.
+ * config/alpha/tm-alpha.h (VM_MIN_ADDRESS): Delete.
+
+2002-04-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.h: New file. Includes several Alpha target constants
+ taken from...
+ * config/alpha/tm-alpha.h: ...here. Remove macros that we now
+ let gdbarch deal with.
+ (GDB_MULTI_ARCH): Define as GDB_MULTI_ARCH_PARTIAL.
+ * Makefile.in (alpha-nat.o): Add alpha-tdep.h and $(BFD_SRC)/elf-bfd
+ to dependency list.
+ * alpha-nat.c: Include alpha-tdep.h. Update for adjusted
+ Alpha target register names.
+ * alphabsd-nat.c: Likewise.
+ * alpha-tdep.c: Include alpha-tdep.h. Update for adjusted
+ Alpha target register names. Make serveral routines static.
+ (alpha_get_saved_register): New function.
+ (alpha_abi_names): New.
+ (process_note_abi_tag_sections): New function.
+ (get_elfosabi): New function.
+ (alpha_gdbarch_init): New function.
+ (alpha_dump_tdep): New function.
+ (_initialize_alpha_tdep): Register alpha_gdbarch_init.
+
+2002-04-21 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (find_saved_register): Delete #ifdef
+ HAVE_REGISTER_WINDOWS code.
+ * config/sparc/tm-sparc.h: Update comments.
+ * config/i960/tm-i960.h (HAVE_REGISTER_WINDOWS): Delete macro.
+
+2002-04-21 Andrew Cagney <ac131313@redhat.com>
+
+ * i960-tdep.c (i960_find_saved_register): New function.
+ (i960_get_saved_register): New function.
+ * config/i960/tm-i960.h (GET_SAVED_REGISTER): Define.
+ (i960_get_saved_register): Declare.
+ * config/i960/tm-i960.h, i960-tdep.c: Update copyright.
+
+2002-04-20 David S. Miller <davem@redhat.com>
+
+ * sparc-nat.c (store-inferior_registers): Fix ambiguous else.
+
+2002-04-20 Andrew Cagney <ac131313@redhat.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Use gdbarch_num_pseudo_regs
+ instead of NUM_PSEUDO_REGS.
+
+2002-04-20 David S. Miller <davem@redhat.com>
+
+ * config/sparc/tm-linux.h (GDB_MULTI_ARCH): Define to
+ GDB_MULTI_ARCH_PARTIAL
+ * config/sparc/tm-sp64linux.h (GDB_MULTI_ARCH): Do not
+ define, let tm-sp64.h do it.
+
+2002-04-20 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * frame.c (find_saved_register): Avoid a NULL pointer
+ dereference and actually walk the frame list.
+
+2002-04-20 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (gdbarch_update_p): Keep the list of architectures
+ sorted in most most-recent-used order. Document.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-04-19 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc_get_saved_register): Use get_prev_frame
+ instead of ->prev.
+ * z8k-tdep.c (z8k_frame_chain): Do not use ->prev.
+ * s390-tdep.c (s390_frame_chain): Do not use ->prev.
+ * rs6000-tdep.c (frame_get_saved_regs): Use rs6000_frame_chain()
+ instead of ->prev.
+
+2002-04-19 Elena Zannoni <ezannoni@redhat.com>
+
+ Fix PR gdb/471.
+ * gdbtypes.c (init_simd_type): Rewrite using new functions.
+ (build_builtin_type_vec128): Ditto.
+ (append_composite_type_field): Fix calculation of type length in
+ union case.
+
+2002-04-19 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * config/djgpp/README: Update.
+
+ * go32-nat.c (store_register): Cast &a_tss to `char *' to avoid a
+ compiler warnings.
+
+2002-04-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (setup_arbitrary_frame): Rename...
+ (alpha_setup_arbitrary_frame): ...to this.
+ * config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Update
+ for alpha_setup_arbitrary_frame.
+
+2002-04-18 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (BREAKPOINT_FROM_PC): Return a const buffer.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * defs.h (breakpoint_from_pc_fn): Delete type definition.
+ * target.h (memory_breakpoint_from_pc): Update declaration.
+ * config/mcore/tm-mcore.h (mcore_breakpoint_from_p): Ditto.
+
+ * arch-utils.c (legacy_breakpoint_from_pc): Update return type.
+ * mcore-tdep.c (mcore_breakpoint_from_pc): Ditto.
+ * mem-break.c (memory_breakpoint_from_pc): Ditto.
+ * rs6000-tdep.c (rs6000_breakpoint_from_pc): Ditto.
+ * s390-tdep.c (s390_breakpoint_from_pc): Ditto
+ * xstormy16-tdep.c (xstormy16_breakpoint_from_pc): Ditto.
+ * mn10300-tdep.c (mn10300_breakpoint_from_pc): Ditto.
+ * mips-tdep.c (mips_breakpoint_from_pc): Ditto.
+ * m68hc11-tdep.c (m68hc11_breakpoint_from_pc): Ditto.
+ * ia64-tdep.c (ia64_breakpoint_from_pc): Ditto.
+ * d10v-tdep.c (d10v_breakpoint_from_pc): Ditto.
+ * arch-utils.c (legacy_breakpoint_from_pc): Ditto..
+
+ * mem-break.c (default_memory_insert_breakpoint): Make `bp' a
+ const pointer.
+ * monitor.c (monitor_insert_breakpoint): Ditto.
+ * rs6000-tdep.c (rs6000_software_single_step): Ditto for `breakp'.
+
+ * config/mcore/tm-mcore.h: Update copyright.
+ * mem-break.c: Ditto.
+ * xstormy16-tdep.c: Ditto.
+
+2002-04-18 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y: Add precedence rule for '^' token.
+ This removes the shift/reduce conflicts.
+ Remove the comment concerning these shift/reduce conflicts.
+
+2002-04-18 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (COMMON_UISA_NOFP_REGS): New macro.
+ (registers_powerpc_nofp): New register set for processors
+ without floating point unit.
+
+2002-04-18 David S. Miller <davem@redhat.com>
+
+ * MAINTAINERS: Add myself to write-after-approval.
+
+2002-04-17 Michael Snyder <msnyder@redhat.com>
+
+ * MAINTAINERS: Add myself as co-maintainer of testsuite/gdb.asm.
+
+2002-04-17 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (frame_initial_stack_address): Use
+ frame_register_read to read the alloca_reg.
+
+2002-04-17 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (find_saved_register): Find saved registers in the next
+ not prev frame.
+ Fix PR gdb/365.
+
+2002-04-17 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (LANG): Set to ``c''.
+
+2002-04-15 Andrew Cagney <ac131313@redhat.com>
+
+ * PROBLEMS: Mention hppa2.0-hp-hpux10.20 compile problems.
+
+2002-04-15 Andrew Cagney <ac131313@redhat.com>
+
+ * bcache.c: Include <stddef.h> and <stdlib.h> after "defs.h".
+ Update copyright.
+
+ * hpread.c (hpread_get_lntt): Add declaration.
+ Also fix PR gdb/391.
+
+2002-04-14 Andrew Cagney <ac131313@redhat.com>
+
+ * acinclude.m4 (AM_PROG_CC_STDC): Import from automake 1.6.
+ * aclocal.m4, configure: Re-generate.
+ Fix PR gdb/391.
+
+2002-04-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * mi/mi-cmd-disas.c (dump_insns): Use TARGET_PRINT_INSN
+ instead of tm_print_insn.
+
+2002-04-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-bdm.c (bdm_ppc_fetch_registers): Fix typo.
+
+2002-04-14 Andrew Cagney <ac131313@redhat.com>
+
+ * config/pa/tm-hppa.h (FRAME_CHAIN_COMBINE): Delete macro.
+ * blockframe.c (FRAME_CHAIN_COMBINE): Delete macro.
+ (get_prev_frame): Do not call FRAME_CHAIN_COMBINE.
+
+2002-04-12 Don Howard <dhoward@redhat.com>
+
+ * cli/cli-cmds.c (init_cli_cmds): Add new user settable value:
+ max_user_call_depth.
+ (init_cmd_lists): Initialize the new value;
+ * cli/cli-script.c (execute_user_command): Limit the call depth of
+ user defined commands. This avoids a core-dump when user commands
+ are infinitly recursive.
+
+2002-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ * ppc-tdep.h (struct gdbarch_tdep): Add new member ``lr_frame_offset''.
+ * rs6000-tdep.c (rs6000_frame_saved_pc): Use ``lr_frame_offset''
+ from tdep struct instead of DEFAULT_LR_SAVE.
+ (rs6000_gdbarch_init): Initialize ``lr_frame_offset''.
+ * config/powerpc/tm-ppc-eabi.h (DEFAULT_LR_SAVE): Delete.
+ * config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Delete.
+
+2002-04-12 Michael Snyder <msnyder@redhat.com>
+
+ * Remote.c: Spelling fix.
+ * gcore.c (default_derive_heap_segment): Use bfd_section_name.
+ If no symbol found for "sbrk", try "_sbrk".
+ (make_output_phdrs): Use bfd_section_name.
+ (gcore_copy_callback): Use bfd_section_name.
+ * eval.c: Indentation fix-ups.
+ * d10v-tdep.c (d10v_make_iaddr): Make it idempotent,
+ in case it gets applied to an address that is already
+ in the instruction space.
+ * cli/cli-decode.c (help_list): Allow long lines to wrap.
+ * symfile.c: Fix indentation, long lines.
+ * source.c: White space fix-up.
+
+2002-04-12 Andrew Cagney <cagney@redhat.com>
+
+ * defs.h (read_relative_register_raw_bytes): Delete declaration.
+ * frame.c (frame_register_read): New function. Return non-zero on
+ success.
+ (read_relative_register_raw_bytes_for_frame): Delete.
+ (read_relative_register_raw_bytes): Delete.
+ * frame.h (frame_register_read): Declare.
+ * d30v-tdep.c: Update Copyright. Use frame_register_read.
+ * sh-tdep.c: Ditto.
+ * infcmd.c (do_registers_info): Ditto.
+ * hppa-tdep.c: Ditto.
+ * rs6000-tdep.c: Ditto.
+ * h8500-tdep.c: Ditto.
+ * mips-tdep.c: Ditto.
+ * h8300-tdep.c: Ditto.
+ * z8k-tdep.c: Ditto.
+
+2002-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
+ 64-bit SysV ABI.
+
+2002-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_gdbarch_init): Compute ``wordsize'' from
+ bfd info.
+
+2002-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (powerpc64, 630, rs64ii, rs64iii): Define
+ register sets for these processor variants.
+
+2002-04-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * regformats/reg-ppc.dat: Support FPSCR.
+
+2002-04-11 Kevin Buettner <kevinb@redhat.com>
+
+ * ppc-tdep.h (struct gdbarch_tdep): Add new field ``ppc_fpscr_regnum''.
+ * ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
+ Add fpscr as an invalid/unfetchable register.
+ * ppc-linux-nat.c (ppc_register_u_addr, store_register)
+ (fetch_ppc_registers, store_ppc_registers, supply_fpregset)
+ (fill_fpregset): Add support for register fpscr.
+ (fetch_ppc_registers, store_ppc_registers, supply_gregset)
+ (fill_gregset): Account for the fact that register ``mq'' might
+ not exist.
+ * rs6000-tdep.c (PPC_UISA_SPRS): Use (unused) slot 70 for fpscr.
+ (registers_power): Add fpscr to register set at slot 71.
+ (rs6000_gdbarch_init): Account for the fact that ``mq'' doesn't
+ exist on most PPC architectures. Initialize ppc_fpscr_regnum.
+
+2002-04-11 Michael Snyder <msnyder@redhat.com>
+
+ * configure.in: Autoconfiscate _SYSCALL32 define for solaris.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * acconfig.h: Add define for _SYSCALL32.
+ * core-sol2.c: Remove #define _SYSCALL32.
+ * solib-legacy.c: Remove #define _SYSCALL32.
+
+2002-04-10 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (select_frame): Cleanup internal error message, do not
+ use %p.
+
+2002-04-10 Andrew Cagney <ac131313@redhat.com>
+
+ * stack.c (select_frame): Check that selected_frame and the
+ specified level are as expected.
+ * blockframe.c (get_prev_frame): Set the `level' from next_frame.
+ Update copyright.
+ * frame.h (struct frame_info): Add field `level'. Update
+ copyright.
+ Work-in-progress PR gdb/464.
+
+2002-04-10 Andrew Cagney <ac131313@redhat.com>
+
+ * maint.c (maint_print_section_info): Rename print_section_info.
+ (print_bfd_section_info, print_objfile_section_info): Update.
+ * inferior.h (struct gdbarch): Add opaque declaration.
+ * gdbarch.sh: Add include of "inferior.h" to gdbarch.sh.
+ * gdbarch.h: Regenerate.
+
+2002-04-10 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-nat.c (child_resume, child_xfer_memory): Delete.
+ (PTRACE_XFER_TYPE): Moved to config/i386/nm-x86-64.h.
+ (kernel_u_size): Added.
+ * config/i386/nm-x86-64.h (CHILD_XFER_MEMORY, CHILD_RESUME): Delete.
+ (PTRACE_XFER_TYPE): Moved here from config/i386/nm-x86-64.h.
+
+2002-04-04 Jim Ingham <jingham@apple.com>
+
+ * valarith.c (find_size_for_pointer_math): New function, either returns
+ the size for a pointer's target, returns 1 for void *, or errors for
+ incomplete types.
+ (value_add, value_sub): use find_size_for_pointer_math.
+
+2002-04-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * linux-low.c (linux_look_up_symbols): New hook.
+ (linux_target_ops): Add linux_look_up_symbols.
+ * remote-utils.c (decode_address): New function.
+ (look_up_one_symbol): New function.
+ * server.c (handle_query): Call target look_up_symbols hook.
+ * server.h (look_up_one_symbol): Add prototype.
+ * target.h (struct target_ops): Add look_up_symbols hook.
+
+2002-04-09 Andrew Cagney <ac131313@redhat.com>
+
+ * frame.c (read_relative_register_raw_bytes_for_frame): Do not
+ override FP_REGNUM with frame->fp. Update copyright.
+ * parse.c (num_std_regs, std_regs): Delete.
+ (target_map_name_to_register): Do not search std_regs. Update
+ function description.
+ * parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete
+ declarations. Update copyright.
+ Fix PR gdb/251.
+
+2002-04-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.h (ALL_BLOCK_SYMBOLS): Don't dereference the pointer
+ after the last symbol in a block.
+
+2002-04-09 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * p-exp.y (yylex): Handle also the fact that is_a_field_of_this
+ is non zero as a found symbol.
+
+2002-04-08 Andrew Cagney <ac131313@redhat.com>
+
+ * findvar.c: Include "builtin-regs.h".
+ (value_of_register): Call value_of_builtin_reg when applicable.
+ * parse.c: Include "builtin-regs.h" and "gdb_assert.h".
+ (target_map_name_to_register): Call
+ builtin_reg_map_name_to_regnum.
+ * Makefile.in (SFILES): Add builtin-regs.c and std-regs.c.
+ (COMMON_OBS): Add builtin-regs.o and std-regs.o.
+ (builtin_regs_h): Define.
+ (builtin-regs.o): New target.
+ (findvar.o): Add $(builtin_regs_h).
+ * builtin-regs.c, builtin-regs.h: New files.
+ * std-regs.c: New file.
+ Partial fix for PR gdb/251.
+
+2002-04-08 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Don't set tm_print_insn;
+ it's no longer required.
+
+2002-04-08 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (gdbtk-wrapper.o): Add missing dependencies.
+
+2002-04-08 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_software_single_step): Use
+ rs6000_breakpoint_from_pc() to fetch breakpoint instruction
+ and size. Use target_insert_breakpoint() and
+ target_remove_breakpoint() to insert and remove breakpoints
+ instead of explicit memory reads and writes.
+
+2002-04-08 Kevin Buettner <kevinb@redhat.com>
+
+ * config/powerpc/tm-ppc-eabi.h (ELF_OBJECT_FORMAT): Delete.
+ * rs6000-tdep.c (rs6000_push_arguments): Eliminate
+ ELF_OBJECT_FORMAT ifdef.
+
+2002-04-08 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use set_gdbarch_print_insn().
+
+2002-04-08 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_fix_call_dummy): Delete unused macro
+ definitions for TOC_ADDR_OFFSET and TARGET_ADDR_OFFSET.
+
+2002-04-07 Mark Kettenis <kettenis@gnu.org>
+
+ * fbsd-proc.c (child_pid_to_exec_file, fbsd_find_memory_regions):
+ s/asprintf/xasprintf/.
+ (fbsd_make_corefile_notes): s/strdup/xstrdup/.
+
+2002-04-07 Andrew Cagney <ac131313@redhat.com>
+
+ I believe Jeff Law denies responsability for this one:
+ * config/pa/hpux11w.mh (MH_CFLAGS): Add -Dvfork=fork.
+ * config/pa/hpux11.mh (MH_CFLAGS): Add -Dvfork=fork.
+ * config/pa/hpux1020.mh (MH_CFLAGS): Add -Dvfork=fork.
+ Work-around for PR gdb/366.
+
+2002-04-07 Elena Zannoni <ezannoni@redhat.com>
+
+ * remote-e7000.c (write_small, e7000_read_inferior_memory,
+ e7000_read_inferior_memory_large, e7000_insert_breakpoint,
+ e7000_remove_breakpoint): Use paddr_nz() to print addresses.
+
+2002-04-07 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_fp_frame_init_saved_regs,
+ sh_nofp_frame_init_saved_regs): Use alloca() for 'where'
+ information.
+
+2002-04-07 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Misc): List Daniel Jacobowitz as the GDBSERVER
+ maintainer.
+
+2002-04-07 Andrew Cagney <ac131313@redhat.com>
+
+ * README (Reporting Bugs in GDB): Document the bug web page as the
+ prefered way of submitting bugs.
+ Fix PR gdb/402.
+
+2002-04-06 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (FP_REGNUM, PC_REGNUM, SP_REGNUM): Allow default of
+ -1. Update comment.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-04-07 Andreas Schwab <schwab@suse.de>
+
+ * m68klinux-nat.c (fill_fpregset): Properly pass address of
+ buffer to regcache_collect.
+
+2002-04-06 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (PS_REGNUM): Add. Document. Default to -1.
+ * gdbarch.c, gdbarch.h: Re-generate.
+
+2002-04-06 Andrew Cagney <ac131313@redhat.com>
+
+ * symtab.c (lookup_symtab): Remove ``const'' from ``rp''
+ declaration. Fix -Werror.
+
+2002-04-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbarch.sh (initialize_non_multiarch): Call init_gdbarch_swap.
+ * gdbarch.c: Regenerate.
+
+2002-04-05 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (clear_command): Rewrite middle section to
+ combine two loops with identical control conditions.
+ Add a cleanup to eliminate a memory leak.
+ * cli/cli-dump.c (restore_section_callback): Use paddr_nz.
+
+2002-04-05 H.J. Lu (hjl@gnu.org)
+
+ * solib-svr4.c (bkpt_names): Add "__start".
+
+2002-04-04 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc_push_dummy_frame): Use GDB_TARGET_IS_SPARC64
+ as test for 64 bit target.
+
+2002-04-05 Andrew Cagney <ac131313@redhat.com>
+
+ * h8500-tdep.c (h8500_write_fp): Delete function.
+ * dwarf2cfi.c (cfi_write_fp): Document as not used.
+ * mips-tdep.c (mips_gdbarch_init): Do not set write_fp.
+ * ia64-tdep.c (ia64_gdbarch_init): Do not set write_fp.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set write_fp.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Do not set write_fp.
+ * s390-tdep.c (s390_gdbarch_init): Do not set write_fp.
+ (s390_write_fp):
+ * sh-tdep.c (sh_gdbarch_init): Do not set write_fp.
+ * x86-64-tdep.c (i386_gdbarch_init): Do not set write_fp.
+ * d10v-tdep.c (d10v_gdbarch_init): Do not set write_fp.
+ (d10v_write_fp): Delete function.
+ * inferior.h (write_fp, generic_target_write_fp): Delete
+ declarations.
+ * regcache.c (generic_target_write_fp): Delete function.
+ (write_fp): Delete function.
+ * gdbarch.sh (TARGET_WRITE_FP): Delete.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * config/v850/tm-v850.h (TARGET_WRITE_FP): Delete macro.
+ * config/sparc/tm-sp64.h (TARGET_WRITE_FP): Delete macro.
+ (sparc64_write_fp): Delete declaration.
+ * config/h8500/tm-h8500.h (TARGET_WRITE_FP): Delete macro.
+ (h8500_write_fp): Delete declaration.
+
+2002-04-04 Andrew Cagney <ac131313@redhat.com>
+
+ * sparc-tdep.c (sparc64_write_fp): Delete.
+ (sparc_push_dummy_frame): Replace write_fp call with code to store
+ the FP directly.
+ (sparc_gdbarch_init): Do not initialize write_fp.
+
+2002-04-05 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-tdep.c (skip_prologue): Eliminate unused/unreachable
+ clause.
+
+2002-03-29 Jim Blandy <jimb@redhat.com>
+
+ * stack.c (get_selected_block): Add new argument `addr_in_block',
+ used to return the exact code address we used to select the block,
+ not just the block.
+ * blockframe.c (get_frame_block, get_current_block): Same.
+ * frame.h (get_frame_block, get_current_block,
+ get_selected_block): Update declarations.
+ * linespec.c, stack.c, blockframe.c, breakpoint.c, findvar.c,
+ linespec.c, varobj.c, printcmd.c, symtab.c: Callers changed.
+
+2002-04-05 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (insert_breakpoints): Change 'hw' to 'hardware in
+ warning message.
+
+2002-04-05 J. Brobecker <brobecker@gnat.com>
+
+ * utils.c (xfullpath): New function.
+ * defs.h (xfullpath): Add declaration.
+ * source.c (openp): Use xfullpath in place of gdb_realpath to
+ avoid resolving the basename part of filenames when the
+ associated file is a symbolic link. This fixes a potential
+ inconsistency between the filenames known to GDB and the
+ filenames it prints in the annotations.
+ * symtab.c (lookup_symtab): Use the new xfullpath function, in order
+ to be able to match a filename with either the real filename, or
+ the name of any symbolic link to this file.
+ (lookup_partial_symtab): Ditto.
+
+2002-04-04 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c: Add support for hardware breakpoints in overlays.
+ (overlay_events_enabled): New state variable.
+ (insert_breakpoints): Use overlay_events_enabled to decide
+ whether to attempt to set a breakpoint at the overlay load addr.
+ Handle bp_hardware_breakpoint as well as bp_breakpoint.
+ (remove_breakpoint): Use overlay_events_enabled to decide
+ whether breakpoints need to be removed from overlay load addr.
+ Handle bp_hardware_breakpoint as well as bp_breakpoint.
+ (bpstat_stop_status): Handle bp_hardware_breakpoint in overlays.
+ (create_overlay_event_breakpoint, enable_overlay_breakpoints,
+ disable_overlay_breakpoints): Update overlay_events_enabled.
+
+2002-04-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * dwarf2read.c (struct function_range): New.
+ (cu_first_fn, cu_last_fn, cu_cached_fn): New.
+ (check_cu_functions): New.
+ (read_file_scope): Initialize global function lists.
+ Call dwarf_decode_line after processing children.
+ (read_func_scope): Add to global function list.
+ (dwarf_decode_lines): Call check_cu_functions everywhere
+ record_line is called. Call record_line with a linenumber
+ of 0 to mark sequence ends.
+
+2002-04-04 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-nat.c (child_xfer_memory): x86-64 ptrace() ABI
+ change sync with glibc.
+
+2002-04-03 Jim Blandy <jimb@redhat.com>
+
+ * configure.in: Call AC_C_INLINE.
+ * configure: Regenerated.
+
+2002-04-01 Daniel Jacobowitz <drow@mvista.com>
+
+ * rs6000-tdep.c: Change #include of "bfd/libcoff.h"
+ and "bfd/libbfd.h" to "libcoff.h" and "libbfd.h".
+
+2002-03-31 Mark Kettenis <kettenis@gnu.org>
+
+ * NEWS: Mention gcore support on FreeBSD/i386.
+
+ * fbsd-proc.c: New file.
+ * config/i386/nm-fbsd.h (CHILD_PID_TO_EXEC_FILE): Define.
+ * config/i386/fbsd.mh (NATDEPFILES): Add gcore.o and fbsd-proc.o.
+
+ * lin-lwp.c (child_wait): Check SAVE_ERRNO instead of ERRNO in
+ while statement.
+
+2002-03-29 Jim Blandy <jimb@redhat.com>
+
+ * cli/cli-dump.c (_initialize_cli_dump): Older GCC's tolerate
+ unescaped newlines in string literals, but newer ones don't. So
+ escape them.
+
+2002-03-26 Michael Snyder <msnyder@redhat.com>
+ Andrew Cagney <cagney@redhat.com>
+
+ * cli/cli-dump.c: New file. Dump memory to file,
+ restore file to memory.
+ * cli/cli-dump.h: New file.
+ * Makefile.in: Add rules, dependencies for cli-dump.o.
+ * NEWS: Mention new commands.
+
+2002-03-28 Michael Snyder <msnyder@redhat.com>
+
+ * symfile.c (symbol_file_add): Move test for null symbols to later.
+
+2002-03-27 Andrew Cagney <ac131313@redhat.com>
+
+ From veksler at il.ibm.com:
+ * utils.c (gdb_realpath): If canonicalize_file_name fails, return
+ the xstrduped original path.
+ Fix PR gdb/417.
+
+2002-03-27 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (_initialize_breakpoint): Clean up help string.
+ * infcmd.c (_initialize_infcmd): Ditto.
+ * language.c (_initialize_language): Ditto.
+ * symfile.c (_initialize_symfile): Ditto.
+ * top.c (_init_main): Ditto.
+ * cli/cli-cmds.c (init_cli_cmds): Ditto.
+
+2002-03-27 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (struct rs6000_framedata): Add fields for AltiVec
+ vector registers handling.
+ (skip_prologue): Handle new AltiVec instructions. Fill in new
+ fields of frame data.
+ (frame_get_saved_regs): Fill in information for AltiVec registers.
+
+2002-03-27 Jim Blandy <jimb@redhat.com>
+
+ * symtab.h (SYMBOL_INIT_MANGLED_NAME): Turn this macro's body into
+ a function; leave this macro here to invoke that function.
+ (symbol_init_mangled_name): Declaration for that function.
+ * symtab.c (symbol_init_mangled_name): New function.
+
+2002-03-27 Andrew Cagney <ac131313@redhat.com>
+
+ * valarith.c: Replace strerror with safe_strerror.
+ * tracepoint.c: Ditto.
+ * lin-lwp.c: Ditto.
+ * go32-nat.c: Ditto.
+ * inflow.c: Ditto.
+ * gnu-nat.c: Ditto.
+
+2002-03-27 Andreas Schwab <schwab@suse.de>
+
+ * event-top.c (command_line_handler): Remove useless if.
+
+2002-03-27 Andreas Jaeger <aj@suse.de>
+
+ * dwarf2cfi.c: Give credit to Daniel Berlin, reformat copyright
+ comment.
+
+2002-03-27 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.h (X86_64_NUM_REGS, X86_64_NUM_GREGS): Delete #defines.
+ (x86_64_num_regs, x86_64_num_gregs): Added extern variables.
+ * x86-64-linux-nat.c (x86_64_regmap): Swapped RBX <> RDX, added DS, ES, FS, GS.
+ (x86_64_linux_dr_get_status, supply_gregset),
+ (fill_gregset): Changed X86_64_NUM_GREGS to x86_64_num_gregs.
+ * x86-64-tdep.c (x86_64_register_raw_size_table): Delete.
+ (x86_64_register_info_table): Add.
+ (X86_64_NUM_REGS, X86_64_NUM_GREGS): Add.
+ (x86_64_register_raw_size, x86_64_register_virtual_type),
+ (x86_64_register_name, _initialize_x86_64_tdep): Changed to reflect new
+ general x86_64_register_info_table.
+ (i386_gdbarch_init): gdbarch_register_bytes is now set
+ dynamicaly during initialization.
+ * regformats/reg-x86-64.dat: Synced with changes to registers above.
+ * gdbserver/linux-x86-64-low.c: Ditto.
+
+2002-03-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/server.c (main): Call target_signal_to_host_p
+ and target_signal_to_host on signals received from the remote.
+ * gdbserver/remote-utils.c (prepare_resume_reply): Call
+ target_signal_from_host on signals sent to the remote.
+ * gdbserver/server.h: Add prototypes. Include "gdb/signals.h".
+ * gdbserver/Makefile.in: Add signals.o. Add -I${INCLUDE_DIR}.
+
+2002-03-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * signals/signals.c: Include "server.h" in gdbserver build.
+ (target_signal_from_name): Don't use STREQ.
+ (_initialize_signals): Likewise. Don't include function in
+ gdbserver build.
+
+2002-03-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * signals.c: Moved to...
+ * signals/signals.c: Here.
+ * Makefile (signals.o): Update.
+
+2002-03-26 Jeff Law (law@redhat.com)
+
+ * somread.c (som_symtab_read): Remove some commented out code and
+ updated related comments. Do not set the minimal symbol table to
+ mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
+ in a dynamic executable.
+ * hppa-tdep.c (find_proc_framesize): Sanely handle the case
+ where we are unable to find the minimal symbol for the given
+ PC value.
+
+2002-03-25 Jeff Law (law@redhat.com)
+
+ * linux-proc.c (read_mapping): Scan up to end of line for filename.
+
+2002-03-25 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.c (x86_64_skip_prologue): Rewritten from scratch.
+
+2002-03-23 Andrew Cagney <ac131313@redhat.com>
+
+ * command.h: Update copyright.
+ (struct cmd_list_element): Replace definition with opaque
+ declaration.
+ (enum cmd_types): Document that it will eventually be moved to
+ cli/cli-decode.h
+ (CMD_DEPRECATED, DEPRECATED_WARN_USER): Delete macros.
+ (MALLOCED_REPLACEMENT): Delete macro.
+ * Makefile.in (cli_decode_h): Add $(command_h).
+ (top.o, completer.o, maint.o): Add dependency on $(cli_decode_h).
+ * top.c: Include "cli/cli-decode.h".
+ * completer.c: Include "cli/cli-decode.h".
+ * maint.c: Include "cli/cli-decode.h".
+ * cli/cli-decode.h: Include "command.h".
+ (enum command_class): Delete.
+ (enum cmd_types): Comment out.
+ (enum cmd_auto_boolean): Delete.
+ (enum var_types): Delete.
+
+2002-03-23 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c: Include "gdb_assert.h".
+ (add_set_or_show_cmd): New static function.
+ (add_set_cmd): Rewrite. Use add_set_or_show_cmd.
+ (add_show_from_set): Rewrite. Use add_set_or_show_cmd. Don't copy
+ all fields, such as func, from the set command.
+
+2002-03-23 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (sh-elf): Change warning flag to -w.
+
+2002-03-23 Andrew Cagney <cagney@redhat.com>
+
+ * defs.h (error): Add printf format attribute.
+ * thread-db.c (thread_from_lwp): Fix error format string.
+ * stack.c (parse_frame_specification): Ditto.
+ * cli/cli-decode.c (undef_cmd_error): Ditto.
+ * scm-lang.c (scm_lookup_name): Ditto.
+ * tracepoint.c (trace_error): Ditto.
+ * remote-utils.c (usage): Ditto.
+ * remote.c (compare_sections_command): Ditto.
+ Fix PR gdb/328.
+
+2002-03-22 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbtypes.c (append_composite_type_field): New function.
+ (init_composite_type): New function.
+ * gdbtypes.h (append_composite_type_field): Declare.
+ (init_composite_type): Ditto.
+
+2002-03-22 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-linux-tdep.c (ppc_sysv_abi_use_struct_convention): New
+ function.
+ * ppc-tdep.h (ppc_sysv_abi_use_struct_convention): Export.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use different
+ structure returning convention for SYSV ABI case, but not
+ for GNU/Linux, FreeBSD, or NetBSD.
+
+2002-03-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.h (lookup_block_symbol): Add mangled_name argument
+ to prototype.
+
+ * symmisc.c (maintenance_check_symtabs): Call lookup_block_symbol
+ with new mangled_name argument.
+ * linespec.c (decode_line_1): Likewise.
+ * valops (value_of_this): Likewise.
+ * symtab.c (lookup_transparent_type): Likewise.
+ (lookup_symbol_aux): Likewise. Accept new mangled_name argument.
+ (lookup_symbol): If we are given a mangled name, pass it down
+ to lookup_symbol_aux.
+ (lookup_block_symbol): If we are given a mangled name to check
+ against, only return symbols which match it.
+
+2002-03-22 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (child_create_inferior): Check for proper shell to use
+ here, in case the user changes it on the fly.
+ (_initialize_inftarg): Remove shell path considerations.
+
+2002-03-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use correct max size value
+ for gdbarch_max_register_raw_size and max_register_virtual_size.
+ Adjust copyright year.
+
+2002-03-21 Daniel Jacobowitz <drow@mvista.com>
+
+ * dbxread.c (process_one_symbol): Extend the first N_SLINE
+ in a function to cover the entire beginning of the function
+ as well if it does not already.
+
+2002-03-21 Tom Rix <trix@redhat.com>
+
+ * rs6000-nat.c (rs6000_ptrace32): Renamed from ptrace32.
+ (rs6000_ptrace64): Renamed from ptrace64.
+
+2002-03-20 Martin M. Hunt <hunt@redhat.com>
+
+ * gdbserver/remote-utils.c (remote_open): Don't call
+ getprotobyname, we're all using TCP here so just use
+ IPPROTO_TCP.
+ * gdbserver/gdbreplay.c (remote_open): Ditto.
+
+2002-03-20 Martin M. Hunt <hunt@redhat.com>
+
+ * regcache.c (_initialize_regcache): No need to call
+ build_regcache() at this time; it gets called whenever
+ the gdbarch changes.
+
+2002-03-20 David O'Brien <obrien@FreeBSD.org>
+
+ * sparc-nat.c: Include sys/param.h where possible.
+
+2002-03-20 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/422.
+ * c-lang.c (c_create_fundamental_type): Handle FT_COMPLEX,
+ FT_DBL_PREC_COMPLEX, and FT_EXT_PREC_COMPLEX.
+ * dwarf2read.c (read_base_type): Set TYPE_TARGET_TYPE for
+ complex types.
+ * stabsread.c (rs6000_builtin_type): Likewise.
+ (read_sun_floating_type): Likewise.
+
+2002-03-19 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * stabsread.c (read_member_functions): Remove skip code for duplicate
+ constructor/destructor methods. Use standard parsing for these
+ methods and just do not chain them to the list of methods after
+ parsing.
+
+2002-03-19 Alexandre Oliva <aoliva@redhat.com>
+
+ * coffread.c: Remove redundant static declarations. Replace
+ occurrences of `PTR' with `void *'.
+ * elfread.c, mdebugread.c, minsyms.c, mipsread.c: Likewise.
+ * top.h (quit_cover): Likewise.
+ * defs.h (catch_errors): Likewise.
+
+2002-03-18 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (XMALLOC): Define.
+ * gdb-events.sh (XMALLOC): Delete macro.
+ * gdb-events.c, gdb-events.h: Regenerate.
+ * gdbarch.sh (XMALLOC): Delete macro.
+ * gdbarch.c: Regenerate.
+ * serial.c (XMALLOC): Delete macro.
+ * ui-file.c (XMALLOC): Ditto.
+ * ser-unix.h (XMALLOC): Ditto.
+ * sh-tdep.c (XMALLOC): Ditto.
+ * ui-out.c (XMALLOC): Ditto.
+ * utils.c (XMALLOC): Ditto.
+ * i386-tdep.c (XMALLOC): Ditto.
+ * gdb-events.c (XMALLOC): Ditto.
+ * d10v-tdep.c (XMALLOC): Ditto.
+ * cli-out.c (XMALLOC): Ditto.
+
+ * cli-out.c, d10v-tdep.c, gdb-events.c: Update copyright.
+ * gdb-events.sh, i386-tdep.c, ser-unix.h, serial.c: Ditto.
+ * ui-file.c, ui-out.c: Ditto.
+
+2002-03-18 Andrew Cagney <ac131313@redhat.com>
+
+ * command.h (struct cmd_list_element): Add field context.
+ (set_cmd_context, get_cmd_context): Declare.
+ * cli/cli-decode.h: Ditto.
+ * cli/cli-decode.c (get_cmd_context): New function.
+ (set_cmd_context): New function.
+ (add_cmd): Initialize context.
+ Part of fixing PR gdb/145 and PR gdb/146.
+
+2002-03-17 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (cmd_type): New function.
+ * command.h (cmd_type): Declare.
+ * infrun.c (set_schedlock_func): Call function cmd_type.
+ * kod.c (kod_set_os): Call cmd_type.
+ * cris-tdep.c (cris_version_update): Use function cmd_type.
+ (cris_mode_update, cris_abi_update): Ditto.
+
+ * command.h: (execute_cmd_post_hook): Declare.
+ (execute_cmd_pre_hook): Declare.
+ * cli/cli-script.c (clear_hook_in_cleanup): New function.
+ (execute_cmd_post_hook, execute_cmd_pre_hook): New
+ functions. Execute pre/post hook while ensuring that afterwords
+ hook_in is cleared.
+ * top.c (execute_command): Use execute_cmd_post_hook, and
+ execute_cmd_pre_hook to execute pre/post commands.
+ * infrun.c (normal_stop): Pass stop_command and not pre_hook to
+ hook_stop_stub.
+ (hook_stop_stub): Call execute_cmd_pre_hook.
+
+2002-03-17 Andrew Cagney <ac131313@redhat.com>
+
+ * kod.c (kod_set_os): Revert previous change. Is called by ``info
+ set'' and this leads to a core dump. Move xstrdup of
+ operating_system to after check that it is not NULL.
+
+2002-03-17 Andrew Cagney <ac131313@redhat.com>
+
+ * kod.c (kod_set_os): Remove unnecessary check that
+ ``command->type'' is set_cmd.
+
+ * valprint.c (set_input_radix): Use input_radix.
+ (set_output_radix): Use output_radix.
+ (set_input_radix_1, set_output_radix_1): Add FIXME - bad radix
+ isn't reverted.
+
+2002-03-16 Andrew Cagney <ac131313@redhat.com>
+
+ * value.h (struct value): Delete field ``substring_addr''. Change
+ aligner fields to force_doublest_align, force_longest_align,
+ force_core_addr_align and force_pointer_aligh.
+
+ * value.h (struct value): Fix typo in above change.
+
+2002-03-16 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * ia64-tdep.c (ia64_gdbarch_init): Call set_gdbarch_frame_args_skip,
+ to fix internal_error from ``maintenance print architecture''.
+
+2002-03-16 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type
+ for gcc versions after gcc-2.8.1.
+
+2002-03-16 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * eval.c (evaluate_subexp_standard): Fix setup of ``this'' pointer
+ for method resolution. Restore adjustment of ``this'' pointer after
+ calling value_struct_elt, which was accidentally removed during the
+ HP merge.
+
+2002-03-15 Andrew Cagney <ac131313@redhat.com>
+
+ * eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
+ value_of_register.
+ * findvar.c (value_of_register): Add ``frame'' parameter. Pass to
+ get_saved_register.
+ * value.h (value_of_register): Update.
+
+2002-03-14 Richard Henderson <rth@redhat.com>
+
+ * configure.in: Detect declaration for canonicalize_file_name.
+ * utils.c (canonicalize_file_name): Declare, if needed.
+ (gdb_realpath): Prefer realpath if available and usable.
+ * config.in, configure: Rebuild.
+
+2002-03-14 Richard Henderson <rth@redhat.com>
+
+ * dwarf2read.c (read_array_type): Accept DW_FORM_data8 as
+ a constant array bound.
+
+ * MAINTAINERS: Add myself to write-after-approval.
+
+2002-03-14 Michael Snyder <msnyder@redhat.com>
+
+ * symfile.c (syms_from_objfile): Return immediately if no syms.
+ (symbol_file_add): Return immediately if no syms.
+ (find_sym_fns): Return immediately if no syms.
+
+2002-03-13 Michal Ludvig <mludvig@suse.cz>
+
+ * gdbserver/remote-util.c (remote_open): Print remote-side's
+ IP address when remote debugging over the network.
+
+2002-03-12 David O'Brien <obrien@FreeBSD.org>
+
+ * config/sparc/fbsd.mh: Fix copyright.
+ * config/sparc/fbsd.mt: Likewise.
+
+2002-03-11 Richard Earnshaw <rearnsha@arm.com>
+
+ * MAINTAINERS: Fix typo in name of gdb warnings option.
+ (x86-64): Fix formating so that this can be parsed by awk.
+
+2002-03-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * Makefile.in (defs_h): Add $(INCLUDE_DIR)/gdb/signals.h.
+ * defs.h: Include "gdb/signals.h".
+ (enum target_signal): Move to $(INCLUDE_DIR)/gdb/signals.h.
+
+2002-03-10 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-tdep.h (sys/reg.h, x86_64_regmap): Moved to x86-64-linux-nat.c
+ * x86-64-linux-nat.c (sys/reg.h, x86_64_regmap): Moved here
+ from x86-64-tdep.h
+
+2002-03-10 Daniel Jacobowitz <drow@mvista.com>
+ Don Howard <dhoward@redhat.com>
+
+ * mips-tdep.c (ST0_FR): Define.
+ (mips2_fp_compat): New function, temporarily disabled.
+ (mips_read_fp_register_single): New function.
+ (mips_read_fp_register_double): New function.
+ (mips_print_register): Use them.
+ (do_fp_register_row): Likewise.
+
+2002-03-09 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Add Jim Ingham and Klee Dienes to ``write after
+ approval''.
+
+2002-03-08 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * stabsread.c (read_member_functions): Fix is_stub test for
+ static member functions, improve comment.
+
+2002-03-07 Richard Earnshaw <rearnsha@arm.com>
+
+ * remote-rdi.c (myprint): Replace 'PTR' with 'void *'.
+ (mywrite, mywritec, mypause, myreadc, mygets): Likewise.
+ (_initialize_remote_rdi): Use add_set_boolean_cmd to register
+ commands that set boolean values.
+ (arm_rdi_remove_breakpoint): Rewrite to avoid uninitialized warning.
+ (arm_rdi_resume): Always initialize PC.
+ (arm_rdi_open): Don't use rslt as a boolean.
+ (arm_rdi_create_inferior, arm_rdi_close, arm_rdi_resume)
+ (arm_rdi_fetch_registers, arm_rdi_store_registers)
+ (arm_rdi_xfer_memory, arm_rdi_files_info, arm_rdi_kill)
+ (arm_rdi_insert_breakpoint, arm_rdi_remove_breakpoint): Likewise.
+
+2002-03-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.in (gdb_cv_bigtoc): Check for -bbigtoc on AIX.
+ * configure: Rebuilt.
+
+2002-03-06 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * m68hc11-tdep.c (_initialize_m68hc11_tdep): Don't set tm_print_insn.
+ (m68hc11_gdbarch_init): But use set_gdbarch_print_insn instead.
+
+2002-03-06 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (set_cmd_completer): New function.
+ * command.h (set_cmd_completer): Declare.
+ * cli/cli-decode.h (set_cmd_completer): Ditto.
+
+ * breakpoint.c (_initialize_breakpoint): Use set_cmd_completer.
+ * cli/cli-cmds.c (init_cli_cmds): Ditto.
+ * win32-nat.c (_initialize_inftarg): Ditto.
+ * remote-rdi.c (_initialize_remote_rdi): Ditto.
+ * proc-api.c (_initialize_proc_api): Ditto.
+ * hppa-tdep.c (_initialize_hppa_tdep): Ditto.
+ * source.c (_initialize_source): Ditto.
+ * exec.c (_initialize_exec): Ditto.
+ * solib.c (_initialize_solib): Ditto.
+ * top.c (init_main): Ditto.
+ * tracepoint.c (_initialize_tracepoint): Ditto.
+ * symfile.c (_initialize_symfile): Ditto.
+ * printcmd.c (_initialize_printcmd): Ditto.
+ * infcmd.c (_initialize_infcmd): Ditto.
+ * corefile.c (_initialize_core): Ditto.
+
+2002-03-05 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Past Maintainers): Add Frank Ch. Eigler.
+
+2002-03-05 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Fix Mac OS X and Objective-C/C++.
+
+2002-03-05 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Update headings, 5.2 has branched.
+
+2002-03-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c (PTRACE_XFER_TYPE): Change to long.
+ (num_regs, regmap): Move inside HAVE_LINUX_USRREGS.
+ (register_addr, REGISTER_RAW_SIZE): Likewise.
+ (usr_store_inferior_registers): Use PTRACE_XFER_TYPE.
+ * gdbserver/linux-x86-64-low.c: Remove extra #endif.
+
+2002-03-03 Michal Ludvig <mludvig@suse.cz>
+
+ * MAINTAINERS (x86-64): Add myself.
+ * x86-64-tdep.c (x86_64_push_arguments): Fixed typo naregs->nregs,
+ changed value_ptr -> struct value *
+
+2002-03-01 David O'Brien <obrien@FreeBSD.org>
+
+ * configure.host (sparc64-*-freebsd): Add.
+ * configure.tgt: Likewise.
+ * config/sparc/fbsd.mh: New file.
+ * config/sparc/fbsd.mt: Likewise.
+ * config/sparc/nm-fbsd.h: Likewise.
+ * config/sparc/tm-fbsd.h: Likewise.
+
+2002-03-01 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/djgpp/fnchange.lst: Add regformats/reg-i386-linux.dat and
+ regformats/reg-s390x.dat.
+
+2002-03-01 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c: Add FIXME explaining true/false problem.
+
+2002-02-28 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Past Maintainers): Add J.T. Conklin.
+
+2002-02-28 Michael Chastain <mec@shout.net>
+
+ * MAINTAINERS: Fix typo: gdb.satbs -> gdb.stabs .
+
+2002-02-28 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-s390-low.c: New file.
+ * regformats/reg-s390.dat: New file.
+ * regformats/reg-s390x.dat: New file.
+ * gdbserver/configure.srv: Add S/390.
+ * gdbserver/Makefile.in: Add S/390.
+ * configure.tgt: Enable gdbserver for S/390.
+
+2002-02-28 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * go32-nat.c (_initialize_go32_nat): Don't use periods in the
+ first line of the doc string for "info dos", except at the end of
+ the sentence, since the short help stops at the first period.
+
+2002-02-28 Jason Merrill <jason@redhat.com>
+
+ * dwarf2read.c (dwarf_cfi_name): Add new codes.
+
+2002-02-27 Fred Fish <fnf@redhat.com>
+
+ * blockframe.c (generic_fix_call_dummy): Fix obvious typo in
+ comment (dumy -> dummy).
+
+2002-02-27 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * symtab.c (gdb_mangle_name): Handle fully mangled v3 abi physnames.
+
+2002-02-27 Rodney Brown <rbrown64@csc.com.au>
+
+ * utils.c (gdb_realpath): Add pathconf fallback for sco3.2v5.
+
+2002-02-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/acconfig.h: New file.
+ * gdbserver/i387-fp.c: New file.
+ * gdbserver/i387-fp.h: New file.
+ * gdbserver/linux-x86-64.c: New file.
+ * regformats/reg-x86-64.dat: New file.
+ * configure.tgt: Add x86_64-*-linux* gdbserver support.
+ * gdbserver/configure.srv: Add x86_64-*-linux* and regset support.
+ * gdbserver/configure.in: Add support for regsets.
+ * gdbserver/config.in: Regenerate.
+ * gdbserver/configure: Regenerate.
+ * gdbserver/Makefile.in: Likewise. Add $(linux_low_h).
+ * gdbserver/linux-low.h: New file.
+ * gdbserver/linux-low.c: Include "linux-low.h". Add support
+ for regsets.
+ * gdbserver/linux-arm-low.c: Include "linux-low.h".
+ * gdbserver/linux-ia64-low.c: Include "linux-low.h".
+ * gdbserver/linux-m68k-low.c: Include "linux-low.h".
+ * gdbserver/linux-mips-low.c: Include "linux-low.h".
+ * gdbserver/linux-ppc-low.c: Include "linux-low.h".
+ * gdbserver/linux-sh-low.c: Include "linux-low.h".
+ * gdbserver/linux-i386-low.c: Include "linux-low.h". Include
+ "i387-fp.h". Add PTRACE_GETREGS and friends.
+ * gdbserver/regcache.c (supply_register): New function.
+ (supply_register_by_name): New function.
+ (collect_register): New function.
+ (collect_register_by_name): New function.
+
+2002-02-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/Makefile.in (INTERNAL_CFLAGS): Remove -DGDBSERVER.
+ (config.status): Add configure.srv dependency.
+ (server_h): Add config.h dependency.
+
+2002-02-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * regformats/reg-i386-linux.dat: New file, with $orig_eax.
+ * gdbserver/Makefile.in: Add rules for reg-i386-linux.o.
+ * gdbserver/configure.srv: Change i386-*-linux* to use
+ reg-i386-linux.o.
+
+2002-02-26 Andrew Cagney <ac131313@redhat.com>
+
+ * x86-64-tdep.c: Re-indent. Update copyright date.
+
+2002-02-26 Andrew Cagney <ac131313@redhat.com>
+
+ From Michal Ludvig <mludvig@suse.cz>:
+ * x86-64-tdep.c (value.h): Delete.
+ (gdb_assert.h): Include.
+ (x86_64_register_convert_to_virtual,
+ x86_64_register_convert_to_raw ): Add check which lets only
+ floating-point values to be converted.
+ (value_push): Delete.
+ (x86_64_push_arguments): Order of arguments pushed on stack fixed.
+ (i386_gdbarch_init): Number of register_bytes fixed.
+
+2002-02-26 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Add x86-64 target.
+
+2002-02-26 Andrew Cagney <ac131313@redhat.com>
+
+ * memattr.c (mem_command): Eliminate ``true'' and ``false''.
+ * osfsolib.c (solib_map_sections): Ditto.
+ * irix5-nat.c (solib_map_sections): Ditto.
+ * corelow.c (gdb_check_format): Ditto.
+ * symfile.c (symfile_bfd_open): Ditto.
+ * solib.c (solib_map_sections): Ditto.
+ Fix PR gdb/354.
+
+2002-02-26 Andrew Cagney <ac131313@redhat.com>
+
+ * remote.c (_initialize_remote): By default, disable ``e'' and
+ ``E'' step out-of-range packets.
+
+2002-02-26 Andreas Schwab <schwab@suse.de>
+
+ * config/m68k/tm-linux.h (FRAME_SAVED_PC): Define as
+ m68k_linux_frame_saved_pc.
+ (IN_SIGTRAMP): Define as m68k_linux_in_sigtramp instead of
+ in_sigtramp.
+ (SIGCONTEXT_PC_OFFSET): Remove.
+ * m68klinux-nat.c (m68k_linux_frame_saved_pc,
+ m68k_linux_sigtramp_saved_pc): New functions.
+ (IS_SIGTRAMP, IS_RT_SIGTRAMP): Define.
+ (SIGCONTEXT_PC_OFFSET): Moved here from config/m68k/tm-linux.h.
+ (UCONTEXT_PC_OFFSET): Define.
+ (m68k_linux_in_sigtramp): Renamed from in_sigtramp, handle both
+ non-RT and RT signal trampolines.
+
+2002-02-26 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/tm-embed.h (TARGET_UPAGES): Delete.
+ (TARGET_NBPG, STACK_END_ADDR): Delete
+ (VARIABLES_INSIDE_BLOCK): Delete.
+
+2002-02-25 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (perror_with_name): Make string parameter constant.
+ (print_sys_errmsg): Ditto.
+ (query): Ditto.
+ * defs.h (perror_with_name): Update.
+ (print_sys_errmsg): Update.
+ (query): Update.
+
+2002-02-25 Daniel Jacobowitz <drow@mvista.com>
+
+ From Eliot Dresselhaus <eliot@ayrnetworks.com>:
+ * gdbserver/linux-mips-low.c (cannot_fetch_register): Fix typo.
+
+2002-02-25 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * rs6000-nat.c (set_host_arch): Do not switch to a new architecture
+ if it already matches the current architecture from the exec file.
+ Include arch-utils.h for gdbarch_info_init prototype.
+ * Makefile.in (rs6000-nat.o): Update dependencies.
+
+2002-02-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * config/djgpp/djconfig.sh: Set NM=nm and CFLAGS="-g -O2" in the
+ list of exported variables.
+
+2002-02-24 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/configure.srv: New file.
+ * gdbserver/configure.in: Use configure.srv instead
+ of the host/target makefile fragments. Set GDBSERVER_DEPFILES
+ from it.
+ * gdbserver/configure: Regenerated.
+ * gdbserver/terminal.h: New file.
+ * gdbserver/Makefile.in: Update for configure changes. Remove
+ more unneeded include paths.
+
+2002-02-24 Andrew Cagney <ac131313@redhat.com>
+
+ From wiz at danbala:
+ * config/sparc/tm-sp64.h: Fix grammar and typos.
+ Fix PR gdb/287.
+
+2002-02-24 Andrew Cagney <ac131313@redhat.com>
+
+ * lin-lwp.c, thread-db.c, defs.h, cris-tdep.c: Replace ``Linux''
+ with either ``GNU/Linux'' or ``Linux kernel''. Update copyright.
+ * m68klinux-nat.c, sparc-linux-nat.c, x86-64-linux-nat.c: Ditto.
+ * x86-64-linux-tdep.c, gregset.h, gdb_wait.h: Ditto.
+ * ia64-linux-nat.c, infrun.c, linux-proc.c: Ditto.
+ * proc-service.c, i386-linux-tdep.c, ppc-linux-tdep.c: Ditto.
+ * s390-tdep.c: Ditto.
+ * config/nm-linux.h, config/alpha/nm-linux.h: Ditto.
+ * config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h:
+ * config/alpha/xm-alphalinux.h, config/i386/nm-linux.h: Ditto.
+ * config/i386/nm-x86-64.h, config/i386/tm-linux.h: Ditto.
+ * config/m68k/tm-linux.h, config/mips/nm-linux.h: Ditto.
+ * config/mips/tm-linux.h, config/mips/xm-linux.h: Ditto.
+ * config/powerpc/tm-linux.h, config/s390/nm-linux.h: Ditto.
+ * config/s390/tm-linux.h, config/sh/tm-linux.h: Ditto.
+ * config/sparc/nm-linux.h, config/sparc/tm-linux.h: Ditto.
+ * config/sparc/tm-sp64linux.h, config/sparc/xm-linux.h: Ditto.
+ Fix PR gdb/378.
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ * lin-thread.c: Delete file.
+ * configure.in (gdb_cv_struct_reg_r_gs): Update comment to refer
+ to gdb_proc_service.h.
+ * configure: Re-generate.
+
+ * ocd.c (ocd_open): Do not try to open the "ocd" device.
+ * serial.c (serial_open): Delete check for "ocd".
+ Fix PR gdb/349.
+
+ * Makefile.in (linux-thread.o): Delete target.
+ * linux-thread.c: Delete file.
+
+ * config/djgpp/fnchange.lst: Rename bfd/elf32-sh64.c. Tweak other
+ renamed SH files to be consistent.
+
+ * symtab.c (sort_search_symbols): Use xfree.
+
+2002-02-23 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-tdep.c (arm_linux_init_abi): Register
+ IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE
+ * config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old
+ definition with undef, since we don't want the sysvr4 definition.
+ (SKIP_TRAMPOLINE_CODE): Likewise.
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-02-22 Alfred M. Szmidt <ams@kemisten.nu>:
+
+ * configure.in: (AC_CHECK_FUNCS) Added test for
+ canonicalize_file_name Regenerated.
+ * config.in, configure: Regenerated.
+ * utils.c: (gdb_realpath) If HAVE_CANONICALIZE_FILE_NAME is
+ defined use canonicalize_file_name.
+
+2002-02-23 Michael Chastain <mec@shout.net>
+
+ * MAINTAINERS: Remove Michael Chastain from "paper trail" list.
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ * README: Remove references to cygnus.com.
+ * MAINTAINERS: Change Past Maintainer addresses to ``foo at bar
+ dot com'' form. Remove references to cygnus.com and sourceware.
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-02-19 Paul Eggert <eggert@twinsun.com>:
+ * Makefile.in (VER): Change "head -1" to "sed q", since POSIX
+ 1003.1-2001 no longer allows "head -1".
+ * gdb/Makefile.in (version.c): Likewise.
+ * gdb/doc/Makefile.in (GDBvn.texi): Likewise.
+ * gdb/CONTRIBUTE: Change "diff -c3" to "diff -c", which is
+ equivalent. POSIX 1003.1-2001 no longer allows "diff -c3".
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (cmd_cfunc_eq): New function.
+ * command.h (cmd_cfunc_eq): Declare.
+ * cli/cli-decode.h (cmd_cfunc_eq): Ditto.
+
+ * cli/cli-cmds.h (is_complete_command): Change parameter to a
+ ``struct cmd_list_element *''.
+ * cli/cli-cmds.c (is_complete_command): Update. Use
+ cmd_cfunc_eq.
+ * top.c (execute_command): Pass the command to
+ is_complete_command.
+ * tracepoint.c: Replace function.cfunc with cmd_cfunc_eq.
+
+2002-02-23 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-02-20 Martin Schwidefsky <schwidefsky@de.ibm.com>:
+ * config/s390/tm-s390.h (GDB_TARGET_IS_ESAME): Use renamed
+ architecture defines.
+ * s390-tdep.c (s390_gdbarch_init): Likewise.
+
+2002-02-23 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
+ (arm_linux_push_arguments): Likewise.
+ (arm_linux_init_abi): Register them. Also register linux-specific
+ call_dummy_words.
+ (find_minsym_and_objfile): Use strcmp, not STREQ.
+ * config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
+ (arm_linux_call_dummy_words): Delete declaration.
+ (EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
+ (arm_linux_extract_return_value, arm_linux_push_arguments): Delete
+ declarations.
+ (LOWEST_PC): Delete.
+
+2002-02-23 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * maint.c (print_section_info): Do not prepend `0x' to filepos
+ output, it will be handled by local_hex_string_custom.
+
+2002-02-23 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
+ (store_newfpe_double, store_newfpe_extended, store_fpregister)
+ (store_register, store_regs, fill_gregset, fill_fpregset): Likewise.
+
+2002-02-22 Jim Blandy <jimb@redhat.com>
+
+ Indicate that the bcache functions don't change the strings
+ they're passed.
+ * bcache.h (bcache, hash): Add `const' keywords to declarations.
+ * bcache.c (bcache, hash): Add `const' keywords to definitions.
+
+2002-02-22 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c (child_create_inferior): Fix create flags setting bug.
+
+2002-02-21 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (register_loaded_dll): Just use raw name when we can't
+ find the complete path to a loaded DLL.
+
+2002-02-21 Fred Fish <fnf@redhat.com>
+
+ * dbxread.c (process_one_symbol): When finding an N_FUN symbol
+ that marks the end of the range of a function, enter a line number
+ entry that has a line number of zero and a PC offset that matches
+ the end of the function. This starts a range of PC's for which no
+ line number information is known.
+ * symtab.c (find_pc_sect_line): If our best fit is in a range of
+ PC's for which no line number info is found (line number is zero)
+ then we didn't find any valid line information.
+ * symtab.h: Document use of zero line number entry.
+
+2002-02-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-linux-nat.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Define.
+ (have_ptrace_getvrregs): Define for run time checks.
+ (gdb_vrregset_t): New type for Altivec register handling.
+ (fetch_register, store_register): Fetch/store altivec register
+ when needed.
+ (fetch_altivec_register, store_altivec_register): New functions.
+ (supply_vrregset, fill_vrregset): New functions.
+ (fetch_altivec_registers, store_altivec_registers): New functions.
+ (fetch_ppc_registers, store_ppc_registers): Fetch/store altivec
+ registers as well.
+
+2002-02-21 Jiri Smid <smid@suse.cz>
+
+ * config/i386/x86-64linux.mh (NATDEPFILES): Remove x86-64-nat.o.
+
+2002-02-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * Makefile.in (armnbsd-nat.o): Update dependencies.
+ * armnbsd-nat.c (supply_gregset): New function. Common code to
+ supply the integer register set.
+ (supply_fparegset): New function. Similar for FPA registers.
+ (fetch_regs, fetch_fp_regs): Use them.
+ (fetch_core_registers): Likewise.
+ (fetch_elfcore_registers): New function.
+ (arm_netbsd_elfcore_fns): New core-file type specification.
+ (_initialize_arm_netbsd_nat): Register it.
+
+2002-02-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * armnbsd-nat.c: Include gdbcore.h.
+ (FETCH_INFERIOR_REGISTERS): Just error if this isn't defined.
+ (fetch_regs, fetch_fp_regs, store_regs, store_fp_regs): Add explicit
+ 'void' to declaration, to shut up ARI.
+ (fetch_core_registers): Make static. Rewrite using supply_register.
+ (arm_netbsd_core_fns): New core-file type specification.
+ (_initialize_arm_netbsd_nat): New function.
+
+2002-02-21 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (register_loaded_dll): Correctly check for invalid handle
+ value.
+
+2002-02-20 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (register_loaded_dll): Handle case where FindFirstFile
+ fails.
+
+2002-02-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * jv-exp.y (parse_number): Change type of implicit longs
+ to builtin_type_uint64.
+
+2002-02-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c (mywait): Change argument to waitpid
+ to be an integer instead of a `union wait'.
+
+2002-02-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * mips-linux-nat.c: Call the operating system GNU/Linux.
+ * mips-linux-tdep.c: Likewise.
+ * mips-tdep.c: Likewise.
+
+2002-02-20 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix PR gdb/265.
+ * jv-exp.y (parse_number): Handle 64-bit integers.
+
+2002-02-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/configure.in: Remove AM_PROC_CC_STDC. Change
+ AC_STDC_HEADERS to AC_HEADER_STDC.
+ * gdbserver/configure: Regenerated.
+
+2002-02-20 Richard Earnshaw <rearnsha@arm.com>
+
+ * arc-tdep.c (get_longjmp_target): Only compile this function if JB_PC
+ is defined.
+ * sparc-tdep.c (get_longjmp_target): Likewise.
+
+2002-02-20 Richard Earnshaw <rearnsha@arm.com>
+
+ * News: Add news about ARM and Multi-arch. Mention the new target
+ arm*-*-netbsd*.
+
+2002-02-19 Jim Blandy <jimb@redhat.com>
+
+ * stabsread.c (error_type_complaint): Improve error message.
+
+2002-02-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/README: Update documentation.
+ * gdbserver/configure.in: Update configury to match documentation.
+ * gdbserver/Makefile.in: Likewise.
+ * gdbserver/configure: Regenerated.
+ * gdbserver/aclocal.m4: New file, generated by aclocal.
+ * gdbserver/config.in: New file, generated by autoheader.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/djgpp/fnchange.lst: Add change rules for armnbsd-tdep.c and
+ armnbsd-nat.c.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.h (enum arm_float_model): New enum.
+ (struct gdbarch_tdep): Add fp_model.
+ * arm-tdep.c (arm_gdbarch_init): Set fp_model in tdep. Defer setting
+ up floating-point conversions until we know the floating-point model
+ in use by the inferior. Don't complain about being unable to
+ determine the ABI of the inferior when we don't have one.
+ (arm_extract_return_value): Support different floating-point models.
+ (arm_store_return_value): Likewise.
+ * armnbsd-tdep.c (arm_netbsd_aout_init_abi): Set fp_model in tdep to
+ ARM_FLOAT_SOFT.
+ (arm_netbsd_elf_init_abi): Set fp_model to ARM_FLOAT_SOFT_VFP.
+
+2002-02-19 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * i386-tdep.c (i386_gdbarch_init): Eliminate incorrect use
+ of ``current_gdbarch''.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * armnbsd-nat.c : ANSIfy all function declarations.
+ (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs): New.
+ (fetch_inferior_registers): Re-implement in terms of above.
+ (store_register, store_regs, store_fp_register, store_fp_regs): New.
+ (store_inferior_registers): Re-implement in terms of above.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-nat.c: Linux -> GNU/Linux when not talking about the
+ kernel.
+ * arm-linux-tdep.c: Likewise.
+ * config/arm/tm-linux.h: Likewise.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * configure.tgt (arm*-*-netbsd*): This variant is now fully multi-arch.
+ * config/arm/nbsd.mt (TM_FILE): Delete.
+ * config/arm/tm-nbsd.h: Delete.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Initialize TARGET_CHAR_SIGNED.
+ Initialize CALL_DUMMY_LENGTH.
+
+2002-02-19 Richard Earnshaw <rearnsha@arm.com>
+
+ * armnbsd-tdep.c (arm_netbsd_aout_in_solib_call_trampoline): New
+ function.
+ (arm_netbsd_aout_init_abi): Initialize IN_SOLIB_CALL_TRAMPOLINE.
+ * config/arm/tm-nbsd.h: Don't include config/tm-nbsd.h, it only
+ defines one thing and that is incorrect for this port.
+ (IN_SOLIB_CALL_TRAMPOLINE): Delete.
+
+2002-02-18 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * go32-nat.c: add i386-tdep.h include to import FP_REGNUM_P macro.
+
+2002-02-18 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c (display_selector): New function. Displays information
+ about the information returned by GetThreadSelectorEntry API function.
+ (display_selectors): New function. Displays the infomation of
+ the selector given as argument, or of CS, DS ans FS selectors
+ if no argument is given.
+ ( _initialize_inftarg): Add "w32" as info prefix command.
+ Add "info w32 selector" as command calling display_selectors.
+
+2002-02-19 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * i386-tdep.c (get_longjmp_target): Fix compilation failure
+ by setting dummy values to JB_PC and JB_ELEMENT_SIZE
+ if not defined.
+
+2002-02-18 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/nbsd.mt (TDEPFILES): Add solib-sunos.o.
+
+2002-02-18 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_set_call_dummy_breakpoint_offset): New function.
+ (arm_fix_call_dummy): Call it.
+ (arm_call_dummy_breakpoint_offset): Delete.
+ (arm_gdbarch_init): Initialize call_dummy_breakpoint_offset.
+ * config/arm/tm-arm.h (CALL_DUMMY_BREAKPOINT_OFFSET): Delete.
+
+2002-02-18 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (FRAME_CHAIN_VALID): Only require at level 2.
+ Default to func_frame_chain_valid.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * frame.h (FRAME_CHAIN_VALID): Delete definition.
+
+2002-02-18 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-linux-nat.c: Update copyright.
+ (fetch_register, store_register): Add tid parameter, don't compute
+ tid here.
+ (fetch_ppc_registers, store_ppc_registers): Add tid
+ parameter. Pass it along to callees.
+ (fetch_inferior_registers, store_inferior_registers): Compute tid
+ here, and pass it to calleed functions.
+ (fill_gregset, supply_fpregset): Clean up formatting.
+
+2002-02-18 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_gdbarch_init): Initialize coerce_float_to_double.
+ * config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Delete.
+
+2002-02-18 Richard Earnshaw <rearnsha@arm.com>
+
+ * gdbarch.sh (GET_LONGJMP_TARGET): Add rule.
+ * gdbarch.c gdbarch.h: Regenerate.
+ * breakpoint.c (create_longjmp_breakpoint): Always compile this
+ function.
+ (breakpoint_reset): Test GET_LONGJMP_TARGET_P().
+ * infrun.c (GET_LONGJMP_TARGET): Delete default definition.
+ (handle_inferior_event): Test GET_LONGJMP_TARGET_P().
+
+ * arm-tdep.h (struct gdbarch_tdep): Add jb_pc and jb_elt_size fields.
+ * arm-tdep.c (arm_get_longjmp_target): New function.
+ (arm_gdbarch_init): Initialize jb_pc to -1. If ABI handler changes
+ this to a positive value register arm_get_longjmp_target as the
+ longjmp handler.
+ * arm-linux-tdep.c (arm_get_longjmp_target): Delete.
+ (arm_linux_init_abi): Set up longjmp description in tdep.
+ * armnbsd-nat.c (get_longjmp_target): Delete.
+ * armnbsd-tdep.c (arm_netbsd_init_abi_common): Set up longjmp
+ description in tdep.
+ * config/arm/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC): Delete.
+ (get_longjmp_target): Delete declaration.
+ (GET_LONGJMP_TARGET): Delete.
+ * config/arm/tm-linux.h (arm_get_longjmp_target): Delete declaration.
+ (GET_LONGJMP_TARGET): Delete.
+
+2002-02-17 Kevin Buettner <kevinb@redhat.com>
+
+ From Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
+ * ia64-tdep.c (ia64_gdbarch_init): Eliminate incorrect use
+ of ``current_gdbarch''.
+
+2002-02-17 Tom Tromey <tromey@redhat.com>
+
+ * cli/cli-cmds.c (compare_strings): New function.
+ (complete_command): Only print each unique item once.
+ * completer.h (complete_line): Declare.
+ * completer.c (complete_line): New function.
+ (line_completion_function): Use it.
+
+2002-02-16 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (TARGET_LONG_DOUBLE_BIT): Default to 64.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2002-02-16 Daniel Jacobowitz <drow@mvista.com>
+
+ * valarith.c (value_x_unop): Fix decrement; support post-decrement.
+
+2002-02-16 Daniel Jacobowitz <drow@mvista.com>
+
+ From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
+ * valops.c (value_arg_coerce): Don't take the address of a reference
+ to convert an argument to a reference.
+
+2002-02-15 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (get_image_name): New function.
+ (handle_load_dll): Use get_image_name function.
+ (get_child_debug_event): Avoid registering debug events until possibly
+ execed process is started.
+ (child_create_inferior): Allow invocation via shell so that command
+ line redirection, etc. works ok.
+ (_initialize_inftarg): Add new command: "set shell" to control whether
+ a shell is used to start a process.
+
+2002-02-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-mips-low.c (cannot_fetch_register): Use find_regno
+ instead of find_register_by_number.
+ (cannot_store_register): Likewise.
+
+2002-02-14 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * dwarf2read.c: Replace fprintf (stderr, ...) by
+ fprintf_unfiltered (gdb_stderr, ...).
+
+2002-02-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/gdbserver.1: Document --attach.
+
+2002-02-15 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.h (struct gdbarch_tdep): Add fields for breakpoint
+ descriptions.
+ * arm-tdep.c (arm_default_arm_le_breakpoint)
+ (arm_default_arm_be_breakpoint, arm_default_thumb_le_breakpoint)
+ (arm_default_thumb_be_breakpoint): New. Initialize them from
+ traditional breakpoint defines.
+ (arm_breakpoint_from_pc): Use new gdbarch_tdep entries.
+ (arm_gdbarch_init): Initialize new breakpoint variables.
+ * arm-linux-tdep.c (arm_linux_arm_le_breakpoint): New.
+ (arm_linux_init_abi): Initialize linux-specific breakpoint.
+ * armnbsd-tdep.c (arm_nbsd_arm_le_breakpoint): New.
+ (arm_netbsd_aout_init_abi, arm_netbsd_elf_init_abi): Split common
+ code out to ...
+ (arm_netbsd_init_abi_common): ... here; new function.
+ * config/arm/tm-arm.h (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT)
+ (THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Delete.
+ * config/arm/tm-linux.h (ARM_LE_BREAKPOINT): Delete.
+ * config/arm/tm-nbsd.h (ARM_LE_BREAKPOINT): Delete.
+
+2002-02-15 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.h (enum arm_abi): New enum.
+ (struct gdbarch_tdep): New structure.
+ (LOWEST_PC): Provide a default.
+ (arm_gdbarch_register_os_abi): Declare new function.
+ * arm-tdep.c (arm_abi_names): New array.
+ (process_note_abi_tag_sections): New function.
+ (get_elfosabi): New function.
+ (arm_gdbarch_register_os_abi): New function.
+ (arm_gdbarch_init): Try to determine the ABI of the inferior. If
+ support for that ABI has been built in, then call the appropriate
+ configuration routine. Use gdbarch_num_regs() to get the number
+ of registers.
+ (arm_dump_tdep): New function.
+ (arm_init_abi_eabi_v1, arm_init_abi_eabi_v2, arm_init_abi_apcs): New
+ place-holder functions.
+ (_initialize_arm_tdep): Register them.
+ * config/arm/tm-arm.h (LOWEST_PC): Delete.
+
+ * armnbsd-tdep.c: New file.
+ * Makefile.in (armnbsd-tdep.o): Add dependencies.
+ * config/arm/nbsd.mt (TDEPFILES): Add it.
+ * config/arm/tm-nbsd.h (LOWEST_PC): Delete.
+
+ * armnbsd-nat.c: Include regcache.h.
+ * Makefile.in (armnbsd-nat.o): Update dependency list.
+
+ * arm-tdep.c (arm_get_next_pc): Use printf_filtered for error message.
+
+2002-02-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/Makefile.in: Fix typos in target rules.
+
+2002-02-14 Daniel Jacobowitz <drow@mvista.com>
+
+ Fix part of PR gdb/267.
+ * linespec.c (find_methods): Handle constructors specially for now.
+
+2002-02-14 Corinna Vinschen <vinschen@redhat.com>
+
+ * arm-tdep.c (arm_push_arguments): Eliminate special float type
+ handling.
+ * config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
+ standard_coerce_float_to_double().
+
+2002-02-14 Christopher Faylor <cgf@redhat.com>
+
+ * config/i386/xm-cygwin.h: Revert inadvertent reinclusion of
+ GDBINIT_FILENAME.
+
+2002-02-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * rs6000-tdep.c (rs6000_gdbarch_init): Don't call
+ find_variant_by_name, because it confuses the multiarch
+ framework. Return NULL if there isn't an architecture with the
+ user supplied name, instead of forcing a different one without
+ recording the change with the multiarch machinery.
+ (find_variant_by_name): Delete.
+
+2002-02-14 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * config/i386/i386sol2.mh (NATDEPFILES): Add i387-nat.o, needed by
+ i386v4-nat.o now. Add gcore.o, Solaris x86 supports gcore.
+
+2002-02-13 Martin M. Hunt <hunt@redhat.com>
+
+ * stack.c (print_frame_info_base): When calling
+ print_frame_info_listing_hook, set current_source_symtab.
+
+2002-02-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS,
+ and remove unused $(INCLUDE_DIR).
+ Add regcache.c to OBS.
+ Add generated register protocol files to clean target.
+ Update dependencies for new objects, obsolete old target code.
+
+ * gdbserver/linux-low.c: Remove all platform-specific code to
+ new files. Remove various dead code. Update to use regcache
+ functionality.
+ * gdbserver/remote-utils.c (fromhex): Add return statement
+ to quiet warning.
+ (putpkt): Dynamically allocate buf2 because PBUFSIZ is no longer
+ constant.
+ (input_interrupt): Add integer parameter to match prototype
+ of a signal handler.
+ (outreg): Use register_data ().
+ (prepare_resume_reply): Use gdbserver_expedite_regs.
+ * gdbserver/server.c (main): Dynamically allocate own_buf because
+ PBUFSIZ is no longer constant. Use registers_to_string () and
+ registers_from_string ().
+ * gdbserver/server.h: No longer include "defs.h". Add prototypes
+ for error (), fatal (), and warning (). Update definition of
+ PBUFSIZ to use regcache functionality. Add include guard.
+ * gdbserver/utils.c (fatal): Add missing ``const''.
+ (warning): New function.
+
+ * regformats/regdat.sh: Include "regcache.h" in generated files.
+ Provide init_registers () function.
+ * regformats/regdef.h: Add prototype for set_register_cache ().
+ Add include guard.
+
+ * gdbserver/linux-arm-low.c: New file.
+ * gdbserver/linux-i386-low.c: New file.
+ * gdbserver/linux-ia64-low.c: New file.
+ * gdbserver/linux-m68k-low.c: New file.
+ * gdbserver/linux-mips-low.c: New file.
+ * gdbserver/linux-ppc-low.c: New file.
+ * gdbserver/linux-sh-low.c: New file.
+
+ * gdbserver/regcache.c: New file.
+ * gdbserver/regcache.h: New file.
+
+ * gdbserver/low-linux.c: Removed obsolete file.
+
+2002-02-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/arm/linux.mt: Update GDBSERVER_DEPFILES.
+ * config/i386/linux.mt: Likewise.
+ * config/ia64/linux.mt: Likewise.
+ * config/m68k/linux.mh: Likewise.
+ * config/powerpc/linux.mh: Likewise.
+ * config/mips/linux.mt: Likewise.
+
+ * config/sh/linux.mt: Add GDBSERVER_DEPFILES.
+
+ * config/i386/i386lynx.mh: Mark gdbserver variables
+ as (currently) obsolete for this target.
+ * config/i386/nbsd.mt: Likewise.
+ * config/i386/nbsdelf.mt: Likewise.
+ * config/m32r/m32r.mt: Likewise.
+ * config/m68k/m68klynx.mh: Likewise.
+ * config/m68k/nbsd.mt: Likewise.
+ * config/m68k/sun3os4.mh: Likewise.
+ * config/mips/vr5000.mt: Likewise.
+ * config/ns32k/nbsd.mt: Likewise.
+ * config/pa/hppabsd.mh: Likewise.
+ * config/pa/hppaosf.mh: Likewise.
+ * config/powerpc/nbsd.mt: Likewise.
+ * config/rs6000/rs6000lynx.mh: Likewise.
+ * config/s390/s390.mt: Likewise.
+ * config/s390/s390x.mt: Likewise.
+ * config/sparc/sparclynx.mh: Likewise.
+ * config/sparc/sun4os4.mh: Likewise.
+ * config/i386/x86-64linux.mt: Likewise.
+ * config/sparc/linux.mh: Likewise.
+
+2002-02-14 Daniel Jacobowitz <drow@mvista.com>
+
+ * configure.tgt: Configure gdbserver only for known working
+ targets. Set ${build_gdbserver} instead of modifying ${configdirs}.
+ * configure.in: Check ${build_gdbserver}. Put gdbserver/ into
+ SUBDIRS if it is configured. Update comment for ${nativefile}.
+ * configure: Regenerated.
+
+2002-02-13 Michael Snyder <msnyder@redhat.com>
+
+ * config/i386/i386v42mp.mh: Add gcore.o to NATDEPFILES.
+
+ * gcore.c (gcore_command): Use gcore_default_target instead of NULL.
+ (default_gcore_mach): Just return 0, work around a problem in bfd.
+ (default_gcore_target): OK to return NULL if exec_bfd is null.
+ (make_mem_sec): Use a cast, avoid a warning.
+
+ * procfs.c (find_memory_regions_callback): Use a cast instead of
+ calling host_pointer_to_address (which complains if
+ sizeof (host pointer) != sizeof (target pointer)).
+ (procfs_make_note_section): Avoid overflow in psargs string.
+
+ * procfs.c (procfs_make_note_section): Make the default
+ implementation return an error.
+
+2002-02-13 Rodney Brown <rbrown64@csc.com.au>
+
+ * procfs.c (procfs_make_note_section): Provide a default definition
+ (for alpha-dec-osf4.0f). Fix typos.
+
+2002-02-13 Elena Zannoni <ezannoni@redhat.com>
+
+ * linux-proc.c: Add include of regcache.h.
+ * Makefile.in (linux-proc.o): Add dependency on regcache.h.
+
+2002-02-13 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-01-18 Greg McGary <greg@mcgary.org>:
+ * memattr.c (create_mem_region): Disallow useless empty region.
+ Regions are half-open intervals, so allow [A..B) [B..C) as
+ non-overlapping.
+
+2002-02-13 Michael Chastain <mec@shout.net>
+
+ * defs.h: Kill CONST_PTR.
+ * c-lang.h (c_builtin_types): Change CONST_PTR to simple "const".
+ * c-lang.c (c_builtin_types): Likewise.
+ * ch-lang.c (ch_builtin_types): Likewise.
+ * f-lang.c (f_builtin_types): Likewise.
+ * language.c (unknown_builtin_types): Likewise.
+ * m2-lang.c (m2_builtin_types): Likewise.
+ * p-lang.c (pascal_builtin_types): Likewise.
+ * scm-lang.c (c_builtin_types): Likewise.
+
+2002-02-13 Keith Seitz <keiths@redhat.com>
+
+ * arm-tdep.h (arm_get_next_pc): Add declaration.
+
+2002-02-13 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_use_struct_convention): Make static. Move to be
+ with other related struct-returning functions.
+ (arm_extract_struct_value_address): New function.
+ (arm_gdbarch_init): Initialize the above in multi-arch vector. Also
+ initialize float_format, double_format and long_double_format as
+ appropriate to the endianness of the target.
+ * config/arm/tm-arm.h (TARGET_DOUBLE_FORMAT): Delete.
+ (arm_use_struct_convention): Delete declaration.
+ (USE_STRUCT_CONVENTION, EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
+
+2002-02-13 Keith Seitz <keiths@redhat.com>
+
+ * defs.h (core_addr_to_string_nz): New function.
+
+2002-02-13 Mark Kettenis <kettenis@gnu.org>
+
+ Apply missing bits of 2002-01-15 patch.
+ * i386v4-nat.c (supply_fpregset): Use i387_supply_fsave.
+ (fill_fpregset): Use i387_fill_fsave.
+
+2002-02-12 Keith Seitz <keiths@redhat.com>
+
+ * utils.c (core_addr_to_string): Use phex instead of phex_nz.
+ (core_addr_to_string_nz): New function.
+
+2002-02-11 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-linux-nat.c: Really include arm-tdep.h.
+ * config/arm/tm-linux.h (struct type, struct value): Declare.
+
+2002-02-11 Michael Snyder <msnyder@redhat.com>
+
+ * procfs.c: Include elf-bfd.h (for elfcore_write functions).
+ (gcore section): Ifdef for Solaris and Unixware only.
+ (procfs_do_thread_registers): Unixware needs one lwpstatus
+ per thread (not one prstatus or pstatus).
+ (procfs_make_note_section): Iterate only over kernel threads (lwps),
+ not over all gdb threads. For unixware, call elfcore_write_pstatus
+ once before iterating over threads.
+
+2002-02-11 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.h: New file.
+ * arm-tdep.c: Include arm-tdep.h.
+ (arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
+ (arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
+ (arm_print_float_info, arm_register_type, convert_to_extended)
+ (arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
+ (arm_extract_return_value, arm_register_name): Make static.
+ (arm_software_single_step): Similarly. Fix types in declaration.
+ (arm_register_byte, arm_register_raw_size, arm_register_virtual_size)
+ (arm_store_return_value, arm_store_struct_return): New functions.
+ (arm_gdbarch_init): Register the above functions. Also register
+ call_dummy_start_offset, sizeof_call_dummy_words,
+ function_start_offset, inner_than, decr_pc_after_break, fp_regnum,
+ sp_regnum, pc_regnum, register_bytes, num_regs, max_register_raw_size,
+ max_register_virtual_size, register_size. Set up
+ prologue_cache.saved_regs here, rather than ...
+ (_initialize_arm_tdep): ... here.
+ * config/arm/tm-arm.h (struct type, struct value): Delete forward
+ declarations.
+ (arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
+ (arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
+ (arm_print_float_info, arm_register_type, convert_to_extended)
+ (arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
+ (arm_extract_return_value, arm_register_name): Delete declarations.
+ (SMASH_TEXT_ADDRESS, ADDR_BITS_REMOVE, FUNCTION_START_OFFSET)
+ (SKIP_PROLOGUE, SAVED_PC_AFTER_CALL, INNER_THAN, BREAKPOINT_FROM_PC)
+ (DECR_PC_AFTER_BREAK, PRINT_FLOAT_INFO, REGISTER_SIZE, NUM_REGS)
+ (REGISTER_NAME, REGISTER_BYTES, REGISTER_BYTE, REGISTER_RAW_SIZE)
+ (REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
+ (MAX_REGISTER_VIRTUAL_SIZE, REGISTER_VIRTUAL_TYPE, STORE_STRUCT_RETURN)
+ (EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE, CALL_DUMMY_WORDS)
+ (SIZEOF_CALL_DUMMY_WORDS, CALL_DUMMY_START_OFFSET, FIX_CALL_DUMMY)
+ (SOFTWARE_SINGLE_STEP_P, SOFTWARE_SINGLE_STEP)
+ (ELF_MAKE_MSYMBOL_SPECIAL, COFF_MAKE_MSYMBOL_SPECIAL) Delete.
+ (arm_pc_is_thumb, arm_pc_is_thumb_dummy, thumb_get_next_pc)
+ (arm_get_next_pc): No-longer static -- these are needed by the RDI
+ interface.
+ * arm-linux-nat.c arm-linux-tdep.c armnbsd-nat.c: Include arm-tdep.h.
+ * remote-rdi.c remote-rdp.c: Likewise.
+ * Makefile.in (arm-linux-nat.o, arm-linux-tdep.o arm-tdep.o)
+ (armnbsd-nat.o, remote-rdi.o, remote_rdp.o): Update dependencies.
+ * config/arm/tm-nbsd.h (SOFTWARE_SINGLE_STEP_P): Delete bogus
+ definition.
+
+ * arm-tdep.h (ARM_A1_REGNUM, ARM_A4_REGNUM, ARM_AP_REGNUM)
+ (ARM_SP_REGNUM, ARM_LR_REGNUM, ARM_PC_REGNUM, ARM_F0_REGNUM)
+ (ARM_F3_REGNUM, ARM_F7_REGNUM, ARM_FPS_REGNUM, ARM_PS_REGNUM): Renamed
+ from non-ARM_ prefixed definitions.
+ * arm-tdep.c armnbsd-nat.c arm-linux-nat.c arm-linux-tdep.c: Update
+ all uses of above.
+ * remote-rdi.c remote-rdp.c: Likewise.
+ * arm-linux-nat.c (ARM_CPSR_REGNUM): Renamed from CPSR_REGNUM.
+
+2002-02-11 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_frameless_function_invocation)
+ (arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
+ (arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
+ (arm_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
+ (arm_pop_frame, arm_get_next_pc): Make static.
+ (arm_gdbarch_init): Register above in gdbarch structure.
+ (arm_read_fp): Renamed from arm_target_read_fp.
+ (arm_pc_is_thumb, arm_pc_is_thumb_dummy): Make static.
+ * config/arm/tm-arm.h (arm_frameless_function_invocation)
+ (arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
+ (arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
+ (arm_target_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
+ (arm_pop_frame, arm_get_next_pc, arm_pc_is_thumb)
+ (arm_pc_is_thumb_dummy): Delete declarations.
+ (INIT_EXTRA_FRAME_INFO, TARGET_READ_FP, FRAME_CHAIN)
+ (FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC, FRAME_ARGS_ADDRESS)
+ (FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, FRAME_ARGS_SKIP)
+ (FRAME_INIT_SAVED_REGS, PUSH_DUMMY_FRAME, POP_FRAME): Delete.
+
+2002-02-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.c (compare_search_syms): New function.
+ (sort_search_symbols): New function.
+ (search_symbols): Sort symbols after searching rather than
+ before.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Linux -> GNU/Linux.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh: For for level one methods, disallow a definition
+ when partially multi-arched. Add comments explaining rationale.
+ * gdbarch.h: Re-generate.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (EXTRA_STACK_ALIGNMENT_NEEDED): Don't require when
+ multi-arch partial.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh: Map LEVEL onto a symbolic GT_LEVEL. Exit on bad
+ field. Use diff -u.
+ * gdbarch.c: Re-generate.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mips/tm-mips.h (CALL_DUMMY_LOCATION): Delete.
+ * gdbarch.sh (PUSH_RETURN_ADDRESS): Don't require when multi-arch
+ partial.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (REGISTER_CONVERTIBLE): Don't require when
+ multi-arch partial.
+ (PUSH_ARGUMENTS): Switch to using predefault.
+ * gdbarch.c: Regenerate.
+
+2002-02-10 Andrew Cagney <ac131313@redhat.com>
+
+ * valops.c (PUSH_ARGUMENTS): Delete definition.
+ * gdbarch.sh (PUSH_ARGUMENTS): Don't require when multi-arch
+ partial. Default to default_push_arguments.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+2002-02-09 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (throw_exception): Rename return_to_top_level. Update
+ comments.
+ * utils.c (error_stream, internal_verror, quit): Ditto.
+ * top.c (throw_exception, catcher): Ditto.
+ * sparclet-rom.c (sparclet_load): Ditto.
+ * remote.c (interrupt_query, minitelnet): Ditto.
+ * remote-sds.c (interrupt_query): Ditto.
+ * remote-mips.c (mips_error, mips_kill): Ditto.
+ * ocd.c (interrupt_query): Ditto.
+ * monitor.c (monitor_interrupt_query): Ditto.
+ * m3-nat.c (suspend_all_threads, thread_resume_command): Ditto.
+ * target.h: Update comment.
+
+ * m3-nat.c, ocd.c, sparclet-rom.c: Update copyright.
+
+2002-02-09 Andrew Cagney <ac131313@redhat.com>
+
+ * gdbarch.sh (TARGET_LONG_DOUBLE_FORMAT): Default to
+ default_double_format.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * findvar.c (floatformat_unknown): Delete variable definition.
+ * doublest.h (floatformat_unknown): Delete variable declaration.
+
+2002-02-09 Jim Blandy <jimb@redhat.com>
+
+ * stabsread.c (read_type): Add code to parse Sun's syntax for
+ prototyped function types.
+
+2002-02-09 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (SUBDIR_CLI_INITS): Set to SUBDIR_CLI_SRCS.
+ (SUBDIR_MI_INITS): Set to SUBDIR_MI_SRCS.
+
+2002-02-09 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * xcoffsolib.c (_initialize_xcoffsolib): Renamed from
+ _initialize_solib. Fixes name clash with solib.c:_initialize_solib,
+ now _initialize_xcoffsolib gets called again and overrides the
+ commands from solib.c in a native configuration.
+
+2002-02-09 Mark Kettenis <kettenis@gnu.org>
+
+ * doublest.c (store_typed_floating): Don't try to return a value.
+ Fixes PR gdb/290.
+
+2002-02-08 Jim Blandy <jimb@redhat.com>
+
+ * c-typeprint.c (c_type_print_varspec_suffix): If a function type
+ is prototyped and has no arguments, print its argument list as
+ `(void)'.
+
+2002-02-08 Chris Demetriou <cgd@broadcom.com>
+
+ * MAINTAINERS (write-after-approval): Add myself.
+ (paper-trail): I've escaped!
+
+2002-02-08 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (cygwin_pid_to_str): Revert 2002-02-08 change xasprintf
+ changes.
+ (_initialize_check_for_gdb_ini): Ditto.
+
+2002-02-08 Martin M. Hunt <hunt@redhat.com>
+
+ * win32-nat.c (cygwin_pid_to_str): Fix typo.
+ xaprintf -> xasprintf.
+
+2002-02-08 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c: Remove use of printf and sprintf functions.
+
+2002-02-08 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_frame_chain_valid): Make static.
+ (arm_push_arguments): Likewise.
+ (arm_gdbarch_init): New function.
+ (_initialize_arm_tdep): Call it.
+ * config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
+ (TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
+ (FRAME_CHAIN_VALID): Delete.
+ (arm_frame_chain_valid): Delete declaration.
+ (PUSH_ARGUMENTS): Delete.
+ (arm_push_arguments): Delete declaration.
+ (CALL_DUMMY_P): Delete.
+
+2002-02-08 Andrew Cagney <ac131313@redhat.com>
+ Corinna Vinschen <vinschen@redhat.com>
+
+ * gdbtypes.c (build_gdbtypes): Disable setting a specific float format
+ on builtin float types.
+
+2002-02-08 Daniel Jacobowitz <drow@mvista.com>
+
+ * utils.c: Include <curses.h> before "bfd.h".
+ * tui/tui-hooks.c: Likewise.
+ * tui/tui.c: Likewise.
+ * tui/tuiCommand.c: Likewise.
+ * tui/tuiData.c: Likewise.
+ * tui/tuiDataWin.c: Likewise.
+ * tui/tuiDisassem.c: Likewise.
+ * tui/tuiGeneralWin.c: Likewise.
+ * tui/tuiIO.c: Likewise.
+ * tui/tuiLayout.c: Likewise.
+ * tui/tuiRegs.c: Likewise.
+ * tui/tuiSource.c: Likewise.
+ * tui/tuiSourceWin.c: Likewise.
+ * tui/tuiStack.c: Likewise.
+ * tui/tuiWin.c: Likewise.
+
+2002-02-07 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_nofp_frame_init_saved_regs): Extend where[] array
+ to include space for pseudoregs as well. Update loops accordingly.
+ (sh_fp_frame_init_saved_regs): Ditto.
+ (sh_init_extra_frame_info, sh_pop_frame): Split long lines.
+
+2002-02-07 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Andreas Schwab is GNU/Linux m68k maintainer.
+ Add Richard Earnshaw to Arm maintainers.
+
+2002-02-07 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (warning_begin): Delete declaration.
+
+ * config/powerpc/tm-ppcle-eabi.h (TARGET_BYTE_ORDER_DEFAULT):
+ Delete macro.
+
+2002-02-07 Michael Snyder <msnyder@redhat.com>
+
+ * solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
+ Logic bug, remove misplaced else.
+
+2002-02-07 Klee Dienes <klee@apple.com>
+
+ * fork-inferior.c (fork_inferior): Add '!' to the list of
+ characters that need to be quoted when building a string for the
+ shell. Quote '!' specifically with a backslash, since CSH chokes
+ when trying to evaluate "str!str".
+
+2002-02-06 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * rdi-share/host.h: Only provide a typedef for bool if it is not
+ defined.
+
+2002-02-04 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.h (enum bptype): Add new overlay event bp type.
+ (enable_overlay_breakpoints, disable_overlay_breakpoints): Export.
+
+ * breakpoint.c (create_internal_breakpoint): New function.
+ (internal_breakpoint_number): Moved into create_internal_breakpoint.
+ (create_longjmp_breakpoint): Use create_internal_breakpoint.
+ (create_thread_event_breakpoint): Ditto.
+ (create_solib_event_breakpoint): Ditto.
+ (create_overlay_event_breakpoint): New function.
+ (enable_overlay_breakpoints, disable_overlay_breakpoints): New funcs.
+ (update_breakpoints_after_exec): Delete and re-initialize
+ overlay event breakpoints after an exec. Add FIXME comment
+ about longjmp breakpoint.
+ (print_it_typical): Ignore overlay event breakpoints.
+ (print_one_breakpoint): Ditto.
+ (mention): Ditto.
+ (bpstat_what): Do not stop for overlay event breakpoints.
+ (delete_breakpoint): Don't delete overlay event breakpoints.
+ (breakpoint_re_set_one): Delete the overlay event breakpoint.
+ (breakpoint_re_set): Re-create overlay event breakpoint.
+
+ * symfile.c (overlay_auto_command): Enable overlay breakpoints.
+ (overlay_manual_command): Disable overlay breakpoints.
+ (overlay_off_command): Disable overlay breakpoints.
+
+2002-02-06 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c: Include elf-bfd.h and coff/internal.h.
+ (MSYMBOL_SET_SPECIAL, MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Move defines
+ to here from config/tm-arm.h.
+ (coff_sym_is_thumb): Make static.
+ (arm_elf_make_msymbol_special): New function.
+ (arm_coff_make_msymbol_special): New function.
+ * config/arm/tm-arm.h (MSYMBOL_SET_SPECIAL): Delete definition.
+ (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Likewise.
+ (coff_sym_is_thumb): Delete declaration.
+ (arm_elf_make_msymbol_special): Declare.
+ (arm_coff_make_msymbol_special): Declare.
+ (ELF_MAKE_MSYMBOL_SPECIAL): Call arm_elf_make_msymbol_special.
+ (COFF_MAKE_MSYMBOL_SPECIAL): Call arm_coff_make_msymbol_special.
+
+2002-02-06 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_software_single_step): ANSIfy function declaration.
+
+2002-02-06 Richard Earnshaw <rearnsha@arm.com>
+
+ * gdbarch.sh (PRINT_FLOAT_INFO): Add rule.
+ * gdbarch.c gdbarch.h: Regenerate.
+ * arch-utils.c (default_print_float_info): New function.
+ * arch-utils.h (default_print_float_info): Prototype it.
+ * infcmd.c (float_info): Call PRINT_FLOAT_INFO.
+ * doc/gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
+ (PRINT_FLOAT_INFO): Document it.
+
+ * arm-tdep.c (arm_print_float_info): Renamed from arm_float_info.
+ * config/arm/tm-arm.h (FLOAT_INFO): Delete.
+ (PRINT_FLOAT_INFO): Define.
+
+2002-02-06 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c (_initialize_check_for_gdb_ini):
+ Add typecast to sprintf argument to suppress a warning.
+
+2002-02-05 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c (last_sig): Changed type of variable to target_signal,
+ to allow easier handling of pass state.
+ (DEBUG_EXCEPTION_SIMPLE): New macro, used in handle_exception,
+ that gives exception name and address.
+ (handle_exception): Use DEBUG_EXCEPTION_SIMPLE macro
+ and set last_sig value to ourstatus->value.sig. Some missing
+ exceptions added.
+ (child_continue): Correctly report continue_status.
+ (get_child_debug_event,do_initial_child_stuff): Set last_sig to
+ TARGET_SIGNAL_0 (new default value).
+ (child_resume): consider sig argument passed to decide if
+ the exception should be passed to debuggee or not.
+
+2002-02-05 Michael Snyder <msnyder@redhat.com>
+
+ * regcache.c (fetch_register): Call target_fetch_register
+ only if we don't call FETCH_PSEUDO_REGISTER.
+ (store_register): Call target_store_register only if we
+ don't call STORE_PSEUDO_REGISTER.
+
+2002-02-05 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdbarch.sh: Add definitions for COFF_MAKEMSYMBOL_SPECIAL and
+ ELF_MAKE_MSYMBOL_SPECIAL.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * arch-utils.c (default_make_msymbol_special): New function.
+ * arch-utils.h (default_make_msymbol_special): Export.
+ * elfread.c (elf_symtab_read): Compile use of
+ ELF_MAKE_MSYMBOL_SPECIAL unconditionally because it is now
+ multiarched.
+ * coffread.c (coff_symtab_read): Ditto, for
+ COFF_MAKE_MSYMBOL_SPECIAL.
+
+2002-02-05 Jim Blandy <jimb@redhat.com>
+
+ * solib-svr4.c (svr4_truncate_ptr): New function.
+ (svr4_relocate_section_addresses): Do the address arithmetic with
+ the appropriate truncation for target addresses, even when
+ CORE_ADDR is larger than a target address.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c (mywait): Cast second argument of waitpid
+ to (int *).
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c (kill_inferior): Remove commented out
+ code.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * c-valprint.c (c_val_print): Handle TYPE_CODE_COMPLEX.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c: Remove unused include files.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c: Define PTRACE_ARG3_TYPE.
+ (read_inferior_memory): Use it.
+ (write_inferior_memory): Likewise.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c (create_inferior): Call strerror instead of
+ grubbing through sys_errlist.
+
+2002-02-05 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/linux-low.c: New file, copied exactly from low-linux.c.
+
+2002-02-04 Pierre Muller <muller@ics.u-strasbg.fr>
+ * win32-nat.c (handle_exception): Handle Ctrl-Break exception.
+
+2002-02-04 Andrew Cagney <ac131313@redhat.com>
+
+ * cli/cli-decode.c (do_cfunc, set_cmd_cfunc): New functions.
+ (do_sfunc, set_cmd_sfunc): New functions.
+
+ * command.h (struct cmd_list_element): Add field func.
+ * cli/cli-decode.h (struct cmd_list_element): Ditto.
+ * command.h (set_cmd_sfunc, set_cmd_cfunc): Declare.
+ * cli/cli-decode.h: Ditto.
+
+ * cli/cli-decode.c (help_cmd): Test for func not cfunc/sfunc.
+ (help_all, help_cmd_list): Ditto.
+ (find_cmd, complete_on_cmdlist): Ditto.
+ * top.c (execute_command): Ditto.
+
+ * cli/cli-setshow.c (do_setshow_command): Call func instead of
+ function.sfunc.
+
+ * infcmd.c (notice_args_read): Fix function signature.
+
+ * cli/cli-cmds.c (init_cli_cmds): Use set_cmd_sfunc.
+ * cli/cli-decode.c (add_set_cmd): Ditto.
+ * utils.c (initialize_utils): Ditto.
+ * maint.c (_initialize_maint_cmds): Ditto.
+ * infrun.c (_initialize_infrun): Ditto.
+ * demangle.c (_initialize_demangler): Ditto.
+ * remote.c (add_packet_config_cmd): Ditto.
+ * mips-tdep.c (_initialize_mips_tdep): Ditto.
+ * cris-tdep.c (_initialize_cris_tdep): Ditto.
+ * proc-api.c (_initialize_proc_api): Ditto.
+ * kod.c (_initialize_kod): Ditto.
+ * valprint.c (_initialize_valprint): Ditto.
+ * top.c (init_main): Ditto.
+ * infcmd.c (_initialize_infcmd): Ditto.
+ * corefile.c (_initialize_core): Ditto.
+ * arm-tdep.c (_initialize_arm_tdep): Ditto.
+ * arch-utils.c (initialize_current_architecture): Ditto.
+ (_initialize_gdbarch_utils): Ditto.
+ * alpha-tdep.c (_initialize_alpha_tdep): Ditto.
+
+ * cli/cli-decode.c (add_cmd): Use set_cmd_cfunc.
+ * wince.c (_initialize_inftarg): Ditto.
+ * symfile.c (_initialize_symfile): Ditto.
+ * mips-tdep.c (_initialize_mips_tdep): Ditto.
+ * language.c (_initialize_language): Ditto.
+ * arc-tdep.c (_initialize_arc_tdep): Ditto.
+
+2002-02-04 Michael Snyder <msnyder@redhat.com>
+
+ * memattr.c (_initialize_mem): Elaborate the help for 'mem' command.
+
+2002-02-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS.
+ Add rules for building the register data files.
+
+2002-02-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * regformats/regdat.sh: Add braces to the definition of
+ expedite_regs_${arch}.
+
+2002-02-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * regformats/regdef.h (struct reg): Add comment describing the
+ requirements for offset and size fields.
+
+2002-02-04 Andreas Schwab <schwab@suse.de>
+
+ * config/ia64/linux.mh: Don't set NAT_CLIBS and REGEX.
+ * config/ia64/linux.mt: Don't set GDBSERVER_LIBS.
+
+2002-02-04 Richard Earnshaw <rearnsha@arm.com>
+
+ * gdbarch.sh (copyright): Update years in generated header.
+ (SMASH_TEXT_ADDRESS): Add rule.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * coffread.c: Multi-arch uses of SMASH_TEXT_ADDRESS.
+ * dbxread.c: Likewise.
+ * dwarfread.c: Likewise.
+ * elfread.c: Likewise.
+ * somread.c: Likewise.
+
+ * arm-tdep.c (arm_smash_text_address): New function.
+ * config/arm/tm-arm.h (SMASH_TEXT_ADDRESS): Define in terms of above.
+
+2002-02-04 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ Add support for hardware watchpoints on win32 native.
+ * win32-nat.c (CONTEXT_DEBUG_DR macro): Add use of
+ CONTEXT_DEBUG_REGISTERS.
+ (dr variable): New variable. Static array containing a local copy
+ of debug registers.
+ (debug_registers_changed): New variable. Reflects when debug registers
+ are changed and need to be written to inferior.
+ (debug_registers_used): New variable. Reflects when any debug register
+ was set, used when new threads are created.
+ (cygwin_set_dr, cygwin_set_dr7, cygwin_get_dr6): New functions used by
+ i386-nat code.
+ (thread_rec): Set dr array if id is the thread of current_event .
+ (child_continue, child_resume): Change the debug registers for all
+ threads if debug_registers_changed.
+ (child_add_thread): Change the debug registers if debug_registers_used.
+ * config/i386/cygwin.mh: Add use of i386-nat.o file.
+ Link nm.h to new nm-cygwin.h file.
+ + config/i386/nm-cygwin.h: New file. Contains the macros used for use
+ of hardware registers.
+
+2002-02-03 Andrew Cagney <ac131313@redhat.com>
+
+ * valprint.c (print_floating): Allow non TYPE_CODE_FLT types.
+ Restore behavour broken by 2002-01-20 Andrew Cagney
+ <ac131313@redhat.com> IEEE_FLOAT removal.
+
+2002-02-03 Daniel Jacobowitz <drow@mvista.com>
+
+ * c-valprint.c (c_val_print): Pass a proper valaddr to
+ cp_print_class_method.
+ * valops.c (search_struct_method): If there is only one method
+ and args is NULL, return that method.
+
+2002-02-03 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.c (init_simd_type): Use TYPE_TAG_NAME instead of
+ accessing tag_name directly.
+
+2002-02-03 Daniel Jacobowitz <drow@mvista.com>
+
+ * ax-gdb.c (find_field): Use TYPE_TAG_NAME instead
+ of accessing tag_name directly.
+
+2002-02-03 Daniel Jacobowitz <drow@mvista.com>
+
+ PR gdb/280
+ * gdbtypes.c (replace_type): New function.
+ * gdbtypes.h (replace_type): Add prototype.
+ * stabsread.c (read_type): Use replace_type.
+
+2002-02-03 Richard Earnshaw <rearnsha@arm.com>
+
+ * Makefile.in (memattr.o): Add missing dependencies rule.
+
+2002-02-03 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * breakpoint.c (break_at_finish_command): Really export.
+ (break_at_finish_at_depth_command): Ditto.
+ (tbreak_at_finish_command): Ditto.
+ * hppa-tdep.c: Include completer.h.
+ * Makefile.in (hppa-tdep.o): Add dependency on $(completer_h).
+ (COMMON_OBS): Remove duplicate ui-file.o, frame.o, doublest.o.
+
+2002-02-01 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (do_write): New function.
+ (error_stream): Rewrite combining the code from error_begin and
+ verror.
+ (verror): Rewrite using error_stream.
+ (error_begin): Delete function.
+
+2002-02-01 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (error_begin): Make static.
+ * defs.h (error_begin): Delete declaration.
+
+ * linespec.c (cplusplus_error): Replace cplusplus_hint.
+ (decode_line_1): Use cplusplus_error instead of error_begin,
+ cplusplus_hint and return_to_top_level.
+ * coffread.c (coff_symfile_read): Use error instead of error_begin
+ and return_to_top_level.
+ * infrun.c (default_skip_permanent_breakpoint): Ditto.
+
+2002-02-01 Andrew Cagney <ac131313@redhat.com>
+
+ * language.h (type_error, range_error): Make string parameter
+ constant.
+ * language.c (warning_pre_print): Delete extern declaration.
+ * dwarfread.c (warning_pre_print): Ditto.
+ * language.c (type_error, range_error): Rewrite to use verror and
+ vwarning instead of warning_begin.
+
+2002-02-01 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (breakpoint_re_set): Delete ancient #if 0 code.
+ (set_ignore_count): Move misplaced comment back where it belongs.
+
+2002-02-01 Andrew Cagney <ac131313@redhat.com>
+
+ * command.h (NO_FUNCTION): Delete macro.
+ * cli/cli-decode.h (NO_FUNCTION): Ditto.
+ * top.c (execute_command): Replace NO_FUNCTION with NULL.
+ * tracepoint.c (_initialize_tracepoint): Ditto.
+ * cli/cli-decode.c (add_set_cmd): Ditto.
+ * cli/cli-cmds.c (init_cli_cmds): Ditto.
+
+2002-02-01 Daniel Jacobowitz <drow@mvista.com>
+
+ * gnu-v3-abi.c (gnuv3_virtual_fn_field): Update comments.
+ Update ``this'' pointer when calling virtual functions.
+
+2002-02-01 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (create_temp_exception_breakpoint): Delete.
+ * hppa-tdep.c: Deprecate xbreak, txbreak and bx commands.
+
+2002-02-01 Daniel Jacobowitz <drow@mvista.com>
+
+ * regformats/reg-arm.dat: New file.
+ * regformats/reg-i386.dat: New file.
+ * regformats/reg-ia64.dat: New file.
+ * regformats/reg-m68k.dat: New file.
+ * regformats/reg-mips.dat: New file.
+ * regformats/reg-ppc.dat: New file.
+ * regformats/reg-sh.dat: New file.
+ * regformats/regdef.h: New file.
+ * regformats/regdat.sh: New file.
+
+2002-02-01 Richard Earnshaw <reanrsha@arm.com>
+
+ * arm-tdep.c (arm_frameless_function_invocation): Add some comments.
+ (arm_frame_args_address, arm_frame_locals_address): New functions.
+ (arm_frame_num_args): New function.
+ * config/tm-arm.h (FRAME_ARGS_ADDRESS): Call arm_frame_args_address.
+ (FRAME_LOCALS_ADDRESS): Call arm_frame_locals_address.
+ (FRMA_NUM_ARGS): Call arm_frame_num_args.
+
+2002-01-31 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (break_at_finish_command): Export.
+ (break_at_finish_at_depth_command): Export.
+ (tbreak_at_finish_command): Export.
+ (_initialize_breakpoint): Delete "xbreak" and "txbreak" commands.
+ * hppa-tdep.c (_initialize_hppa_tdep): Add "xbreak" and
+ "txbreak" commands, which are HPPA specific.
+
+ * printcmd.c (disassemble_command): Remove an ancient
+ artifact of an old merge.
+
+ * symfile.h (enum overlay_debugging_state):
+ Define enum constant values for overlay mode.
+ * symfile.c (overlay_debugging): Use enums instead of literals.
+ (overlay_is_mapped, overlay_auto_command,
+ overlay_manual_command): Ditto.
+
+ * breakpoint.c (insert_breakpoints, remove_breakpoint,
+ breakpoint_here_p, breakpoint_inserted_here_p,
+ breakpoint_thread_match, bpstat_stop_status,
+ describe_other_breakpoints, check_duplicates, clear_command):
+ Coding standard fixes.
+
+ * target.c (target_xfer_memory): Add spaces, coding standard.
+ (do_xfer_memory): Add missing line to trust-readonly
+ code: check bfd SEC_READONLY flag for section.
+
+2002-01-31 Andrew Cagney <ac131313@redhat.com>
+
+ * PROBLEMS: Fix typo, 5.1->5.1.1.
+
+2002-01-30 Daniel Jacobowitz <drow@mvista.com>
+
+ * symtab.c (find_pc_sect_psymtab): Do not search psymtabs for
+ data symbols, since we search based on textlow and texthigh.
+ (find_pc_sect_symtab): Likewise.
+
+2002-01-30 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (vwarning): Declare.
+ * utils.c (vwarning): New function.
+ (warning): Call vwarning.
+ (warning_begin): Delete function.
+
+ * rs6000-nat.c (vmap_ldinfo): Use the function warning to print
+ the warning message.
+ * d10v-tdep.c (d10v_address_to_pointer) [0]: Delete call to
+ warning_begin.
+
+2002-01-30 Michael Snyder <msnyder@redhat.com>
+
+ * NEWS: Mention "set trust-readonly-sections" command.
+ Mention generate-core-file command.
+
+2002-01-15 Michael Snyder <msnyder@redhat.com>
+
+ * target.c: New command, "set trust-readonly-sections on".
+ (do_xfer_memory): Honor the suggestion to trust readonly sections
+ by reading them from the object file instead of from the target.
+ (initialize_targets): Register command "set trust-readonly-sections".
+
+2002-01-29 Andrew Cagney <ac131313@redhat.com>
+
+ * parse.c (target_map_name_to_register): Simplify, search regs and
+ pseudo-regs using a single loop.
+
+2002-01-30 Andrew Cagney <ac131313@redhat.com>
+
+ * PROBLEMS: Note that the i386 fix was missing from 5.1.1.
+
+2002-01-15 Rodney Brown <rbrown64@csc.com.au>
+
+ * config/i386/tm-i386v4.h: Define HAVE_I387_REGS.
+ * config/i386/i386v42mp.mh: Add i387-nat.o .
+ * i386v4-nat.c: Include i387-nat.h.
+ (supply_fpregset): Use i387_supply_fsave.
+ (fill_fpregset): Use i387_fill_fsave.
+
+2002-01-30 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_call_dummy_words): Define.
+ * arm-linux-tdep.c (arm_linux_call_dummy_words): Define.
+ * config/arm/tm-arm.h (CALL_DUMMY_P): Define.
+ (CALL_DUMMY_WORDS): Define.
+ (arm_call_dummy_words): Declare.
+ * config/arm/tm-linux.h (CALL_DUMMY_WORDS): Define.
+ (arm_linux_call_dummy_words): Declare.
+
+2002-01-30 Andreas Schwab <schwab@suse.de>
+
+ * m68klinux-nat.c: Fix last change to use regcache_collect
+ instead of referencing registers[] directly.
+
+2002-01-29 Andrew Cagney <ac131313@redhat.com>
+
+ * parse.c (target_map_name_to_register): Delete code wrapped in
+ #ifdef REGISTER_NAME_ALIAS_HOOK.
+
+2002-01-28 Michael Snyder <msnyder@redhat.com>
+
+ * regcache.c (legacy_read_register_gen): Need to be able to
+ read pseudo-register as well as real register.
+ (legacy_write_register_gen): Ditto.
+
+2002-01-28 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mips/tm-wince.h (TARGET_BYTE_ORDER): Delete.
+ * config/sparc/tm-sparc.h (TARGET_BYTE_ORDER): Delete.
+ * config/ns32k/tm-umax.h (TARGET_BYTE_ORDER): Delete.
+ * config/ia64/tm-ia64.h (TARGET_BYTE_ORDER): Delete.
+ * config/m32r/tm-m32r.h (TARGET_BYTE_ORDER): Delete.
+ * config/m68k/tm-m68k.h (TARGET_BYTE_ORDER): Delete.
+ * config/m88k/tm-m88k.h (TARGET_BYTE_ORDER): Delete.
+ * config/mn10200/tm-mn10200.h (TARGET_BYTE_ORDER): Delete.
+ * config/pa/tm-hppa.h (TARGET_BYTE_ORDER): Delete.
+ * config/sh/tm-wince.h (TARGET_BYTE_ORDER): Delete.
+ * config/v850/tm-v850.h (TARGET_BYTE_ORDER): Delete.
+ * config/vax/tm-vax.h (TARGET_BYTE_ORDER): Delete.
+ * config/z8k/tm-z8k.h (TARGET_BYTE_ORDER): Delete.
+ * config/i960/tm-i960.h (TARGET_BYTE_ORDER): Delete.
+ * config/i386/tm-i386.h (TARGET_BYTE_ORDER): Delete.
+ * config/h8500/tm-h8500.h (TARGET_BYTE_ORDER): Delete.
+ * config/h8300/tm-h8300.h (TARGET_BYTE_ORDER): Delete.
+ * config/fr30/tm-fr30.h (TARGET_BYTE_ORDER): Delete.
+ * config/d30v/tm-d30v.h (TARGET_BYTE_ORDER): Delete.
+ * config/alpha/tm-alpha.h (TARGET_BYTE_ORDER): Delete.
+
+2002-01-28 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.c (TARGET_BYTE_ORDER_DEFAULT): Delete macro.
+ (target_byte_order): Initialize to BFD_ENDIAN_BIG.
+ (initialize_current_architecture): Update target_byte_order using
+ information from BFD.
+ * config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_DEFAULT):
+ * config/arm/tm-arm.h (TARGET_BYTE_ORDER_DEFAULT): Delete.
+
+2002-01-28 Andrew Cagney <ac131313@redhat.com>
+
+ * config/vax/tm-vax.h (INVALID_FLOAT): Move macro from here...
+ * vax-tdep.c (INVALID_FLOAT): To here. Document why it is broken.
+
+ * rs6000-tdep.c (rs6000_do_registers_info): Delete code wrapped in
+ #ifdef INVALID_FLOAT.
+ * infcmd.c (do_registers_info): Ditto.
+ * values.c (unpack_double): Ditto. Add comment.
+
+ * config/ns32k/tm-umax.h (INVALID_FLOAT): Delete macro that was
+ already commented out.
+
+2002-01-26 Andreas Schwab <schwab@suse.de>
+
+ * config/m68k/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
+ * m68klinux-nat.c: Update ptrace interface for fetching/storing
+ registers and add support for PTRACE_GETREGS.
+
+2002-01-24 Andrew Cagney <ac131313@redhat.com>
+
+ GDB 5.1.1 released from 5.1 branch.
+ * NEWS: Add 5.1.1 news.
+ * README: Sync with 5.1 branch.
+
+2002-01-23 Fred Fish <fnf@redhat.com>
+
+ * mdebugread.c (parse_partial_symbols): Only copy stabstring1 to
+ stabstring on initial malloc. Reallocing will copy it for us,
+ if necessary.
+
+2002-01-23 Elena Zannoni <ezannoni@redhat.com>
+
+ * Makefile.in (hpread_h): Delete.
+ (HFILES_NO_SRCDIR): Remove hpread.h.
+ (ALLDEPFILES): Remove hp-psymtab-read.c and hp-symtab-read.c.
+ (hpread.o): Update dependencies.
+ (hp-psymtab-read.o, hp-symtab-read.o): Remove.
+
+ * hp-psymtab-read.c: Remove file.
+ * hp-symtab-read.c: Remove file.
+ * hpread.h: Remove file.
+
+ * hpread.c: Merge all contents of hp-psymtab-read.c,
+ hp-symtab-read.c and hpread.h into this file, as it was prior to
+ January 1999.
+
+ * config/pa/hpux11w.mh, config/pa/hpux11.mh,
+ config/pa/hpux1020.mh, config/pa/hppaosf.mh,
+ config/pa/hppahpux.mh, config/pa/hppabsd.mh (NATDEPFILES):
+ Remove hp-psymtab-read.o and hp-symtab-read.o, add hpread.o.
+
+2002-01-23 Elena Zannoni <ezannoni@redhat.com>
+
+ * ppc-linux-nat.c (ppc_register_u_addr, supply_gregset,
+ fill_gregset): Call gdbarch_tdep() just once, assign result to
+ variable and use that, instead of calling the function several
+ times.
+
+2002-01-24 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.host: Accept sparcv9 as alias for sparc64.
+ * configure.tgt: Likewise.
+
+2002-01-22 Kevin Buettner <kevinb@redhat.com>
+
+ * solib-aix5.c (build_so_list_from_mapfile)
+ (aix5_relocate_main_executable): Fix xcalloc() calls so order of
+ arguments is not reversed.
+ * solib-sunos.c (sunos_relocate_main_executable): Likewise.
+ * solib-svr4.c (svr4_relocate_main_executable): Likewise.
+
+2002-01-22 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_pseudo_register_read): New function. Renamed and
+ modified version of obsolete sh_fetch_pseudo_register.
+ (sh_fetch_pseudo_register): Rename to sh_pseudo_register_read.
+ (sh4_register_read): New function.
+ (sh_pseudo_register_write): New function. Renamed and modified
+ version of obsolete sh_store_pseudo_register.
+ (sh_store_pseudo_register): Rename to sh_pseudo_register_write.
+ (sh4_register_write): New function.
+ (sh_gdbarch_init): Remove setting of gdbarch function
+ fetch_pseudo_register and store_pseudo_register. Remove setting of
+ register_convert_to_raw, register_convert_to_virtual,
+ register_convertible.
+ (sh_sh4_register_convertible): Delete. No longer needed. All is
+ taken care by architecture specific functions
+ register_read/register_write.
+ (sh_sh4_register_convert_to_virtual): Make static.
+ (sh_sh4_register_convert_to_raw): Ditto.
+
+2002-01-22 Andrew Cagney <ac131313@redhat.com>
+
+ * doublest.c (floatformat_is_negative): Assert FMT is non NULL.
+ (floatformat_is_nan, floatformat_mantissa): Ditto.
+
+ * gdbtypes.c (_initialize_gdbtypes): Initialize TYPE_FLOATFORMAT
+ for builtin_type_ieee_single_little, builtin_type_ieee_double_big,
+ builtin_type_ieee_double_little,
+ builtin_type_ieee_double_littlebyte_bigword,
+ builtin_type_m68881_ext, builtin_type_i960_ext,
+ builtin_type_m88110_ext, builtin_type_m88110_harris_ext,
+ builtin_type_arm_ext_big, builtin_type_arm_ext_littlebyte_bigword,
+ builtin_type_ia64_spill_big, builtin_type_ia64_spill_little and
+ builtin_type_ia64_quad_big, builtin_type_ia64_quad_little.
+
+2002-01-22 Corinna Vinschen <vinschen@redhat.com>
+
+ * xstormy16-tdep.c (xstormy16_scan_prologue): Add frameless
+ parameter. Set frameless flag if it exists and depended of
+ whether the scanned function is frameless or not.
+ (xstormy16_skip_prologue): If function is frameless, return
+ result of xstormy16_scan_prologue().
+ (xstormy16_frame_init_saved_regs): Adjust xstormy16_scan_prologue()
+ call.
+
+2002-01-21 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_fp_frame_init_saved_regs, sh_push_arguments,
+ sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
+ sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs,
+ sh_sh4_register_byte, sh_sh4_register_raw_size,
+ sh_sh3e_register_virtual_type, sh_sh4_register_virtual_type,
+ sh_sh4_register_convertible, sh_sh4_register_convert_to_virtual,
+ sh_sh4_register_convert_to_raw, sh_fetch_pseudo_register,
+ sh_store_pseudo_register, sh_do_pseudo_register): Call
+ gdbarch_tdep() just once, assign result to variable and use that,
+ instead of calling the function several times.
+
+2002-01-20 Mark Kettenis <kettenis@gnu.org>
+
+ * go32-nat.c (fetch_register): Use FP_REGNUM_P and FPC_REGNUM_P
+ macros instead of LAST_FPU_CTRL_REGNUM.
+ (store_register): Likewise.
+
+2002-01-21 Jim Blandy <jimb@redhat.com>
+
+ * infcmd.c (run_command): Check that the `exec' target layer's BFD
+ is up-to-date before running the program, not just when a program
+ exits.
+
+2002-01-21 Fred Fish <fnf@redhat.com>
+
+ * arm-tdep.c (thumb_skip_prologue): Quit scanning prologue
+ when we have found all instructions we are looking for.
+
+2002-01-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm-tdep.c (arm_register_name): New function.
+ (arm_registers_names): Make static.
+ * config/arm/tm-arm.h (arm_register_names): Delete declaration.
+ (arm_register_name): Declare.
+ (REGISTER_NAME): Use it.
+
+2002-01-21 Richard Earnshaw <rearnsha@arm.com>
+ Kevin Buettner <kevinb@redhat.com>
+
+ Convert arm targets to new FRAME interface.
+ * arm-tdep.c (struct frame_extra_info): Remove fsr.
+ (arm_frame_find_save_regs): Delete.
+ (arm_frame_init_saved_regs): New.
+ (arm_init_extra_frame_info): Alloacte saved_regs as required.
+ Allocate extra_info as required. Convert all uses of fsr.regs
+ to use saved_regs, similarly all uses of EXTRA_FRAME_INFO fields
+ to use extra_info.
+ (thumb_scan_prologue, arm_scan_prologue, arm_find_callers_reg)
+ (arm_frame_chain, arm_frame_saved_pc, arm_pop_frame): Likewise.
+ (check_prologue_cache, save_prologue_cache): Likewise.
+ (_initialize_arm_tdep): Ensure prologue_cache is correctly set up.
+ * config/arm/tm-arm.h (EXTRA_FRAME_INFO): Delete.
+ (FRAME_FIND_SAVED_REGS): Delete.
+ (arm_frame_find_saved_regs): Delete prototype.
+ (arm_frame_init_saved_regs): New prototype.
+ (FRAME_INIT_SAVED_REGS): Define.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * config/arc/tm-arc.h (IEEE_FLOAT): Delete.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ From Jeff Law <law@redhat.com>:
+ * infttrace.c: Include <sys/pstat.h>.
+ (child_pid_to_exec_file): Revamp. Use pstat call to get the
+ exec file if the ttrace equivalent fails.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * rdi-share/devsw.c (openLogFile): Delete unused ``struct tm lt''.
+ (closeLogFile): Ditto.
+
+2002-01-20 Michael Chastain <mec@shout.net>
+
+ * top.c (print_gdb_version): Bump copyright year to 2002.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (Blanket Write Privs): Add Kevin Buettner, Elena
+ Zannoni and Eli Zaretskii.
+
+2002-01-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * buildsym.c: Update copyright years.
+ * c-typeprint.c: Likewise.
+ * dwarf2read.c: Likewise.
+ * f-typeprint.c: Likewise.
+ * gdbtypes.c: Likewise.
+ * gdbtypes.h: Likewise.
+ * hp-symtab-read.c: Likewise.
+ * hpread.c: Likewise.
+ * mdebugread.c: Likewise.
+ * p-typeprint.c: Likewise.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * remote-sim.c (gdbsim_open): Simplify code testing the macro
+ TARGET_BYTE_ORDER_SELECTABLE_P. Assume the target is always
+ byte-order selectable.
+ * sparc-tdep.c (sparc_target_architecture_hook): Ditto.
+ * arch-utils.c: Ditto.
+ (set_endian): Ditto.
+ (set_endian_from_file): Ditto.
+ * gdbserver/low-sim.c (create_inferior): Ditto.
+ * gdbarch.sh: Ditto.
+ * gdbarch.h: Re-generate.
+ * config/powerpc/tm-ppc-eabi.h (TARGET_BYTE_ORDER_SELECTABLE_P):
+ * config/sparc/tm-sparclite.h (TARGET_BYTE_ORDER_SELECTABLE):
+ * config/sparc/tm-sparclet.h (TARGET_BYTE_ORDER_SELECTABLE):
+ * config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_SELECTABLE_P):
+ * config/arm/tm-wince.h (TARGET_BYTE_ORDER_SELECTABLE_P):
+ * config/arm/tm-linux.h (TARGET_BYTE_ORDER_SELECTABLE_P):
+ * config/arc/tm-arc.h (TARGET_BYTE_ORDER_SELECTABLE):
+ * config/arm/tm-arm.h (TARGET_BYTE_ORDER_SELECTABLE_P): Delete
+ macro definition.
+ * config/mips/tm-wince.h: Remove #undef of macro
+ TARGET_BYTE_ORDER_SELECTABLE.
+ * config/sh/tm-wince.h: Ditto.
+
+2002-01-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h (struct cplus_struct_type): Add is_artificial to
+ member function fields. Add accessor macro
+ TYPE_FN_FIELD_ARTIFICIAL.
+ * dwarf2read.c (dwarf2_add_member_fn): Check for artificial methods.
+ * c-typeprint.c (c_type_print_base): Skip artificial member
+ functions.
+
+2002-01-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * f-typeprint.c: Delete unused function f_type_print_args.
+ * p-typeprint.c: Delete unused function pascal_type_print_args.
+
+2002-01-20 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbtypes.h (struct type): Fix whitespace. Remove obsolete
+ comment. Add ``artificial'' to ``union field_location''.
+
+ * dwarf2read.c: Remove ad-hoc TYPE_FIELD_ARTIFICIAL.
+
+ * buildsym.c (finish_block): Initialize TYPE_FIELD_ARTIFICIAL to 0.
+ * mdebugread.c (parse_symbol): Likewise.
+ * stabsread.c (define_symbol): Likewise.
+ * hp-symtab-read.c (hpread_function_type): Likewise, instead of
+ initializing TYPE_FIELD_BITPOS to n (obsolete).
+ (hpread_doc_function_type): Likewise.
+ * hpread.c (hpread_function_type): Likewise.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * configure.in (host_makefile_frag): Only require a host makefile
+ fragment when a native build.
+ * configure: Re-generate.
+
+2002-01-20 Andrew Cagney <ac131313@redhat.com>
+
+ * doublest.h (floatformat_from_type): Declare.
+ * doublest.c (floatformat_from_type): New function.
+ (convert_typed_floating): Use.
+
+ * valprint.c (print_floating): Replace checks for IEEE_FLOAT with
+ call to function floatformat_from_type.
+
+ * gdbarch.sh (IEEE_FLOAT): Delete.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * config/i960/tm-i960.h (IEEE_FLOAT): Delete macro.
+ * config/i386/tm-i386.h (IEEE_FLOAT): Ditto.
+ * config/z8k/tm-z8k.h (IEEE_FLOAT): Ditto.
+ * config/sparc/tm-sparc.h (IEEE_FLOAT): Ditto.
+ * config/pa/tm-hppa.h (IEEE_FLOAT): Ditto.
+ * config/m88k/tm-m88k.h (IEEE_FLOAT): Ditto.
+ * config/m68k/tm-m68k.h (IEEE_FLOAT): Ditto.
+ * config/h8500/tm-h8500.h (IEEE_FLOAT): Ditto.
+ * config/h8300/tm-h8300.h (IEEE_FLOAT): Ditto.
+ * config/fr30/tm-fr30.h (IEEE_FLOAT): Ditto.
+ * config/arm/tm-arm.h (IEEE_FLOAT): Ditto.
+ * config/alpha/tm-alpha.h (IEEE_FLOAT): Ditto.
+
+ * s390-tdep.c (s390_gdbarch_init): Do not set ieee_float.
+ * x86-64-tdep.c (i386_gdbarch_init): Ditto.
+ * sparc-tdep.c (sparc_gdbarch_init): Ditto.
+ * sh-tdep.c (sh_gdbarch_init): Ditto.
+ * mips-tdep.c (mips_gdbarch_init): Ditto.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
+ * cris-tdep.c (cris_gdbarch_init): Ditto.
+
+2002-01-20 Jiri Smid <smid@suse.cz>
+
+ * configure.host, configure.tgt: Support x86-64.
+ * NEWS: Note new target x86-64.
+
+ * config/i386/x86-64linux.mh (NATDEPFILES): x86-64-nat.o removed.
+ * x86-64-linux-nat.c (x86_64_register_u_addr): New function.
+ * config/i386/nm-x86-64.h (ATTACH_LWP): Removed.
+ * Makefile.in (x86-64-tdep.o, x86-64-linux-tdep.o,
+ x86-64-linux-nat.o): Fix dependencies.
+
+2002-01-19 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c: Remove #ifndef MALLOC_INCOMPATIBLE.
+ * config/sparc/xm-sun4os4.h (PTRACE_ARG3_TYPE): Move macro ....
+ * config/sparc/nm-sun4os4.h (PTRACE_ARG3_TYPE): ... to here.
+ * config/sparc/xm-sun4os4.h: Delete file.
+ * config/sparc/sun4os4.mh (XM_FILE): Delete makefile variable.
+
+2002-01-19 Andrew Cagney <ac131313@redhat.com>
+
+ * config/sparc/sparclynx.mh (XM_FILE): Delete.
+ * config/rs6000/rs6000lynx.mh (XM_FILE): Delete.
+ * config/m68k/m68klynx.mh (XM_FILE): Delete.
+ * config/i386/i386lynx.mh (XM_FILE): Delete.
+ * config/rs6000/xm-rs6000ly.h: Delete file.
+ * config/sparc/xm-sparclynx.h: Delete file.
+ * config/m68k/xm-m68klynx.h: Delete file.
+ * config/i386/xm-i386lynx.h: Delete file.
+ * config/xm-lynx.h: Delete file.
+ * config/djgpp/fnchange.lst: Update.
+
+2002-01-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_register_byte): New function.
+ (alpha_register_raw_size): Ditto.
+ (alpha_register_virtual_size): Ditto.
+ (alpha_skip_prologue_internal): Renamed from
+ alpha_skip_prologue.
+ (alpha_skip_prologue): New version that calls
+ alpha_skip_prologue_internal.
+ (alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
+ * config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
+ second argument from alpha_skip_prologue.
+ (REGISTER_BYTE): Use alpha_register_byte.
+ (REGISTER_RAW_SIZE): Use alpha_register_raw_size.
+ (REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
+ (FRAMELESS_FUNCTION_INVOCATION): Use
+ generic_frameless_function_invocation_not.
+ (FRAME_NUM_ARGS): Use frame_num_args_unknown.
+ (COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.
+
+2002-01-19 Andrew Cagney <ac131313@redhat.com>
+
+ * config/mips/xm-news-mips.h: Delete file.
+ * config/mips/news-mips.mh (XM_FILE): Delete makefile variable.
+
+ * config/m88k/xm-m88k.h: Delete file.
+ * config/m88k/xm-dgux.h: Do not include xm-m88k.h.
+ * config/m88k/xm-delta88v4.h: Ditto.
+ * config/m88k/xm-delta88.h: Ditto.
+
+ * config/alpha/xm-fbsd.h: Delete file.
+ * config/alpha/fbsd.mh (XM_FILE): Delete makefile variable.
+
+ * config/sparc/xm-sparc.h: Delete file.
+ * Makefile.in (xm-sun4os4.h): Delete dependency.
+ * config/sparc/xm-sun4sol2.h: Do not include xm-sparc.h.
+ * config/sparc/xm-sun4os4.h: Ditto.
+ * config/sparc/xm-linux.h: Ditto.
+
+ * config/i386/xm-windows.h: Delete file.
+
+2002-01-19 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c: Include <sys/param.h> for MAXPATHLEN.
+ (gdb_realpath): Use MAXPATHLEN when PATH_MAX is not defined.
+
+2002-01-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_call_dummy_words): New.
+ * config/alpha/tm-alpha.h (CALL_DUMMY): Remove.
+ (CALL_DUMMY_P): Define.
+ (CALL_DUMMY_WORDS): Define.
+ (SIZEOF_CALL_DUMMY_WORDS): Define.
+
+2002-01-19 Per Bothner <per@bothner.com>
+
+ * gnu-v3-abi.c (gnuv3_rtti_type): Guard that vtable_symbol_name
+ isn't NULL, which can happen with some gcj-3.x-produced code.
+
+2002-01-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_register_virtual_type): New function.
+ (alpha_init_frame_pc_first): Ditto.
+ (alpha_fix_call_dummy): Ditto.
+ (alpha_store_struct_return): Ditto.
+ (alpha_extract_struct_value_address): Ditto.
+ * config/alpha/tm-alpha.h (REGISTER_VIRTUAL_TYPE): Use
+ alpha_register_virtual_type.
+ (STORE_STRUCT_RETURN): Use alpha_store_struct_return.
+ (EXTRACT_STRUCT_VALUE_ADDRESS): Use
+ alpha_extract_struct_value_address.
+ (FIX_CALL_DUMMY): Use alpha_fix_call_dummy.
+ (INIT_FRAME_PC): Use init_frame_pc_noop.
+ (INIT_FRAME_PC_FIRST): Use alpha_init_frame_pc_first.
+
+2002-01-19 Mark Kettenis <kettenis@gnu.org>
+
+ * i386gnu-nat.c: Include "i386-tdep.h".
+ (fetch_fpregs): Simplify code dealing with uninitialized floating
+ point states such that it doesn't require FP7_REGNUM.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (frame_extra_info): New.
+ (alpha_find_saved_regs): Make static. Use
+ frame->extra_info.
+ (alpha_frame_init_saved_regs): New function.
+ (alpha_frame_saved_pc): Use frame->extra_info.
+ (temp_saved_regs): Don't declare as struct frame_saved_regs.
+ (heuristic_proc_desc): Adjust for temp_saved_regs changes.
+ (init_extra_frame_info): Rename to...
+ (alpha_init_extra_frame_info): ...this. Use frame->extra_info.
+ (alpha_print_extra_frame_info): New function.
+ (alpha_frame_locals_address): Ditto.
+ (alpha_frame_args_address): Ditto.
+ (alpha_pop_frame): Use frame->extra_info.
+ * config/alpha/tm-alpha.h (FRAME_ARGS_ADDRESS): Use
+ alpha_frame_args_address.
+ (FRAME_LOCALS_ADDRESS): Use alpha_frame_locals_address.
+ (alpha_find_saved_regs): Remove prototype.
+ (FRAME_INIT_SAVED_REGS): Use alpha_frame_init_saved_regs.
+ (EXTRA_FRAME_INFO): Remove.
+ (INIT_EXTRA_FRAME_INFO): Use alpha_init_extra_frame_info.
+ (PRINT_EXTRA_FRAME_INFO): Use alpha_print_extra_frame_info.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_osf_in_sigtramp): New function.
+ (alpha_cannot_fetch_register): Ditto.
+ (alpha_cannot_store_register): Ditto.
+ (alpha_register_convertible): Ditto.
+ (alpha_use_struct_convention): Ditto.
+ * config/alpha/tm-alpha.h: Update copyright years.
+ (IN_SIGTRAMP): Use alpha_osf_in_sigtramp.
+ (INNER_THAN): Use core_addr_lessthan.
+ (CANNOT_FETCH_REGISTER): Use alpha_cannot_fetch_register.
+ (CANNOT_STORE_REGISTER): Use alpha_cannot_store_register.
+ (REGISTER_CONVERTIBLE): Use alpha_register_convertible.
+ (USE_STRUCT_CONVENTION): Use alpha_use_struct_convention.
+ (FRAME_CHAIN): Remove unnecessary cast.
+
+2002-01-18 Andrew Cagney <ac131313@redhat.com>
+
+ * NEWS: Document that testsuite/gdb.hp/gdb.threads-hp/ is
+ obsolete.
+
+2002-01-18 Andrew Cagney <ac131313@redhat.com>
+
+ * infptrace.c: Remove ATTRIBUTE_UNUSED. Update copyright.
+ * monitor.c, remote-array.c, remote-bug.c: Ditto.
+ * remote-e7000.c, remote-es.c, remote-mips.c: Ditto.
+ * remote-nindy.c, remote-os9k.c, remote-rdi.c: Ditto.
+ * remote-rdp.c, remote-sds.c, remote-sim.c: Ditto.
+ * remote-st.c, remote-vx.c, remote.c, win32-nat.c: Ditto.
+ * x86-64-linux-nat.c: Ditto.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c (alpha_register_name): New function.
+ * config/alpha/tm-alpha.h (REGISTER_NAMES): Remove.
+ (REGISTER_NAME): Define.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/nm-nbsd.h (KERNEL_U_ADDR): Remove.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alpha-tdep.c: Update copyright years.
+ (alpha_next_pc): New function.
+ (alpha_software_single_step): Ditto.
+ * config/alpha/tm-alpha.h: Add prototype for
+ alpha_software_single_step.
+
+2002-01-18 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * alphabsd-nat.c: Update copyright years.
+ (fill_gregset): Use regcache_collect.
+ (fill_fpregset): Likewise.
+ (fetch_inferior_registers): Only fetch integer registers
+ if requested to do so.
+ (store_inferior_registers): Only store integer registers
+ if requested to do so.
+
+2002-01-17 Andrew Cagney <ac131313@redhat.com>
+
+ * config/alpha/alpha-osf3.mh (XDEPFILES): Delete.
+ * config/alpha/alpha-osf2.mh (XDEPFILES): Delete.
+ * config/alpha/alpha-osf1.mh (XDEPFILES): Delete.
+ * config/alpha/alpha-linux.mh (XDEPFILES): Delete.
+ * config/alpha/fbsd.mh (XDEPFILES): Delete.
+ * config/arm/linux.mh (XDEPFILES): Delete.
+ * config/arm/nbsd.mh (XDEPFILES): Delete.
+ * config/i386/i386dgux.mh (XDEPFILES): Delete.
+ * config/i386/i386sol2.mh (XDEPFILES): Delete.
+ * config/i386/i386m3.mh (XDEPFILES): Delete.
+ (NATDEPFILES): Move i387-tdep.o and core-aout.o to here.
+ * config/i386/i386gnu.mh (XDEPFILES): Delete.
+ * config/i386/fbsd.mh (XDEPFILES): Delete.
+ * config/i386/i386bsd.mh (XDEPFILES): Delete.
+ * config/i386/i386sco5.mh (XDEPFILES): Delete.
+ * config/i386/i386v4.mh (XDEPFILES): Delete.
+ * config/i386/i386v42mp.mh (XDEPFILES): Delete.
+ * config/i386/i386sco4.mh (XDEPFILES): Delete.
+ * config/i386/i386aix.mh (XDEPFILES): Delete.
+ * config/i386/go32.mh (XDEPFILES): Delete.
+ * config/i386/cygwin.mh (XDEPFILES): Delete.
+ * config/i386/i386lynx.mh (XDEPFILES): Delete.
+ * config/i386/i386mach.mh (XDEPFILES): Delete.
+ * config/i386/i386v32.mh (XDEPFILES): Delete.
+ * config/i386/linux.mh (XDEPFILES): Delete.
+ * config/i386/nbsdelf.mh (XDEPFILES): Delete.
+ * config/i386/ncr3000.mh (XDEPFILES): Delete.
+ * config/i386/i386mk.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/i386/i386sco.mh (XDEPFILES): Delete.
+ * config/i386/i386v.mh (XDEPFILES): Delete.
+ * config/i386/nbsd.mh (XDEPFILES): Delete.
+ * config/i386/ptx.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/i386/ptx4.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/i386/symmetry.mh (XDEPFILES): Delete.
+ * config/i386/obsd.mh (XDEPFILES): Delete.
+ * config/i386/x86-64linux.mh (XDEPFILES): Delete.
+ * config/ia64/linux.mh (XDEPFILES): Delete.
+ * config/ia64/aix.mh (XDEPFILES): Delete.
+ * config/m68k/apollo68b.mh (XDEPFILES): Delete.
+ * config/m68k/dpx2.mh (XDEPFILES): Delete.
+ * config/m68k/3b1.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/m68k/apollo68v.mh (XDEPFILES): Delete.
+ * config/m68k/hp300bsd.mh (XDEPFILES): Delete.
+ * config/m68k/linux.mh (XDEPFILES): Delete.
+ * config/m68k/m68klynx.mh (XDEPFILES): Delete.
+ * config/m68k/m68kv4.mh (XDEPFILES): Delete.
+ * config/m68k/nbsd.mh (XDEPFILES): Delete.
+ * config/m68k/sun2os3.mh (XDEPFILES): Delete.
+ * config/m68k/sun2os4.mh (XDEPFILES): Delete.
+ * config/m68k/sun3os3.mh (XDEPFILES): Delete.
+ * config/m68k/sun3os4.mh (XDEPFILES): Delete.
+ * config/m88k/delta88.mh (XDEPFILES): Delete.
+ * config/m88k/delta88v4.mh (XDEPFILES): Delete.
+ * config/m88k/m88k.mh (XDEPFILES): Delete.
+ * config/mips/littlemips.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/mips/linux.mh (XDEPFILES): Delete.
+ * config/mips/irix6.mh (XDEPFILES): Delete.
+ * config/mips/irix5.mh (XDEPFILES): Delete.
+ * config/mips/irix4.mh (XDEPFILES): Delete.
+ * config/mips/irix3.mh (XDEPFILES): Delete.
+ * config/mips/decstation.mh (XDEPFILES): Delete.
+ * config/mips/mipsm3.mh (XDEPFILES): Delete.
+ (NATDEPFILES): Move core-aout.o to here.
+ * config/ns32k/nbsd.mh (XDEPFILES): Delete.
+ * config/pa/hpux1020.mh (XDEPFILES): Delete.
+ * config/pa/hppabsd.mh (XDEPFILES): Delete.
+ * config/pa/hppahpux.mh (XDEPFILES): Delete.
+ * config/pa/hpux11w.mh (XDEPFILES): Delete.
+ * config/pa/hppaosf.mh (XDEPFILES): Delete.
+ * config/pa/hpux11.mh (XDEPFILES): Delete.
+ * config/powerpc/aix.mh (XDEPFILES): Delete.
+ * config/powerpc/nbsd.mh (XDEPFILES): Delete.
+ * config/powerpc/linux.mh (XDEPFILES): Delete.
+ * config/romp/rtbsd.mh: Rename XDEPFILES.
+ * config/rs6000/rs6000lynx.mh (XDEPFILES): Delete.
+ * config/rs6000/aix4.mh (XDEPFILES): Delete.
+ * config/rs6000/rs6000.mh (XDEPFILES): Delete.
+ * config/s390/s390.mh (XDEPFILES): Delete.
+ * config/vax/vaxbsd.mh (NATDEPFILES): Rename XDEPFILES.
+ * config/sparc/sun4sol2.mh (XDEPFILES): Delete.
+ * config/sparc/sun4os4.mh (XDEPFILES): Delete.
+ * config/sparc/sparclynx.mh (XDEPFILES): Delete.
+ * config/sparc/nbsdelf.mh (XDEPFILES): Delete.
+ * config/sparc/nbsd.mh (XDEPFILES): Delete.
+ * config/sparc/linux.mh (XDEPFILES): Delete.
+ * config/vax/vaxult.mh (XDEPFILES): Delete.
+ * config/vax/vaxult2.mh (XDEPFILES): Delete.
+ * Makefile.in (DEPFILES): Remove XDEPFILES.
+
+2002-01-17 Andrew Cagney <ac131313@redhat.com>
+
+ * utils.c (internal_verror): Fix comments, default is yes not no.
+ Update queries to match. Default to quit and dump core.
+
+2002-01-17 Andrew Cagney <ac131313@redhat.com>
+
+ * breakpoint.c: Update assuming #if UI_OUT is always true. Update
+ copyright.
+ * defs.h, event-top.c, gdbcmd.h: Ditto.
+ * infcmd.c, infrun.c, main.c, printcmd.c, remote.c: Ditto.
+ * source.c, stack.c, symfile.c, symtab.c, thread.c: Ditto.
+ * top.c, cli/cli-cmds.c, cli/cli-decode.c: Ditto.
+ * cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.c: Ditto.
+ * mi/ChangeLog, mi/mi-cmd-break.c, mi/mi-cmd-stack.c: Ditto.
+ * mi/mi-main.c:Ditto.
+
+ * stack.c, symfile.c: Update copyright.
+
+2002-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/low-hppabsd.c, gdbserver/low-lynx.c,
+ gdbserver/low-nbsd.c, gdbserver/low-sim.c,
+ gdbserver/low-sparc.c, gdbserver/low-sun3.c,
+ gdbserver/low-linux.c, gdbserver/server.c: Correct copyright notices.
+
+2002-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbserver/low-hppabsd.c (myattach): New function, returning -1.
+ * gdbserver/low-lynx.c (myattach): Likewise.
+ * gdbserver/low-nbsd.c (myattach): Likewise.
+ * gdbserver/low-sim.c (myattach): Likewise.
+ * gdbserver/low-sparc.c (myattach): Likewise.
+ * gdbserver/low-sun3.c (myattach): Likewise.
+
+ * gdbserver/low-linux.c (myattach): New function.
+
+ * gdbserver/server.c (attach_inferior): New function.
+ (main): Handle "--attach".
+
+2002-01-16 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS (language support): Daniel Jacobwitz is C++
+ maintainer.
+
+2002-01-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * c-typeprint.c (is_type_conversion_operator): Add additional
+ check for non-conversion operators.
+
+2002-01-15 Michael Snyder <msnyder@redhat.com>
+
+ * linux-proc.c: Add "info proc" command, a la procfs.c.
+ (read_mapping): New function, abstract and re-use code.
+ (linux_find_memory_regions): Use new func read_mapping.
+ (linux_info_proc_cmd): New function, implement "info proc".
+ (_initialize_linux_proc): Add new command "info proc".
+
+2002-01-15 Michael Snyder <msnyder@redhat.com>
+
+ * symfile.c (generic_load): Use bfd_map_over_sections method
+ instead of manipulating bfd structure members directly.
+ (add_section_size_callback): New function, bfd sections callback
+ used by generic_load.
+ (load_sections_callback): New function, bfd sections callback
+ used by generic_load.
+
+2002-01-15 Elena Zannoni <ezannoni@redhat.com>
+
+ [Based on work by Jim Blandy]
+ * gdbtypes.h (builtin_type_v16qi, builtin_type_v8hi): Export.
+ (builtin_type_vec128): Export.
+ * gdbtypes.c (builtin_type_v16qi, builtin_type_v8hi): New SIMD
+ types.
+ (builtin_type_vec128): New builtin type for 128 bit vector
+ registers.
+ (build_gdbtypes): Initialize builtin_type_v16qi and
+ builtin_type_v8hi. Create the vec128 register builtin type
+ structure.
+ (build_builtin_type_vec128): New function.
+ (_initialize_gdbtypes): Register builtin_type_v16qi and
+ builtin_type_v8hi with gdbarch. Same for builtin_type_vec128.
+ * rs6000-tdep.c (rs6000_register_virtual_type): Change type of
+ AltiVec register to new builtin type.
+
+2001-01-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * stabsread.c (read_type): Pass dbx_lookup_type (typenums)
+ to make_cv_type.
+
+2002-01-14 Andrew Cagney <ac131313@redhat.com>
+
+ * config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Rename
+ CLEAN_UP_REGISTER_VALUE.
+ * regcache.c (supply_register): Update only call.
+
+2002-01-14 Andrew Cagney <ac131313@redhat.com>
+
+ * configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
+ a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
+ a29k-*-vxworks* targets as obsolete.
+
+2002-01-14 Michael Snyder <msnyder@redhat.com>
+
+ * linux-proc.c (linux_do_thread_registers): Ignore fpxregs
+ until we can resolve portability issues.
+ * gregset.h: Remove references to fpxregs.
+ * gcore.c (gcore_command): Initialize note_sec to NULL.
+
+2002-01-13 Andrew Cagney <ac131313@redhat.com>
+
+ * signals.c (target_signal_to_name): Rewrite. Only use
+ signals[].name when in bounds and non-NULL.
+
+2002-01-13 Andrew Cagney <ac131313@redhat.com>
+
+ From Petr Ledvina <ledvinap@kae.zcu.cz>:
+ * signals.c (target_signal_to_name): Verify that SIG is within the
+ bounds of the signals array.
+
+2002-01-13 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Remove arm-coff and arm-pe from target list.
+
+2002-01-13 Keith Seitz <keiths@redhat.com>
+
+ * stack.c (print_frame_info_base): Print the frame's pc
+ only if when print_frame_info_listing_hook is not defined.
+
+2002-01-13 Keith Seitz <keiths@redhat.com>
+
+ * varobj.c (varobj_set_value): Make sure that there were no
+ errors evaluating the object before attempting to set its
+ value.
+ value_cast now properly adjusts VALUE_ADDRESS for baseclasses,
+ so this offset adjustment is no longer necessary.
+ (create_child): Don't set the error flag if the child is
+ a CPLUS_FAKE_CHILD.
+ (value_of_child): If value_fetch_lazy fails, return NULL
+ so that callers will be notified that an error occurred.
+ (c_value_of_variable): Delay check of variable's validity
+ until later. We actually want all structs and unions to have
+ the value "{...}".
+ Do not return "???" for variables which could not be evaluated.
+ This error condition must be returned to the caller so that it
+ can get the error condition from gdb.
+ (cplus_name_of_child): Adjust index for vptr before figuring
+ out the name of the child.
+ (cplus_value_of_child): If a child's (real) parent is not valid,
+ don't even bother trying to give a value for it. Just return
+ an error. Change all instances in this function.
+ (cplus_type_of_child): If our parent is one of the "fake"
+ parents, we need to get at the type of the real parent, and
+ derive the child's true type using this information.
+
+2002-01-13 Andrew Cagney <ac131313@redhat.com>
+
+ From 2002-01-09 John Marshall <johnm@falch.net>:
+ * CONTRIBUTE, README, TODO: Change sourceware.cygnus.com to
+ sources.redhat.com, and tweak some related URLs which had
+ suffered from linkrot.
+
+2002-01-13 Andrew Cagney <ac131313@redhat.com>
+
+ From Jeff law:
+ * hppa-tdep.c (hppa_push_arguments): Correct handling of 5-7 byte
+ structures passed in registers.
+
+2002-01-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * go32-nat.c (save_npx) [__DJGPP_MINOR__ < 3]: Remove extraneous
+ white space which prevented compilation. Reported by DSK
+ <dsk@student.unsw.edu.au>.
+
+2002-01-11 Michael Snyder <msnyder@redhat.com>
+
+ * symfile.c (build_section_addr_info_from_section_tab):
+ Use bfd access method instead of manipulating bfd directly.
+ (syms_from_objfile): Ditto.
+ (simple_overlay_update_1): Ditto.
+ (simple_overlay_update): Ditto.
+ (generic_load): Ditto.
+ (overlay_unmapped_address): FIXME comment, bfd access methods.
+ (sections_overlap): FIXME comment, bfd access methods.
+ (pc_in_mapped_range): FIXME comment, bfd access methods.
+ (pc_in_unmapped_range): FIXME comment, bfd access methods.
+ (section_is_mapped): FIXME comment, bfd access methods.
+ (section_is_overlay): FIXME comment, bfd access methods.
+
+ * symfile.c (generic_load): Whitespace and long line cleanups.
+ Remove duplicate variable, change several local variables to
+ more appropriate data types.
+ (print_transfer_performance): Use %lu instead of %ld for ulongs.
+
+2002-01-12 Andrew Cagney <ac131313@redhat.com>
+
+ From Peter Schauer:
+ * language.c (longest_local_hex_string_custom): Use phex_nz to
+ convert NUM to a hex string.
+
+2002-01-12 Elena Zannoni <ezannoni@redhat.com>
+
+ * sh-tdep.c (sh_gdbarch_init): Move setting of long_bit earlier in
+ the function.
+ Update Copyright year.
+
+2002-01-12 Andrew Cagney <ac131313@redhat.com>
+
+ * language.c (longest_raw_hex_string): Delete unused function.
+
+2002-01-11 Petr Sorfa <petrs@caldera.com>
+
+ * MAINTAINERS (write-after-approval): Add myself.
+ * dwarf2read.c (read_tag_string_type): Handling of
+ DW_AT_byte_size.
+ (read_tag_string_type): FORTRAN fix to prevent propagation of
+ first string size.
+ (set_cu_language): Handling of DW_LANG_Fortran95
+
+2002-01-11 Richard Earnshaw <rearnsha@arm.com>
+
+ * armnbsd-nat.c (fetch_inferior_registers): Change inferior_pid ->
+ GETPID(inferior_ptid).
+ (store_inferior_registers): Likewise.
+
+2002-01-10 Jason Merrill <jason@redhat.com>
+
+ * dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
+ Fix DW_OP_minus.
+
+2002-01-10 Andrew Cagney <ac131313@redhat.com>
+
+ * config/djgpp/fnchange.lst: Add renames for bfd/ChangeLog-0001
+ and bfd/elf32-sh-nbsd.c.
+
+2002-01-10 Michael Snyder <msnyder@redhat.com>
+
+ * NEWS: Mention --pid and corefile/proc-id behavior change.
+
+ * Makefile.in: Add rules for gcore.o and linux-proc.o.
+ * gcore.c: Include cli/cli-decode.h instead of command.h.
+
+ * main.c (captured_main): Add new command line option "--pid".
+ If the second command line argument (following the symbol-file)
+ begins with a digit, try to attach to it before trying to open
+ it as a corefile.
+ (print_gdb_help): Document the "--pid" argument.
+
+2002-01-10 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * completer.c (command_completer): New function.
+
+ * completer.h <command_completer>: Add prototype.
+
+ * cli/cli-cmds.c (init_cli_cmds): Make command_completer be the
+ completer for the "help" command.
+
+2002-01-09 Jason Merrill <jason@redhat.com>
+
+ * c-typeprint.c (is_type_conversion_operator): Fix thinko.
+
+2002-01-09 Michael Snyder <msnyder@redhat.com>
+
+ * i386-linux-nat.c (fill_fpxregset): Make global.
+ (store_fpxregset): Ditto.
+
+ * gregset.h (gdb_fpxregset_t): Define.
+ (supply_fpxregset): Prototype.
+ (fill_fpxregset): Prototype.
+
+ * exec.c (exec_make_note_section): Don't call elfcore_write_prpsinfo.
+
+2002-01-09 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/arm-tdep.h (arm_software_single_step): Remove PARAMS.
+ * config/arm/nm-nbsd.h (arm_register_u_addr): Likewise.
+ * config/arm/tm-nbsd.h (get_longjmp_target): Likewise.
+
+2002-01-09 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Update target maintainer rules so that any
+ Maintainer can approve a tested patch for a maintenance-only
+ target.
+
+2002-01-09 Richard Earnshaw <rearnsha@arm.com>
+
+ * MAINTAINERS (write-after-approval): Add myself.
+
+ * arm-tdep.c (arm_init_extra_frame_info): Cast NULL argument to
+ IN_SIGTRAMP.
+
+2002-01-08 Michael Snyder <msnyder@redhat.com>
+
+ * linux-proc.c (child_pid_to_exec_file): Use readlink to get the
+ real name of the executable, rather than the /proc name.
+
+2002-01-03 Michael Snyder <msnyder@redhat.com>
+
+ Implement a "generate-core-file" command in gdb, save target state.
+ * gcore.c: New file. Implement new command 'generate-core-file'.
+ Save a corefile image of the current state of the inferior.
+ * linux-proc.c: Add linux-specific code for saving corefiles.
+ * target.h (struct target_ops): Add new target vectors for saving
+ corefiles; to_find_memory_regions and to_make_corefile_notes.
+ (target_find_memory_regions): New macro.
+ (target_make_corefile_notes): New macro.
+ * target.c (update_current_target): Inherit new target methods.
+ (dummy_find_memory_regions): New place-holder method.
+ (dummy_make_corefile_notes): New place-holder method.
+ (init_dummy_target): Initialize new dummy target vectors.
+ * exec.c (exec_set_find_memory_regions): New function.
+ Allow the exec_ops vector for memory regions to be taken over.
+ (exec_make_note_section): New function, target vector method.
+ * defs.h (exec_set_find_memory_regions): Export prototype.
+ * procfs.c (proc_find_memory_regions): New function, corefile method.
+ (procfs_make_note_section): New function, corefile method.
+ (init_procfs_ops): Set new target vector pointers.
+ (find_memory_regions_callback): New function.
+ (procfs_do_thread_registers): New function.
+ (procfs_corefile_thread_callback): New function.
+ * sol-thread.c (sol_find_memory_regions): New function.
+ (sol_make_note_section): New function.
+ (init_sol_thread_ops): Initialize new target vectors.
+ * inftarg.c (inftarg_set_find_memory_regions): New function.
+ Allow to_find_memory_regions vector to be taken over.
+ (inftarg_set_make_corefile_notes): New function.
+ Allow to_make_corefile_notes vector to be taken over.
+ * thread-db.c (thread_db_new_objfile): Don't activate thread-db
+ interface layer if not target_has_execution (may be a corefile).
+ * config/i386/linux.mh: Add gcore.o to NATDEPFILES.
+ * config/sparc/sun4sol2.mh: Ditto.
+ * config/alpha/alpha-linux.mh: Ditto.
+ * config/arm/linux.mh: Ditto.
+ * config/i386/x86-64linux.mh: Ditto.
+ * config/ia64/linux.mh: Ditto.
+ * config/m68k/linux.mh: Ditto.
+ * config/mips/linux.mh: Ditto.
+ * config/powerpc/linux.mh: Ditto.
+ * config/sparc/linux.mh: Ditto.
+
+2002-01-07 Michael Snyder <msnyder@redhat.com>
+
+ * arm-linux-nat.c: Remove references to regcache.c internal data
+ (registers[] and register_valid[]).
+
+2002-01-07 Michael Snyder <msnyder@redhat.com>
+
+ * linux-proc.c: New file. Implement child_pid_to_exec_file,
+ so that attaching to a pid will automatically read the process's
+ symbol file and shlibs.
+ * Makefile.in: Add rule for linux-proc.o.
+ * config/nm-linux.h: Define CHILD_PID_TO_EXEC_FILE.
+ * config/alpha/alpha-linux.mh: Add linux-proc.o to NATDEPFILES.
+ * config/arm/linux.mh: Ditto.
+ * config/i386/linux.mh: Ditto.
+ * config/i386/x86-64linux.mh: Ditto.
+ * config/ia64/linux.mh: Ditto.
+ * config/m68k/linux.mh: Ditto.
+ * config/mips/linux.mh: Ditto.
+ * config/powerpc/linux.mh: Ditto.
+ * config/sparc/linux.mh: Ditto.
+
+2002-01-06 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * win32-nat.c: Add i386-tdep.h dependency.
+
+2002-01-07 Michael Snyder <msnyder@redhat.com>
+
+ * solib.c (info_sharedlibrary_command): Use TARGET_PTR_BIT
+ instead of bfd_get_arch_size. Don't bail out just because
+ there's no exec_bfd.
+
+ * cp-valprint.c (cp_print_value): FIXME comment, alloca size.
+ * p-valprint.c (pascal_object_print_value): Ditto.
+ * somread.c (som_symtab_read): Ditto.
+ * symfile.c (simple_free_overlay_region_table): Ditto.
+ * valops.c (value_assign): Ditto.
+
+ * tracepoint.c (tracepoint_save_command): From Klee Dienes --
+ use tilde_expand and strerror for opening save-tracepoints file.
+
+ * thread-db.c (thread_db_new_objfile): Indendation fix.
+
+ * infptrace.c (GDB_MAX_ALLOCA): New define.
+ (child_xfer_memory): Use xmalloc/xfree instead of alloca if the
+ size of the buffer exceeds GDB_MAX_ALLOCA (default 1 megabyte,
+ can be overridden with whatever value is appropriate to the host).
+ * infttrace.c (child_xfer_memory): Add FIXME warning about use of
+ alloca to allocate potentially large buffer.
+ * rs6000-nat.c (child_xfer_memory): Ditto.
+ * symm-nat.c (child_xfer_memory): Ditto.
+ * x86-64-linux-nat.c (child_xfer_memory): Ditto.
+
+2002-01-07 Jackie Smith Cashion <jsmith@redhat.com>
+
+ From Nick Clifton <nickc@redhat.com>
+ * d10v-tdep.c: Set STACK_START to 0x200bffe.
+
+2002-01-07 Michael Snyder <msnyder@redhat.com>
+
+ * solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
+ Don't use exec_bfd if it's NULL.
+
+2002-01-06 Mark Kettenis <kettenis@gnu.org>
+
+ * valops.c (value_arg_coerce): Fix formatting.
+
+2002-01-06 Andrew Cagney <ac131313@redhat.com>
+
+ * hp-psymtab-read.c: Include "gdb_string.h" instead of <string.h>.
+ * gnu-nat.c: Ditto.
+
+2002-01-06 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Note that alpha-dec-osf4.0a, arc-elf, arm-coff,
+ arm-elf, arm-pe, d30v-elf, fr30-elf, h8300hms, h8500hms,
+ i960-coff, m32r-elf, m68k-elf, m88k, mcore-elf, mn10200-elf,
+ ns32k-netbsd, hppa1.1-hp-proelf, v850-elf, vax-dec-vms5.5 and
+ z8k-coff have not been multi-arched. Update z8k-coff build
+ status.
+
+2002-01-06 Andrew Cagney <ac131313@redhat.com>
+
+ * MAINTAINERS: Mark a29k target as obsolete.
+ * Makefile.in (a29k-tdep.o, remote-adapt.o, remote-eb.o)
+ (remote-mm.o, remote-udi.o): Obsolete. Remove references in
+ comments.
+ * NEWS: Note that a29k targets are obsolete.
+ * a29k-tdep.c: Mark as obsolete.
+ * configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
+ a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
+ a29k-*-vxworks* targets as obsolete.
+ * remote-adapt.c: Obsolete.
+ * remote-eb.c: Obsolete.
+ * remote-mm.c: Obsolete.
+ * remote-udi.c: Obsolete.
+ * config/a29k/a29k-udi.mt: Obsolete.
+ * config/a29k/a29k.mt: Obsolete.
+ * config/a29k/tm-a29k.h: Obsolete.
+ * config/a29k/tm-vx29k.h: Obsolete.
+ * config/a29k/vx29k.mt: Obsolete.
+
+2002-01-05 Andrew Cagney <ac131313@redhat.com>
+
+ * rs6000-tdep.c (rs6000_do_registers_info): Replace BIG_ENDIAN
+ with BFD_ENDIAN_BIG.
+
+2002-01-05 Andrew Cagney <ac131313@redhat.com>
+
+ * configure.in (AC_CHECK_HEADERS): Do not check for <endian.h>.
+ * configure, config.in: Re-generate.
+ * config/vax/xm-vaxbsd.h: Do not include <machine/endian.h>.
+ * defs.h: Do not include <endian.h>.
+
+2002-01-05 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * acconfig.h (HAVE_PT_GETXMMREGS): New.
+ * config.in: Regenerate.
+ * configure.in: Update copyright years.
+ Add test for PT_GETXMMREGS supplied by <sys/ptrace.h>.
+ * configure: Regenerate.
+ * i386bsd-nat.c: Update copyright years.
+ (fill_gregset): Use regcache_collect.
+ (fetch_inferior_registers): Only fetch integer registers
+ if requested to do so. Add support for XMM registers
+ using PT_GETXMMREGS.
+ (store_inferior_registers): Only store integer registers
+ if requested to do so. Add support for XMM registers
+ using PT_SETXMMREGS.
+ * i386nbsd-nat.c (fetch_inferior_registers): Remove.
+ (store_inferior_registers): Remove.
+ (fetch_core_registers): Use supply_gregset and i387_supply_fsave.
+ (fetch_elfcore_registers): New function.
+ (i386nbsd_elfcore_fns): New.
+ (_initialize_i386nbsd_nat): Register i386nbsd_elfcore_fns.
+ * config/i386/nbsd.mh (NATDEPFILES): Add i387-nat.o and
+ i386bsd-nat.o.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
+ * config/i386/nbsd.mt (TDEPFILES): Add i386bsd-nat.o.
+ * config/i386/nbsdelf.mt (TDEPFILES): Likewise.
+ * config/i386/tm-nbsd.h: Update copyright years.
+ (HAVE_SSE_REGS): Define.
+ (IN_SIGTRAMP): Define as i386bsd_in_sigtramp.
+ (SIGTRAMP_START): Redefine as i386bsd_sigtramp_start.
+ (SIGTRAMP_END): Redefine as i386bsd_sigtramp_end.
+ (SIGCONTEXT_PC_OFFSET): Remove.
+ (FRAME_SAVED_PC): Define as i386bsd_frame_saved_pc.
+
+2002-01-05 Andrew Cagney <ac131313@redhat.com>
+
+ * configure.tgt: Remove powerpc-*-macos* target.
+ * config/m68k/xm-mpw.h: Delete file.
+ * config/xm-mpw.h: Delete file.
+ * ser-mac.c: Delete file.
+ * mpw-make.sed: Delete file.
+ * mpw-config.in: Delete file.
+ * mac-xdep.c: Delete file.
+ * mac-gdb.r: Delete file.
+ * mac-defs.h: Delete file.
+ * mac-nat.c: Delete file.
+ * config/powerpc/macos.mh: Delete file.
+ * config/powerpc/macos.mt: Delete file.
+ * config/powerpc/nm-macos.h: Delete file.
+ * config/powerpc/tm-macos.h: Delete file.
+ * source.c (openp, open_source_file): Remove obsolete code.
+ * top.c (gdb_readline): Ditto.
+ * utils.c (query): Ditto.
+ * event-top.c (display_gdb_prompt): Ditto.
+ * Makefile.in (ser-mac.o): Delete obsolete target.
+ * NEWS: Update.
+
+2002-01-04 Andrew Cagney <ac131313@redhat.com>
+
+ * defs.h (BIG_ENDIAN): Delete macro definition.
+ * a29k-tdep.c, arch-utils.c, arm-tdep.c, ax-gdb.c, ch-exp.c,
+ coffread.c, cris-tdep.c, d10v-tdep.c, d30v-tdep.c, defs.h,
+ findvar.c, infcmd.c, mem-break.c, mips-tdep.c, mn10300-tdep.c,
+ printcmd.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
+ remote-sim.c, remote.c, rs6000-tdep.c, sh-tdep.c, sparcl-tdep.c,
+ stabsread.c, valops.c, valprint.c, config/a29k/tm-a29k.h,
+ config/a29k/tm-vx29k.h, config/arm/tm-arm.h,
+ config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
+ config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
+ config/m32r/tm-m32r.h, config/m68k/tm-m68k.h,
+ config/m88k/tm-m88k.h, config/mips/tm-mips.h, config/pa/tm-hppa.h,
+ config/sparc/tm-sparc.h, config/z8k/tm-z8k.h, mi/mi-cmd-disas.c,
+ mi/mi-main.c: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
+ * gdbarch.sh: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
+ * gdbarch.c: Re-generate.
+
+2002-01-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * thread-db.c (thread_db_new_objfile): Do not enable thread_db
+ for core files.
+
+2002-01-04 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/arm/nbsd.mh (XDEPFILES): Remove ser-tcp.o.
+
+2002-01-04 Andrew Cagney <ac131313@redhat.com>
+
+ * value.h (value_ptr): Delete typedef.
+
+2002-01-04 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * i386nbsd-nat.c: Update copyright years.
+ Include i386-tdep.h.
+
+2002-01-04 Elena Zannoni <ezannoni@redhat.com>
+
+ * stabsread.c: Update copyright years.
+
+ From Debashis Mahata <debashis.mahata@wipro.com>:
+ (read_struct_fields): Deal with Sun C compiler erroneous stab
+ output for structs and unions.
+ Fix PR gdb/269.
+
+2002-01-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * p-valprint.c: Include "cp-abi.h" for baseclass_offset
+ prototype.
+
+2002-01-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * cp-abi.c: Fix whitespace.
+ (baseclass_offset): New wrapper function.
+ * cp-abi.h (baseclass_offset): Add prototype.
+ (struct cp_abi_ops): Add baseclass_offset pointer.
+
+ * valops.c (vb_match): Move to...
+ * gnu-v2-abi.c (vb_match): here.
+ * valops.c (baseclass_offset): Move to...
+ * gnu-v2-abi.c (gnuv2_baseclass_offset): here, and rename.
+
+ * gnu-v3-abi.c (gnuv3_baseclass_offset): New function.
+
+ * gnu-v2-abi.c (init_gnuv2_ops): Initialize baseclass_offset.
+ * gnu-v3-abi.c (init_gnuv3_ops): Likewise.
+ * hpacc-abi.c (init_hpacc_ops): Likewise.
+
+2002-01-04 Daniel Jacobowitz <drow@mvista.com>
+
+ * valops.c (find_overload_match): Accept obj as a
+ reference parameter. Update it before returning.
+ * value.h (find_overload_match): Update prototype.
+ * eval.c (evaluate_subexp_standard): Pass object to
+ find_overload_match by reference.
+
+2002-01-03 Andrew Cagney <ac131313@redhat.com>
+
+ * valarith.c: Replace value_ptr with struct value pointer. Remove
+ register attribute from value declarations.
+ * valops.c: Ditto.
+ * value.h: Ditto.
+ * scm-lang.c (scm_lookup_name): Ditto.
+
+2002-01-03 Michael Snyder <msnyder@redhat.com>
+
+ Abstract the functionality of iterating over mapped memory
+ regions into a general purpose iterator function.
+ * procfs.c (iterate_over_mappings): New function, general purpose
+ iterator for memory sections.
+ (proc_iterate_over_mappings): Reimplement using iterate_over_mappings.
+ (solib_mappings_callback): New function, callback for above.
+ (info_proc_mappings): Reimpliment using iterate_over_mappings.
+ (info_mappings_callback): New function, callback for above.
+
+ * procfs.c (proc_set_watchpoint): Add cast to suppress warning.
+
+2002-01-01 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.h (struct gdbarch_tdep): Add `os_ident' member.
+ * i386-tdep.c: Include "elf-bfd.h".
+ (process_note_abi_tag_sections): New function.
+ (i386_gdbarch_init): Add code to recognize various OS/ABI
+ combinations.
+
+ * maint.c (_initialize_maint_cmds): Add missing \ in
+ string-literal.
+
+For older changes see ChangeLog-2001
+\f
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
--- /dev/null
+/* CLI Definitions for GDB, the GNU debugger.
+
+ Copyright 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 "interps.h"
+#include "wrapper.h"
+#include "event-top.h"
+#include "ui-out.h"
+#include "cli-out.h"
+#include "top.h" /* for "execute_command" */
+#include "gdb_string.h"
+
+struct ui_out *cli_uiout;
+
+/* These are the ui_out and the interpreter for the console interpreter. */
+
+/* Longjmp-safe wrapper for "execute_command" */
+static int do_captured_execute_command (struct ui_out *uiout, void *data);
+static enum gdb_rc safe_execute_command (struct ui_out *uiout, char *command,
+ int from_tty);
+struct captured_execute_command_args
+{
+ char *command;
+ int from_tty;
+};
+
+/* These implement the cli out interpreter: */
+
+static void *
+cli_interpreter_init (void)
+{
+ return NULL;
+}
+
+static int
+cli_interpreter_resume (void *data)
+{
+ /*sync_execution = 1; */
+ gdb_setup_readline ();
+ return 1;
+}
+
+static int
+cli_interpreter_suspend (void *data)
+{
+ gdb_disable_readline ();
+ return 1;
+}
+
+/* Don't display the prompt if we are set quiet. */
+static int
+cli_interpreter_display_prompt_p (void *data)
+{
+ if (interp_quiet_p (NULL))
+ return 0;
+ else
+ return 1;
+}
+
+static int
+cli_interpreter_exec (void *data, const char *command_str)
+{
+ int result;
+ struct ui_file *old_stream;
+
+ /* FIXME: cagney/2003-02-01: Need to const char *propogate
+ safe_execute_command. */
+ char *str = strcpy (alloca (strlen (command_str) + 1), command_str);
+
+ /* gdb_stdout could change between the time cli_uiout was initialized
+ and now. Since we're probably using a different interpreter which has
+ a new ui_file for gdb_stdout, use that one instead of the default.
+
+ It is important that it gets reset everytime, since the user could
+ set gdb to use a different interpreter. */
+ old_stream = cli_out_set_stream (cli_uiout, gdb_stdout);
+ result = safe_execute_command (cli_uiout, str, 1);
+ cli_out_set_stream (cli_uiout, old_stream);
+ return result;
+}
+
+static int
+do_captured_execute_command (struct ui_out *uiout, void *data)
+{
+ struct captured_execute_command_args *args =
+ (struct captured_execute_command_args *) data;
+ execute_command (args->command, args->from_tty);
+ return GDB_RC_OK;
+}
+
+static enum gdb_rc
+safe_execute_command (struct ui_out *uiout, char *command, int from_tty)
+{
+ struct captured_execute_command_args args;
+ args.command = command;
+ args.from_tty = from_tty;
+ return catch_exceptions (uiout, do_captured_execute_command, &args,
+ NULL, RETURN_MASK_ALL);
+}
+
+
+/* standard gdb initialization hook */
+void
+_initialize_cli_interp (void)
+{
+ static const struct interp_procs procs = {
+ cli_interpreter_init, /* init_proc */
+ cli_interpreter_resume, /* resume_proc */
+ cli_interpreter_suspend, /* suspend_proc */
+ cli_interpreter_exec, /* exec_proc */
+ cli_interpreter_display_prompt_p /* prompt_proc_p */
+ };
+ struct interp *cli_interp;
+
+ /* Create a default uiout builder for the CLI. */
+ cli_uiout = cli_out_new (gdb_stdout);
+ cli_interp = interp_new (INTERP_CONSOLE, NULL, cli_uiout, &procs);
+
+ interp_add (cli_interp);
+}
--- /dev/null
+# Target: Linux/MIPS w/ support for 64-bit ABIs
+TDEPFILES= mips-tdep.o mips-linux-tdep.o corelow.o \
+ solib.o solib-svr4.o
+TM_FILE= tm-linux64.h
+
+SIM_OBS = remote-sim.o
+SIM = ../sim/mips/libsim.a
--- /dev/null
+/* Target-dependent definitions for 64-bit GNU/Linux MIPS.
+
+ 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 TM_MIPS64LINUX_H
+#define TM_MIPS64LINUX_H
+
+#include "mips/tm-mips64.h"
+#include "mips/tm-linux.h"
+
+#endif /* TM_MIPS64LINUX_H */
--- /dev/null
+/* Definitions for frame unwinder, for GDB, the GNU debugger.
+
+ 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. */
+
+#include "defs.h"
+#include "frame.h"
+#include "frame-unwind.h"
+#include "gdb_assert.h"
+#include "dummy-frame.h"
+
+static struct gdbarch_data *frame_unwind_data;
+
+struct frame_unwind_table
+{
+ frame_unwind_p_ftype **p;
+ int middle;
+ int nr;
+};
+
+/* Append a predicate to the end of the table. */
+static void
+append_predicate (struct frame_unwind_table *table, frame_unwind_p_ftype *p)
+{
+ table->p = xrealloc (table->p, ((table->nr + 1)
+ * sizeof (frame_unwind_p_ftype *)));
+ table->p[table->nr] = p;
+ table->nr++;
+}
+
+static void *
+frame_unwind_init (struct gdbarch *gdbarch)
+{
+ struct frame_unwind_table *table = XCALLOC (1, struct frame_unwind_table);
+ append_predicate (table, dummy_frame_p);
+ return table;
+}
+
+static void
+frame_unwind_free (struct gdbarch *gdbarch, void *data)
+{
+ struct frame_unwind_table *table =
+ gdbarch_data (gdbarch, frame_unwind_data);
+ xfree (table->p);
+ xfree (table);
+}
+
+void
+frame_unwind_append_predicate (struct gdbarch *gdbarch,
+ frame_unwind_p_ftype *p)
+{
+ struct frame_unwind_table *table =
+ gdbarch_data (gdbarch, frame_unwind_data);
+ if (table == NULL)
+ {
+ /* ULGH, called during architecture initialization. Patch
+ things up. */
+ table = frame_unwind_init (gdbarch);
+ set_gdbarch_data (gdbarch, frame_unwind_data, table);
+ }
+ append_predicate (table, p);
+}
+
+const struct frame_unwind *
+frame_unwind_find_by_pc (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+ int i;
+ struct frame_unwind_table *table =
+ gdbarch_data (gdbarch, frame_unwind_data);
+ /* Seriously old code. Don't even try to use this new mechanism. */
+ if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
+ return trad_frame_unwind;
+ for (i = 0; i < table->nr; i++)
+ {
+ const struct frame_unwind *desc = table->p[i] (pc);
+ if (desc != NULL)
+ return desc;
+ }
+ return trad_frame_unwind;
+}
+
+void
+_initialize_frame_unwind (void)
+{
+ frame_unwind_data = register_gdbarch_data (frame_unwind_init,
+ frame_unwind_free);
+}
--- /dev/null
+/* Definitions for a frame unwinder, for GDB, the GNU debugger.
+
+ 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. */
+
+#if !defined (FRAME_UNWIND_H)
+#define FRAME_UNWIND_H 1
+
+struct frame_info;
+struct frame_id;
+struct frame_unwind;
+struct gdbarch;
+struct regcache;
+
+/* Return the frame unwind methods for the function that contains PC,
+ or NULL if this this unwinder can't handle this frame. */
+
+typedef const struct frame_unwind *(frame_unwind_p_ftype) (CORE_ADDR pc);
+
+/* Add a frame unwinder to the list. The predicates are polled in the
+ order that they are appended. The initial list contains the dummy
+ frame's predicate. */
+
+extern void frame_unwind_append_predicate (struct gdbarch *gdbarch,
+ frame_unwind_p_ftype *p);
+
+/* Iterate through the list of frame unwinders until one returns an
+ implementation. */
+
+extern const struct frame_unwind *frame_unwind_find_by_pc (struct gdbarch
+ *gdbarch,
+ CORE_ADDR pc);
+
+/* Return the location (and possibly value) of REGNUM for the previous
+ (older, up) frame. All parameters except VALUEP can be assumed to
+ be non NULL. When VALUEP is NULL, just the location of the
+ register should be returned.
+
+ UNWIND_CACHE is provided as mechanism for implementing a per-frame
+ local cache. It's initial value being NULL. Memory for that cache
+ should be allocated using frame_obstack_zalloc().
+
+ Register window architectures (eg SPARC) should note that REGNUM
+ identifies the register for the previous frame. For instance, a
+ request for the value of "o1" for the previous frame would be found
+ in the register "i1" in this FRAME. */
+
+typedef void (frame_unwind_reg_ftype) (struct frame_info * frame,
+ void **unwind_cache,
+ int regnum,
+ int *optimized,
+ enum lval_type * lvalp,
+ CORE_ADDR *addrp,
+ int *realnump, void *valuep);
+
+/* Same as for registers above, but return the address at which the
+ calling frame would resume. */
+
+typedef CORE_ADDR (frame_unwind_pc_ftype) (struct frame_info * frame,
+ void **unwind_cache);
+
+/* Same as for registers above, but return the ID of the frame that
+ called this one. */
+
+typedef void (frame_unwind_id_ftype) (struct frame_info * frame,
+ void **unwind_cache,
+ struct frame_id * id);
+
+/* Discard the frame by restoring the registers (in regcache) back to
+ that of the caller. */
+/* NOTE: cagney/2003-01-19: While at present the callers all pop each
+ frame in turn, the implementor should try to code things so that
+ any frame can be popped directly. */
+/* FIXME: cagney/2003-01-19: Since both FRAME and REGCACHE refer to a
+ common register cache, care must be taken when restoring the
+ registers. The `correct fix' is to first first save the registers
+ in a scratch cache, and second write that scratch cache back to to
+ the real register cache. */
+
+typedef void (frame_unwind_pop_ftype) (struct frame_info *frame,
+ void **unwind_cache,
+ struct regcache *regcache);
+
+struct frame_unwind
+{
+ /* Should the frame's type go here? */
+ /* Should an attribute indicating the frame's address-in-block go
+ here? */
+ frame_unwind_pop_ftype *pop;
+ frame_unwind_pc_ftype *pc;
+ frame_unwind_id_ftype *id;
+ frame_unwind_reg_ftype *reg;
+};
+
+#endif
--- /dev/null
+/* Low level interface to ptrace, for GDB when running under Unix.
+
+ 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 INFLOW_H
+#define INFLOW_H
+
+#include "terminal.h" /* For HAVE_TERMIOS et.al. */
+
+#ifdef HAVE_TERMIOS
+#define PROCESS_GROUP_TYPE pid_t
+#endif
+
+#ifdef HAVE_TERMIO
+#define PROCESS_GROUP_TYPE int
+#endif
+
+#ifdef HAVE_SGTTY
+#ifdef SHORT_PGRP
+/* This is only used for the ultra. Does it have pid_t? */
+#define PROCESS_GROUP_TYPE short
+#else
+#define PROCESS_GROUP_TYPE int
+#endif
+#endif /* sgtty */
+
+#ifdef PROCESS_GROUP_TYPE
+/* Process group for us and the inferior. Saved and restored just like
+ {our,inferior}_ttystate. */
+extern PROCESS_GROUP_TYPE our_process_group;
+extern PROCESS_GROUP_TYPE inferior_process_group;
+#endif
+
+#endif
--- /dev/null
+/* Manages interpreters for GDB, the GNU debugger.
+
+ Copyright 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ Written by Jim Ingham <jingham@apple.com> of Apple Computer, 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. */
+
+/* This is just a first cut at separating out the "interpreter"
+ functions of gdb into self-contained modules. There are a couple
+ of open areas that need to be sorted out:
+
+ 1) The interpreter explicitly contains a UI_OUT, and can insert itself
+ into the event loop, but it doesn't explicitly contain hooks for readline.
+ I did this because it seems to me many interpreters won't want to use
+ the readline command interface, and it is probably simpler to just let
+ them take over the input in their resume proc. */
+
+#include "defs.h"
+#include "gdbcmd.h"
+#include "ui-out.h"
+#include "event-loop.h"
+#include "event-top.h"
+#include "interps.h"
+#include "completer.h"
+#include "gdb_string.h"
+#include "gdb-events.h"
+#include "gdb_assert.h"
+#include "top.h" /* For command_loop. */
+
+struct interp
+{
+ /* This is the name in "-i=" and set interpreter. */
+ const char *name;
+
+ /* Interpreters are stored in a linked list, this is the next
+ one... */
+ struct interp *next;
+
+ /* This is a cookie that an instance of the interpreter can use.
+ This is a bit confused right now as the exact initialization
+ sequence for it, and how it relates to the interpreter's uiout
+ object is a bit confused. */
+ void *data;
+
+ /* Has the init_proc been run? */
+ int inited;
+
+ /* This is the ui_out used to collect results for this interpreter.
+ It can be a formatter for stdout, as is the case for the console
+ & mi outputs, or it might be a result formatter. */
+ struct ui_out *interpreter_out;
+
+ const struct interp_procs *procs;
+ int quiet_p;
+};
+
+/* Functions local to this file. */
+static void initialize_interps (void);
+static char **interpreter_completer (char *text, char *word);
+
+/* The magic initialization routine for this module. */
+
+void _initialize_interpreter (void);
+
+/* Variables local to this file: */
+
+static struct interp *interp_list = NULL;
+static struct interp *current_interpreter = NULL;
+
+static int interpreter_initialized = 0;
+
+/* interp_new - This allocates space for a new interpreter,
+ fills the fields from the inputs, and returns a pointer to the
+ interpreter. */
+struct interp *
+interp_new (const char *name, void *data, struct ui_out *uiout,
+ const struct interp_procs *procs)
+{
+ struct interp *new_interp;
+
+ new_interp = XMALLOC (struct interp);
+
+ new_interp->name = xstrdup (name);
+ new_interp->data = data;
+ new_interp->interpreter_out = uiout;
+ new_interp->quiet_p = 0;
+ new_interp->procs = procs;
+ new_interp->inited = 0;
+
+ return new_interp;
+}
+
+/* Add interpreter INTERP to the gdb interpreter list. The
+ interpreter must not have previously been added. */
+void
+interp_add (struct interp *interp)
+{
+ if (!interpreter_initialized)
+ initialize_interps ();
+
+ gdb_assert (interp_lookup (interp->name) == NULL);
+
+ interp->next = interp_list;
+ interp_list = interp;
+}
+
+/* This sets the current interpreter to be INTERP. If INTERP has not
+ been initialized, then this will also run the init proc. If the
+ init proc is successful, return 1, if it fails, set the old
+ interpreter back in place and return 0. If we can't restore the
+ old interpreter, then raise an internal error, since we are in
+ pretty bad shape at this point. */
+int
+interp_set (struct interp *interp)
+{
+ struct interp *old_interp = current_interpreter;
+ int first_time = 0;
+
+
+ char buffer[64];
+
+ if (current_interpreter != NULL)
+ {
+ do_all_continuations ();
+ ui_out_flush (uiout);
+ if (current_interpreter->procs->suspend_proc
+ && !current_interpreter->procs->suspend_proc (current_interpreter->
+ data))
+ {
+ error ("Could not suspend interpreter \"%s\"\n",
+ current_interpreter->name);
+ }
+ }
+ else
+ {
+ first_time = 1;
+ }
+
+ current_interpreter = interp;
+
+ /* We use interpreter_p for the "set interpreter" variable, so we need
+ to make sure we have a malloc'ed copy for the set command to free. */
+ if (interpreter_p != NULL
+ && strcmp (current_interpreter->name, interpreter_p) != 0)
+ {
+ xfree (interpreter_p);
+
+ interpreter_p = xstrdup (current_interpreter->name);
+ }
+
+ uiout = interp->interpreter_out;
+
+ /* Run the init proc. If it fails, try to restore the old interp. */
+
+ if (!interp->inited)
+ {
+ if (interp->procs->init_proc != NULL)
+ {
+ interp->data = interp->procs->init_proc ();
+ }
+ interp->inited = 1;
+ }
+
+ /* Clear out any installed interpreter hooks/event handlers. */
+ clear_interpreter_hooks ();
+
+ if (interp->procs->resume_proc != NULL
+ && (!interp->procs->resume_proc (interp->data)))
+ {
+ if (!interp_set (old_interp))
+ internal_error (__FILE__, __LINE__,
+ "Failed to initialize new interp \"%s\" %s",
+ interp->name, "and could not restore old interp!\n");
+ return 0;
+ }
+
+ /* Finally, put up the new prompt to show that we are indeed here.
+ Also, display_gdb_prompt for the console does some readline magic
+ which is needed for the console interpreter, at least... */
+
+ if (!first_time)
+ {
+ if (!interp_quiet_p (interp))
+ {
+ sprintf (buffer, "Switching to interpreter \"%.24s\".\n",
+ interp->name);
+ ui_out_text (uiout, buffer);
+ }
+ display_gdb_prompt (NULL);
+ }
+
+ return 1;
+}
+
+/* interp_lookup - Looks up the interpreter for NAME. If no such
+ interpreter exists, return NULL, otherwise return a pointer to the
+ interpreter. */
+struct interp *
+interp_lookup (const char *name)
+{
+ struct interp *interp;
+
+ if (name == NULL || strlen (name) == 0)
+ return NULL;
+
+ for (interp = interp_list; interp != NULL; interp = interp->next)
+ {
+ if (strcmp (interp->name, name) == 0)
+ return interp;
+ }
+
+ return NULL;
+}
+
+/* Returns the current interpreter. */
+
+struct ui_out *
+interp_ui_out (struct interp *interp)
+{
+ if (interp != NULL)
+ return interp->interpreter_out;
+
+ return current_interpreter->interpreter_out;
+}
+
+/* Returns true if the current interp is the passed in name. */
+int
+current_interp_named_p (const char *interp_name)
+{
+ if (current_interpreter)
+ return (strcmp (current_interpreter->name, interp_name) == 0);
+
+ return 0;
+}
+
+/* This is called in display_gdb_prompt. If the proc returns a zero
+ value, display_gdb_prompt will return without displaying the
+ prompt. */
+int
+current_interp_display_prompt_p (void)
+{
+ if (current_interpreter == NULL
+ || current_interpreter->procs->prompt_proc_p == NULL)
+ return 0;
+ else
+ return current_interpreter->procs->prompt_proc_p (current_interpreter->
+ data);
+}
+
+/* Run the current command interpreter's main loop. */
+void
+current_interp_command_loop (void)
+{
+ /* Somewhat messy. For the moment prop up all the old ways of
+ selecting the command loop. `command_loop_hook' should be
+ deprecated. */
+ if (command_loop_hook != NULL)
+ command_loop_hook ();
+ else if (current_interpreter != NULL
+ && current_interpreter->procs->command_loop_proc != NULL)
+ current_interpreter->procs->command_loop_proc (current_interpreter->data);
+ else
+ command_loop ();
+}
+
+int
+interp_quiet_p (struct interp *interp)
+{
+ if (interp != NULL)
+ return interp->quiet_p;
+ else
+ return current_interpreter->quiet_p;
+}
+
+int
+interp_set_quiet (struct interp *interp, int quiet)
+{
+ int old_val = interp->quiet_p;
+ interp->quiet_p = quiet;
+ return old_val;
+}
+
+/* interp_exec - This executes COMMAND_STR in the current
+ interpreter. */
+int
+interp_exec_p (struct interp *interp)
+{
+ return interp->procs->exec_proc != NULL;
+}
+
+int
+interp_exec (struct interp *interp, const char *command_str)
+{
+ if (interp->procs->exec_proc != NULL)
+ {
+ return interp->procs->exec_proc (interp->data, command_str);
+ }
+ return 0;
+}
+
+/* A convenience routine that nulls out all the
+ common command hooks. Use it when removing your interpreter in its
+ suspend proc. */
+void
+clear_interpreter_hooks ()
+{
+ init_ui_hook = 0;
+ print_frame_info_listing_hook = 0;
+ /*print_frame_more_info_hook = 0; */
+ query_hook = 0;
+ warning_hook = 0;
+ create_breakpoint_hook = 0;
+ delete_breakpoint_hook = 0;
+ modify_breakpoint_hook = 0;
+ interactive_hook = 0;
+ registers_changed_hook = 0;
+ readline_begin_hook = 0;
+ readline_hook = 0;
+ readline_end_hook = 0;
+ register_changed_hook = 0;
+ memory_changed_hook = 0;
+ context_hook = 0;
+ target_wait_hook = 0;
+ call_command_hook = 0;
+ error_hook = 0;
+ error_begin_hook = 0;
+ command_loop_hook = 0;
+ clear_gdb_event_hooks ();
+}
+
+/* This is a lazy init routine, called the first time
+ the interpreter module is used. I put it here just in case, but I haven't
+ thought of a use for it yet. I will probably bag it soon, since I don't
+ think it will be necessary. */
+static void
+initialize_interps (void)
+{
+ interpreter_initialized = 1;
+ /* Don't know if anything needs to be done here... */
+}
+
+void
+interpreter_exec_cmd (char *args, int from_tty)
+{
+ struct interp *old_interp, *interp_to_use;
+ char **prules = NULL;
+ char **trule = NULL;
+ unsigned int nrules;
+ unsigned int i;
+ int old_quiet, use_quiet;
+
+ prules = buildargv (args);
+ if (prules == NULL)
+ {
+ error ("unable to parse arguments");
+ }
+
+ nrules = 0;
+ if (prules != NULL)
+ {
+ for (trule = prules; *trule != NULL; trule++)
+ {
+ nrules++;
+ }
+ }
+
+ if (nrules < 2)
+ error ("usage: interpreter-exec <interpreter> [ <command> ... ]");
+
+ old_interp = current_interpreter;
+
+ interp_to_use = interp_lookup (prules[0]);
+ if (interp_to_use == NULL)
+ error ("Could not find interpreter \"%s\".", prules[0]);
+
+ /* Temporarily set interpreters quiet */
+ old_quiet = interp_set_quiet (old_interp, 1);
+ use_quiet = interp_set_quiet (interp_to_use, 1);
+
+ if (!interp_set (interp_to_use))
+ error ("Could not switch to interpreter \"%s\".", prules[0]);
+
+ for (i = 1; i < nrules; i++)
+ {
+ if (!interp_exec (interp_to_use, prules[i]))
+ {
+ interp_set (old_interp);
+ interp_set_quiet (interp_to_use, old_quiet);
+ error ("error in command: \"%s\".", prules[i]);
+ break;
+ }
+ }
+
+ interp_set (old_interp);
+ interp_set_quiet (interp_to_use, use_quiet);
+ interp_set_quiet (old_interp, old_quiet);
+}
+
+/* List the possible interpreters which could complete the given text. */
+static char **
+interpreter_completer (char *text, char *word)
+{
+ int alloced = 0;
+ int textlen;
+ int num_matches;
+ char **matches;
+ struct interp *interp;
+
+ /* We expect only a very limited number of interpreters, so just
+ allocate room for all of them. */
+ for (interp = interp_list; interp != NULL; interp = interp->next)
+ ++alloced;
+ matches = (char **) xmalloc (alloced * sizeof (char *));
+
+ num_matches = 0;
+ textlen = strlen (text);
+ for (interp = interp_list; interp != NULL; interp = interp->next)
+ {
+ if (strncmp (interp->name, text, textlen) == 0)
+ {
+ matches[num_matches] =
+ (char *) xmalloc (strlen (word) + strlen (interp->name) + 1);
+ if (word == text)
+ strcpy (matches[num_matches], interp->name);
+ else if (word > text)
+ {
+ /* Return some portion of interp->name */
+ strcpy (matches[num_matches], interp->name + (word - text));
+ }
+ else
+ {
+ /* Return some of text plus interp->name */
+ strncpy (matches[num_matches], word, text - word);
+ matches[num_matches][text - word] = '\0';
+ strcat (matches[num_matches], interp->name);
+ }
+ ++num_matches;
+ }
+ }
+
+ if (num_matches == 0)
+ {
+ xfree (matches);
+ matches = NULL;
+ }
+ else if (num_matches < alloced)
+ {
+ matches = (char **) xrealloc ((char *) matches, ((num_matches + 1)
+ * sizeof (char *)));
+ matches[num_matches] = NULL;
+ }
+
+ return matches;
+}
+
+/* This just adds the "interpreter-exec" command. */
+void
+_initialize_interpreter (void)
+{
+ struct cmd_list_element *c;
+
+ c = add_cmd ("interpreter-exec", class_support,
+ interpreter_exec_cmd,
+ "Execute a command in an interpreter. It takes two arguments:\n\
+The first argument is the name of the interpreter to use.\n\
+The second argument is the command to execute.\n", &cmdlist);
+ set_cmd_completer (c, interpreter_completer);
+}
--- /dev/null
+/* Manages interpreters for GDB, the GNU debugger.
+
+ Copyright 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ Written by Jim Ingham <jingham@apple.com> of Apple Computer, 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 INTERPS_H
+#define INTERPS_H
+
+struct ui_out;
+struct interp;
+
+extern int interp_resume (struct interp *interp);
+extern int interp_suspend (struct interp *interp);
+extern int interp_prompt_p (struct interp *interp);
+extern int interp_exec_p (struct interp *interp);
+extern int interp_exec (struct interp *interp, const char *command);
+extern int interp_quiet_p (struct interp *interp);
+
+typedef void *(interp_init_ftype) (void);
+typedef int (interp_resume_ftype) (void *data);
+typedef int (interp_suspend_ftype) (void *data);
+typedef int (interp_prompt_p_ftype) (void *data);
+typedef int (interp_exec_ftype) (void *data, const char *command);
+typedef int (interp_command_loop_ftype) (void *data);
+
+struct interp_procs
+{
+ interp_init_ftype *init_proc;
+ interp_resume_ftype *resume_proc;
+ interp_suspend_ftype *suspend_proc;
+ interp_exec_ftype *exec_proc;
+ interp_prompt_p_ftype *prompt_proc_p;
+ interp_command_loop_ftype *command_loop_proc;
+};
+
+extern struct interp *interp_new (const char *name, void *data,
+ struct ui_out *uiout,
+ const struct interp_procs *procs);
+extern void interp_add (struct interp *interp);
+extern int interp_set (struct interp *interp);
+extern struct interp *interp_lookup (const char *name);
+extern struct ui_out *interp_ui_out (struct interp *interp);
+
+extern int current_interp_named_p (const char *name);
+extern int current_interp_display_prompt_p (void);
+extern void current_interp_command_loop (void);
+
+extern void clear_interpreter_hooks ();
+
+/* well-known interpreters */
+#define INTERP_CONSOLE "console"
+#define INTERP_MI1 "mi1"
+#define INTERP_MI "mi"
+
+#endif
--- /dev/null
+/* MI Interpreter Definitions and Commands for GDB, the GNU debugger.
+
+ Copyright 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 "gdb_string.h"
+#include "interps.h"
+#include "event-top.h"
+#include "event-loop.h"
+#include "inferior.h"
+#include "ui-out.h"
+#include "top.h"
+
+#include "mi-main.h"
+#include "mi-cmds.h"
+#include "mi-out.h"
+#include "mi-console.h"
+
+struct mi_interp
+{
+ /* MI's output channels */
+ struct ui_file *out;
+ struct ui_file *err;
+ struct ui_file *log;
+ struct ui_file *targ;
+ struct ui_file *event_channel;
+
+ /* This is the interpreter for the mi... */
+ struct interp *mi2_interp;
+ struct interp *mi1_interp;
+ struct interp *mi_interp;
+};
+
+/* These are the interpreter setup, etc. functions for the MI interpreter */
+static void mi_execute_command_wrapper (char *cmd);
+static void mi_command_loop (int mi_version);
+static char *mi_input (char *);
+
+/* These are hooks that we put in place while doing interpreter_exec
+ so we can report interesting things that happened "behind the mi's
+ back" in this command */
+static int mi_interp_query_hook (const char *ctlstr, va_list ap);
+static char *mi_interp_read_one_line_hook (char *prompt, int repeat,
+ char *anno);
+
+static void mi2_command_loop (void);
+static void mi1_command_loop (void);
+
+static void mi_insert_notify_hooks (void);
+static void mi_remove_notify_hooks (void);
+
+static void *
+mi_interpreter_init (void)
+{
+ struct mi_interp *mi = XMALLOC (struct mi_interp);
+
+ /* Why is this a part of the mi architecture? */
+
+ mi_setup_architecture_data ();
+
+ /* HACK: We need to force stdout/stderr to point at the console. This avoids
+ any potential side effects caused by legacy code that is still
+ using the TUI / fputs_unfiltered_hook. So we set up output channels for
+ this now, and swap them in when we are run. */
+
+ raw_stdout = stdio_fileopen (stdout);
+
+ /* Create MI channels */
+ mi->out = mi_console_file_new (raw_stdout, "~", '"');
+ mi->err = mi_console_file_new (raw_stdout, "&", '"');
+ mi->log = mi->err;
+ mi->targ = mi_console_file_new (raw_stdout, "@", '"');
+ mi->event_channel = mi_console_file_new (raw_stdout, "=", 0);
+
+ return mi;
+}
+
+static int
+mi_interpreter_resume (void *data)
+{
+ struct mi_interp *mi = data;
+ /* As per hack note in mi_interpreter_init, swap in the output channels... */
+
+ gdb_setup_readline ();
+
+ if (event_loop_p)
+ {
+ /* These overwrite some of the initialization done in
+ _intialize_event_loop. */
+ call_readline = gdb_readline2;
+ input_handler = mi_execute_command_wrapper;
+ add_file_handler (input_fd, stdin_event_handler, 0);
+ async_command_editing_p = 0;
+ /* FIXME: This is a total hack for now. PB's use of the MI implicitly
+ relies on a bug in the async support which allows asynchronous
+ commands to leak through the commmand loop. The bug involves
+ (but is not limited to) the fact that sync_execution was
+ erroneously initialized to 0. Duplicate by initializing it
+ thus here... */
+ sync_execution = 0;
+ }
+
+ gdb_stdout = mi->out;
+ /* Route error and log output through the MI */
+ gdb_stderr = mi->err;
+ gdb_stdlog = mi->log;
+ /* Route target output through the MI. */
+ gdb_stdtarg = mi->targ;
+
+ /* Replace all the hooks that we know about. There really needs to
+ be a better way of doing this... */
+ clear_interpreter_hooks ();
+
+ show_load_progress = mi_load_progress;
+
+ /* If we're _the_ interpreter, take control. */
+ if (current_interp_named_p (INTERP_MI1))
+ command_loop_hook = mi1_command_loop;
+ else if (current_interp_named_p (INTERP_MI))
+ command_loop_hook = mi2_command_loop;
+ else
+ return 0;
+
+ return 1;
+}
+
+static int
+mi_interpreter_suspend (void *data)
+{
+ gdb_disable_readline ();
+ return 1;
+}
+
+static int
+mi_interpreter_exec (void *data, const char *command)
+{
+ char *tmp = alloca (strlen (command) + 1);
+ strcpy (tmp, command);
+ mi_execute_command_wrapper (tmp);
+ return 1;
+}
+
+/* Never display the default gdb prompt in mi case. */
+static int
+mi_interpreter_prompt_p (void *data)
+{
+ return 0;
+}
+
+static void
+mi_interpreter_exec_continuation (struct continuation_arg *arg)
+{
+ bpstat_do_actions (&stop_bpstat);
+ if (!target_executing)
+ {
+ fputs_unfiltered ("*stopped", raw_stdout);
+ mi_out_put (uiout, raw_stdout);
+ fputs_unfiltered ("\n", raw_stdout);
+ fputs_unfiltered ("(gdb) \n", raw_stdout);
+ gdb_flush (raw_stdout);
+ do_exec_cleanups (ALL_CLEANUPS);
+ }
+ else if (target_can_async_p ())
+ {
+ add_continuation (mi_interpreter_exec_continuation, NULL);
+ }
+}
+
+enum mi_cmd_result
+mi_cmd_interpreter_exec (char *command, char **argv, int argc)
+{
+ struct interp *interp_to_use;
+ enum mi_cmd_result result = MI_CMD_DONE;
+ int i;
+ struct interp_procs *procs;
+
+ if (argc < 2)
+ {
+ xasprintf (&mi_error_message,
+ "mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command");
+ return MI_CMD_ERROR;
+ }
+
+ interp_to_use = interp_lookup (argv[0]);
+ if (interp_to_use == NULL)
+ {
+ xasprintf (&mi_error_message,
+ "mi_cmd_interpreter_exec: could not find interpreter \"%s\"",
+ argv[0]);
+ return MI_CMD_ERROR;
+ }
+
+ if (!interp_exec_p (interp_to_use))
+ {
+ xasprintf (&mi_error_message,
+ "mi_cmd_interpreter_exec: interpreter \"%s\" does not support command execution",
+ argv[0]);
+ return MI_CMD_ERROR;
+ }
+
+ /* Insert the MI out hooks, making sure to also call the interpreter's hooks
+ if it has any. */
+ /* KRS: We shouldn't need this... Events should be installed and they should
+ just ALWAYS fire something out down the MI channel... */
+ mi_insert_notify_hooks ();
+
+ /* Now run the code... */
+
+ for (i = 1; i < argc; i++)
+ {
+ char *buff = NULL;
+ /* Do this in a cleaner way... We want to force execution to be
+ asynchronous for commands that run the target. */
+ if (target_can_async_p () && (strcmp (argv[0], "console") == 0))
+ {
+ int len = strlen (argv[i]);
+ buff = xmalloc (len + 2);
+ memcpy (buff, argv[i], len);
+ buff[len] = '&';
+ buff[len + 1] = '\0';
+ }
+
+ /* We had to set sync_execution = 0 for the mi (well really for Project
+ Builder's use of the mi - particularly so interrupting would work.
+ But for console commands to work, we need to initialize it to 1 -
+ since that is what the cli expects - before running the command,
+ and then set it back to 0 when we are done. */
+ sync_execution = 1;
+ if (interp_exec (interp_to_use, argv[i]) < 0)
+ {
+ mi_error_last_message ();
+ result = MI_CMD_ERROR;
+ break;
+ }
+ xfree (buff);
+ do_exec_error_cleanups (ALL_CLEANUPS);
+ sync_execution = 0;
+ }
+
+ mi_remove_notify_hooks ();
+
+ /* Okay, now let's see if the command set the inferior going...
+ Tricky point - have to do this AFTER resetting the interpreter, since
+ changing the interpreter will clear out all the continuations for
+ that interpreter... */
+
+ if (target_can_async_p () && target_executing)
+ {
+ fputs_unfiltered ("^running\n", raw_stdout);
+ add_continuation (mi_interpreter_exec_continuation, NULL);
+ }
+
+ return result;
+}
+
+/*
+ * mi_insert_notify_hooks - This inserts a number of hooks that are meant to produce
+ * async-notify ("=") MI messages while running commands in another interpreter
+ * using mi_interpreter_exec. The canonical use for this is to allow access to
+ * the gdb CLI interpreter from within the MI, while still producing MI style output
+ * when actions in the CLI command change gdb's state.
+*/
+
+static void
+mi_insert_notify_hooks (void)
+{
+ query_hook = mi_interp_query_hook;
+}
+
+static void
+mi_remove_notify_hooks ()
+{
+ query_hook = NULL;
+}
+
+static int
+mi_interp_query_hook (const char *ctlstr, va_list ap)
+{
+ return 1;
+}
+
+static char *
+mi_interp_read_one_line_hook (char *prompt, int repeat, char *anno)
+{
+ static char buff[256];
+ printf_unfiltered ("=read-one-line,prompt=\"%s\"\n", prompt);
+ gdb_flush (gdb_stdout);
+ (void) fgets (buff, sizeof (buff), stdin);
+ buff[(strlen (buff) - 1)] = 0;
+ return buff;
+}
+
+static void
+output_control_change_notification (char *notification)
+{
+ printf_unfiltered ("^");
+ printf_unfiltered ("%s\n", notification);
+ gdb_flush (gdb_stdout);
+}
+
+static void
+mi_execute_command_wrapper (char *cmd)
+{
+ mi_execute_command (cmd, stdin == instream);
+}
+
+static void
+mi1_command_loop (void)
+{
+ mi_command_loop (1);
+}
+
+static void
+mi2_command_loop (void)
+{
+ mi_command_loop (2);
+}
+
+static void
+mi_command_loop (int mi_version)
+{
+#if 0
+ /* HACK: Force stdout/stderr to point at the console. This avoids
+ any potential side effects caused by legacy code that is still
+ using the TUI / fputs_unfiltered_hook */
+ raw_stdout = stdio_fileopen (stdout);
+ /* Route normal output through the MIx */
+ gdb_stdout = mi_console_file_new (raw_stdout, "~", '"');
+ /* Route error and log output through the MI */
+ gdb_stderr = mi_console_file_new (raw_stdout, "&", '"');
+ gdb_stdlog = gdb_stderr;
+ /* Route target output through the MI. */
+ gdb_stdtarg = mi_console_file_new (raw_stdout, "@", '"');
+ /* HACK: Poke the ui_out table directly. Should we be creating a
+ mi_out object wired up to the above gdb_stdout / gdb_stderr? */
+ uiout = mi_out_new (mi_version);
+ /* HACK: Override any other interpreter hooks. We need to create a
+ real event table and pass in that. */
+ init_ui_hook = 0;
+ /* command_loop_hook = 0; */
+ print_frame_info_listing_hook = 0;
+ query_hook = 0;
+ warning_hook = 0;
+ create_breakpoint_hook = 0;
+ delete_breakpoint_hook = 0;
+ modify_breakpoint_hook = 0;
+ interactive_hook = 0;
+ registers_changed_hook = 0;
+ readline_begin_hook = 0;
+ readline_hook = 0;
+ readline_end_hook = 0;
+ register_changed_hook = 0;
+ memory_changed_hook = 0;
+ context_hook = 0;
+ target_wait_hook = 0;
+ call_command_hook = 0;
+ error_hook = 0;
+ error_begin_hook = 0;
+ show_load_progress = mi_load_progress;
+#endif
+ /* Turn off 8 bit strings in quoted output. Any character with the
+ high bit set is printed using C's octal format. */
+ sevenbit_strings = 1;
+ /* Tell the world that we're alive */
+ fputs_unfiltered ("(gdb) \n", raw_stdout);
+ gdb_flush (raw_stdout);
+ if (!event_loop_p)
+ simplified_command_loop (mi_input, mi_execute_command);
+ else
+ start_event_loop ();
+}
+
+static char *
+mi_input (char *buf)
+{
+ return gdb_readline (NULL);
+}
+
+void
+_initialize_mi_interp (void)
+{
+ static const struct interp_procs procs =
+ {
+ mi_interpreter_init, /* init_proc */
+ mi_interpreter_resume, /* resume_proc */
+ mi_interpreter_suspend, /* suspend_proc */
+ mi_interpreter_exec, /* exec_proc */
+ mi_interpreter_prompt_p /* prompt_proc_p */
+ };
+
+ /* Create MI1 interpreter */
+ interp_add (interp_new (INTERP_MI1, NULL, mi_out_new (1), &procs));
+
+ interp_add (interp_new (INTERP_MI, NULL, mi_out_new (3), &procs));
+}
--- /dev/null
+/* MI Internal Functions for GDB, the GNU debugger.
+
+ 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 MI_MAIN_H
+#define MI_MAIN_H
+
+extern void mi_setup_architecture_data (void);
+
+extern void mi_load_progress (const char *section_name,
+ unsigned long sent_so_far,
+ unsigned long total_section,
+ unsigned long total_sent,
+ unsigned long grand_total);
+#endif
+
--- /dev/null
+/* Code dealing with register 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 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 "sentinel-frame.h"
+#include "inferior.h"
+#include "frame-unwind.h"
+
+struct frame_unwind_cache
+{
+ struct regcache *regcache;
+};
+
+void *
+sentinel_frame_cache (struct regcache *regcache)
+{
+ struct frame_unwind_cache *cache =
+ FRAME_OBSTACK_ZALLOC (struct frame_unwind_cache);
+ cache->regcache = regcache;
+ return cache;
+}
+
+/* Here the register value is taken direct from the register cache. */
+
+void
+sentinel_frame_register_unwind (struct frame_info *frame,
+ void **unwind_cache,
+ int regnum, int *optimized,
+ enum lval_type *lvalp, CORE_ADDR *addrp,
+ int *realnum, void *bufferp)
+{
+ struct frame_unwind_cache *cache = *unwind_cache;
+ /* Describe the register's location. A reg-frame maps all registers
+ onto the corresponding hardware register. */
+ *optimized = 0;
+ *lvalp = lval_register;
+ *addrp = REGISTER_BYTE (regnum);
+ *realnum = regnum;
+
+ /* If needed, find and return the value of the register. */
+ if (bufferp != NULL)
+ {
+ /* Return the actual value. */
+ /* Use the regcache_cooked_read() method so that it, on the fly,
+ constructs either a raw or pseudo register from the raw
+ register cache. */
+ regcache_cooked_read (cache->regcache, regnum, bufferp);
+ }
+}
+
+CORE_ADDR
+sentinel_frame_pc_unwind (struct frame_info *frame,
+ void **cache)
+{
+ /* FIXME: cagney/2003-01-08: This should be using a per-architecture
+ method that doesn't suffer from DECR_PC_AFTER_BREAK problems.
+ Such a method would take unwind_cache, regcache and stop reason
+ parameters. */
+ return read_pc ();
+}
+
+void
+sentinel_frame_id_unwind (struct frame_info *frame,
+ void **cache,
+ struct frame_id *id)
+{
+ /* FIXME: cagney/2003-01-08: This should be using a per-architecture
+ method that doesn't suffer from DECR_PC_AFTER_BREAK problems.
+ Such a method would take unwind_cache, regcache and stop reason
+ parameters. */
+ id->base = read_fp ();
+ id->pc = read_pc ();
+}
+
+static void
+sentinel_frame_pop (struct frame_info *frame,
+ void **cache,
+ struct regcache *regcache)
+{
+ internal_error (__FILE__, __LINE__, "Function sentinal_frame_pop called");
+}
+
+const struct frame_unwind sentinel_frame_unwinder =
+{
+ sentinel_frame_pop,
+ sentinel_frame_pc_unwind,
+ sentinel_frame_id_unwind,
+ sentinel_frame_register_unwind
+};
+
+const struct frame_unwind *const sentinel_frame_unwind = &sentinel_frame_unwinder;
--- /dev/null
+/* Code dealing with register stack frames, for GDB, the GNU debugger.
+
+ 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. */
+
+#if !defined (SENTINEL_FRAME_H)
+#define SENTINEL_FRAME_H 1
+
+struct frame_unwind;
+struct regcache;
+
+/* Implement the sentinel frame. The sentinel frame terminates the
+ inner most end of the frame chain. If unwound, it returns the
+ information need to construct an inner-most frame. */
+
+/* Pump prime the sentinel frame's cache. Since this needs the
+ REGCACHE provide that here. */
+
+extern void *sentinel_frame_cache (struct regcache *regcache);
+
+/* At present there is only one type of sentinel frame. */
+
+extern const struct frame_unwind *const sentinel_frame_unwind;
+
+#endif /* !defined (SENTINEL_FRAME_H) */
--- /dev/null
+/* config.hin. Generated automatically from configure.in by autoheader. */
+
+/* Define if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
--- /dev/null
+
+static int x;
+
+int foo (int a)
+{
+ int b = a + 10;
+ return b;
+}
+
+int bar (int y)
+{
+ int z = y + 20;
+ return z;
+}
+
+void func()
+{
+ x = x + 5;
+ func2 ();
+}
+
+int func2 ()
+{
+ x = 6;
+}
+
+int func3 ()
+{
+ x = 4;
+}
+
+void marker1 ()
+{
+}
+
+int
+main ()
+{
+ int result;
+ int b, c;
+ c = 5;
+ b = 3; /* advance this location */
+
+ func (c); /* stop here after leaving current frame */
+ marker1 (); /* stop here after leaving current frame */
+ func3 (); /* break here */
+ result = bar (b + foo (c));
+ return 0; /* advance malformed */
+}
+
--- /dev/null
+# Copyright 2003 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
+
+# advance.exp -- Expect script to test 'advance' in gdb
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set testfile advance
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+remote_exec build "rm -f ${binfile}"
+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."
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+ fail "Can't run to main"
+ return 0
+}
+
+# Verify that "advance <location>" works. (This is really just syntactic
+# sugar for "tbreak <location>; continue".)
+#
+gdb_test "advance [gdb_get_line_number "advance this location"]" \
+ "main .* at .*:.*b = 3.*advance this location.*" \
+ "advance line number"
+
+# Verify that a malformed "advance" is gracefully caught.
+#
+gdb_test "advance [gdb_get_line_number "advance malformed"] then stop" \
+ "Junk at end of arguments." "malformed advance"
+
+# Verify that "advance <funcname>" works.
+#
+gdb_test "advance func" \
+ "func.*at.*x = x \\+ 5." \
+ "advance func"
+
+# Verify that "advance <funcname>" when funcname is NOT called by the current
+# frame, stops at the end of the current frame.
+#
+# gdb can legitimately stop on either the current line or the next line,
+# depending on whether the machine instruction for 'call' on the current
+# line has more instructions after it or not.
+#
+gdb_test "advance func3" \
+ "(in main|).*(func \\(c\\)|marker1 \\(\\)).*stop here after leaving current frame..."\
+ "advance function not called by current frame"
+
+# break at main again
+#
+gdb_test "break [gdb_get_line_number "break here"]" \
+ ".*Breakpoint.* at .*" \
+ "set breakpoint at call to func3"
+gdb_test "continue" \
+ ".*Breakpoint ${decimal}, main.*func3.*break here.*" \
+ "continue to call to func3 in main"
+
+# Verify that "advance <funcname>" when funcname is called as parameter to
+# another function works.
+#
+gdb_test "advance foo" \
+ "foo \\(a=5\\).*int b = a \\+ 10;"\
+ "advance function called as param"
+
+# Verify that we get an error if we use 'advance' w/o argument
+#
+gdb_test "advance" \
+ "Argument required \\(a location\\)."\
+ "advance with no argument"
+
--- /dev/null
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+ int i = 0;
+ printf ("%d\n", argc);
+ while (i < argc)
+ printf ("%s\n", argv[i++]);
+
+ return 0;
+}
--- /dev/null
+# Copyright 2003 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
+
+# This is a test for the gdb invocation option --args.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+
+global GDBFLAGS
+
+# Skip test if target does not support argument passing.
+if [target_info exists noargs] {
+ return;
+}
+
+set testfile "args"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+#
+# Test that the --args are processed correctly.
+#
+set old_gdbflags $GDBFLAGS
+set GDBFLAGS "--args $binfile 1 3"
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_test "run" \
+ "Starting program.*args 1 3.*3\r\n.*args\r\n1\r\n3.*Program exited normally." \
+ "correct args printed"
+
+#
+# Test that the --args are processed correctly even if one of them is empty.
+#
+set GDBFLAGS "--args $binfile 1 '' 3"
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_test "run" \
+ "Starting program.*args 1 \\\\'\\\\' 3.*4\r\n.*args\r\n1\r\n''\r\n3.*Program exited normally." \
+ "correct args printed, one empty"
+
+#
+# try with 2 empty args
+#
+set GDBFLAGS "--args $binfile 1 '' '' 3"
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_test "run" \
+ "Starting program.*args 1 \\\\'\\\\' \\\\'\\\\' 3.*5\r\n.*args\r\n1\r\n''\r\n''\r\n3.*Program exited normally." \
+ "correct args printed, two empty"
+
+set GDBFLAGS $old_gdbflags
+
--- /dev/null
+# Copyright 2003 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
+
+# Test running a program from the GDB prompt and then detaching it.
+# NOTE: This test could be much more thorough.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+# Only GNU/Linux is known to support this.
+if { ! [istarget "*-*-linux*"] } {
+ return 0
+}
+
+# Are we on a target board?
+if [is_remote target] then {
+ return 0
+}
+
+set testfile "attach"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+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."
+}
+
+proc do_detach_tests {} {
+ global srcdir
+ global binfile
+ global subdir
+ global pass
+
+ runto_main
+ gdb_test "set should_exit = 1" "" "set should_exit, $pass"
+ gdb_test "detach" "Detaching from program: .*$binfile, .*" "detach, $pass"
+}
+
+# Start with a fresh gdb
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+global pass
+set pass "one"
+do_detach_tests
+
+# Wait a moment and do it again.
+exec sleep 1
+
+set pass "two"
+do_detach_tests
+
+return 0
--- /dev/null
+# Copyright 2003 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@gnu.org
+
+# This file is part of the gdb testsuite.
+
+if $tracelevel {
+ strace $tracelevel
+}
+
+#
+# Test floating-point related functionality.
+#
+
+set prms_id 0
+set bug_id 0
+
+set testfile "run"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+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."
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# Set it up at a breakpoint so we have its registers.
+
+if ![runto_main] then {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+# Test "info float".
+
+if { [istarget "arm*-*-*"] || \
+ [istarget "xscale*-*-*"] || \
+ [istarget "strongarm*-*-*"] } then {
+ gdb_test "info float" "Software FPU type.*mask:.*flags:.*" "info float"
+} elseif [istarget "i?86-*-*"] then {
+ gdb_test "info float" "R7:.*Status Word:.*Opcode:.*" "info float"
+} else {
+ gdb_test "info float" "No floating.point info available for this processor." "info float"
+}
--- /dev/null
+# Copyright 2003 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
+
+# This file is part of the gdb testsuite
+
+# This is intended to be a repository for tests that partial symbols
+# are working properly. If multiple tests are added, make sure that
+# you exit and restart GDB between tests.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+#
+# test running programs
+#
+
+set prms_id 0
+set bug_id 0
+
+if { [skip_cplus_tests] } { continue }
+
+set testfile "psymtab"
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [gdb_compile "${srcdir}/${subdir}/${testfile}1.c" "${testfile}1.o" object {debug}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${testfile}2.c" "${testfile}2.o" object {debug}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${testfile}1.o ${testfile}2.o" ${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
+gdb_load ${binfile}
+
+# This test is looking for a bug that manifested itself when GDB was
+# looking for a partial symbol such that there wasn't such a partial
+# symbol in the psymtab, but such that the last psym in the psymtab
+# had the right name but the wrong namespace. Here, searching for
+# zzz::dummy currently causes a search for 'zzz' in STRUCT_NAMESPACE
+# without a preceding search for 'zzz' in VAR_NAMESPACE.
+
+gdb_test "break zzz::dummy" "Can't find member of namespace, class, struct, or union named \"zzz::dummy\"\r\n.*" "Don't search past end of psymtab."
--- /dev/null
+int main ()
+{
+ return 0;
+}
--- /dev/null
+extern int zzz;
+
+int zzz = 123;
--- /dev/null
+# Copyright 2003 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
+
+# until.exp -- Expect script to test 'until' in gdb
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set testfile break
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+remote_exec build "rm -f ${binfile}"
+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."
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+ fail "Can't run to main"
+ return 0
+}
+
+# Verify that "until <location>" works. (This is really just syntactic
+# sugar for "tbreak <location>; continue".)
+#
+gdb_test "until 79" \
+ "main .* at .*:79.*" \
+ "until line number"
+
+# Verify that a malformed "advance" is gracefully caught.
+#
+gdb_test "until 80 then stop" \
+ "Junk at end of arguments." "malformed until"
+
+# Rerun up to factorial, outer invocation
+if { ![runto factorial] } then { gdb_suppress_tests; }
+delete_breakpoints
+
+# At this point, 'until' should continue the inferior up to when all the
+# inner invocations of factorial() are completed and we are back at this
+# frame.
+#
+gdb_test "until 99" \
+ "factorial.*value=720.*at.*${srcfile}:99.*return \\(value\\)." \
+ "until factorial, recursive function"
+
+# Run to a function called by main
+#
+if { ![runto marker2] } then { gdb_suppress_tests; }
+delete_breakpoints
+
+# Now issue an until with another function, not called by the current
+# frame, as argument. This should not work, i.e. the program should
+# stop at main, the caller, where we put the 'guard' breakpoint.
+#
+gdb_test "until marker3" \
+ "($hex in |)main.*argc.*argv.*envp.*at.*${srcfile}:(82.*marker2 \\(43\\)|83.*marker3 \\(.stack., .trace.\\))." \
+ "until func, not called by current frame"
+
--- /dev/null
+class myClass
+{
+ public:
+ myClass() {};
+ ~myClass() {};
+ void performUnblocking( short int cell_index );
+ void performBlocking( int cell_index );
+};
+
+void myClass::performUnblocking( short int cell_index ) {}
+
+void myClass::performBlocking( int cell_index ) {}
+
+int main ()
+{
+ myClass mc;
+ mc.performBlocking (0);
+ mc.performUnblocking (0);
+}
+
--- /dev/null
+# Copyright 2003 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.
+
+# Tests for PR gdb/1023.
+# 2003-02-03 Michael Chastain <mec@shout.net>
+
+# This file is part of the gdb testsuite.
+
+if $tracelevel then {
+ strace $tracelevel
+ }
+
+if { [skip_cplus_tests] } { continue }
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set testfile "pr-1023"
+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 automatically fail."
+}
+
+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
+}
+
+send_gdb "break myClass::performBlocking\n"
+gdb_expect {
+ -re "Breakpoint $decimal at $hex: file .*$srcfile, line 12.*$gdb_prompt $" {
+ pass "break myClass::performBlocking"
+ }
+ -re "the class myClass does not have any method named performBlocking.*$gdb_prompt $" {
+ # fails with gcc 2.95.3 -gstabs+, native i686-pc-linux-gnu
+ # -- chastain 2003-02-03
+ kfail "gdb/1023" "break myClass::performBlocking"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "break myClass::performBlocking"
+ }
+ timeout {
+ fail "break myClass::performBlocking (timeout)"
+ }
+}
+
+gdb_test \
+ "break myClass::performUnblocking" \
+ "Breakpoint $decimal at $hex: file .*$srcfile, line 10.*"
+
+gdb_exit
+return 0
--- /dev/null
+# Copyright 2002, 2003 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
+
+# This file tests that GDB's console can be accessed via the MI.
+# Specifically, we are testing the "interpreter-exec" command and that
+# the commands that are executed via this command are properly executed.
+# Console commands executed via MI should use MI output wrappers, MI event
+# handlers, etc.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+gdb_exit
+if [mi_gdb_start] {
+ continue
+}
+
+set testfile "basics"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+mi_gdb_reinitialize_dir $srcdir/$subdir
+
+mi_gdb_test "-interpreter-exec" \
+ {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+ "-interpreter-exec with no arguments"
+
+mi_gdb_test "-interpreter-exec console" \
+ {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+ "-interpreter-exec with one argument"
+
+mi_gdb_test "-interpreter-exec bogus command" \
+ {\^error,msg="mi_cmd_interpreter_exec: could not find interpreter \\\"bogus\\\""} \
+ "-interpreter-exec with bogus interpreter"
+
+set msg {Undefined command: \\\"bogus\\\"\. Try \\\"help\\\"\.}
+mi_gdb_test "-interpreter-exec console bogus" \
+ "&\\\"$msg\\\\n\\\".*\\^error,msg=\\\"$msg\\\".*" \
+ "-interpreter-exec console bogus"
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-interpreter-exec console \"file $binfile\"" \
+# {(=.*)+\^done} \
+# "-interpreter-exec console \"file \$binfile\""
+mi_gdb_test "-interpreter-exec console \"file $binfile\"" \
+ {\^done} \
+ "-interpreter-exec console \"file \$binfile\""
+
+mi_run_to_main
+
+mi_gdb_test "-interpreter-exec console \"set args foobar\"" \
+ {\^done} \
+ "-interpreter-exec console \"set args foobar\""
+
+mi_gdb_test "-interpreter-exec console \"show args\"" \
+ {\~"Argument list to give program being debugged when it is started is \\\"foobar\\\"\.\\n".*\^done} \
+ "-interpreter-exec console \"show args\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-interpreter-exec console \"break callee4\"" \
+# {(&.*)*.*~"Breakpoint 2 at.*\\n".*=breakpoint-create,number="2".*\^done} \
+# "-interpreter-exec console \"break callee4\""
+mi_gdb_test "-interpreter-exec console \"break callee4\"" \
+ {(&.*)*.*~"Breakpoint 2 at.*\\n".*\^done} \
+ "-interpreter-exec console \"break callee4\""
+
+mi_gdb_test "-interpreter-exec console \"info break\"" \
+ {\~"Num[ \t]*Type[ \t]*Disp[ \t]*Enb[ \t]*Address[ \t]*What\\n".*~"2[ \t]*breakpoint[ \t]*keep[ \t]*y[ \t]*0x[0-9A-Fa-f]+[ \t]*in callee4 at .*basics.c:[0-9]+\\n".*\^done} \
+ "-interpreter-exec console \"info break\""
+
+mi_gdb_test "-interpreter-exec console \"set listsize 1\"" \
+ {\^done} \
+ "-interpreter-exec console \"set listsize 1\""
+
+mi_gdb_test "-interpreter-exec console \"list\"" \
+ {.*\~"32[ \t(\\t)]*callee1.*\\n".*\^done} \
+ "-interpreter-exec console \"list\""
+
+# # NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-exec-continue" \
+# {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",line="8"\}} \
+# "-interpreter-exec console \"continue to callee4\""
+send_gdb "999-exec-continue\n"
+gdb_expect {
+ -re "999\\^running\[\r\n\]+$mi_gdb_prompt.*999\\*stopped,reason=.breakpoint-hit.*$mi_gdb_prompt$" {
+ pass "continue to callee4"
+ }
+ timeout {
+ fail "continue to callee4 (timeout)"
+ }
+}
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "100-interpreter-exec console \"delete 2\"" \
+# {.*=breakpoint-delete,number=\"2\".*\^done} \
+# "-interpreter-exec console \"delete 2\""
+mi_gdb_test "100-interpreter-exec console \"delete 2\"" \
+ {100\^done} \
+ "-interpreter-exec console \"delete 2\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "200-interpreter-exec console \"up\"" \
+# {.*=selected-frame-level-changed,level="1".*\^done} \
+# "-interpreter-exec console \"up\""
+mi_gdb_test "200-interpreter-exec console \"up\"" \
+ {200\^done} \
+ "-interpreter-exec console \"up\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "300-interpreter-exec console \"down\"" \
+# {.*=selected-frame-level-changed,level="0".*\^done} \
+# "-interpreter-exec console \"down\""
+mi_gdb_test "300-interpreter-exec console \"down\"" \
+ {300\^done} \
+ "-interpreter-exec console \"down\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-interpreter-exec console \"frame 2\"" \
+# {.*=selected-frame-level-changed,level="2".*\^done} \
+# "-interpreter-exec console \"frame 2\""
+mi_gdb_test "400-interpreter-exec console \"frame 2\"" \
+ {400\^done} \
+ "-interpreter-exec console \"frame 2\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-stack-select-frame 0" \
+# {.*=selected-frame-level-changed,level="0".*\^done} \
+# "-stack-select-frame 0"
+mi_gdb_test "500-stack-select-frame 0" \
+ {500\^done} \
+ "-stack-select-frame 0"
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-break-insert -t basics.c:35" \
+# {.*=breakpoint-create,number="3".*\^done} \
+# "-break-insert -t basics.c:35"
+mi_gdb_test "600-break-insert -t basics.c:35" \
+ {600\^done,bkpt=.number="3",type="breakpoint".*\}} \
+ "-break-insert -t basics.c:35"
+
+# mi_gdb_test "-exec-continue" \
+# {.*\*stopped.*,file=".*basics.c",line="35"\}} \
+# "-exec-continue to line 35"
+send_gdb "700-exec-continue\n"
+gdb_expect {
+ -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.35.*$mi_gdb_prompt$" {
+ pass "-exec-continue to line 35"
+ }
+ timeout {
+ fail "-exec-continue to line 35"
+ }
+}
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-exec-next" \
+# {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="37"\}} \
+# "-exec-next to line 37"
+send_gdb "800-exec-next\n"
+gdb_expect {
+ -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.37.*$mi_gdb_prompt$" {
+ pass "-exec-next to line 37"
+ }
+ timeout {
+ fail "-exec-next to line 37"
+ }
+}
+
+mi_gdb_test "-interpreter-exec console \"list\"" \
+ {\~"37[ \t(\\t)]*return 0;\\n".*\^done} \
+ "-interpreter-exec console \"list\" at basics.c:37"
+
+mi_gdb_test "-interpreter-exec console \"help set args\"" \
+ {\~"Set argument list to give program being debugged when it is started\.\\nFollow this command with any number of args, to be passed to the program\.".*\^done} \
+ "-interpreter-exec console \"help set args\""
+
+# NOTE: cagney/2003-02-03: Not yet.
+# mi_gdb_test "-interpreter-exec console \"set \$pc=0x0\"" \
+# {.*=target-changed.*\^done} \
+# "-interpreter-exec console \"set \$pc=0x0\""
+mi_gdb_test "888-interpreter-exec console \"set \$pc=0x0\"" \
+ {888\^done} \
+ "-interpreter-exec console \"set \$pc=0x0\""
+
+#mi_gdb_test "-interpreter-exec console \"\"" \
+ {} \
+ "-interpreter-exec console \"\""
+
+mi_gdb_exit
+return 0
--- /dev/null
+#include <signal.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+void foo (void);
+void bar (void);
+
+void subroutine (int);
+void handler (int);
+void have_a_very_merry_interrupt (void);
+
+main ()
+{
+ puts ("Starting up");
+
+ foo (); /* Put a breakpoint on foo() and call it to see a dummy frame */
+
+
+ have_a_very_merry_interrupt ();
+
+ puts ("Shutting down");
+}
+
+void
+foo (void)
+{
+ puts ("hi in foo");
+}
+
+void
+bar (void)
+{
+ char *nuller = 0;
+
+ puts ("hi in bar");
+
+ *nuller = 'a'; /* try to cause a segfault */
+}
+
+void
+handler (int sig)
+{
+ subroutine (sig);
+}
+
+/* The first statement in subroutine () is a place for a breakpoint.
+ Without it, the breakpoint is put on the while comparison and will
+ be hit at each iteration. */
+
+void
+subroutine (int in)
+{
+ int count = in;
+ while (count < 100)
+ count++;
+}
+
+void
+have_a_very_merry_interrupt (void)
+{
+ puts ("Waiting to get a signal");
+ signal (SIGALRM, handler);
+ alarm (1);
+ sleep (2); /* We'll receive that signal while sleeping */
+}
+
--- /dev/null
+# Copyright 2002 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
+
+# Test MI output with synthetic frames on the stack (call dummies,
+# signal handlers).
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+set testfile "mi-syn-frame"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+set my_mi_gdb_prompt "\\(gdb\\)\[ \]*\[\r\n\]*"
+
+mi_gdb_exit
+mi_gdb_start
+mi_delete_breakpoints
+mi_gdb_reinitialize_dir $srcdir/$subdir
+mi_gdb_load ${binfile}
+mi_run_to_main
+
+mi_gdb_test "400-break-insert foo" "400\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}"
+
+
+#
+# Call foo() by hand, where we'll hit a breakpoint.
+#
+
+mi_gdb_test "401-data-evaluate-expression foo()" "\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(foo\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+401\\^error,msg=\"The program being debugged stopped while in a function called from GDB.*\"" "call inferior's function with a breakpoint set in it"
+
+mi_gdb_test "402-stack-list-frames" "402\\^done,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]" "backtrace from inferior function stopped at bp, showing gdb dummy frame"
+
+#
+# Continue back to main()
+#
+
+send_gdb "403-exec-continue\n"
+gdb_expect {
+ -re "403\\^running\[\r\n\]+${my_mi_gdb_prompt}hi in foo\[\r\n\]+403\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
+ pass "403-exec-continue"
+ }
+ timeout {
+ fail "403-exec-continue"
+ }
+}
+
+mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
+
+
+#
+# Call have_a_very_merry_interrupt() which will eventually raise a signal
+# that's caught by handler() which calls subroutine().
+
+mi_gdb_test "405-break-insert subroutine" "405\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}"
+
+mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" "Waiting to get a signal\[\r\n\]+\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+406\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\""
+
+# We should have both a signal handler and a call dummy frame
+# in this next output.
+
+mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
+
+
+send_gdb "408-exec-continue\n"
+gdb_expect {
+ -re "408\\^running\[\r\n\]+${my_mi_gdb_prompt}408\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
+ pass "408-exec-continue"
+ }
+ timeout {
+ fail "408-exec-continue"
+ }
+}
+
+mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
+
+#
+# Call bar() by hand, which should get an exception while running.
+#
+
+mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
+
+mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
+
+mi_gdb_exit
+
+return 0
--- /dev/null
+/* IQ2000 ELF support for BFD.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 _ELF_IQ2000_H
+#define _ELF_IQ2000_H
+
+#include "elf/reloc-macros.h"
+
+/* Relocations. */
+START_RELOC_NUMBERS (elf_iq2000_reloc_type)
+ RELOC_NUMBER (R_IQ2000_NONE, 0)
+ RELOC_NUMBER (R_IQ2000_16, 1)
+ RELOC_NUMBER (R_IQ2000_32, 2)
+ RELOC_NUMBER (R_IQ2000_26, 3)
+ RELOC_NUMBER (R_IQ2000_PC16, 4)
+ RELOC_NUMBER (R_IQ2000_HI16, 5)
+ RELOC_NUMBER (R_IQ2000_LO16, 6)
+ RELOC_NUMBER (R_IQ2000_OFFSET_16, 7)
+ RELOC_NUMBER (R_IQ2000_OFFSET_21, 8)
+ RELOC_NUMBER (R_IQ2000_UHI16, 9)
+ RELOC_NUMBER (R_IQ2000_32_DEBUG, 10)
+ RELOC_NUMBER (R_IQ2000_GNU_VTINHERIT, 200)
+ RELOC_NUMBER (R_IQ2000_GNU_VTENTRY, 201)
+END_RELOC_NUMBERS(R_IQ2000_max)
+
+#define EF_IQ2000_CPU_IQ2000 0x00000001 /* default */
+#define EF_IQ2000_CPU_IQ10 0x00000002 /* IQ10 */
+#define EF_IQ2000_CPU_MASK 0x00000003 /* specific cpu bits */
+#define EF_IQ2000_ALL_FLAGS (EF_IQ2000_CPU_MASK)
+
+/* Define the data & instruction memory discriminator. In a linked
+ executable, an symbol should be deemed to point to an instruction
+ if ((address & IQ2000_INSN_MASK) == IQ2000_INSN_VALUE), and similarly
+ for the data space. */
+
+#define IQ2000_DATA_MASK 0x80000000
+#define IQ2000_DATA_VALUE 0x00000000
+#define IQ2000_INSN_MASK 0x80000000
+#define IQ2000_INSN_VALUE 0x80000000
+
+
+#endif /* _ELF_IQ2000_H */
--- /dev/null
+/* MSP430 ELF support for BFD.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ Contributed by Dmitry Diky <diwil@mail.ru>
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 _ELF_MSP430_H
+#define _ELF_MSP430_H
+
+#include "elf/reloc-macros.h"
+
+/* Processor specific flags for the ELF header e_flags field. */
+#define EF_MSP430_MACH 0xff
+
+#define E_MSP430_MACH_MSP430x11x1 110
+#define E_MSP430_MACH_MSP430x11 11
+#define E_MSP430_MACH_MSP430x12 12
+#define E_MSP430_MACH_MSP430x13 13
+#define E_MSP430_MACH_MSP430x14 14
+#define E_MSP430_MACH_MSP430x31 31
+#define E_MSP430_MACH_MSP430x32 32
+#define E_MSP430_MACH_MSP430x33 33
+#define E_MSP430_MACH_MSP430x41 41
+#define E_MSP430_MACH_MSP430x43 43
+#define E_MSP430_MACH_MSP430x44 44
+#define E_MSP430_MACH_MSP430x15 15
+#define E_MSP430_MACH_MSP430x16 16
+
+/* Relocations. */
+START_RELOC_NUMBERS (elf_msp430_reloc_type)
+ RELOC_NUMBER (R_MSP430_NONE, 0)
+ RELOC_NUMBER (R_MSP430_32, 1)
+ RELOC_NUMBER (R_MSP430_10_PCREL, 2)
+ RELOC_NUMBER (R_MSP430_16, 3)
+ RELOC_NUMBER (R_MSP430_16_PCREL, 4)
+ RELOC_NUMBER (R_MSP430_16_BYTE, 5)
+ RELOC_NUMBER (R_MSP430_16_PCREL_BYTE, 6)
+
+END_RELOC_NUMBERS (R_MSP430_max)
+
+#endif /* _ELF_MSP430_H */
--- /dev/null
+/* PPC64 ELF support for BFD.
+ Copyright 2003 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 _ELF_PPC64_H
+#define _ELF_PPC64_H
+
+#include "elf/reloc-macros.h"
+
+/* Relocations. */
+START_RELOC_NUMBERS (elf_ppc64_reloc_type)
+ RELOC_NUMBER (R_PPC64_NONE, 0)
+ RELOC_NUMBER (R_PPC64_ADDR32, 1)
+ RELOC_NUMBER (R_PPC64_ADDR24, 2)
+ RELOC_NUMBER (R_PPC64_ADDR16, 3)
+ RELOC_NUMBER (R_PPC64_ADDR16_LO, 4)
+ RELOC_NUMBER (R_PPC64_ADDR16_HI, 5)
+ RELOC_NUMBER (R_PPC64_ADDR16_HA, 6)
+ RELOC_NUMBER (R_PPC64_ADDR14, 7)
+ RELOC_NUMBER (R_PPC64_ADDR14_BRTAKEN, 8)
+ RELOC_NUMBER (R_PPC64_ADDR14_BRNTAKEN, 9)
+ RELOC_NUMBER (R_PPC64_REL24, 10)
+ RELOC_NUMBER (R_PPC64_REL14, 11)
+ RELOC_NUMBER (R_PPC64_REL14_BRTAKEN, 12)
+ RELOC_NUMBER (R_PPC64_REL14_BRNTAKEN, 13)
+ RELOC_NUMBER (R_PPC64_GOT16, 14)
+ RELOC_NUMBER (R_PPC64_GOT16_LO, 15)
+ RELOC_NUMBER (R_PPC64_GOT16_HI, 16)
+ RELOC_NUMBER (R_PPC64_GOT16_HA, 17)
+ /* 18 unused. 32-bit reloc is R_PPC_PLTREL24. */
+ RELOC_NUMBER (R_PPC64_COPY, 19)
+ RELOC_NUMBER (R_PPC64_GLOB_DAT, 20)
+ RELOC_NUMBER (R_PPC64_JMP_SLOT, 21)
+ RELOC_NUMBER (R_PPC64_RELATIVE, 22)
+ /* 23 unused. 32-bit reloc is R_PPC_LOCAL24PC. */
+ RELOC_NUMBER (R_PPC64_UADDR32, 24)
+ RELOC_NUMBER (R_PPC64_UADDR16, 25)
+ RELOC_NUMBER (R_PPC64_REL32, 26)
+ RELOC_NUMBER (R_PPC64_PLT32, 27)
+ RELOC_NUMBER (R_PPC64_PLTREL32, 28)
+ RELOC_NUMBER (R_PPC64_PLT16_LO, 29)
+ RELOC_NUMBER (R_PPC64_PLT16_HI, 30)
+ RELOC_NUMBER (R_PPC64_PLT16_HA, 31)
+ /* 32 unused. 32-bit reloc is R_PPC_SDAREL16. */
+ RELOC_NUMBER (R_PPC64_SECTOFF, 33)
+ RELOC_NUMBER (R_PPC64_SECTOFF_LO, 34)
+ RELOC_NUMBER (R_PPC64_SECTOFF_HI, 35)
+ RELOC_NUMBER (R_PPC64_SECTOFF_HA, 36)
+ RELOC_NUMBER (R_PPC64_REL30, 37)
+ RELOC_NUMBER (R_PPC64_ADDR64, 38)
+ RELOC_NUMBER (R_PPC64_ADDR16_HIGHER, 39)
+ RELOC_NUMBER (R_PPC64_ADDR16_HIGHERA, 40)
+ RELOC_NUMBER (R_PPC64_ADDR16_HIGHEST, 41)
+ RELOC_NUMBER (R_PPC64_ADDR16_HIGHESTA, 42)
+ RELOC_NUMBER (R_PPC64_UADDR64, 43)
+ RELOC_NUMBER (R_PPC64_REL64, 44)
+ RELOC_NUMBER (R_PPC64_PLT64, 45)
+ RELOC_NUMBER (R_PPC64_PLTREL64, 46)
+ RELOC_NUMBER (R_PPC64_TOC16, 47)
+ RELOC_NUMBER (R_PPC64_TOC16_LO, 48)
+ RELOC_NUMBER (R_PPC64_TOC16_HI, 49)
+ RELOC_NUMBER (R_PPC64_TOC16_HA, 50)
+ RELOC_NUMBER (R_PPC64_TOC, 51)
+ RELOC_NUMBER (R_PPC64_PLTGOT16, 52)
+ RELOC_NUMBER (R_PPC64_PLTGOT16_LO, 53)
+ RELOC_NUMBER (R_PPC64_PLTGOT16_HI, 54)
+ RELOC_NUMBER (R_PPC64_PLTGOT16_HA, 55)
+
+ /* The following relocs were added in the 64-bit PowerPC ELF ABI
+ revision 1.2. */
+ RELOC_NUMBER (R_PPC64_ADDR16_DS, 56)
+ RELOC_NUMBER (R_PPC64_ADDR16_LO_DS, 57)
+ RELOC_NUMBER (R_PPC64_GOT16_DS, 58)
+ RELOC_NUMBER (R_PPC64_GOT16_LO_DS, 59)
+ RELOC_NUMBER (R_PPC64_PLT16_LO_DS, 60)
+ RELOC_NUMBER (R_PPC64_SECTOFF_DS, 61)
+ RELOC_NUMBER (R_PPC64_SECTOFF_LO_DS, 62)
+ RELOC_NUMBER (R_PPC64_TOC16_DS, 63)
+ RELOC_NUMBER (R_PPC64_TOC16_LO_DS, 64)
+ RELOC_NUMBER (R_PPC64_PLTGOT16_DS, 65)
+ RELOC_NUMBER (R_PPC64_PLTGOT16_LO_DS, 66)
+
+ /* Relocs added to support TLS. PowerPC64 ELF ABI revision 1.5. */
+ RELOC_NUMBER (R_PPC64_TLS, 67)
+ RELOC_NUMBER (R_PPC64_DTPMOD64, 68)
+ RELOC_NUMBER (R_PPC64_TPREL16, 69)
+ RELOC_NUMBER (R_PPC64_TPREL16_LO, 70)
+ RELOC_NUMBER (R_PPC64_TPREL16_HI, 71)
+ RELOC_NUMBER (R_PPC64_TPREL16_HA, 72)
+ RELOC_NUMBER (R_PPC64_TPREL64, 73)
+ RELOC_NUMBER (R_PPC64_DTPREL16, 74)
+ RELOC_NUMBER (R_PPC64_DTPREL16_LO, 75)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HI, 76)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HA, 77)
+ RELOC_NUMBER (R_PPC64_DTPREL64, 78)
+ RELOC_NUMBER (R_PPC64_GOT_TLSGD16, 79)
+ RELOC_NUMBER (R_PPC64_GOT_TLSGD16_LO, 80)
+ RELOC_NUMBER (R_PPC64_GOT_TLSGD16_HI, 81)
+ RELOC_NUMBER (R_PPC64_GOT_TLSGD16_HA, 82)
+ RELOC_NUMBER (R_PPC64_GOT_TLSLD16, 83)
+ RELOC_NUMBER (R_PPC64_GOT_TLSLD16_LO, 84)
+ RELOC_NUMBER (R_PPC64_GOT_TLSLD16_HI, 85)
+ RELOC_NUMBER (R_PPC64_GOT_TLSLD16_HA, 86)
+ RELOC_NUMBER (R_PPC64_GOT_TPREL16_DS, 87)
+ RELOC_NUMBER (R_PPC64_GOT_TPREL16_LO_DS, 88)
+ RELOC_NUMBER (R_PPC64_GOT_TPREL16_HI, 89)
+ RELOC_NUMBER (R_PPC64_GOT_TPREL16_HA, 90)
+ RELOC_NUMBER (R_PPC64_GOT_DTPREL16_DS, 91)
+ RELOC_NUMBER (R_PPC64_GOT_DTPREL16_LO_DS, 92)
+ RELOC_NUMBER (R_PPC64_GOT_DTPREL16_HI, 93)
+ RELOC_NUMBER (R_PPC64_GOT_DTPREL16_HA, 94)
+ RELOC_NUMBER (R_PPC64_TPREL16_DS, 95)
+ RELOC_NUMBER (R_PPC64_TPREL16_LO_DS, 96)
+ RELOC_NUMBER (R_PPC64_TPREL16_HIGHER, 97)
+ RELOC_NUMBER (R_PPC64_TPREL16_HIGHERA, 98)
+ RELOC_NUMBER (R_PPC64_TPREL16_HIGHEST, 99)
+ RELOC_NUMBER (R_PPC64_TPREL16_HIGHESTA, 100)
+ RELOC_NUMBER (R_PPC64_DTPREL16_DS, 101)
+ RELOC_NUMBER (R_PPC64_DTPREL16_LO_DS, 102)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HIGHER, 103)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HIGHERA, 104)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HIGHEST, 105)
+ RELOC_NUMBER (R_PPC64_DTPREL16_HIGHESTA, 106)
+
+ /* These are GNU extensions to enable C++ vtable garbage collection. */
+ RELOC_NUMBER (R_PPC64_GNU_VTINHERIT, 253)
+ RELOC_NUMBER (R_PPC64_GNU_VTENTRY, 254)
+
+END_RELOC_NUMBERS (R_PPC64_max)
+
+#define IS_TLS_RELOC(R) \
+ ((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA)
+
+/* Specify the start of the .glink section. */
+#define DT_PPC64_GLINK DT_LOPROC
+
+/* Specify the start and size of the .opd section. */
+#define DT_PPC64_OPD (DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
+
+#endif /* _ELF_PPC64_H */
--- /dev/null
+/* Opcode table for the TI MSP430 microcontrollers
+
+ Copyright 2002 Free Software Foundation, Inc.
+ Contributed by Dmitry Diky <diwil@mail.ru>
+
+ 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, 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 __MSP430_H_
+#define __MSP430_H_
+
+struct msp430_operand_s
+{
+ int ol; /* Operand length words. */
+ int am; /* Addr mode. */
+ int reg; /* Register. */
+ int mode; /* Pperand mode. */
+#define OP_REG 0
+#define OP_EXP 1
+#ifndef DASM_SECTION
+ expressionS exp;
+#endif
+};
+
+#define BYTE_OPERATION (1 << 6) /* Byte operation flag for all instructions. */
+
+struct msp430_opcode_s
+{
+ char *name;
+ int fmt;
+ int insn_opnumb;
+ int bin_opcode;
+ int bin_mask;
+};
+
+#define MSP_INSN(name, size, numb, bin, mask) { #name, size, numb, bin, mask }
+
+static struct msp430_opcode_s msp430_opcodes[] =
+{
+ MSP_INSN (and, 1, 2, 0xf000, 0xf000),
+ MSP_INSN (inv, 0, 1, 0xe330, 0xfff0),
+ MSP_INSN (xor, 1, 2, 0xe000, 0xf000),
+ MSP_INSN (setz, 0, 0, 0xd322, 0xffff),
+ MSP_INSN (setc, 0, 0, 0xd312, 0xffff),
+ MSP_INSN (eint, 0, 0, 0xd232, 0xffff),
+ MSP_INSN (setn, 0, 0, 0xd222, 0xffff),
+ MSP_INSN (bis, 1, 2, 0xd000, 0xf000),
+ MSP_INSN (clrz, 0, 0, 0xc322, 0xffff),
+ MSP_INSN (clrc, 0, 0, 0xc312, 0xffff),
+ MSP_INSN (dint, 0, 0, 0xc232, 0xffff),
+ MSP_INSN (clrn, 0, 0, 0xc222, 0xffff),
+ MSP_INSN (bic, 1, 2, 0xc000, 0xf000),
+ MSP_INSN (bit, 1, 2, 0xb000, 0xf000),
+ MSP_INSN (dadc, 0, 1, 0xa300, 0xff30),
+ MSP_INSN (dadd, 1, 2, 0xa000, 0xf000),
+ MSP_INSN (tst, 0, 1, 0x9300, 0xff30),
+ MSP_INSN (cmp, 1, 2, 0x9000, 0xf000),
+ MSP_INSN (decd, 0, 1, 0x8320, 0xff30),
+ MSP_INSN (dec, 0, 1, 0x8310, 0xff30),
+ MSP_INSN (sub, 1, 2, 0x8000, 0xf000),
+ MSP_INSN (sbc, 0, 1, 0x7300, 0xff30),
+ MSP_INSN (subc, 1, 2, 0x7000, 0xf000),
+ MSP_INSN (adc, 0, 1, 0x6300, 0xff30),
+ MSP_INSN (rlc, 0, 2, 0x6000, 0xf000),
+ MSP_INSN (addc, 1, 2, 0x6000, 0xf000),
+ MSP_INSN (incd, 0, 1, 0x5320, 0xff30),
+ MSP_INSN (inc, 0, 1, 0x5310, 0xff30),
+ MSP_INSN (rla, 0, 2, 0x5000, 0xf000),
+ MSP_INSN (add, 1, 2, 0x5000, 0xf000),
+ MSP_INSN (nop, 0, 0, 0x4303, 0xffff),
+ MSP_INSN (clr, 0, 1, 0x4300, 0xff30),
+ MSP_INSN (ret, 0, 0, 0x4130, 0xff30),
+ MSP_INSN (pop, 0, 1, 0x4130, 0xff30),
+ MSP_INSN (br, 0, 3, 0x4000, 0xf000),
+ MSP_INSN (mov, 1, 2, 0x4000, 0xf000),
+ MSP_INSN (jmp, 3, 1, 0x3c00, 0xfc00),
+ MSP_INSN (jl, 3, 1, 0x3800, 0xfc00),
+ MSP_INSN (jge, 3, 1, 0x3400, 0xfc00),
+ MSP_INSN (jn, 3, 1, 0x3000, 0xfc00),
+ MSP_INSN (jc, 3, 1, 0x2c00, 0xfc00),
+ MSP_INSN (jhs, 3, 1, 0x2c00, 0xfc00),
+ MSP_INSN (jnc, 3, 1, 0x2800, 0xfc00),
+ MSP_INSN (jlo, 3, 1, 0x2800, 0xfc00),
+ MSP_INSN (jz, 3, 1, 0x2400, 0xfc00),
+ MSP_INSN (jeq, 3, 1, 0x2400, 0xfc00),
+ MSP_INSN (jnz, 3, 1, 0x2000, 0xfc00),
+ MSP_INSN (jne, 3, 1, 0x2000, 0xfc00),
+ MSP_INSN (reti, 2, 0, 0x1300, 0xffc0),
+ MSP_INSN (call, 2, 1, 0x1280, 0xffc0),
+ MSP_INSN (push, 2, 1, 0x1200, 0xff80),
+ MSP_INSN (sxt, 2, 1, 0x1180, 0xffc0),
+ MSP_INSN (rra, 2, 1, 0x1100, 0xff80),
+ MSP_INSN (swpb, 2, 1, 0x1080, 0xffc0),
+ MSP_INSN (rrc, 2, 1, 0x1000, 0xff80),
+
+ /* End of instruction set. */
+ { NULL, 0, 0, 0, 0 }
+};
+
+#endif
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. Shared logic.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifndef PEX_COMMON_H
+#define PEX_COMMON_H
+
+#include "config.h"
+#include "libiberty.h"
+
+#define install_error_msg "installation problem, cannot exec `%s'"
+
+/* stdin file number. */
+#define STDIN_FILE_NO 0
+
+/* stdout file number. */
+#define STDOUT_FILE_NO 1
+
+/* value of `pipe': port index for reading. */
+#define READ_PORT 0
+
+/* value of `pipe': port index for writing. */
+#define WRITE_PORT 1
+
+#endif
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. DJGPP specialization.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#include <stdio.h>
+#include <errno.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <process.h>
+
+/* Use ECHILD if available, otherwise use EINVAL. */
+#ifdef ECHILD
+#define PWAIT_ERROR ECHILD
+#else
+#define PWAIT_ERROR EINVAL
+#endif
+
+/* MSDOS doesn't multitask, but for the sake of a consistent interface
+ the code behaves like it does. pexecute runs the program, tucks the
+ exit code away, and returns a "pid". pwait must be called to fetch the
+ exit code. */
+
+/* For communicating information from pexecute to pwait. */
+static int last_pid = 0;
+static int last_status = 0;
+static int last_reaped = 0;
+
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ int rc;
+
+ last_pid++;
+ if (last_pid < 0)
+ last_pid = 1;
+
+ if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
+ abort ();
+
+ /* ??? What are the possible return values from spawnv? */
+ rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (P_WAIT, program, argv);
+
+ if (rc == -1)
+ {
+ *errmsg_fmt = install_error_msg;
+ *errmsg_arg = (char *)program;
+ return -1;
+ }
+
+ /* Tuck the status away for pwait, and return a "pid". */
+ last_status = rc << 8;
+ return last_pid;
+}
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags;
+{
+ /* On MSDOS each pexecute must be followed by its associated pwait. */
+ if (pid != last_pid
+ /* Called twice for the same child? */
+ || pid == last_reaped)
+ {
+ errno = PWAIT_ERROR;
+ return -1;
+ }
+ /* ??? Here's an opportunity to canonicalize the values in STATUS.
+ Needed? */
+ *status = (last_status >> 8);
+ last_reaped = last_pid;
+ return last_pid;
+}
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. MPW specialization.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+/* MPW pexecute doesn't actually run anything; instead, it writes out
+ script commands that, when run, will do the actual executing.
+
+ For example, in GCC's case, GCC will write out several script commands:
+
+ cpp ...
+ cc1 ...
+ as ...
+ ld ...
+
+ and then exit. None of the above programs will have run yet. The task
+ that called GCC will then execute the script and cause cpp,etc. to run.
+ The caller must invoke pfinish before calling exit. This adds
+ the finishing touches to the generated script. */
+
+static int first_time = 1;
+
+extern void mpwify_filename PARAMS ((const char *, char *));
+
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ char tmpprogram[255];
+ char *cp, *tmpname;
+ int i;
+
+ mpwify_filename (program, tmpprogram);
+ if (first_time)
+ {
+ printf ("Set Failed 0\n");
+ first_time = 0;
+ }
+
+ fputs ("If {Failed} == 0\n", stdout);
+ /* If being verbose, output a copy of the command. It should be
+ accurate enough and escaped enough to be "clickable". */
+ if (flags & PEXECUTE_VERBOSE)
+ {
+ fputs ("\tEcho ", stdout);
+ fputc ('\'', stdout);
+ fputs (tmpprogram, stdout);
+ fputc ('\'', stdout);
+ fputc (' ', stdout);
+ for (i=1; argv[i]; i++)
+ {
+ fputc ('\'', stdout);
+ /* See if we have an argument that needs fixing. */
+ if (strchr(argv[i], '/'))
+ {
+ tmpname = (char *) xmalloc (256);
+ mpwify_filename (argv[i], tmpname);
+ argv[i] = tmpname;
+ }
+ for (cp = argv[i]; *cp; cp++)
+ {
+ /* Write an Option-d escape char in front of special chars. */
+ if (strchr("'+", *cp))
+ fputc ('\266', stdout);
+ fputc (*cp, stdout);
+ }
+ fputc ('\'', stdout);
+ fputc (' ', stdout);
+ }
+ fputs ("\n", stdout);
+ }
+ fputs ("\t", stdout);
+ fputs (tmpprogram, stdout);
+ fputc (' ', stdout);
+
+ for (i=1; argv[i]; i++)
+ {
+ /* See if we have an argument that needs fixing. */
+ if (strchr(argv[i], '/'))
+ {
+ tmpname = (char *) xmalloc (256);
+ mpwify_filename (argv[i], tmpname);
+ argv[i] = tmpname;
+ }
+ if (strchr (argv[i], ' '))
+ fputc ('\'', stdout);
+ for (cp = argv[i]; *cp; cp++)
+ {
+ /* Write an Option-d escape char in front of special chars. */
+ if (strchr("'+", *cp))
+ fputc ('\266', stdout);
+ fputc (*cp, stdout);
+ }
+ if (strchr (argv[i], ' '))
+ fputc ('\'', stdout);
+ fputc (' ', stdout);
+ }
+
+ fputs ("\n", stdout);
+
+ /* Output commands that arrange to clean up and exit if a failure occurs.
+ We have to be careful to collect the status from the program that was
+ run, rather than some other script command. Also, we don't exit
+ immediately, since necessary cleanups are at the end of the script. */
+ fputs ("\tSet TmpStatus {Status}\n", stdout);
+ fputs ("\tIf {TmpStatus} != 0\n", stdout);
+ fputs ("\t\tSet Failed {TmpStatus}\n", stdout);
+ fputs ("\tEnd\n", stdout);
+ fputs ("End\n", stdout);
+
+ /* We're just composing a script, can't fail here. */
+ return 0;
+}
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags;
+{
+ *status = 0;
+ return 0;
+}
+
+/* Write out commands that will exit with the correct error code
+ if something in the script failed. */
+
+void
+pfinish ()
+{
+ printf ("\tExit \"{Failed}\"\n");
+}
+
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. Generic MSDOS specialization.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#include <stdio.h>
+#include <errno.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include "safe-ctype.h"
+#include <process.h>
+
+/* MSDOS doesn't multitask, but for the sake of a consistent interface
+ the code behaves like it does. pexecute runs the program, tucks the
+ exit code away, and returns a "pid". pwait must be called to fetch the
+ exit code. */
+
+/* For communicating information from pexecute to pwait. */
+static int last_pid = 0;
+static int last_status = 0;
+static int last_reaped = 0;
+
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ int rc;
+ char *scmd, *rf;
+ FILE *argfile;
+ int i, el = flags & PEXECUTE_SEARCH ? 4 : 0;
+
+ last_pid++;
+ if (last_pid < 0)
+ last_pid = 1;
+
+ if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
+ abort ();
+
+ if (temp_base == 0)
+ temp_base = choose_temp_base ();
+ scmd = (char *) xmalloc (strlen (program) + strlen (temp_base) + 6 + el);
+ rf = scmd + strlen(program) + 2 + el;
+ sprintf (scmd, "%s%s @%s.gp", program,
+ (flags & PEXECUTE_SEARCH ? ".exe" : ""), temp_base);
+ argfile = fopen (rf, "w");
+ if (argfile == 0)
+ {
+ int errno_save = errno;
+ free (scmd);
+ errno = errno_save;
+ *errmsg_fmt = "cannot open `%s.gp'";
+ *errmsg_arg = temp_base;
+ return -1;
+ }
+
+ for (i=1; argv[i]; i++)
+ {
+ char *cp;
+ for (cp = argv[i]; *cp; cp++)
+ {
+ if (*cp == '"' || *cp == '\'' || *cp == '\\' || ISSPACE (*cp))
+ fputc ('\\', argfile);
+ fputc (*cp, argfile);
+ }
+ fputc ('\n', argfile);
+ }
+ fclose (argfile);
+
+ rc = system (scmd);
+
+ {
+ int errno_save = errno;
+ remove (rf);
+ free (scmd);
+ errno = errno_save;
+ }
+
+ if (rc == -1)
+ {
+ *errmsg_fmt = install_error_msg;
+ *errmsg_arg = (char *)program;
+ return -1;
+ }
+
+ /* Tuck the status away for pwait, and return a "pid". */
+ last_status = rc << 8;
+ return last_pid;
+}
+
+/* Use ECHILD if available, otherwise use EINVAL. */
+#ifdef ECHILD
+#define PWAIT_ERROR ECHILD
+#else
+#define PWAIT_ERROR EINVAL
+#endif
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags;
+{
+ /* On MSDOS each pexecute must be followed by its associated pwait. */
+ if (pid != last_pid
+ /* Called twice for the same child? */
+ || pid == last_reaped)
+ {
+ errno = PWAIT_ERROR;
+ return -1;
+ }
+ /* ??? Here's an opportunity to canonicalize the values in STATUS.
+ Needed? */
+ *status = last_status;
+ last_reaped = last_pid;
+ return last_pid;
+}
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. OS/2 specialization.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+/* ??? Does OS2 have process.h? */
+extern int spawnv ();
+extern int spawnvp ();
+
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ int pid;
+
+ if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
+ abort ();
+ /* ??? Presumably 1 == _P_NOWAIT. */
+ pid = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (1, program, argv);
+ if (pid == -1)
+ {
+ *errmsg_fmt = install_error_msg;
+ *errmsg_arg = program;
+ return -1;
+ }
+ return pid;
+}
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags;
+{
+ /* ??? Here's an opportunity to canonicalize the values in STATUS.
+ Needed? */
+ int pid = wait (status);
+ return pid;
+}
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. Generic Unix version
+ (also used for UWIN and VMS).
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#include <stdio.h>
+#include <errno.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifndef HAVE_WAITPID
+#define waitpid(pid, status, flags) wait(status)
+#endif
+
+extern int execv ();
+extern int execvp ();
+
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base ATTRIBUTE_UNUSED;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ int (*func)() = (flags & PEXECUTE_SEARCH ? execvp : execv);
+ int pid;
+ int pdes[2];
+ int input_desc, output_desc;
+ int retries, sleep_interval;
+ /* Pipe waiting from last process, to be used as input for the next one.
+ Value is STDIN_FILE_NO if no pipe is waiting
+ (i.e. the next command is the first of a group). */
+ static int last_pipe_input;
+
+ /* If this is the first process, initialize. */
+ if (flags & PEXECUTE_FIRST)
+ last_pipe_input = STDIN_FILE_NO;
+
+ input_desc = last_pipe_input;
+
+ /* If this isn't the last process, make a pipe for its output,
+ and record it as waiting to be the input to the next process. */
+ if (! (flags & PEXECUTE_LAST))
+ {
+ if (pipe (pdes) < 0)
+ {
+ *errmsg_fmt = "pipe";
+ *errmsg_arg = NULL;
+ return -1;
+ }
+ output_desc = pdes[WRITE_PORT];
+ last_pipe_input = pdes[READ_PORT];
+ }
+ else
+ {
+ /* Last process. */
+ output_desc = STDOUT_FILE_NO;
+ last_pipe_input = STDIN_FILE_NO;
+ }
+
+ /* Fork a subprocess; wait and retry if it fails. */
+ sleep_interval = 1;
+ pid = -1;
+ for (retries = 0; retries < 4; retries++)
+ {
+ pid = fork ();
+ if (pid >= 0)
+ break;
+ sleep (sleep_interval);
+ sleep_interval *= 2;
+ }
+
+ switch (pid)
+ {
+ case -1:
+ *errmsg_fmt = "fork";
+ *errmsg_arg = NULL;
+ return -1;
+
+ case 0: /* child */
+ /* Move the input and output pipes into place, if necessary. */
+ if (input_desc != STDIN_FILE_NO)
+ {
+ close (STDIN_FILE_NO);
+ dup (input_desc);
+ close (input_desc);
+ }
+ if (output_desc != STDOUT_FILE_NO)
+ {
+ close (STDOUT_FILE_NO);
+ dup (output_desc);
+ close (output_desc);
+ }
+
+ /* Close the parent's descs that aren't wanted here. */
+ if (last_pipe_input != STDIN_FILE_NO)
+ close (last_pipe_input);
+
+ /* Exec the program. */
+ (*func) (program, argv);
+
+ fprintf (stderr, "%s: ", this_pname);
+ fprintf (stderr, install_error_msg, program);
+ fprintf (stderr, ": %s\n", xstrerror (errno));
+ exit (-1);
+ /* NOTREACHED */
+ return 0;
+
+ default:
+ /* In the parent, after forking.
+ Close the descriptors that we made for this child. */
+ if (input_desc != STDIN_FILE_NO)
+ close (input_desc);
+ if (output_desc != STDOUT_FILE_NO)
+ close (output_desc);
+
+ /* Return child's process number. */
+ return pid;
+ }
+}
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags ATTRIBUTE_UNUSED;
+{
+ /* ??? Here's an opportunity to canonicalize the values in STATUS.
+ Needed? */
+ pid = waitpid (pid, status, 0);
+ return pid;
+}
--- /dev/null
+/* Utilities to execute a program in a subprocess (possibly linked by pipes
+ with other subprocesses), and wait for it. Generic Win32 specialization.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Free Software Foundation, Inc.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "pex-common.h"
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#include <process.h>
+#include <io.h>
+#include <fcntl.h>
+#include <signal.h>
+
+/* mingw32 headers may not define the following. */
+
+#ifndef _P_WAIT
+# define _P_WAIT 0
+# define _P_NOWAIT 1
+# define _P_OVERLAY 2
+# define _P_NOWAITO 3
+# define _P_DETACH 4
+
+# define WAIT_CHILD 0
+# define WAIT_GRANDCHILD 1
+#endif
+
+/* This is a kludge to get around the Microsoft C spawn functions' propensity
+ to remove the outermost set of double quotes from all arguments. */
+
+static const char * const *
+fix_argv (argvec)
+ char **argvec;
+{
+ int i;
+
+ for (i = 1; argvec[i] != 0; i++)
+ {
+ int len, j;
+ char *temp, *newtemp;
+
+ temp = argvec[i];
+ len = strlen (temp);
+ for (j = 0; j < len; j++)
+ {
+ if (temp[j] == '"')
+ {
+ newtemp = xmalloc (len + 2);
+ strncpy (newtemp, temp, j);
+ newtemp [j] = '\\';
+ strncpy (&newtemp [j+1], &temp [j], len-j);
+ newtemp [len+1] = 0;
+ temp = newtemp;
+ len++;
+ j++;
+ }
+ }
+
+ argvec[i] = temp;
+ }
+
+ for (i = 0; argvec[i] != 0; i++)
+ {
+ if (strpbrk (argvec[i], " \t"))
+ {
+ int len, trailing_backslash;
+ char *temp;
+
+ len = strlen (argvec[i]);
+ trailing_backslash = 0;
+
+ /* There is an added complication when an arg with embedded white
+ space ends in a backslash (such as in the case of -iprefix arg
+ passed to cpp). The resulting quoted strings gets misinterpreted
+ by the command interpreter -- it thinks that the ending quote
+ is escaped by the trailing backslash and things get confused.
+ We handle this case by escaping the trailing backslash, provided
+ it was not escaped in the first place. */
+ if (len > 1
+ && argvec[i][len-1] == '\\'
+ && argvec[i][len-2] != '\\')
+ {
+ trailing_backslash = 1;
+ ++len; /* to escape the final backslash. */
+ }
+
+ len += 2; /* and for the enclosing quotes. */
+
+ temp = xmalloc (len + 1);
+ temp[0] = '"';
+ strcpy (temp + 1, argvec[i]);
+ if (trailing_backslash)
+ temp[len-2] = '\\';
+ temp[len-1] = '"';
+ temp[len] = '\0';
+
+ argvec[i] = temp;
+ }
+ }
+
+ return (const char * const *) argvec;
+}
+
+/* Win32 supports pipes */
+int
+pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
+ const char *program;
+ char * const *argv;
+ const char *this_pname;
+ const char *temp_base;
+ char **errmsg_fmt, **errmsg_arg;
+ int flags;
+{
+ int pid;
+ int pdes[2], org_stdin, org_stdout;
+ int input_desc, output_desc;
+ int retries, sleep_interval;
+
+ /* Pipe waiting from last process, to be used as input for the next one.
+ Value is STDIN_FILE_NO if no pipe is waiting
+ (i.e. the next command is the first of a group). */
+ static int last_pipe_input;
+
+ /* If this is the first process, initialize. */
+ if (flags & PEXECUTE_FIRST)
+ last_pipe_input = STDIN_FILE_NO;
+
+ input_desc = last_pipe_input;
+
+ /* If this isn't the last process, make a pipe for its output,
+ and record it as waiting to be the input to the next process. */
+ if (! (flags & PEXECUTE_LAST))
+ {
+ if (_pipe (pdes, 256, O_BINARY) < 0)
+ {
+ *errmsg_fmt = "pipe";
+ *errmsg_arg = NULL;
+ return -1;
+ }
+ output_desc = pdes[WRITE_PORT];
+ last_pipe_input = pdes[READ_PORT];
+ }
+ else
+ {
+ /* Last process. */
+ output_desc = STDOUT_FILE_NO;
+ last_pipe_input = STDIN_FILE_NO;
+ }
+
+ if (input_desc != STDIN_FILE_NO)
+ {
+ org_stdin = dup (STDIN_FILE_NO);
+ dup2 (input_desc, STDIN_FILE_NO);
+ close (input_desc);
+ }
+
+ if (output_desc != STDOUT_FILE_NO)
+ {
+ org_stdout = dup (STDOUT_FILE_NO);
+ dup2 (output_desc, STDOUT_FILE_NO);
+ close (output_desc);
+ }
+
+ pid = (flags & PEXECUTE_SEARCH ? _spawnvp : _spawnv)
+ (_P_NOWAIT, program, fix_argv(argv));
+
+ if (input_desc != STDIN_FILE_NO)
+ {
+ dup2 (org_stdin, STDIN_FILE_NO);
+ close (org_stdin);
+ }
+
+ if (output_desc != STDOUT_FILE_NO)
+ {
+ dup2 (org_stdout, STDOUT_FILE_NO);
+ close (org_stdout);
+ }
+
+ if (pid == -1)
+ {
+ *errmsg_fmt = install_error_msg;
+ *errmsg_arg = program;
+ return -1;
+ }
+
+ return pid;
+}
+
+/* MS CRTDLL doesn't return enough information in status to decide if the
+ child exited due to a signal or not, rather it simply returns an
+ integer with the exit code of the child; eg., if the child exited with
+ an abort() call and didn't have a handler for SIGABRT, it simply returns
+ with status = 3. We fix the status code to conform to the usual WIF*
+ macros. Note that WIFSIGNALED will never be true under CRTDLL. */
+
+int
+pwait (pid, status, flags)
+ int pid;
+ int *status;
+ int flags;
+{
+ int termstat;
+
+ pid = _cwait (&termstat, pid, WAIT_CHILD);
+
+ /* ??? Here's an opportunity to canonicalize the values in STATUS.
+ Needed? */
+
+ /* cwait returns the child process exit code in termstat.
+ A value of 3 indicates that the child caught a signal, but not
+ which one. Since only SIGABRT, SIGFPE and SIGINT do anything, we
+ report SIGABRT. */
+ if (termstat == 3)
+ *status = SIGABRT;
+ else
+ *status = (((termstat) & 0xff) << 8);
+
+ return pid;
+}
--- /dev/null
+@deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
+
+Executes a program.
+
+@var{program} and @var{argv} are the arguments to
+@code{execv}/@code{execvp}.
+
+@var{this_pname} is name of the calling program (i.e., @code{argv[0]}).
+
+@var{temp_base} is the path name, sans suffix, of a temporary file to
+use if needed. This is currently only needed for MS-DOS ports that
+don't use @code{go32} (do any still exist?). Ports that don't need it
+can pass @code{NULL}.
+
+(@code{@var{flags} & PEXECUTE_SEARCH}) is non-zero if @env{PATH}
+should be searched (??? It's not clear that GCC passes this flag
+correctly). (@code{@var{flags} & PEXECUTE_FIRST}) is nonzero for the
+first process in chain. (@code{@var{flags} & PEXECUTE_FIRST}) is
+nonzero for the last process in chain. The first/last flags could be
+simplified to only mark the last of a chain of processes but that
+requires the caller to always mark the last one (and not give up
+early if some error occurs). It's more robust to require the caller
+to mark both ends of the chain.
+
+The result is the pid on systems like Unix where we
+@code{fork}/@code{exec} and on systems like WIN32 and OS/2 where we
+use @code{spawn}. It is up to the caller to wait for the child.
+
+The result is the @code{WEXITSTATUS} on systems like MS-DOS where we
+@code{spawn} and wait for the child here.
+
+Upon failure, @var{errmsg_fmt} and @var{errmsg_arg} are set to the
+text of the error message with an optional argument (if not needed,
+@var{errmsg_arg} is set to @code{NULL}), and @minus{}1 is returned.
+@code{errno} is available to the caller to use.
+
+@end deftypefn
+
+@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
+
+Waits for a program started by @code{pexecute} to finish.
+
+@var{pid} is the process id of the task to wait for. @var{status} is
+the `status' argument to wait. @var{flags} is currently unused
+(allows future enhancement without breaking upward compatibility).
+Pass 0 for now.
+
+The result is the pid of the child reaped, or -1 for failure
+(@code{errno} says why).
+
+On systems that don't support waiting for a particular child,
+@var{pid} is ignored. On systems like MS-DOS that don't really
+multitask @code{pwait} is just a mechanism to provide a consistent
+interface for the caller.
+
+@end deftypefn
+
+@undocumented pfinish
+
+pfinish: finish generation of script
+
+pfinish is necessary for systems like MPW where a script is generated
+that runs the requested programs.
--- /dev/null
+/* Assembler interface for targets using CGEN. -*- C -*-
+ CGEN: Cpu tools GENerator
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+- the resultant file is machine generated, cgen-asm.in isn't
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and GDB, the GNU debugger.
+
+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, 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. */
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "iq2000-desc.h"
+#include "iq2000-opc.h"
+#include "opintl.h"
+#include "xregex.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+
+static const char * parse_insn_normal
+ PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
+\f
+/* -- assembler routines inserted here. */
+
+/* -- asm.c */
+static const char * parse_mimm PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
+static const char * parse_imm PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *));
+static const char * parse_hi16 PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *));
+static const char * parse_lo16 PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
+
+/* Special check to ensure that instruction exists for given machine */
+int
+iq2000_cgen_insn_supported (cd, insn)
+ CGEN_CPU_DESC cd;
+ CGEN_INSN *insn;
+{
+ int machs = cd->machs;
+
+ return ((CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH) & machs) != 0);
+}
+
+static int iq2000_cgen_isa_register (strp)
+ const char **strp;
+{
+ int len;
+ int ch1, ch2;
+ if (**strp == 'r' || **strp == 'R')
+ {
+ len = strlen (*strp);
+ if (len == 2)
+ {
+ ch1 = (*strp)[1];
+ if ('0' <= ch1 && ch1 <= '9')
+ return 1;
+ }
+ else if (len == 3)
+ {
+ ch1 = (*strp)[1];
+ ch2 = (*strp)[2];
+ if (('1' <= ch1 && ch1 <= '2') && ('0' <= ch2 && ch2 <= '9'))
+ return 1;
+ if ('3' == ch1 && (ch2 == '0' || ch2 == '1'))
+ return 1;
+ }
+ }
+ if (**strp == '%' && tolower((*strp)[1]) != 'l' && tolower((*strp)[1]) != 'h')
+ return 1;
+ return 0;
+}
+
+/* Handle negated literal. */
+
+static const char *
+parse_mimm (cd, strp, opindex, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ long *valuep;
+{
+ const char *errmsg;
+ long value;
+
+ /* Verify this isn't a register */
+ if (iq2000_cgen_isa_register (strp))
+ errmsg = _("immediate value cannot be register");
+ else
+ {
+ long value;
+
+ errmsg = cgen_parse_signed_integer (cd, strp, opindex, & value);
+ if (errmsg == NULL)
+ {
+ long x = (-value) & 0xFFFF0000;
+ if (x != 0 && x != 0xFFFF0000)
+ errmsg = _("immediate value out of range");
+ else
+ *valuep = (-value & 0xFFFF);
+ }
+ }
+ return errmsg;
+}
+
+/* Handle signed/unsigned literal. */
+
+static const char *
+parse_imm (cd, strp, opindex, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ unsigned long *valuep;
+{
+ const char *errmsg;
+ long value;
+
+ if (iq2000_cgen_isa_register (strp))
+ errmsg = _("immediate value cannot be register");
+ else
+ {
+ long value;
+
+ errmsg = cgen_parse_signed_integer (cd, strp, opindex, & value);
+ if (errmsg == NULL)
+ {
+ long x = value & 0xFFFF0000;
+ if (x != 0 && x != 0xFFFF0000)
+ errmsg = _("immediate value out of range");
+ else
+ *valuep = (value & 0xFFFF);
+ }
+ }
+ return errmsg;
+}
+
+/* Handle iq10 21-bit jmp offset. */
+
+static const char *
+parse_jtargq10 (cd, strp, opindex, reloc, type_addr, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ int reloc;
+ enum cgen_parse_operand_result *type_addr;
+ unsigned long *valuep;
+{
+ const char *errmsg;
+ bfd_vma value;
+ enum cgen_parse_operand_result result_type = CGEN_PARSE_OPERAND_RESULT_NUMBER;
+
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_IQ2000_OFFSET_21,
+ &result_type, &value);
+ if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ {
+ /* check value is within 23-bits (remembering that 2-bit shift right will occur) */
+ if (value > 0x7fffff)
+ return _("21-bit offset out of range");
+ }
+ *valuep = (value & 0x7FFFFF);
+ return errmsg;
+}
+
+/* Handle high(). */
+
+static const char *
+parse_hi16 (cd, strp, opindex, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ unsigned long *valuep;
+{
+ if (strncasecmp (*strp, "%hi(", 4) == 0)
+ {
+ enum cgen_parse_operand_result result_type;
+ bfd_vma value;
+ const char *errmsg;
+
+ *strp += 4;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16,
+ &result_type, &value);
+ if (**strp != ')')
+ return _("missing `)'");
+
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ {
+ /* if value has top-bit of %lo on, then it will
+ sign-propagate and so we compensate by adding
+ 1 to the resultant %hi value */
+ if (value & 0x8000)
+ value += 0x10000;
+ value >>= 16;
+ }
+ *valuep = value;
+
+ return errmsg;
+ }
+
+ /* we add %uhi in case a user just wants the high 16-bits or is using
+ an insn like ori for %lo which does not sign-propagate */
+ if (strncasecmp (*strp, "%uhi(", 5) == 0)
+ {
+ enum cgen_parse_operand_result result_type;
+ bfd_vma value;
+ const char *errmsg;
+
+ *strp += 5;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_IQ2000_UHI16,
+ &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 parse_imm (cd, strp, opindex, valuep);
+}
+
+/* Handle %lo in a signed context.
+ The signedness of the value doesn't matter to %lo(), but this also
+ handles the case where %lo() isn't present. */
+
+static const char *
+parse_lo16 (cd, strp, opindex, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ long *valuep;
+{
+ if (strncasecmp (*strp, "%lo(", 4) == 0)
+ {
+ const char *errmsg;
+ enum cgen_parse_operand_result result_type;
+ bfd_vma value;
+
+ *strp += 4;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16,
+ &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 parse_imm (cd, strp, opindex, valuep);
+}
+
+/* Handle %lo in a negated signed context.
+ The signedness of the value doesn't matter to %lo(), but this also
+ handles the case where %lo() isn't present. */
+
+static const char *
+parse_mlo16 (cd, strp, opindex, valuep)
+ CGEN_CPU_DESC cd;
+ const char **strp;
+ int opindex;
+ long *valuep;
+{
+ if (strncasecmp (*strp, "%lo(", 4) == 0)
+ {
+ const char *errmsg;
+ enum cgen_parse_operand_result result_type;
+ bfd_vma value;
+
+ *strp += 4;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16,
+ &result_type, &value);
+ if (**strp != ')')
+ return _("missing `)'");
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value = (-value) & 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+
+ return parse_mimm (cd, strp, opindex, valuep);
+}
+
+/* -- */
+
+const char * iq2000_cgen_parse_operand
+ PARAMS ((CGEN_CPU_DESC, int, const char **, CGEN_FIELDS *));
+
+/* Main entry point for operand parsing.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `parse_insn_normal', but keeping it
+ separate makes clear the interface between `parse_insn_normal' and each of
+ the handlers. */
+
+const char *
+iq2000_cgen_parse_operand (cd, opindex, strp, fields)
+ CGEN_CPU_DESC cd;
+ int opindex;
+ const char ** strp;
+ CGEN_FIELDS * fields;
+{
+ const char * errmsg = NULL;
+ /* Used by scalar operands that still need to be parsed. */
+ long junk ATTRIBUTE_UNUSED;
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rs);
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ {
+ bfd_vma value;
+ errmsg = cgen_parse_address (cd, strp, IQ2000_OPERAND_BASEOFF, 0, NULL, & value);
+ fields->f_imm = value;
+ }
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BITNUM, &fields->f_rt);
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BYTECOUNT, &fields->f_bytecount);
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Y, &fields->f_cam_y);
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Z, &fields->f_cam_z);
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3FUNC, &fields->f_cm_3func);
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3Z, &fields->f_cm_3z);
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4FUNC, &fields->f_cm_4func);
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4Z, &fields->f_cm_4z);
+ break;
+ case IQ2000_OPERAND_COUNT :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_COUNT, &fields->f_count);
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_EXECODE, &fields->f_excode);
+ break;
+ case IQ2000_OPERAND_HI16 :
+ errmsg = parse_hi16 (cd, strp, IQ2000_OPERAND_HI16, &fields->f_imm);
+ break;
+ case IQ2000_OPERAND_IMM :
+ errmsg = parse_imm (cd, strp, IQ2000_OPERAND_IMM, &fields->f_imm);
+ break;
+ case IQ2000_OPERAND_INDEX :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_INDEX, &fields->f_index);
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ {
+ bfd_vma value;
+ errmsg = cgen_parse_address (cd, strp, IQ2000_OPERAND_JMPTARG, 0, NULL, & value);
+ fields->f_jtarg = value;
+ }
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ {
+ bfd_vma value;
+ errmsg = parse_jtargq10 (cd, strp, IQ2000_OPERAND_JMPTARGQ10, 0, NULL, & value);
+ fields->f_jtargq10 = value;
+ }
+ break;
+ case IQ2000_OPERAND_LO16 :
+ errmsg = parse_lo16 (cd, strp, IQ2000_OPERAND_LO16, &fields->f_imm);
+ break;
+ case IQ2000_OPERAND_MASK :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASK, &fields->f_mask);
+ break;
+ case IQ2000_OPERAND_MASKL :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKL, &fields->f_maskl);
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKQ10, &fields->f_maskq10);
+ break;
+ case IQ2000_OPERAND_MASKR :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKR, &fields->f_rs);
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ errmsg = parse_mlo16 (cd, strp, IQ2000_OPERAND_MLO16, &fields->f_imm);
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ {
+ bfd_vma value;
+ errmsg = cgen_parse_address (cd, strp, IQ2000_OPERAND_OFFSET, 0, NULL, & value);
+ fields->f_offset = value;
+ }
+ break;
+ case IQ2000_OPERAND_RD :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rd);
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rd_rs);
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rd_rt);
+ break;
+ case IQ2000_OPERAND_RS :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rs);
+ break;
+ case IQ2000_OPERAND_RT :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rt);
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rt_rs);
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_SHAMT, &fields->f_shamt);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while parsing.\n"), opindex);
+ abort ();
+ }
+
+ return errmsg;
+}
+
+cgen_parse_fn * const iq2000_cgen_parse_handlers[] =
+{
+ parse_insn_normal,
+};
+
+void
+iq2000_cgen_init_asm (cd)
+ CGEN_CPU_DESC cd;
+{
+ iq2000_cgen_init_opcode_table (cd);
+ iq2000_cgen_init_ibld_table (cd);
+ cd->parse_handlers = & iq2000_cgen_parse_handlers[0];
+ cd->parse_operand = iq2000_cgen_parse_operand;
+#ifdef CGEN_ASM_INIT_HOOK
+CGEN_ASM_INIT_HOOK
+#endif
+}
+
+\f
+
+/* Regex construction routine.
+
+ This translates an opcode syntax string into a regex string,
+ by replacing any non-character syntax element (such as an
+ opcode) with the pattern '.*'
+
+ It then compiles the regex and stores it in the opcode, for
+ later use by iq2000_cgen_assemble_insn
+
+ Returns NULL for success, an error message for failure. */
+
+char *
+iq2000_cgen_build_insn_regex (insn)
+ CGEN_INSN *insn;
+{
+ CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
+ const char *mnem = CGEN_INSN_MNEMONIC (insn);
+ char rxbuf[CGEN_MAX_RX_ELEMENTS];
+ char *rx = rxbuf;
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+ int reg_err;
+
+ syn = CGEN_SYNTAX_STRING (CGEN_OPCODE_SYNTAX (opc));
+
+ /* Mnemonics come first in the syntax string. */
+ if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
+ return _("missing mnemonic in syntax string");
+ ++syn;
+
+ /* Generate a case sensitive regular expression that emulates case
+ insensitive matching in the "C" locale. We cannot generate a case
+ insensitive regular expression because in Turkish locales, 'i' and 'I'
+ are not equal modulo case conversion. */
+
+ /* Copy the literal mnemonic out of the insn. */
+ for (; *mnem; mnem++)
+ {
+ char c = *mnem;
+
+ if (ISALPHA (c))
+ {
+ *rx++ = '[';
+ *rx++ = TOLOWER (c);
+ *rx++ = TOUPPER (c);
+ *rx++ = ']';
+ }
+ else
+ *rx++ = c;
+ }
+
+ /* Copy any remaining literals from the syntax string into the rx. */
+ for(; * syn != 0 && rx <= rxbuf + (CGEN_MAX_RX_ELEMENTS - 7 - 4); ++syn)
+ {
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ {
+ char c = CGEN_SYNTAX_CHAR (* syn);
+
+ switch (c)
+ {
+ /* Escape any regex metacharacters in the syntax. */
+ case '.': case '[': case '\\':
+ case '*': case '^': case '$':
+
+#ifdef CGEN_ESCAPE_EXTENDED_REGEX
+ case '?': case '{': case '}':
+ case '(': case ')': case '*':
+ case '|': case '+': case ']':
+#endif
+ *rx++ = '\\';
+ *rx++ = c;
+ break;
+
+ default:
+ if (ISALPHA (c))
+ {
+ *rx++ = '[';
+ *rx++ = TOLOWER (c);
+ *rx++ = TOUPPER (c);
+ *rx++ = ']';
+ }
+ else
+ *rx++ = c;
+ break;
+ }
+ }
+ else
+ {
+ /* Replace non-syntax fields with globs. */
+ *rx++ = '.';
+ *rx++ = '*';
+ }
+ }
+
+ /* Trailing whitespace ok. */
+ * rx++ = '[';
+ * rx++ = ' ';
+ * rx++ = '\t';
+ * rx++ = ']';
+ * rx++ = '*';
+
+ /* But anchor it after that. */
+ * rx++ = '$';
+ * rx = '\0';
+
+ CGEN_INSN_RX (insn) = xmalloc (sizeof (regex_t));
+ reg_err = regcomp ((regex_t *) CGEN_INSN_RX (insn), rxbuf, REG_NOSUB);
+
+ if (reg_err == 0)
+ return NULL;
+ else
+ {
+ static char msg[80];
+
+ regerror (reg_err, (regex_t *) CGEN_INSN_RX (insn), msg, 80);
+ regfree ((regex_t *) CGEN_INSN_RX (insn));
+ free (CGEN_INSN_RX (insn));
+ (CGEN_INSN_RX (insn)) = NULL;
+ return msg;
+ }
+}
+
+\f
+/* Default insn parser.
+
+ The syntax string is scanned and operands are parsed and stored in FIELDS.
+ Relocs are queued as we go via other callbacks.
+
+ ??? Note that this is currently an all-or-nothing parser. If we fail to
+ parse the instruction, we return 0 and the caller will start over from
+ the beginning. Backtracking will be necessary in parsing subexpressions,
+ but that can be handled there. Not handling backtracking here may get
+ expensive in the case of the m68k. Deal with later.
+
+ Returns NULL for success, an error message for failure. */
+
+static const char *
+parse_insn_normal (cd, insn, strp, fields)
+ CGEN_CPU_DESC cd;
+ const CGEN_INSN *insn;
+ const char **strp;
+ CGEN_FIELDS *fields;
+{
+ /* ??? Runtime added insns not handled yet. */
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ const char *str = *strp;
+ const char *errmsg;
+ const char *p;
+ const CGEN_SYNTAX_CHAR_TYPE * syn;
+#ifdef CGEN_MNEMONIC_OPERANDS
+ /* FIXME: wip */
+ int past_opcode_p;
+#endif
+
+ /* For now we assume the mnemonic is first (there are no leading operands).
+ We can parse it without needing to set up operand parsing.
+ GAS's input scrubber will ensure mnemonics are lowercase, but we may
+ not be called from GAS. */
+ p = CGEN_INSN_MNEMONIC (insn);
+ while (*p && TOLOWER (*p) == TOLOWER (*str))
+ ++p, ++str;
+
+ if (* p)
+ return _("unrecognized instruction");
+
+#ifndef CGEN_MNEMONIC_OPERANDS
+ if (* str && ! ISSPACE (* str))
+ return _("unrecognized instruction");
+#endif
+
+ CGEN_INIT_PARSE (cd);
+ cgen_init_parse_operand (cd);
+#ifdef CGEN_MNEMONIC_OPERANDS
+ past_opcode_p = 0;
+#endif
+
+ /* We don't check for (*str != '\0') here because we want to parse
+ any trailing fake arguments in the syntax string. */
+ syn = CGEN_SYNTAX_STRING (syntax);
+
+ /* Mnemonics come first for now, ensure valid string. */
+ if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
+ abort ();
+
+ ++syn;
+
+ while (* syn != 0)
+ {
+ /* Non operand chars must match exactly. */
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ {
+ /* FIXME: While we allow for non-GAS callers above, we assume the
+ first char after the mnemonic part is a space. */
+ /* FIXME: We also take inappropriate advantage of the fact that
+ GAS's input scrubber will remove extraneous blanks. */
+ if (TOLOWER (*str) == TOLOWER (CGEN_SYNTAX_CHAR (* syn)))
+ {
+#ifdef CGEN_MNEMONIC_OPERANDS
+ if (CGEN_SYNTAX_CHAR(* syn) == ' ')
+ past_opcode_p = 1;
+#endif
+ ++ syn;
+ ++ str;
+ }
+ else if (*str)
+ {
+ /* Syntax char didn't match. Can't be this insn. */
+ static char msg [80];
+
+ /* xgettext:c-format */
+ sprintf (msg, _("syntax error (expected char `%c', found `%c')"),
+ CGEN_SYNTAX_CHAR(*syn), *str);
+ return msg;
+ }
+ else
+ {
+ /* Ran out of input. */
+ static char msg [80];
+
+ /* xgettext:c-format */
+ sprintf (msg, _("syntax error (expected char `%c', found end of instruction)"),
+ CGEN_SYNTAX_CHAR(*syn));
+ return msg;
+ }
+ continue;
+ }
+
+ /* We have an operand of some sort. */
+ errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn),
+ &str, fields);
+ if (errmsg)
+ return errmsg;
+
+ /* Done with this operand, continue with next one. */
+ ++ syn;
+ }
+
+ /* If we're at the end of the syntax string, we're done. */
+ if (* syn == 0)
+ {
+ /* FIXME: For the moment we assume a valid `str' can only contain
+ blanks now. IE: We needn't try again with a longer version of
+ the insn and it is assumed that longer versions of insns appear
+ before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3). */
+ while (ISSPACE (* str))
+ ++ str;
+
+ if (* str != '\0')
+ return _("junk at end of line"); /* FIXME: would like to include `str' */
+
+ return NULL;
+ }
+
+ /* We couldn't parse it. */
+ return _("unrecognized instruction");
+}
+\f
+/* Main entry point.
+ This routine is called for each instruction to be assembled.
+ STR points to the insn to be assembled.
+ We assume all necessary tables have been initialized.
+ The assembled instruction, less any fixups, is stored in BUF.
+ Remember that if CGEN_INT_INSN_P then BUF is an int and thus the value
+ still needs to be converted to target byte order, otherwise BUF is an array
+ of bytes in target byte order.
+ The result is a pointer to the insn's entry in the opcode table,
+ or NULL if an error occured (an error message will have already been
+ printed).
+
+ Note that when processing (non-alias) macro-insns,
+ this function recurses.
+
+ ??? It's possible to make this cpu-independent.
+ One would have to deal with a few minor things.
+ At this point in time doing so would be more of a curiosity than useful
+ [for example this file isn't _that_ big], but keeping the possibility in
+ mind helps keep the design clean. */
+
+const CGEN_INSN *
+iq2000_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+ CGEN_CPU_DESC cd;
+ const char *str;
+ CGEN_FIELDS *fields;
+ CGEN_INSN_BYTES_PTR buf;
+ char **errmsg;
+{
+ const char *start;
+ CGEN_INSN_LIST *ilist;
+ const char *parse_errmsg = NULL;
+ const char *insert_errmsg = NULL;
+ int recognized_mnemonic = 0;
+
+ /* Skip leading white space. */
+ while (ISSPACE (* str))
+ ++ str;
+
+ /* The instructions are stored in hashed lists.
+ Get the first in the list. */
+ ilist = CGEN_ASM_LOOKUP_INSN (cd, str);
+
+ /* Keep looking until we find a match. */
+ start = str;
+ for ( ; ilist != NULL ; ilist = CGEN_ASM_NEXT_INSN (ilist))
+ {
+ const CGEN_INSN *insn = ilist->insn;
+ recognized_mnemonic = 1;
+
+#ifdef CGEN_VALIDATE_INSN_SUPPORTED
+ /* Not usually needed as unsupported opcodes
+ shouldn't be in the hash lists. */
+ /* Is this insn supported by the selected cpu? */
+ if (! iq2000_cgen_insn_supported (cd, insn))
+ continue;
+#endif
+ /* If the RELAX attribute is set, this is an insn that shouldn't be
+ chosen immediately. Instead, it is used during assembler/linker
+ relaxation if possible. */
+ if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAX) != 0)
+ continue;
+
+ str = start;
+
+ /* Skip this insn if str doesn't look right lexically. */
+ if (CGEN_INSN_RX (insn) != NULL &&
+ regexec ((regex_t *) CGEN_INSN_RX (insn), str, 0, NULL, 0) == REG_NOMATCH)
+ continue;
+
+ /* Allow parse/insert handlers to obtain length of insn. */
+ CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
+
+ parse_errmsg = CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields);
+ if (parse_errmsg != NULL)
+ continue;
+
+ /* ??? 0 is passed for `pc'. */
+ insert_errmsg = CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf,
+ (bfd_vma) 0);
+ if (insert_errmsg != NULL)
+ continue;
+
+ /* It is up to the caller to actually output the insn and any
+ queued relocs. */
+ return insn;
+ }
+
+ {
+ static char errbuf[150];
+#ifdef CGEN_VERBOSE_ASSEMBLER_ERRORS
+ const char *tmp_errmsg;
+
+ /* If requesting verbose error messages, use insert_errmsg.
+ Failing that, use parse_errmsg. */
+ tmp_errmsg = (insert_errmsg ? insert_errmsg :
+ parse_errmsg ? parse_errmsg :
+ recognized_mnemonic ?
+ _("unrecognized form of instruction") :
+ _("unrecognized instruction"));
+
+ if (strlen (start) > 50)
+ /* xgettext:c-format */
+ sprintf (errbuf, "%s `%.50s...'", tmp_errmsg, start);
+ else
+ /* xgettext:c-format */
+ sprintf (errbuf, "%s `%.50s'", tmp_errmsg, start);
+#else
+ if (strlen (start) > 50)
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s...'"), start);
+ else
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s'"), start);
+#endif
+
+ *errmsg = errbuf;
+ return NULL;
+ }
+}
+\f
+#if 0 /* This calls back to GAS which we can't do without care. */
+
+/* Record each member of OPVALS in the assembler's symbol table.
+ This lets GAS parse registers for us.
+ ??? Interesting idea but not currently used. */
+
+/* Record each member of OPVALS in the assembler's symbol table.
+ FIXME: Not currently used. */
+
+void
+iq2000_cgen_asm_hash_keywords (cd, opvals)
+ CGEN_CPU_DESC cd;
+ CGEN_KEYWORD *opvals;
+{
+ CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
+ const CGEN_KEYWORD_ENTRY * ke;
+
+ while ((ke = cgen_keyword_search_next (& search)) != NULL)
+ {
+#if 0 /* Unnecessary, should be done in the search routine. */
+ if (! iq2000_cgen_opval_supported (ke))
+ continue;
+#endif
+ cgen_asm_record_register (cd, ke->name, ke->value);
+ }
+}
+
+#endif /* 0 */
--- /dev/null
+/* CPU data for iq2000.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+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, 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 "sysdep.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "iq2000-desc.h"
+#include "iq2000-opc.h"
+#include "opintl.h"
+#include "libiberty.h"
+
+/* Attributes. */
+
+static const CGEN_ATTR_ENTRY bool_attr[] =
+{
+ { "#f", 0 },
+ { "#t", 1 },
+ { 0, 0 }
+};
+
+static const CGEN_ATTR_ENTRY MACH_attr[] =
+{
+ { "base", MACH_BASE },
+ { "iq2000", MACH_IQ2000 },
+ { "iq10", MACH_IQ10 },
+ { "max", MACH_MAX },
+ { 0, 0 }
+};
+
+static const CGEN_ATTR_ENTRY ISA_attr[] =
+{
+ { "iq2000", ISA_IQ2000 },
+ { "max", ISA_MAX },
+ { 0, 0 }
+};
+
+const CGEN_ATTR_TABLE iq2000_cgen_ifield_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "RESERVED", &bool_attr[0], &bool_attr[0] },
+ { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
+ { "SIGNED", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE iq2000_cgen_hardware_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "PC", &bool_attr[0], &bool_attr[0] },
+ { "PROFILE", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE iq2000_cgen_operand_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
+ { "SIGNED", &bool_attr[0], &bool_attr[0] },
+ { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
+ { "RELAX", &bool_attr[0], &bool_attr[0] },
+ { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE iq2000_cgen_insn_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "ALIAS", &bool_attr[0], &bool_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
+ { "COND-CTI", &bool_attr[0], &bool_attr[0] },
+ { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
+ { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
+ { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
+ { "RELAX", &bool_attr[0], &bool_attr[0] },
+ { "NO-DIS", &bool_attr[0], &bool_attr[0] },
+ { "PBB", &bool_attr[0], &bool_attr[0] },
+ { "YIELD-INSN", &bool_attr[0], &bool_attr[0] },
+ { "LOAD-DELAY", &bool_attr[0], &bool_attr[0] },
+ { "EVEN-REG-NUM", &bool_attr[0], &bool_attr[0] },
+ { "UNSUPPORTED", &bool_attr[0], &bool_attr[0] },
+ { "USES-RD", &bool_attr[0], &bool_attr[0] },
+ { "USES-RS", &bool_attr[0], &bool_attr[0] },
+ { "USES-RT", &bool_attr[0], &bool_attr[0] },
+ { "USES-R31", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+/* Instruction set variants. */
+
+static const CGEN_ISA iq2000_cgen_isa_table[] = {
+ { "iq2000", 32, 32, 32, 32 },
+ { 0, 0, 0, 0, 0 }
+};
+
+/* Machine variants. */
+
+static const CGEN_MACH iq2000_cgen_mach_table[] = {
+ { "iq2000", "iq2000", MACH_IQ2000, 0 },
+ { "iq10", "iq10", MACH_IQ10, 0 },
+ { 0, 0, 0, 0 }
+};
+
+static CGEN_KEYWORD_ENTRY iq2000_cgen_opval_gr_names_entries[] =
+{
+ { "r0", 0, {0, {0}}, 0, 0 },
+ { "%0", 0, {0, {0}}, 0, 0 },
+ { "r1", 1, {0, {0}}, 0, 0 },
+ { "%1", 1, {0, {0}}, 0, 0 },
+ { "r2", 2, {0, {0}}, 0, 0 },
+ { "%2", 2, {0, {0}}, 0, 0 },
+ { "r3", 3, {0, {0}}, 0, 0 },
+ { "%3", 3, {0, {0}}, 0, 0 },
+ { "r4", 4, {0, {0}}, 0, 0 },
+ { "%4", 4, {0, {0}}, 0, 0 },
+ { "r5", 5, {0, {0}}, 0, 0 },
+ { "%5", 5, {0, {0}}, 0, 0 },
+ { "r6", 6, {0, {0}}, 0, 0 },
+ { "%6", 6, {0, {0}}, 0, 0 },
+ { "r7", 7, {0, {0}}, 0, 0 },
+ { "%7", 7, {0, {0}}, 0, 0 },
+ { "r8", 8, {0, {0}}, 0, 0 },
+ { "%8", 8, {0, {0}}, 0, 0 },
+ { "r9", 9, {0, {0}}, 0, 0 },
+ { "%9", 9, {0, {0}}, 0, 0 },
+ { "r10", 10, {0, {0}}, 0, 0 },
+ { "%10", 10, {0, {0}}, 0, 0 },
+ { "r11", 11, {0, {0}}, 0, 0 },
+ { "%11", 11, {0, {0}}, 0, 0 },
+ { "r12", 12, {0, {0}}, 0, 0 },
+ { "%12", 12, {0, {0}}, 0, 0 },
+ { "r13", 13, {0, {0}}, 0, 0 },
+ { "%13", 13, {0, {0}}, 0, 0 },
+ { "r14", 14, {0, {0}}, 0, 0 },
+ { "%14", 14, {0, {0}}, 0, 0 },
+ { "r15", 15, {0, {0}}, 0, 0 },
+ { "%15", 15, {0, {0}}, 0, 0 },
+ { "r16", 16, {0, {0}}, 0, 0 },
+ { "%16", 16, {0, {0}}, 0, 0 },
+ { "r17", 17, {0, {0}}, 0, 0 },
+ { "%17", 17, {0, {0}}, 0, 0 },
+ { "r18", 18, {0, {0}}, 0, 0 },
+ { "%18", 18, {0, {0}}, 0, 0 },
+ { "r19", 19, {0, {0}}, 0, 0 },
+ { "%19", 19, {0, {0}}, 0, 0 },
+ { "r20", 20, {0, {0}}, 0, 0 },
+ { "%20", 20, {0, {0}}, 0, 0 },
+ { "r21", 21, {0, {0}}, 0, 0 },
+ { "%21", 21, {0, {0}}, 0, 0 },
+ { "r22", 22, {0, {0}}, 0, 0 },
+ { "%22", 22, {0, {0}}, 0, 0 },
+ { "r23", 23, {0, {0}}, 0, 0 },
+ { "%23", 23, {0, {0}}, 0, 0 },
+ { "r24", 24, {0, {0}}, 0, 0 },
+ { "%24", 24, {0, {0}}, 0, 0 },
+ { "r25", 25, {0, {0}}, 0, 0 },
+ { "%25", 25, {0, {0}}, 0, 0 },
+ { "r26", 26, {0, {0}}, 0, 0 },
+ { "%26", 26, {0, {0}}, 0, 0 },
+ { "r27", 27, {0, {0}}, 0, 0 },
+ { "%27", 27, {0, {0}}, 0, 0 },
+ { "r28", 28, {0, {0}}, 0, 0 },
+ { "%28", 28, {0, {0}}, 0, 0 },
+ { "r29", 29, {0, {0}}, 0, 0 },
+ { "%29", 29, {0, {0}}, 0, 0 },
+ { "r30", 30, {0, {0}}, 0, 0 },
+ { "%30", 30, {0, {0}}, 0, 0 },
+ { "r31", 31, {0, {0}}, 0, 0 },
+ { "%31", 31, {0, {0}}, 0, 0 }
+};
+
+CGEN_KEYWORD iq2000_cgen_opval_gr_names =
+{
+ & iq2000_cgen_opval_gr_names_entries[0],
+ 64,
+ 0, 0, 0, 0, ""
+};
+
+
+/* The hardware table. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_HW_##a)
+#else
+#define A(a) (1 << CGEN_HW_/**/a)
+#endif
+
+const CGEN_HW_ENTRY iq2000_cgen_hw_table[] =
+{
+ { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } },
+ { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } },
+ { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } },
+ { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } },
+ { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } },
+ { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { (1<<MACH_BASE) } } },
+ { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & iq2000_cgen_opval_gr_names, { 0, { (1<<MACH_BASE) } } },
+ { 0, 0, CGEN_ASM_NONE, 0, {0, {0}} }
+};
+
+#undef A
+
+
+/* The instruction field table. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_IFLD_##a)
+#else
+#define A(a) (1 << CGEN_IFLD_/**/a)
+#endif
+
+const CGEN_IFLD iq2000_cgen_ifld_table[] =
+{
+ { IQ2000_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_OPCODE, "f-opcode", 0, 32, 31, 6, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_RS, "f-rs", 0, 32, 25, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_RT, "f-rt", 0, 32, 20, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_RD, "f-rd", 0, 32, 15, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_SHAMT, "f-shamt", 0, 32, 10, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CP_OP, "f-cp-op", 0, 32, 10, 3, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CP_OP_10, "f-cp-op-10", 0, 32, 10, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CP_GRP, "f-cp-grp", 0, 32, 7, 2, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_FUNC, "f-func", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_IMM, "f-imm", 0, 32, 15, 16, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_JTARG, "f-jtarg", 0, 32, 15, 16, { 0|A(ABS_ADDR), { (1<<MACH_BASE) } } },
+ { IQ2000_F_JTARGQ10, "f-jtargq10", 0, 32, 20, 21, { 0|A(ABS_ADDR), { (1<<MACH_BASE) } } },
+ { IQ2000_F_OFFSET, "f-offset", 0, 32, 15, 16, { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } } },
+ { IQ2000_F_COUNT, "f-count", 0, 32, 15, 7, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_BYTECOUNT, "f-bytecount", 0, 32, 7, 8, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_INDEX, "f-index", 0, 32, 8, 9, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_MASK, "f-mask", 0, 32, 9, 4, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_MASKQ10, "f-maskq10", 0, 32, 10, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_MASKL, "f-maskl", 0, 32, 4, 5, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_EXCODE, "f-excode", 0, 32, 25, 20, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_RSRVD, "f-rsrvd", 0, 32, 25, 10, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_10_11, "f-10-11", 0, 32, 10, 11, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_24_19, "f-24-19", 0, 32, 24, 19, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_5, "f-5", 0, 32, 5, 1, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_10, "f-10", 0, 32, 10, 1, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_25, "f-25", 0, 32, 25, 1, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CAM_Z, "f-cam-z", 0, 32, 5, 3, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CAM_Y, "f-cam-y", 0, 32, 2, 3, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CM_3FUNC, "f-cm-3func", 0, 32, 5, 3, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CM_4FUNC, "f-cm-4func", 0, 32, 5, 4, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CM_3Z, "f-cm-3z", 0, 32, 1, 2, { 0, { (1<<MACH_BASE) } } },
+ { IQ2000_F_CM_4Z, "f-cm-4z", 0, 32, 2, 3, { 0, { (1<<MACH_BASE) } } },
+ { 0, 0, 0, 0, 0, 0, {0, {0}} }
+};
+
+#undef A
+
+
+
+/* multi ifield declarations */
+
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RS_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RT_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RT_RS_MULTI_IFIELD [];
+
+
+/* multi ifield definitions */
+
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RS_MULTI_IFIELD [] =
+{
+ { 0, { (void *) &(iq2000_cgen_ifld_table[5])} },
+ { 0, { (void *) &(iq2000_cgen_ifld_table[3])} },
+ {0,{0}}
+};
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RT_MULTI_IFIELD [] =
+{
+ { 0, { (void *) &(iq2000_cgen_ifld_table[5])} },
+ { 0, { (void *) &(iq2000_cgen_ifld_table[4])} },
+ {0,{0}}
+};
+const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RT_RS_MULTI_IFIELD [] =
+{
+ { 0, { (void *) &(iq2000_cgen_ifld_table[4])} },
+ { 0, { (void *) &(iq2000_cgen_ifld_table[3])} },
+ {0,{0}}
+};
+
+/* The operand table. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_OPERAND_##a)
+#else
+#define A(a) (1 << CGEN_OPERAND_/**/a)
+#endif
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define OPERAND(op) IQ2000_OPERAND_##op
+#else
+#define OPERAND(op) IQ2000_OPERAND_/**/op
+#endif
+
+const CGEN_OPERAND iq2000_cgen_operand_table[] =
+{
+/* pc: program counter */
+ { "pc", IQ2000_OPERAND_PC, HW_H_PC, 0, 0,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[0])} },
+ { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } },
+/* rs: register Rs */
+ { "rs", IQ2000_OPERAND_RS, HW_H_GR, 25, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[3])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* rt: register Rt */
+ { "rt", IQ2000_OPERAND_RT, HW_H_GR, 20, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[4])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* rd: register Rd */
+ { "rd", IQ2000_OPERAND_RD, HW_H_GR, 15, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[5])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* rd-rs: register Rd from Rs */
+ { "rd-rs", IQ2000_OPERAND_RD_RS, HW_H_GR, 15, 10,
+ { 2, { (void *) &(IQ2000_F_RD_RS_MULTI_IFIELD[0])} },
+ { 0|A(VIRTUAL), { (1<<MACH_BASE) } } },
+/* rd-rt: register Rd from Rt */
+ { "rd-rt", IQ2000_OPERAND_RD_RT, HW_H_GR, 15, 10,
+ { 2, { (void *) &(IQ2000_F_RD_RT_MULTI_IFIELD[0])} },
+ { 0|A(VIRTUAL), { (1<<MACH_BASE) } } },
+/* rt-rs: register Rt from Rs */
+ { "rt-rs", IQ2000_OPERAND_RT_RS, HW_H_GR, 20, 10,
+ { 2, { (void *) &(IQ2000_F_RT_RS_MULTI_IFIELD[0])} },
+ { 0|A(VIRTUAL), { (1<<MACH_BASE) } } },
+/* shamt: shift amount */
+ { "shamt", IQ2000_OPERAND_SHAMT, HW_H_UINT, 10, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[6])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* imm: immediate */
+ { "imm", IQ2000_OPERAND_IMM, HW_H_UINT, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[11])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* offset: pc-relative offset */
+ { "offset", IQ2000_OPERAND_OFFSET, HW_H_IADDR, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[14])} },
+ { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } } },
+/* baseoff: base register offset */
+ { "baseoff", IQ2000_OPERAND_BASEOFF, HW_H_IADDR, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[11])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* jmptarg: jump target */
+ { "jmptarg", IQ2000_OPERAND_JMPTARG, HW_H_IADDR, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[12])} },
+ { 0|A(ABS_ADDR), { (1<<MACH_BASE) } } },
+/* mask: mask */
+ { "mask", IQ2000_OPERAND_MASK, HW_H_UINT, 9, 4,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[18])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* maskq10: iq10 mask */
+ { "maskq10", IQ2000_OPERAND_MASKQ10, HW_H_UINT, 10, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[19])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* maskl: mask left */
+ { "maskl", IQ2000_OPERAND_MASKL, HW_H_UINT, 4, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[20])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* count: count */
+ { "count", IQ2000_OPERAND_COUNT, HW_H_UINT, 15, 7,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[15])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* index: index */
+ { "index", IQ2000_OPERAND_INDEX, HW_H_UINT, 8, 9,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[17])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* execode: execcode */
+ { "execode", IQ2000_OPERAND_EXECODE, HW_H_UINT, 25, 20,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[21])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* bytecount: byte count */
+ { "bytecount", IQ2000_OPERAND_BYTECOUNT, HW_H_UINT, 7, 8,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[16])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cam-y: cam global opn y */
+ { "cam-y", IQ2000_OPERAND_CAM_Y, HW_H_UINT, 2, 3,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[29])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cam-z: cam global mask z */
+ { "cam-z", IQ2000_OPERAND_CAM_Z, HW_H_UINT, 5, 3,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[28])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cm-3func: CM 3 bit fn field */
+ { "cm-3func", IQ2000_OPERAND_CM_3FUNC, HW_H_UINT, 5, 3,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[30])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cm-4func: CM 4 bit fn field */
+ { "cm-4func", IQ2000_OPERAND_CM_4FUNC, HW_H_UINT, 5, 4,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[31])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cm-3z: CM 3 bit Z field */
+ { "cm-3z", IQ2000_OPERAND_CM_3Z, HW_H_UINT, 1, 2,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[32])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* cm-4z: CM 4 bit Z field */
+ { "cm-4z", IQ2000_OPERAND_CM_4Z, HW_H_UINT, 2, 3,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[33])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* base: base register */
+ { "base", IQ2000_OPERAND_BASE, HW_H_GR, 25, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[3])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* maskr: mask right */
+ { "maskr", IQ2000_OPERAND_MASKR, HW_H_UINT, 25, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[3])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* bitnum: bit number */
+ { "bitnum", IQ2000_OPERAND_BITNUM, HW_H_UINT, 20, 5,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[4])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* hi16: high 16 bit immediate */
+ { "hi16", IQ2000_OPERAND_HI16, HW_H_UINT, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[11])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* lo16: 16 bit signed immediate, for low */
+ { "lo16", IQ2000_OPERAND_LO16, HW_H_UINT, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[11])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* mlo16: negated 16 bit signed immediate */
+ { "mlo16", IQ2000_OPERAND_MLO16, HW_H_UINT, 15, 16,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[11])} },
+ { 0, { (1<<MACH_BASE) } } },
+/* jmptargq10: iq10 21-bit jump offset */
+ { "jmptargq10", IQ2000_OPERAND_JMPTARGQ10, HW_H_IADDR, 20, 21,
+ { 0, { (void *) &(iq2000_cgen_ifld_table[13])} },
+ { 0|A(ABS_ADDR), { (1<<MACH_BASE) } } },
+ { 0, 0, 0, 0, 0, {0, {0}}, {0, {0}} }
+};
+
+#undef A
+
+
+/* The instruction table. */
+
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_INSN_##a)
+#else
+#define A(a) (1 << CGEN_INSN_/**/a)
+#endif
+
+static const CGEN_IBASE iq2000_cgen_insn_table[MAX_INSNS] =
+{
+ /* Special null first entry.
+ A `num' value of zero is thus invalid.
+ Also, the special `invalid' insn resides here. */
+ { 0, 0, 0, 0, {0, {0}} },
+/* add ${rd-rs},$rt */
+ {
+ -1, "add2", "add", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* add $rd,$rs,$rt */
+ {
+ IQ2000_INSN_ADD, "add", "add", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* addi ${rt-rs},$lo16 */
+ {
+ -1, "addi2", "addi", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* addi $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_ADDI, "addi", "addi", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* addiu ${rt-rs},$lo16 */
+ {
+ -1, "addiu2", "addiu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* addiu $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_ADDIU, "addiu", "addiu", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* addu ${rd-rs},$rt */
+ {
+ -1, "addu2", "addu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* addu $rd,$rs,$rt */
+ {
+ IQ2000_INSN_ADDU, "addu", "addu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* ado16 ${rd-rs},$rt */
+ {
+ -1, "ado162", "ado16", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* ado16 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_ADO16, "ado16", "ado16", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* and ${rd-rs},$rt */
+ {
+ -1, "and2", "and", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* and $rd,$rs,$rt */
+ {
+ IQ2000_INSN_AND, "and", "and", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* andi ${rt-rs},$lo16 */
+ {
+ -1, "andi2", "andi", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* andi $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_ANDI, "andi", "andi", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* andoi ${rt-rs},$lo16 */
+ {
+ -1, "andoi2", "andoi", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* andoi $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_ANDOI, "andoi", "andoi", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* nor ${rd-rs},$rt */
+ {
+ -1, "nor2", "nor", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* nor $rd,$rs,$rt */
+ {
+ IQ2000_INSN_NOR, "nor", "nor", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* or ${rd-rs},$rt */
+ {
+ -1, "or2", "or", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* or $rd,$rs,$rt */
+ {
+ IQ2000_INSN_OR, "or", "or", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* ori ${rt-rs},$lo16 */
+ {
+ -1, "ori2", "ori", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* ori $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_ORI, "ori", "ori", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* ram $rd,$rt,$shamt,$maskl,$maskr */
+ {
+ IQ2000_INSN_RAM, "ram", "ram", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* sll $rd,$rt,$shamt */
+ {
+ IQ2000_INSN_SLL, "sll", "sll", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* sllv ${rd-rt},$rs */
+ {
+ -1, "sllv2", "sllv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sllv $rd,$rt,$rs */
+ {
+ IQ2000_INSN_SLLV, "sllv", "sllv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* slmv ${rd-rt},$rs,$shamt */
+ {
+ -1, "slmv2", "slmv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* slmv $rd,$rt,$rs,$shamt */
+ {
+ IQ2000_INSN_SLMV, "slmv", "slmv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* slt ${rd-rs},$rt */
+ {
+ -1, "slt2", "slt", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* slt $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SLT, "slt", "slt", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* slti ${rt-rs},$imm */
+ {
+ -1, "slti2", "slti", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* slti $rt,$rs,$imm */
+ {
+ IQ2000_INSN_SLTI, "slti", "slti", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* sltiu ${rt-rs},$imm */
+ {
+ -1, "sltiu2", "sltiu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sltiu $rt,$rs,$imm */
+ {
+ IQ2000_INSN_SLTIU, "sltiu", "sltiu", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* sltu ${rd-rs},$rt */
+ {
+ -1, "sltu2", "sltu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sltu $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SLTU, "sltu", "sltu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* sra ${rd-rt},$shamt */
+ {
+ -1, "sra2", "sra", 32,
+ { 0|A(USES_RT)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sra $rd,$rt,$shamt */
+ {
+ IQ2000_INSN_SRA, "sra", "sra", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* srav ${rd-rt},$rs */
+ {
+ -1, "srav2", "srav", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* srav $rd,$rt,$rs */
+ {
+ IQ2000_INSN_SRAV, "srav", "srav", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* srl $rd,$rt,$shamt */
+ {
+ IQ2000_INSN_SRL, "srl", "srl", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* srlv ${rd-rt},$rs */
+ {
+ -1, "srlv2", "srlv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* srlv $rd,$rt,$rs */
+ {
+ IQ2000_INSN_SRLV, "srlv", "srlv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* srmv ${rd-rt},$rs,$shamt */
+ {
+ -1, "srmv2", "srmv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* srmv $rd,$rt,$rs,$shamt */
+ {
+ IQ2000_INSN_SRMV, "srmv", "srmv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* sub ${rd-rs},$rt */
+ {
+ -1, "sub2", "sub", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sub $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SUB, "sub", "sub", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* subu ${rd-rs},$rt */
+ {
+ -1, "subu2", "subu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* subu $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SUBU, "subu", "subu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* xor ${rd-rs},$rt */
+ {
+ -1, "xor2", "xor", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* xor $rd,$rs,$rt */
+ {
+ IQ2000_INSN_XOR, "xor", "xor", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+ },
+/* xori ${rt-rs},$lo16 */
+ {
+ -1, "xori2", "xori", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* xori $rt,$rs,$lo16 */
+ {
+ IQ2000_INSN_XORI, "xori", "xori", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* bbi $rs($bitnum),$offset */
+ {
+ IQ2000_INSN_BBI, "bbi", "bbi", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bbin $rs($bitnum),$offset */
+ {
+ IQ2000_INSN_BBIN, "bbin", "bbin", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bbv $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BBV, "bbv", "bbv", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bbvn $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BBVN, "bbvn", "bbvn", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* beq $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BEQ, "beq", "beq", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* beql $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BEQL, "beql", "beql", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bgez $rs,$offset */
+ {
+ IQ2000_INSN_BGEZ, "bgez", "bgez", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bgezal $rs,$offset */
+ {
+ IQ2000_INSN_BGEZAL, "bgezal", "bgezal", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bgezall $rs,$offset */
+ {
+ IQ2000_INSN_BGEZALL, "bgezall", "bgezall", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bgezl $rs,$offset */
+ {
+ IQ2000_INSN_BGEZL, "bgezl", "bgezl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bltz $rs,$offset */
+ {
+ IQ2000_INSN_BLTZ, "bltz", "bltz", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bltzl $rs,$offset */
+ {
+ IQ2000_INSN_BLTZL, "bltzl", "bltzl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bltzal $rs,$offset */
+ {
+ IQ2000_INSN_BLTZAL, "bltzal", "bltzal", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bltzall $rs,$offset */
+ {
+ IQ2000_INSN_BLTZALL, "bltzall", "bltzall", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bmb0 $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB0, "bmb0", "bmb0", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bmb1 $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB1, "bmb1", "bmb1", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bmb2 $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB2, "bmb2", "bmb2", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bmb3 $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB3, "bmb3", "bmb3", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bne $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BNE, "bne", "bne", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* bnel $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BNEL, "bnel", "bnel", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* jalr $rd,$rs */
+ {
+ IQ2000_INSN_JALR, "jalr", "jalr", 32,
+ { 0|A(USES_RS)|A(USES_RD)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* jr $rs */
+ {
+ IQ2000_INSN_JR, "jr", "jr", 32,
+ { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+ },
+/* lb $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LB, "lb", "lb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+ },
+/* lbu $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LBU, "lbu", "lbu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+ },
+/* lh $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LH, "lh", "lh", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+ },
+/* lhu $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LHU, "lhu", "lhu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+ },
+/* lui $rt,$hi16 */
+ {
+ IQ2000_INSN_LUI, "lui", "lui", 32,
+ { 0|A(USES_RT), { (1<<MACH_BASE) } }
+ },
+/* lw $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LW, "lw", "lw", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+ },
+/* sb $rt,$lo16($base) */
+ {
+ IQ2000_INSN_SB, "sb", "sb", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* sh $rt,$lo16($base) */
+ {
+ IQ2000_INSN_SH, "sh", "sh", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* sw $rt,$lo16($base) */
+ {
+ IQ2000_INSN_SW, "sw", "sw", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+ },
+/* break */
+ {
+ IQ2000_INSN_BREAK, "break", "break", 32,
+ { 0, { (1<<MACH_BASE) } }
+ },
+/* syscall */
+ {
+ IQ2000_INSN_SYSCALL, "syscall", "syscall", 32,
+ { 0|A(YIELD_INSN), { (1<<MACH_BASE) } }
+ },
+/* andoui $rt,$rs,$hi16 */
+ {
+ IQ2000_INSN_ANDOUI, "andoui", "andoui", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ2000) } }
+ },
+/* andoui ${rt-rs},$hi16 */
+ {
+ -1, "andoui2", "andoui", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ2000) } }
+ },
+/* orui ${rt-rs},$hi16 */
+ {
+ -1, "orui2", "orui", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ2000) } }
+ },
+/* orui $rt,$rs,$hi16 */
+ {
+ IQ2000_INSN_ORUI, "orui", "orui", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ2000) } }
+ },
+/* bgtz $rs,$offset */
+ {
+ IQ2000_INSN_BGTZ, "bgtz", "bgtz", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bgtzl $rs,$offset */
+ {
+ IQ2000_INSN_BGTZL, "bgtzl", "bgtzl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* blez $rs,$offset */
+ {
+ IQ2000_INSN_BLEZ, "blez", "blez", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* blezl $rs,$offset */
+ {
+ IQ2000_INSN_BLEZL, "blezl", "blezl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* mrgb $rd,$rs,$rt,$mask */
+ {
+ IQ2000_INSN_MRGB, "mrgb", "mrgb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* mrgb ${rd-rs},$rt,$mask */
+ {
+ -1, "mrgb2", "mrgb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ2000) } }
+ },
+/* bctxt $rs,$offset */
+ {
+ IQ2000_INSN_BCTXT, "bctxt", "bctxt", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc0f $offset */
+ {
+ IQ2000_INSN_BC0F, "bc0f", "bc0f", 32,
+ { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc0fl $offset */
+ {
+ IQ2000_INSN_BC0FL, "bc0fl", "bc0fl", 32,
+ { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc3f $offset */
+ {
+ IQ2000_INSN_BC3F, "bc3f", "bc3f", 32,
+ { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc3fl $offset */
+ {
+ IQ2000_INSN_BC3FL, "bc3fl", "bc3fl", 32,
+ { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc0t $offset */
+ {
+ IQ2000_INSN_BC0T, "bc0t", "bc0t", 32,
+ { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc0tl $offset */
+ {
+ IQ2000_INSN_BC0TL, "bc0tl", "bc0tl", 32,
+ { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc3t $offset */
+ {
+ IQ2000_INSN_BC3T, "bc3t", "bc3t", 32,
+ { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bc3tl $offset */
+ {
+ IQ2000_INSN_BC3TL, "bc3tl", "bc3tl", 32,
+ { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* cfc0 $rt,$rd */
+ {
+ IQ2000_INSN_CFC0, "cfc0", "cfc0", 32,
+ { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* cfc1 $rt,$rd */
+ {
+ IQ2000_INSN_CFC1, "cfc1", "cfc1", 32,
+ { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* cfc2 $rt,$rd */
+ {
+ IQ2000_INSN_CFC2, "cfc2", "cfc2", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* cfc3 $rt,$rd */
+ {
+ IQ2000_INSN_CFC3, "cfc3", "cfc3", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* chkhdr $rd,$rt */
+ {
+ IQ2000_INSN_CHKHDR, "chkhdr", "chkhdr", 32,
+ { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* ctc0 $rt,$rd */
+ {
+ IQ2000_INSN_CTC0, "ctc0", "ctc0", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* ctc1 $rt,$rd */
+ {
+ IQ2000_INSN_CTC1, "ctc1", "ctc1", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* ctc2 $rt,$rd */
+ {
+ IQ2000_INSN_CTC2, "ctc2", "ctc2", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* ctc3 $rt,$rd */
+ {
+ IQ2000_INSN_CTC3, "ctc3", "ctc3", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* jcr $rs */
+ {
+ IQ2000_INSN_JCR, "jcr", "jcr", 32,
+ { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* luc32 $rt,$rd */
+ {
+ IQ2000_INSN_LUC32, "luc32", "luc32", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* luc32l $rt,$rd */
+ {
+ IQ2000_INSN_LUC32L, "luc32l", "luc32l", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* luc64 $rt,$rd */
+ {
+ IQ2000_INSN_LUC64, "luc64", "luc64", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* luc64l $rt,$rd */
+ {
+ IQ2000_INSN_LUC64L, "luc64l", "luc64l", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* luk $rt,$rd */
+ {
+ IQ2000_INSN_LUK, "luk", "luk", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lulck $rt */
+ {
+ IQ2000_INSN_LULCK, "lulck", "lulck", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* lum32 $rt,$rd */
+ {
+ IQ2000_INSN_LUM32, "lum32", "lum32", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lum32l $rt,$rd */
+ {
+ IQ2000_INSN_LUM32L, "lum32l", "lum32l", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lum64 $rt,$rd */
+ {
+ IQ2000_INSN_LUM64, "lum64", "lum64", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lum64l $rt,$rd */
+ {
+ IQ2000_INSN_LUM64L, "lum64l", "lum64l", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lur $rt,$rd */
+ {
+ IQ2000_INSN_LUR, "lur", "lur", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* lurl $rt,$rd */
+ {
+ IQ2000_INSN_LURL, "lurl", "lurl", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* luulck $rt */
+ {
+ IQ2000_INSN_LUULCK, "luulck", "luulck", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* mfc0 $rt,$rd */
+ {
+ IQ2000_INSN_MFC0, "mfc0", "mfc0", 32,
+ { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* mfc1 $rt,$rd */
+ {
+ IQ2000_INSN_MFC1, "mfc1", "mfc1", 32,
+ { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* mfc2 $rt,$rd */
+ {
+ IQ2000_INSN_MFC2, "mfc2", "mfc2", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* mfc3 $rt,$rd */
+ {
+ IQ2000_INSN_MFC3, "mfc3", "mfc3", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+ },
+/* mtc0 $rt,$rd */
+ {
+ IQ2000_INSN_MTC0, "mtc0", "mtc0", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* mtc1 $rt,$rd */
+ {
+ IQ2000_INSN_MTC1, "mtc1", "mtc1", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* mtc2 $rt,$rd */
+ {
+ IQ2000_INSN_MTC2, "mtc2", "mtc2", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* mtc3 $rt,$rd */
+ {
+ IQ2000_INSN_MTC3, "mtc3", "mtc3", 32,
+ { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* pkrl $rd,$rt */
+ {
+ IQ2000_INSN_PKRL, "pkrl", "pkrl", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* pkrlr1 $rt,$index,$count */
+ {
+ IQ2000_INSN_PKRLR1, "pkrlr1", "pkrlr1", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* pkrlr30 $rt,$index,$count */
+ {
+ IQ2000_INSN_PKRLR30, "pkrlr30", "pkrlr30", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* rb $rd,$rt */
+ {
+ IQ2000_INSN_RB, "rb", "rb", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* rbr1 $rt,$index,$count */
+ {
+ IQ2000_INSN_RBR1, "rbr1", "rbr1", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* rbr30 $rt,$index,$count */
+ {
+ IQ2000_INSN_RBR30, "rbr30", "rbr30", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* rfe */
+ {
+ IQ2000_INSN_RFE, "rfe", "rfe", 32,
+ { 0, { (1<<MACH_IQ2000) } }
+ },
+/* rx $rd,$rt */
+ {
+ IQ2000_INSN_RX, "rx", "rx", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* rxr1 $rt,$index,$count */
+ {
+ IQ2000_INSN_RXR1, "rxr1", "rxr1", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* rxr30 $rt,$index,$count */
+ {
+ IQ2000_INSN_RXR30, "rxr30", "rxr30", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* sleep */
+ {
+ IQ2000_INSN_SLEEP, "sleep", "sleep", 32,
+ { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+ },
+/* srrd $rt */
+ {
+ IQ2000_INSN_SRRD, "srrd", "srrd", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* srrdl $rt */
+ {
+ IQ2000_INSN_SRRDL, "srrdl", "srrdl", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* srulck $rt */
+ {
+ IQ2000_INSN_SRULCK, "srulck", "srulck", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* srwr $rt,$rd */
+ {
+ IQ2000_INSN_SRWR, "srwr", "srwr", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* srwru $rt,$rd */
+ {
+ IQ2000_INSN_SRWRU, "srwru", "srwru", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* trapqfl */
+ {
+ IQ2000_INSN_TRAPQFL, "trapqfl", "trapqfl", 32,
+ { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+ },
+/* trapqne */
+ {
+ IQ2000_INSN_TRAPQNE, "trapqne", "trapqne", 32,
+ { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+ },
+/* traprel $rt */
+ {
+ IQ2000_INSN_TRAPREL, "traprel", "traprel", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wb $rd,$rt */
+ {
+ IQ2000_INSN_WB, "wb", "wb", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* wbu $rd,$rt */
+ {
+ IQ2000_INSN_WBU, "wbu", "wbu", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* wbr1 $rt,$index,$count */
+ {
+ IQ2000_INSN_WBR1, "wbr1", "wbr1", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wbr1u $rt,$index,$count */
+ {
+ IQ2000_INSN_WBR1U, "wbr1u", "wbr1u", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wbr30 $rt,$index,$count */
+ {
+ IQ2000_INSN_WBR30, "wbr30", "wbr30", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wbr30u $rt,$index,$count */
+ {
+ IQ2000_INSN_WBR30U, "wbr30u", "wbr30u", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wx $rd,$rt */
+ {
+ IQ2000_INSN_WX, "wx", "wx", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* wxu $rd,$rt */
+ {
+ IQ2000_INSN_WXU, "wxu", "wxu", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+ },
+/* wxr1 $rt,$index,$count */
+ {
+ IQ2000_INSN_WXR1, "wxr1", "wxr1", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wxr1u $rt,$index,$count */
+ {
+ IQ2000_INSN_WXR1U, "wxr1u", "wxr1u", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wxr30 $rt,$index,$count */
+ {
+ IQ2000_INSN_WXR30, "wxr30", "wxr30", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* wxr30u $rt,$index,$count */
+ {
+ IQ2000_INSN_WXR30U, "wxr30u", "wxr30u", 32,
+ { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+ },
+/* ldw $rt,$lo16($base) */
+ {
+ IQ2000_INSN_LDW, "ldw", "ldw", 32,
+ { 0|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM), { (1<<MACH_IQ2000) } }
+ },
+/* sdw $rt,$lo16($base) */
+ {
+ IQ2000_INSN_SDW, "sdw", "sdw", 32,
+ { 0|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ2000) } }
+ },
+/* j $jmptarg */
+ {
+ IQ2000_INSN_J, "j", "j", 32,
+ { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* jal $jmptarg */
+ {
+ IQ2000_INSN_JAL, "jal", "jal", 32,
+ { 0|A(USES_R31)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* bmb $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB, "bmb", "bmb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+ },
+/* andoui $rt,$rs,$hi16 */
+ {
+ IQ2000_INSN_ANDOUI_Q10, "andoui-q10", "andoui", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* andoui ${rt-rs},$hi16 */
+ {
+ -1, "andoui2-q10", "andoui", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* orui $rt,$rs,$hi16 */
+ {
+ IQ2000_INSN_ORUI_Q10, "orui-q10", "orui", 32,
+ { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* orui ${rt-rs},$hi16 */
+ {
+ -1, "orui2-q10", "orui", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* mrgb $rd,$rs,$rt,$maskq10 */
+ {
+ IQ2000_INSN_MRGBQ10, "mrgbq10", "mrgb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* mrgb ${rd-rs},$rt,$maskq10 */
+ {
+ -1, "mrgbq102", "mrgb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* j $jmptarg */
+ {
+ IQ2000_INSN_JQ10, "jq10", "j", 32,
+ { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* jal $rt,$jmptarg */
+ {
+ IQ2000_INSN_JALQ10, "jalq10", "jal", 32,
+ { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* jal $jmptarg */
+ {
+ IQ2000_INSN_JALQ10_2, "jalq10-2", "jal", 32,
+ { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bbil $rs($bitnum),$offset */
+ {
+ IQ2000_INSN_BBIL, "bbil", "bbil", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bbinl $rs($bitnum),$offset */
+ {
+ IQ2000_INSN_BBINL, "bbinl", "bbinl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bbvl $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BBVL, "bbvl", "bbvl", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bbvnl $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BBVNL, "bbvnl", "bbvnl", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bgtzal $rs,$offset */
+ {
+ IQ2000_INSN_BGTZAL, "bgtzal", "bgtzal", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bgtzall $rs,$offset */
+ {
+ IQ2000_INSN_BGTZALL, "bgtzall", "bgtzall", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* blezal $rs,$offset */
+ {
+ IQ2000_INSN_BLEZAL, "blezal", "blezal", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* blezall $rs,$offset */
+ {
+ IQ2000_INSN_BLEZALL, "blezall", "blezall", 32,
+ { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bgtz $rs,$offset */
+ {
+ IQ2000_INSN_BGTZ_Q10, "bgtz-q10", "bgtz", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bgtzl $rs,$offset */
+ {
+ IQ2000_INSN_BGTZL_Q10, "bgtzl-q10", "bgtzl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* blez $rs,$offset */
+ {
+ IQ2000_INSN_BLEZ_Q10, "blez-q10", "blez", 32,
+ { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* blezl $rs,$offset */
+ {
+ IQ2000_INSN_BLEZL_Q10, "blezl-q10", "blezl", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bmb $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMB_Q10, "bmb-q10", "bmb", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bmbl $rs,$rt,$offset */
+ {
+ IQ2000_INSN_BMBL, "bmbl", "bmbl", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bri $rs,$offset */
+ {
+ IQ2000_INSN_BRI, "bri", "bri", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* brv $rs,$offset */
+ {
+ IQ2000_INSN_BRV, "brv", "brv", 32,
+ { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* bctx $rs,$offset */
+ {
+ IQ2000_INSN_BCTX, "bctx", "bctx", 32,
+ { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+ },
+/* yield */
+ {
+ IQ2000_INSN_YIELD, "yield", "yield", 32,
+ { 0, { (1<<MACH_IQ10) } }
+ },
+/* crc32 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CRC32, "crc32", "crc32", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* crc32b $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CRC32B, "crc32b", "crc32b", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* cnt1s $rd,$rs */
+ {
+ IQ2000_INSN_CNT1S, "cnt1s", "cnt1s", 32,
+ { 0|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* avail $rd */
+ {
+ IQ2000_INSN_AVAIL, "avail", "avail", 32,
+ { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* free $rd,$rs */
+ {
+ IQ2000_INSN_FREE, "free", "free", 32,
+ { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* tstod $rd,$rs */
+ {
+ IQ2000_INSN_TSTOD, "tstod", "tstod", 32,
+ { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cmphdr $rd */
+ {
+ IQ2000_INSN_CMPHDR, "cmphdr", "cmphdr", 32,
+ { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* mcid $rd,$rt */
+ {
+ IQ2000_INSN_MCID, "mcid", "mcid", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* dba $rd */
+ {
+ IQ2000_INSN_DBA, "dba", "dba", 32,
+ { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* dbd $rd,$rs,$rt */
+ {
+ IQ2000_INSN_DBD, "dbd", "dbd", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* dpwt $rd,$rs */
+ {
+ IQ2000_INSN_DPWT, "dpwt", "dpwt", 32,
+ { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* chkhdr $rd,$rs */
+ {
+ IQ2000_INSN_CHKHDRQ10, "chkhdrq10", "chkhdr", 32,
+ { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* rba $rd,$rs,$rt */
+ {
+ IQ2000_INSN_RBA, "rba", "rba", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* rbal $rd,$rs,$rt */
+ {
+ IQ2000_INSN_RBAL, "rbal", "rbal", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* rbar $rd,$rs,$rt */
+ {
+ IQ2000_INSN_RBAR, "rbar", "rbar", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* wba $rd,$rs,$rt */
+ {
+ IQ2000_INSN_WBA, "wba", "wba", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* wbau $rd,$rs,$rt */
+ {
+ IQ2000_INSN_WBAU, "wbau", "wbau", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* wbac $rd,$rs,$rt */
+ {
+ IQ2000_INSN_WBAC, "wbac", "wbac", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* rbi $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_RBI, "rbi", "rbi", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* rbil $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_RBIL, "rbil", "rbil", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* rbir $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_RBIR, "rbir", "rbir", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* wbi $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_WBI, "wbi", "wbi", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* wbic $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_WBIC, "wbic", "wbic", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* wbiu $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_WBIU, "wbiu", "wbiu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* pkrli $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_PKRLI, "pkrli", "pkrli", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* pkrlih $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_PKRLIH, "pkrlih", "pkrlih", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* pkrliu $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_PKRLIU, "pkrliu", "pkrliu", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* pkrlic $rd,$rs,$rt,$bytecount */
+ {
+ IQ2000_INSN_PKRLIC, "pkrlic", "pkrlic", 32,
+ { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* pkrla $rd,$rs,$rt */
+ {
+ IQ2000_INSN_PKRLA, "pkrla", "pkrla", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlau $rd,$rs,$rt */
+ {
+ IQ2000_INSN_PKRLAU, "pkrlau", "pkrlau", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlah $rd,$rs,$rt */
+ {
+ IQ2000_INSN_PKRLAH, "pkrlah", "pkrlah", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlac $rd,$rs,$rt */
+ {
+ IQ2000_INSN_PKRLAC, "pkrlac", "pkrlac", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* lock $rd,$rt */
+ {
+ IQ2000_INSN_LOCK, "lock", "lock", 32,
+ { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ10) } }
+ },
+/* unlk $rd,$rt */
+ {
+ IQ2000_INSN_UNLK, "unlk", "unlk", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* swrd $rd,$rt */
+ {
+ IQ2000_INSN_SWRD, "swrd", "swrd", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* swrdl $rd,$rt */
+ {
+ IQ2000_INSN_SWRDL, "swrdl", "swrdl", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* swwr $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SWWR, "swwr", "swwr", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* swwru $rd,$rs,$rt */
+ {
+ IQ2000_INSN_SWWRU, "swwru", "swwru", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* dwrd $rd,$rt */
+ {
+ IQ2000_INSN_DWRD, "dwrd", "dwrd", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* dwrdl $rd,$rt */
+ {
+ IQ2000_INSN_DWRDL, "dwrdl", "dwrdl", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cam36 $rd,$rt,${cam-z},${cam-y} */
+ {
+ IQ2000_INSN_CAM36, "cam36", "cam36", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cam72 $rd,$rt,${cam-y},${cam-z} */
+ {
+ IQ2000_INSN_CAM72, "cam72", "cam72", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cam144 $rd,$rt,${cam-y},${cam-z} */
+ {
+ IQ2000_INSN_CAM144, "cam144", "cam144", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cam288 $rd,$rt,${cam-y},${cam-z} */
+ {
+ IQ2000_INSN_CAM288, "cam288", "cam288", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cm32and $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32AND, "cm32and", "cm32and", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32andn $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32ANDN, "cm32andn", "cm32andn", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32or $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32OR, "cm32or", "cm32or", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32ra $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32RA, "cm32ra", "cm32ra", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32rd $rd,$rt */
+ {
+ IQ2000_INSN_CM32RD, "cm32rd", "cm32rd", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cm32ri $rd,$rt */
+ {
+ IQ2000_INSN_CM32RI, "cm32ri", "cm32ri", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cm32rs $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32RS, "cm32rs", "cm32rs", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32sa $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32SA, "cm32sa", "cm32sa", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32sd $rd,$rt */
+ {
+ IQ2000_INSN_CM32SD, "cm32sd", "cm32sd", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cm32si $rd,$rt */
+ {
+ IQ2000_INSN_CM32SI, "cm32si", "cm32si", 32,
+ { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+ },
+/* cm32ss $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32SS, "cm32ss", "cm32ss", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm32xor $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM32XOR, "cm32xor", "cm32xor", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm64clr $rd,$rt */
+ {
+ IQ2000_INSN_CM64CLR, "cm64clr", "cm64clr", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64ra $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64RA, "cm64ra", "cm64ra", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64rd $rd,$rt */
+ {
+ IQ2000_INSN_CM64RD, "cm64rd", "cm64rd", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64ri $rd,$rt */
+ {
+ IQ2000_INSN_CM64RI, "cm64ri", "cm64ri", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64ria2 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64RIA2, "cm64ria2", "cm64ria2", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64rs $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64RS, "cm64rs", "cm64rs", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64sa $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64SA, "cm64sa", "cm64sa", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64sd $rd,$rt */
+ {
+ IQ2000_INSN_CM64SD, "cm64sd", "cm64sd", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64si $rd,$rt */
+ {
+ IQ2000_INSN_CM64SI, "cm64si", "cm64si", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64sia2 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64SIA2, "cm64sia2", "cm64sia2", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm64ss $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM64SS, "cm64ss", "cm64ss", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria2 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM128RIA2, "cm128ria2", "cm128ria2", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria3 $rd,$rs,$rt,${cm-3z} */
+ {
+ IQ2000_INSN_CM128RIA3, "cm128ria3", "cm128ria3", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria4 $rd,$rs,$rt,${cm-4z} */
+ {
+ IQ2000_INSN_CM128RIA4, "cm128ria4", "cm128ria4", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia2 $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM128SIA2, "cm128sia2", "cm128sia2", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia3 $rd,$rs,$rt,${cm-3z} */
+ {
+ IQ2000_INSN_CM128SIA3, "cm128sia3", "cm128sia3", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia4 $rd,$rs,$rt,${cm-4z} */
+ {
+ IQ2000_INSN_CM128SIA4, "cm128sia4", "cm128sia4", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cm128vsa $rd,$rs,$rt */
+ {
+ IQ2000_INSN_CM128VSA, "cm128vsa", "cm128vsa", 32,
+ { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+/* cfc $rd,$rt */
+ {
+ IQ2000_INSN_CFC, "cfc", "cfc", 32,
+ { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { (1<<MACH_IQ10) } }
+ },
+/* ctc $rs,$rt */
+ {
+ IQ2000_INSN_CTC, "ctc", "ctc", 32,
+ { 0|A(USES_RS), { (1<<MACH_IQ10) } }
+ },
+};
+
+#undef OP
+#undef A
+
+/* Initialize anything needed to be done once, before any cpu_open call. */
+static void init_tables PARAMS ((void));
+
+static void
+init_tables ()
+{
+}
+
+static const CGEN_MACH * lookup_mach_via_bfd_name
+ PARAMS ((const CGEN_MACH *, const char *));
+static void build_hw_table PARAMS ((CGEN_CPU_TABLE *));
+static void build_ifield_table PARAMS ((CGEN_CPU_TABLE *));
+static void build_operand_table PARAMS ((CGEN_CPU_TABLE *));
+static void build_insn_table PARAMS ((CGEN_CPU_TABLE *));
+static void iq2000_cgen_rebuild_tables PARAMS ((CGEN_CPU_TABLE *));
+
+/* Subroutine of iq2000_cgen_cpu_open to look up a mach via its bfd name. */
+
+static const CGEN_MACH *
+lookup_mach_via_bfd_name (table, name)
+ const CGEN_MACH *table;
+ const char *name;
+{
+ while (table->name)
+ {
+ if (strcmp (name, table->bfd_name) == 0)
+ return table;
+ ++table;
+ }
+ abort ();
+}
+
+/* Subroutine of iq2000_cgen_cpu_open to build the hardware table. */
+
+static void
+build_hw_table (cd)
+ CGEN_CPU_TABLE *cd;
+{
+ int i;
+ int machs = cd->machs;
+ const CGEN_HW_ENTRY *init = & iq2000_cgen_hw_table[0];
+ /* MAX_HW is only an upper bound on the number of selected entries.
+ However each entry is indexed by it's enum so there can be holes in
+ the table. */
+ const CGEN_HW_ENTRY **selected =
+ (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
+
+ cd->hw_table.init_entries = init;
+ cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
+ memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
+ /* ??? For now we just use machs to determine which ones we want. */
+ for (i = 0; init[i].name != NULL; ++i)
+ if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
+ & machs)
+ selected[init[i].type] = &init[i];
+ cd->hw_table.entries = selected;
+ cd->hw_table.num_entries = MAX_HW;
+}
+
+/* Subroutine of iq2000_cgen_cpu_open to build the hardware table. */
+
+static void
+build_ifield_table (cd)
+ CGEN_CPU_TABLE *cd;
+{
+ cd->ifld_table = & iq2000_cgen_ifld_table[0];
+}
+
+/* Subroutine of iq2000_cgen_cpu_open to build the hardware table. */
+
+static void
+build_operand_table (cd)
+ CGEN_CPU_TABLE *cd;
+{
+ int i;
+ int machs = cd->machs;
+ const CGEN_OPERAND *init = & iq2000_cgen_operand_table[0];
+ /* MAX_OPERANDS is only an upper bound on the number of selected entries.
+ However each entry is indexed by it's enum so there can be holes in
+ the table. */
+ const CGEN_OPERAND **selected =
+ (const CGEN_OPERAND **) xmalloc (MAX_OPERANDS * sizeof (CGEN_OPERAND *));
+
+ cd->operand_table.init_entries = init;
+ cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
+ memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
+ /* ??? For now we just use mach to determine which ones we want. */
+ for (i = 0; init[i].name != NULL; ++i)
+ if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
+ & machs)
+ selected[init[i].type] = &init[i];
+ cd->operand_table.entries = selected;
+ cd->operand_table.num_entries = MAX_OPERANDS;
+}
+
+/* Subroutine of iq2000_cgen_cpu_open to build the hardware table.
+ ??? This could leave out insns not supported by the specified mach/isa,
+ but that would cause errors like "foo only supported by bar" to become
+ "unknown insn", so for now we include all insns and require the app to
+ do the checking later.
+ ??? On the other hand, parsing of such insns may require their hardware or
+ operand elements to be in the table [which they mightn't be]. */
+
+static void
+build_insn_table (cd)
+ CGEN_CPU_TABLE *cd;
+{
+ int i;
+ const CGEN_IBASE *ib = & iq2000_cgen_insn_table[0];
+ CGEN_INSN *insns = (CGEN_INSN *) xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
+
+ memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
+ for (i = 0; i < MAX_INSNS; ++i)
+ insns[i].base = &ib[i];
+ cd->insn_table.init_entries = insns;
+ cd->insn_table.entry_size = sizeof (CGEN_IBASE);
+ cd->insn_table.num_init_entries = MAX_INSNS;
+}
+
+/* Subroutine of iq2000_cgen_cpu_open to rebuild the tables. */
+
+static void
+iq2000_cgen_rebuild_tables (cd)
+ CGEN_CPU_TABLE *cd;
+{
+ int i;
+ unsigned int isas = cd->isas;
+ unsigned int machs = cd->machs;
+
+ cd->int_insn_p = CGEN_INT_INSN_P;
+
+ /* Data derived from the isa spec. */
+#define UNSET (CGEN_SIZE_UNKNOWN + 1)
+ cd->default_insn_bitsize = UNSET;
+ cd->base_insn_bitsize = UNSET;
+ cd->min_insn_bitsize = 65535; /* some ridiculously big number */
+ cd->max_insn_bitsize = 0;
+ for (i = 0; i < MAX_ISAS; ++i)
+ if (((1 << i) & isas) != 0)
+ {
+ const CGEN_ISA *isa = & iq2000_cgen_isa_table[i];
+
+ /* Default insn sizes of all selected isas must be
+ equal or we set the result to 0, meaning "unknown". */
+ if (cd->default_insn_bitsize == UNSET)
+ cd->default_insn_bitsize = isa->default_insn_bitsize;
+ else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
+ ; /* this is ok */
+ else
+ cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
+
+ /* Base insn sizes of all selected isas must be equal
+ or we set the result to 0, meaning "unknown". */
+ if (cd->base_insn_bitsize == UNSET)
+ cd->base_insn_bitsize = isa->base_insn_bitsize;
+ else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
+ ; /* this is ok */
+ else
+ cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
+
+ /* Set min,max insn sizes. */
+ if (isa->min_insn_bitsize < cd->min_insn_bitsize)
+ cd->min_insn_bitsize = isa->min_insn_bitsize;
+ if (isa->max_insn_bitsize > cd->max_insn_bitsize)
+ cd->max_insn_bitsize = isa->max_insn_bitsize;
+ }
+
+ /* Data derived from the mach spec. */
+ for (i = 0; i < MAX_MACHS; ++i)
+ if (((1 << i) & machs) != 0)
+ {
+ const CGEN_MACH *mach = & iq2000_cgen_mach_table[i];
+
+ if (mach->insn_chunk_bitsize != 0)
+ {
+ if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
+ {
+ fprintf (stderr, "iq2000_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
+ cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
+ abort ();
+ }
+
+ cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
+ }
+ }
+
+ /* Determine which hw elements are used by MACH. */
+ build_hw_table (cd);
+
+ /* Build the ifield table. */
+ build_ifield_table (cd);
+
+ /* Determine which operands are used by MACH/ISA. */
+ build_operand_table (cd);
+
+ /* Build the instruction table. */
+ build_insn_table (cd);
+}
+
+/* Initialize a cpu table and return a descriptor.
+ It's much like opening a file, and must be the first function called.
+ The arguments are a set of (type/value) pairs, terminated with
+ CGEN_CPU_OPEN_END.
+
+ Currently supported values:
+ CGEN_CPU_OPEN_ISAS: bitmap of values in enum isa_attr
+ CGEN_CPU_OPEN_MACHS: bitmap of values in enum mach_attr
+ CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
+ CGEN_CPU_OPEN_ENDIAN: specify endian choice
+ CGEN_CPU_OPEN_END: terminates arguments
+
+ ??? Simultaneous multiple isas might not make sense, but it's not (yet)
+ precluded.
+
+ ??? We only support ISO C stdargs here, not K&R.
+ Laziness, plus experiment to see if anything requires K&R - eventually
+ K&R will no longer be supported - e.g. GDB is currently trying this. */
+
+CGEN_CPU_DESC
+iq2000_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
+{
+ CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
+ static int init_p;
+ unsigned int isas = 0; /* 0 = "unspecified" */
+ unsigned int machs = 0; /* 0 = "unspecified" */
+ enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
+ va_list ap;
+
+ if (! init_p)
+ {
+ init_tables ();
+ init_p = 1;
+ }
+
+ memset (cd, 0, sizeof (*cd));
+
+ va_start (ap, arg_type);
+ while (arg_type != CGEN_CPU_OPEN_END)
+ {
+ switch (arg_type)
+ {
+ case CGEN_CPU_OPEN_ISAS :
+ isas = va_arg (ap, unsigned int);
+ break;
+ case CGEN_CPU_OPEN_MACHS :
+ machs = va_arg (ap, unsigned int);
+ break;
+ case CGEN_CPU_OPEN_BFDMACH :
+ {
+ const char *name = va_arg (ap, const char *);
+ const CGEN_MACH *mach =
+ lookup_mach_via_bfd_name (iq2000_cgen_mach_table, name);
+
+ machs |= 1 << mach->num;
+ break;
+ }
+ case CGEN_CPU_OPEN_ENDIAN :
+ endian = va_arg (ap, enum cgen_endian);
+ break;
+ default :
+ fprintf (stderr, "iq2000_cgen_cpu_open: unsupported argument `%d'\n",
+ arg_type);
+ abort (); /* ??? return NULL? */
+ }
+ arg_type = va_arg (ap, enum cgen_cpu_open_arg);
+ }
+ va_end (ap);
+
+ /* mach unspecified means "all" */
+ if (machs == 0)
+ machs = (1 << MAX_MACHS) - 1;
+ /* base mach is always selected */
+ machs |= 1;
+ /* isa unspecified means "all" */
+ if (isas == 0)
+ isas = (1 << MAX_ISAS) - 1;
+ if (endian == CGEN_ENDIAN_UNKNOWN)
+ {
+ /* ??? If target has only one, could have a default. */
+ fprintf (stderr, "iq2000_cgen_cpu_open: no endianness specified\n");
+ abort ();
+ }
+
+ cd->isas = isas;
+ cd->machs = machs;
+ cd->endian = endian;
+ /* FIXME: for the sparc case we can determine insn-endianness statically.
+ The worry here is where both data and insn endian can be independently
+ chosen, in which case this function will need another argument.
+ Actually, will want to allow for more arguments in the future anyway. */
+ cd->insn_endian = endian;
+
+ /* Table (re)builder. */
+ cd->rebuild_tables = iq2000_cgen_rebuild_tables;
+ iq2000_cgen_rebuild_tables (cd);
+
+ /* Default to not allowing signed overflow. */
+ cd->signed_overflow_ok_p = 0;
+
+ return (CGEN_CPU_DESC) cd;
+}
+
+/* Cover fn to iq2000_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
+ MACH_NAME is the bfd name of the mach. */
+
+CGEN_CPU_DESC
+iq2000_cgen_cpu_open_1 (mach_name, endian)
+ const char *mach_name;
+ enum cgen_endian endian;
+{
+ return iq2000_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
+ CGEN_CPU_OPEN_ENDIAN, endian,
+ CGEN_CPU_OPEN_END);
+}
+
+/* Close a cpu table.
+ ??? This can live in a machine independent file, but there's currently
+ no place to put this file (there's no libcgen). libopcodes is the wrong
+ place as some simulator ports use this but they don't use libopcodes. */
+
+void
+iq2000_cgen_cpu_close (cd)
+ CGEN_CPU_DESC cd;
+{
+ unsigned int i;
+ CGEN_INSN *insns;
+
+ if (cd->macro_insn_table.init_entries)
+ {
+ insns = cd->macro_insn_table.init_entries;
+ for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
+ {
+ if (CGEN_INSN_RX ((insns)))
+ regfree(CGEN_INSN_RX (insns));
+ }
+ }
+
+ if (cd->insn_table.init_entries)
+ {
+ insns = cd->insn_table.init_entries;
+ for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
+ {
+ if (CGEN_INSN_RX (insns))
+ regfree(CGEN_INSN_RX (insns));
+ }
+ }
+
+
+
+ if (cd->macro_insn_table.init_entries)
+ free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
+
+ if (cd->insn_table.init_entries)
+ free ((CGEN_INSN *) cd->insn_table.init_entries);
+
+ if (cd->hw_table.entries)
+ free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
+
+ if (cd->operand_table.entries)
+ free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
+
+ free (cd);
+}
+
--- /dev/null
+/* CPU data header for iq2000.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+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, 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 IQ2000_CPU_H
+#define IQ2000_CPU_H
+
+#define CGEN_ARCH iq2000
+
+/* Given symbol S, return iq2000_cgen_<S>. */
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define CGEN_SYM(s) iq2000##_cgen_##s
+#else
+#define CGEN_SYM(s) iq2000/**/_cgen_/**/s
+#endif
+
+
+/* Selected cpu families. */
+#define HAVE_CPU_IQ2000BF
+#define HAVE_CPU_IQ10BF
+
+#define CGEN_INSN_LSB0_P 1
+
+/* Minimum size of any insn (in bytes). */
+#define CGEN_MIN_INSN_SIZE 4
+
+/* Maximum size of any insn (in bytes). */
+#define CGEN_MAX_INSN_SIZE 4
+
+#define CGEN_INT_INSN_P 1
+
+/* Maximum number of syntax elements in an instruction. */
+#define CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS 19
+
+/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
+ e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands
+ we can't hash on everything up to the space. */
+#define CGEN_MNEMONIC_OPERANDS
+
+/* Maximum number of fields in an instruction. */
+#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 8
+
+/* Enums. */
+
+/* Enum declaration for . */
+typedef enum gr_names {
+ H_GR_R0 = 0, H_GR__0 = 0, H_GR_R1 = 1, H_GR__1 = 1
+ , H_GR_R2 = 2, H_GR__2 = 2, H_GR_R3 = 3, H_GR__3 = 3
+ , H_GR_R4 = 4, H_GR__4 = 4, H_GR_R5 = 5, H_GR__5 = 5
+ , H_GR_R6 = 6, H_GR__6 = 6, H_GR_R7 = 7, H_GR__7 = 7
+ , H_GR_R8 = 8, H_GR__8 = 8, H_GR_R9 = 9, H_GR__9 = 9
+ , H_GR_R10 = 10, H_GR__10 = 10, H_GR_R11 = 11, H_GR__11 = 11
+ , H_GR_R12 = 12, H_GR__12 = 12, H_GR_R13 = 13, H_GR__13 = 13
+ , H_GR_R14 = 14, H_GR__14 = 14, H_GR_R15 = 15, H_GR__15 = 15
+ , H_GR_R16 = 16, H_GR__16 = 16, H_GR_R17 = 17, H_GR__17 = 17
+ , H_GR_R18 = 18, H_GR__18 = 18, H_GR_R19 = 19, H_GR__19 = 19
+ , H_GR_R20 = 20, H_GR__20 = 20, H_GR_R21 = 21, H_GR__21 = 21
+ , H_GR_R22 = 22, H_GR__22 = 22, H_GR_R23 = 23, H_GR__23 = 23
+ , H_GR_R24 = 24, H_GR__24 = 24, H_GR_R25 = 25, H_GR__25 = 25
+ , H_GR_R26 = 26, H_GR__26 = 26, H_GR_R27 = 27, H_GR__27 = 27
+ , H_GR_R28 = 28, H_GR__28 = 28, H_GR_R29 = 29, H_GR__29 = 29
+ , H_GR_R30 = 30, H_GR__30 = 30, H_GR_R31 = 31, H_GR__31 = 31
+} GR_NAMES;
+
+/* Enum declaration for primary opcodes. */
+typedef enum opcodes {
+ OP_SPECIAL = 0, OP_REGIMM = 1, OP_J = 2, OP_JAL = 3
+ , OP_BEQ = 4, OP_BNE = 5, OP_BLEZ = 6, OP_BGTZ = 7
+ , OP_ADDI = 8, OP_ADDIU = 9, OP_SLTI = 10, OP_SLTIU = 11
+ , OP_ANDI = 12, OP_ORI = 13, OP_XORI = 14, OP_LUI = 15
+ , OP_COP0 = 16, OP_COP1 = 17, OP_COP2 = 18, OP_COP3 = 19
+ , OP_BEQL = 20, OP_BNEL = 21, OP_BLEZL = 22, OP_BGTZL = 23
+ , OP_BMB0 = 24, OP_BMB1 = 25, OP_BMB2 = 26, OP_BMB3 = 27
+ , OP_BBI = 28, OP_BBV = 29, OP_BBIN = 30, OP_BBVN = 31
+ , OP_LB = 32, OP_LH = 33, OP_LW = 35, OP_LBU = 36
+ , OP_LHU = 37, OP_RAM = 39, OP_SB = 40, OP_SH = 41
+ , OP_SW = 43, OP_ANDOI = 44, OP_BMB = 45, OP_ORUI = 47
+ , OP_LDW = 48, OP_SDW = 56, OP_ANDOUI = 63
+} OPCODES;
+
+/* Enum declaration for iq10-only primary opcodes. */
+typedef enum q10_opcodes {
+ OP10_BMB = 6, OP10_ORUI = 15, OP10_BMBL = 22, OP10_ANDOUI = 47
+ , OP10_BBIL = 60, OP10_BBVL = 61, OP10_BBINL = 62, OP10_BBVNL = 63
+} Q10_OPCODES;
+
+/* Enum declaration for branch sub-opcodes. */
+typedef enum regimm_functions {
+ FUNC_BLTZ = 0, FUNC_BGEZ = 1, FUNC_BLTZL = 2, FUNC_BGEZL = 3
+ , FUNC_BLEZ = 4, FUNC_BGTZ = 5, FUNC_BLEZL = 6, FUNC_BGTZL = 7
+ , FUNC_BRI = 8, FUNC_BRV = 9, FUNC_BCTX = 12, FUNC_BLTZAL = 16
+ , FUNC_BGEZAL = 17, FUNC_BLTZALL = 18, FUNC_BGEZALL = 19, FUNC_BLEZAL = 20
+ , FUNC_BGTZAL = 21, FUNC_BLEZALL = 22, FUNC_BGTZALL = 23
+} REGIMM_FUNCTIONS;
+
+/* Enum declaration for function sub-opcodes. */
+typedef enum functions {
+ FUNC_SLL = 0, FUNC_SLMV = 1, FUNC_SRL = 2, FUNC_SRA = 3
+ , FUNC_SLLV = 4, FUNC_SRMV = 5, FUNC_SRLV = 6, FUNC_SRAV = 7
+ , FUNC_JR = 8, FUNC_JALR = 9, FUNC_JCR = 10, FUNC_SYSCALL = 12
+ , FUNC_BREAK = 13, FUNC_SLEEP = 14, FUNC_ADD = 32, FUNC_ADDU = 33
+ , FUNC_SUB = 34, FUNC_SUBU = 35, FUNC_AND = 36, FUNC_OR = 37
+ , FUNC_XOR = 38, FUNC_NOR = 39, FUNC_ADO16 = 41, FUNC_SLT = 42
+ , FUNC_SLTU = 43, FUNC_MRGB = 45
+} FUNCTIONS;
+
+/* Enum declaration for iq10-only special function sub-opcodes. */
+typedef enum q10s_functions {
+ FUNC10_YIELD = 14, FUNC10_CNT1S = 46
+} Q10S_FUNCTIONS;
+
+/* Enum declaration for iq10 function sub-opcodes. */
+typedef enum cop_functions {
+ FUNC10_CFC = 0, FUNC10_LOCK = 1, FUNC10_CTC = 2, FUNC10_UNLK = 3
+ , FUNC10_SWRD = 4, FUNC10_SWRDL = 5, FUNC10_SWWR = 6, FUNC10_SWWRU = 7
+ , FUNC10_RBA = 8, FUNC10_RBAL = 9, FUNC10_RBAR = 10, FUNC10_DWRD = 12
+ , FUNC10_DWRDL = 13, FUNC10_WBA = 16, FUNC10_WBAU = 17, FUNC10_WBAC = 18
+ , FUNC10_CRC32 = 20, FUNC10_CRC32B = 21, FUNC10_MCID = 32, FUNC10_DBD = 33
+ , FUNC10_DBA = 34, FUNC10_DPWT = 35, FUNC10_AVAIL = 36, FUNC10_FREE = 37
+ , FUNC10_CHKHDR = 38, FUNC10_TSTOD = 39, FUNC10_PKRLA = 40, FUNC10_PKRLAU = 41
+ , FUNC10_PKRLAH = 42, FUNC10_PKRLAC = 43, FUNC10_CMPHDR = 44, FUNC10_CM64RS = 0
+ , FUNC10_CM64RD = 1, FUNC10_CM64RI = 4, FUNC10_CM64CLR = 5, FUNC10_CM64SS = 8
+ , FUNC10_CM64SD = 9, FUNC10_CM64SI = 12, FUNC10_CM64RA = 16, FUNC10_CM64RIA2 = 20
+ , FUNC10_CM128RIA2 = 21, FUNC10_CM64SA = 24, FUNC10_CM64SIA2 = 28, FUNC10_CM128SIA2 = 29
+ , FUNC10_CM32RS = 32, FUNC10_CM32RD = 33, FUNC10_CM32XOR = 34, FUNC10_CM32ANDN = 35
+ , FUNC10_CM32RI = 36, FUNC10_CM128VSA = 38, FUNC10_CM32SS = 40, FUNC10_CM32SD = 41
+ , FUNC10_CM32OR = 42, FUNC10_CM32AND = 43, FUNC10_CM32SI = 44, FUNC10_CM32RA = 48
+ , FUNC10_CM32SA = 56
+} COP_FUNCTIONS;
+
+/* Enum declaration for iq10 function sub-opcodes. */
+typedef enum cop_cm128_4functions {
+ FUNC10_CM128RIA3 = 4, FUNC10_CM128SIA3 = 6
+} COP_CM128_4FUNCTIONS;
+
+/* Enum declaration for iq10 function sub-opcodes. */
+typedef enum cop_cm128_3functions {
+ FUNC10_CM128RIA4 = 6, FUNC10_CM128SIA4 = 7
+} COP_CM128_3FUNCTIONS;
+
+/* Enum declaration for iq10 coprocessor sub-opcodes. */
+typedef enum cop2_functions {
+ FUNC10_PKRLI = 0, FUNC10_PKRLIU = 1, FUNC10_PKRLIH = 2, FUNC10_PKRLIC = 3
+ , FUNC10_RBIR = 1, FUNC10_RBI = 2, FUNC10_RBIL = 3, FUNC10_WBIC = 5
+ , FUNC10_WBI = 6, FUNC10_WBIU = 7
+} COP2_FUNCTIONS;
+
+/* Enum declaration for iq10 coprocessor cam sub-opcodes. */
+typedef enum cop3_cam_functions {
+ FUNC10_CAM36 = 16, FUNC10_CAM72 = 17, FUNC10_CAM144 = 18, FUNC10_CAM288 = 19
+} COP3_CAM_FUNCTIONS;
+
+/* Attributes. */
+
+/* Enum declaration for machine type selection. */
+typedef enum mach_attr {
+ MACH_BASE, MACH_IQ2000, MACH_IQ10, MACH_MAX
+} MACH_ATTR;
+
+/* Enum declaration for instruction set selection. */
+typedef enum isa_attr {
+ ISA_IQ2000, ISA_MAX
+} ISA_ATTR;
+
+/* Number of architecture variants. */
+#define MAX_ISAS 1
+#define MAX_MACHS ((int) MACH_MAX)
+
+/* Ifield support. */
+
+extern const struct cgen_ifld iq2000_cgen_ifld_table[];
+
+/* Ifield attribute indices. */
+
+/* Enum declaration for cgen_ifld attrs. */
+typedef enum cgen_ifld_attr {
+ CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED
+ , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_END_BOOLS, CGEN_IFLD_START_NBOOLS = 31
+ , CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS
+} CGEN_IFLD_ATTR;
+
+/* Number of non-boolean elements in cgen_ifld_attr. */
+#define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1)
+
+/* Enum declaration for iq2000 ifield types. */
+typedef enum ifield_type {
+ IQ2000_F_NIL, IQ2000_F_ANYOF, IQ2000_F_OPCODE, IQ2000_F_RS
+ , IQ2000_F_RT, IQ2000_F_RD, IQ2000_F_SHAMT, IQ2000_F_CP_OP
+ , IQ2000_F_CP_OP_10, IQ2000_F_CP_GRP, IQ2000_F_FUNC, IQ2000_F_IMM
+ , IQ2000_F_RD_RS, IQ2000_F_RD_RT, IQ2000_F_RT_RS, IQ2000_F_JTARG
+ , IQ2000_F_JTARGQ10, IQ2000_F_OFFSET, IQ2000_F_COUNT, IQ2000_F_BYTECOUNT
+ , IQ2000_F_INDEX, IQ2000_F_MASK, IQ2000_F_MASKQ10, IQ2000_F_MASKL
+ , IQ2000_F_EXCODE, IQ2000_F_RSRVD, IQ2000_F_10_11, IQ2000_F_24_19
+ , IQ2000_F_5, IQ2000_F_10, IQ2000_F_25, IQ2000_F_CAM_Z
+ , IQ2000_F_CAM_Y, IQ2000_F_CM_3FUNC, IQ2000_F_CM_4FUNC, IQ2000_F_CM_3Z
+ , IQ2000_F_CM_4Z, IQ2000_F_MAX
+} IFIELD_TYPE;
+
+#define MAX_IFLD ((int) IQ2000_F_MAX)
+
+/* Hardware attribute indices. */
+
+/* Enum declaration for cgen_hw attrs. */
+typedef enum cgen_hw_attr {
+ CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE
+ , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS
+} CGEN_HW_ATTR;
+
+/* Number of non-boolean elements in cgen_hw_attr. */
+#define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1)
+
+/* Enum declaration for iq2000 hardware types. */
+typedef enum cgen_hw_type {
+ HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR
+ , HW_H_IADDR, HW_H_PC, HW_H_GR, HW_MAX
+} CGEN_HW_TYPE;
+
+#define MAX_HW ((int) HW_MAX)
+
+/* Operand attribute indices. */
+
+/* Enum declaration for cgen_operand attrs. */
+typedef enum cgen_operand_attr {
+ CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT
+ , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY
+ , CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH, CGEN_OPERAND_END_NBOOLS
+} CGEN_OPERAND_ATTR;
+
+/* Number of non-boolean elements in cgen_operand_attr. */
+#define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1)
+
+/* Enum declaration for iq2000 operand types. */
+typedef enum cgen_operand_type {
+ IQ2000_OPERAND_PC, IQ2000_OPERAND_RS, IQ2000_OPERAND_RT, IQ2000_OPERAND_RD
+ , IQ2000_OPERAND_RD_RS, IQ2000_OPERAND_RD_RT, IQ2000_OPERAND_RT_RS, IQ2000_OPERAND_SHAMT
+ , IQ2000_OPERAND_IMM, IQ2000_OPERAND_OFFSET, IQ2000_OPERAND_BASEOFF, IQ2000_OPERAND_JMPTARG
+ , IQ2000_OPERAND_MASK, IQ2000_OPERAND_MASKQ10, IQ2000_OPERAND_MASKL, IQ2000_OPERAND_COUNT
+ , IQ2000_OPERAND_INDEX, IQ2000_OPERAND_EXECODE, IQ2000_OPERAND_BYTECOUNT, IQ2000_OPERAND_CAM_Y
+ , IQ2000_OPERAND_CAM_Z, IQ2000_OPERAND_CM_3FUNC, IQ2000_OPERAND_CM_4FUNC, IQ2000_OPERAND_CM_3Z
+ , IQ2000_OPERAND_CM_4Z, IQ2000_OPERAND_BASE, IQ2000_OPERAND_MASKR, IQ2000_OPERAND_BITNUM
+ , IQ2000_OPERAND_HI16, IQ2000_OPERAND_LO16, IQ2000_OPERAND_MLO16, IQ2000_OPERAND_JMPTARGQ10
+ , IQ2000_OPERAND_MAX
+} CGEN_OPERAND_TYPE;
+
+/* Number of operands types. */
+#define MAX_OPERANDS 32
+
+/* Maximum number of operands referenced by any insn. */
+#define MAX_OPERAND_INSTANCES 8
+
+/* Insn attribute indices. */
+
+/* Enum declaration for cgen_insn attrs. */
+typedef enum cgen_insn_attr {
+ CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI
+ , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAX
+ , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_YIELD_INSN, CGEN_INSN_LOAD_DELAY
+ , CGEN_INSN_EVEN_REG_NUM, CGEN_INSN_UNSUPPORTED, CGEN_INSN_USES_RD, CGEN_INSN_USES_RS
+ , CGEN_INSN_USES_RT, CGEN_INSN_USES_R31, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31
+ , CGEN_INSN_MACH, CGEN_INSN_END_NBOOLS
+} CGEN_INSN_ATTR;
+
+/* Number of non-boolean elements in cgen_insn_attr. */
+#define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1)
+
+/* cgen.h uses things we just defined. */
+#include "opcode/cgen.h"
+
+/* Attributes. */
+extern const CGEN_ATTR_TABLE iq2000_cgen_hardware_attr_table[];
+extern const CGEN_ATTR_TABLE iq2000_cgen_ifield_attr_table[];
+extern const CGEN_ATTR_TABLE iq2000_cgen_operand_attr_table[];
+extern const CGEN_ATTR_TABLE iq2000_cgen_insn_attr_table[];
+
+/* Hardware decls. */
+
+extern CGEN_KEYWORD iq2000_cgen_opval_gr_names;
+
+
+
+
+#endif /* IQ2000_CPU_H */
--- /dev/null
+/* Disassembler interface for targets using CGEN. -*- C -*-
+ CGEN: Cpu tools GENerator
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+- the resultant file is machine generated, cgen-dis.in isn't
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and GDB, the GNU debugger.
+
+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, 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. */
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "dis-asm.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "iq2000-desc.h"
+#include "iq2000-opc.h"
+#include "opintl.h"
+
+/* Default text to print if an instruction isn't recognized. */
+#define UNKNOWN_INSN_MSG _("*unknown*")
+
+static void print_normal
+ PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
+static void print_address
+ PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
+static void print_keyword
+ PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
+static void print_insn_normal
+ PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+ bfd_vma, int));
+static int print_insn
+ PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, unsigned));
+static int default_print_insn
+ PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
+static int read_insn
+ PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+ CGEN_EXTRACT_INFO *, unsigned long *));
+\f
+/* -- disassembler routines inserted here */
+
+
+void iq2000_cgen_print_operand
+ PARAMS ((CGEN_CPU_DESC, int, PTR, CGEN_FIELDS *,
+ void const *, bfd_vma, int));
+
+/* Main entry point for printing operands.
+ XINFO is a `void *' and not a `disassemble_info *' to not put a requirement
+ of dis-asm.h on cgen.h.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `print_insn_normal', but keeping it
+ separate makes clear the interface between `print_insn_normal' and each of
+ the handlers. */
+
+void
+iq2000_cgen_print_operand (cd, opindex, xinfo, fields, attrs, pc, length)
+ CGEN_CPU_DESC cd;
+ int opindex;
+ PTR xinfo;
+ CGEN_FIELDS *fields;
+ void const *attrs ATTRIBUTE_UNUSED;
+ bfd_vma pc;
+ int length;
+{
+ disassemble_info *info = (disassemble_info *) xinfo;
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rs, 0);
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ print_address (cd, info, fields->f_imm, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ print_normal (cd, info, fields->f_rt, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ print_normal (cd, info, fields->f_bytecount, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ print_normal (cd, info, fields->f_cam_y, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ print_normal (cd, info, fields->f_cam_z, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ print_normal (cd, info, fields->f_cm_3func, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ print_normal (cd, info, fields->f_cm_3z, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ print_normal (cd, info, fields->f_cm_4func, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ print_normal (cd, info, fields->f_cm_4z, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_COUNT :
+ print_normal (cd, info, fields->f_count, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ print_normal (cd, info, fields->f_excode, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_HI16 :
+ print_normal (cd, info, fields->f_imm, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_IMM :
+ print_normal (cd, info, fields->f_imm, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_INDEX :
+ print_normal (cd, info, fields->f_index, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ print_address (cd, info, fields->f_jtarg, 0|(1<<CGEN_OPERAND_ABS_ADDR), pc, length);
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ print_address (cd, info, fields->f_jtargq10, 0|(1<<CGEN_OPERAND_ABS_ADDR), pc, length);
+ break;
+ case IQ2000_OPERAND_LO16 :
+ print_normal (cd, info, fields->f_imm, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_MASK :
+ print_normal (cd, info, fields->f_mask, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_MASKL :
+ print_normal (cd, info, fields->f_maskl, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ print_normal (cd, info, fields->f_maskq10, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_MASKR :
+ print_normal (cd, info, fields->f_rs, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ print_normal (cd, info, fields->f_imm, 0, pc, length);
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ print_address (cd, info, fields->f_offset, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
+ break;
+ case IQ2000_OPERAND_RD :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rd, 0);
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rd_rs, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rd_rt, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case IQ2000_OPERAND_RS :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rs, 0);
+ break;
+ case IQ2000_OPERAND_RT :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rt, 0);
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ print_keyword (cd, info, & iq2000_cgen_opval_gr_names, fields->f_rt_rs, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ print_normal (cd, info, fields->f_shamt, 0, pc, length);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while printing insn.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+cgen_print_fn * const iq2000_cgen_print_handlers[] =
+{
+ print_insn_normal,
+};
+
+
+void
+iq2000_cgen_init_dis (cd)
+ CGEN_CPU_DESC cd;
+{
+ iq2000_cgen_init_opcode_table (cd);
+ iq2000_cgen_init_ibld_table (cd);
+ cd->print_handlers = & iq2000_cgen_print_handlers[0];
+ cd->print_operand = iq2000_cgen_print_operand;
+}
+
+\f
+/* Default print handler. */
+
+static void
+print_normal (cd, dis_info, value, attrs, pc, length)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ PTR dis_info;
+ long value;
+ unsigned int attrs;
+ bfd_vma pc ATTRIBUTE_UNUSED;
+ int length ATTRIBUTE_UNUSED;
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+
+#ifdef CGEN_PRINT_NORMAL
+ CGEN_PRINT_NORMAL (cd, info, value, attrs, pc, length);
+#endif
+
+ /* Print the operand as directed by the attributes. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
+ ; /* nothing to do */
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
+ (*info->fprintf_func) (info->stream, "%ld", value);
+ else
+ (*info->fprintf_func) (info->stream, "0x%lx", value);
+}
+
+/* Default address handler. */
+
+static void
+print_address (cd, dis_info, value, attrs, pc, length)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ PTR dis_info;
+ bfd_vma value;
+ unsigned int attrs;
+ bfd_vma pc ATTRIBUTE_UNUSED;
+ int length ATTRIBUTE_UNUSED;
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+
+#ifdef CGEN_PRINT_ADDRESS
+ CGEN_PRINT_ADDRESS (cd, info, value, attrs, pc, length);
+#endif
+
+ /* Print the operand as directed by the attributes. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
+ ; /* nothing to do */
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_PCREL_ADDR))
+ (*info->print_address_func) (value, info);
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_ABS_ADDR))
+ (*info->print_address_func) (value, info);
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
+ (*info->fprintf_func) (info->stream, "%ld", (long) value);
+ else
+ (*info->fprintf_func) (info->stream, "0x%lx", (long) value);
+}
+
+/* Keyword print handler. */
+
+static void
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ PTR dis_info;
+ CGEN_KEYWORD *keyword_table;
+ long value;
+ unsigned int attrs ATTRIBUTE_UNUSED;
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+ const CGEN_KEYWORD_ENTRY *ke;
+
+ ke = cgen_keyword_lookup_value (keyword_table, value);
+ if (ke != NULL)
+ (*info->fprintf_func) (info->stream, "%s", ke->name);
+ else
+ (*info->fprintf_func) (info->stream, "???");
+}
+\f
+/* Default insn printer.
+
+ DIS_INFO is defined as `PTR' so the disassembler needn't know anything
+ about disassemble_info. */
+
+static void
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+ CGEN_CPU_DESC cd;
+ PTR dis_info;
+ const CGEN_INSN *insn;
+ CGEN_FIELDS *fields;
+ bfd_vma pc;
+ int length;
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ disassemble_info *info = (disassemble_info *) dis_info;
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+
+ CGEN_INIT_PRINT (cd);
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
+ {
+ if (CGEN_SYNTAX_MNEMONIC_P (*syn))
+ {
+ (*info->fprintf_func) (info->stream, "%s", CGEN_INSN_MNEMONIC (insn));
+ continue;
+ }
+ if (CGEN_SYNTAX_CHAR_P (*syn))
+ {
+ (*info->fprintf_func) (info->stream, "%c", CGEN_SYNTAX_CHAR (*syn));
+ continue;
+ }
+
+ /* We have an operand. */
+ iq2000_cgen_print_operand (cd, CGEN_SYNTAX_FIELD (*syn), info,
+ fields, CGEN_INSN_ATTRS (insn), pc, length);
+ }
+}
+\f
+/* Subroutine of print_insn. Reads an insn into the given buffers and updates
+ the extract info.
+ Returns 0 if all is well, non-zero otherwise. */
+
+static int
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ bfd_vma pc;
+ disassemble_info *info;
+ char *buf;
+ int buflen;
+ CGEN_EXTRACT_INFO *ex_info;
+ unsigned long *insn_value;
+{
+ int status = (*info->read_memory_func) (pc, buf, buflen, info);
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ ex_info->dis_info = info;
+ ex_info->valid = (1 << buflen) - 1;
+ ex_info->insn_bytes = buf;
+
+ *insn_value = bfd_get_bits (buf, buflen * 8, info->endian == BFD_ENDIAN_BIG);
+ return 0;
+}
+
+/* Utility to print an insn.
+ BUF is the base part of the insn, target byte order, BUFLEN bytes long.
+ The result is the size of the insn in bytes or zero for an unknown insn
+ or -1 if an error occurs fetching data (memory_error_func will have
+ been called). */
+
+static int
+print_insn (cd, pc, info, buf, buflen)
+ CGEN_CPU_DESC cd;
+ bfd_vma pc;
+ disassemble_info *info;
+ char *buf;
+ unsigned int buflen;
+{
+ CGEN_INSN_INT insn_value;
+ const CGEN_INSN_LIST *insn_list;
+ CGEN_EXTRACT_INFO ex_info;
+ int basesize;
+
+ /* Extract base part of instruction, just in case CGEN_DIS_* uses it. */
+ basesize = cd->base_insn_bitsize < buflen * 8 ?
+ cd->base_insn_bitsize : buflen * 8;
+ insn_value = cgen_get_insn_value (cd, buf, basesize);
+
+
+ /* Fill in ex_info fields like read_insn would. Don't actually call
+ read_insn, since the incoming buffer is already read (and possibly
+ modified a la m32r). */
+ ex_info.valid = (1 << buflen) - 1;
+ ex_info.dis_info = info;
+ ex_info.insn_bytes = buf;
+
+ /* The instructions are stored in hash lists.
+ Pick the first one and keep trying until we find the right one. */
+
+ insn_list = CGEN_DIS_LOOKUP_INSN (cd, buf, insn_value);
+ while (insn_list != NULL)
+ {
+ const CGEN_INSN *insn = insn_list->insn;
+ CGEN_FIELDS fields;
+ int length;
+ unsigned long insn_value_cropped;
+
+#ifdef CGEN_VALIDATE_INSN_SUPPORTED
+ /* Not needed as insn shouldn't be in hash lists if not supported. */
+ /* Supported by this cpu? */
+ if (! iq2000_cgen_insn_supported (cd, insn))
+ {
+ insn_list = CGEN_DIS_NEXT_INSN (insn_list);
+ continue;
+ }
+#endif
+
+ /* Basic bit mask must be correct. */
+ /* ??? May wish to allow target to defer this check until the extract
+ handler. */
+
+ /* Base size may exceed this instruction's size. Extract the
+ relevant part from the buffer. */
+ if ((unsigned) (CGEN_INSN_BITSIZE (insn) / 8) < buflen &&
+ (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
+ insn_value_cropped = bfd_get_bits (buf, CGEN_INSN_BITSIZE (insn),
+ info->endian == BFD_ENDIAN_BIG);
+ else
+ insn_value_cropped = insn_value;
+
+ if ((insn_value_cropped & CGEN_INSN_BASE_MASK (insn))
+ == CGEN_INSN_BASE_VALUE (insn))
+ {
+ /* Printing is handled in two passes. The first pass parses the
+ machine insn and extracts the fields. The second pass prints
+ them. */
+
+ /* Make sure the entire insn is loaded into insn_value, if it
+ can fit. */
+ if (((unsigned) CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize) &&
+ (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
+ {
+ unsigned long full_insn_value;
+ int rc = read_insn (cd, pc, info, buf,
+ CGEN_INSN_BITSIZE (insn) / 8,
+ & ex_info, & full_insn_value);
+ if (rc != 0)
+ return rc;
+ length = CGEN_EXTRACT_FN (cd, insn)
+ (cd, insn, &ex_info, full_insn_value, &fields, pc);
+ }
+ else
+ length = CGEN_EXTRACT_FN (cd, insn)
+ (cd, insn, &ex_info, insn_value_cropped, &fields, pc);
+
+ /* length < 0 -> error */
+ if (length < 0)
+ return length;
+ if (length > 0)
+ {
+ CGEN_PRINT_FN (cd, insn) (cd, info, insn, &fields, pc, length);
+ /* length is in bits, result is in bytes */
+ return length / 8;
+ }
+ }
+
+ insn_list = CGEN_DIS_NEXT_INSN (insn_list);
+ }
+
+ return 0;
+}
+
+/* Default value for CGEN_PRINT_INSN.
+ The result is the size of the insn in bytes or zero for an unknown insn
+ or -1 if an error occured fetching bytes. */
+
+#ifndef CGEN_PRINT_INSN
+#define CGEN_PRINT_INSN default_print_insn
+#endif
+
+static int
+default_print_insn (cd, pc, info)
+ CGEN_CPU_DESC cd;
+ bfd_vma pc;
+ disassemble_info *info;
+{
+ char buf[CGEN_MAX_INSN_SIZE];
+ int buflen;
+ int status;
+
+ /* Attempt to read the base part of the insn. */
+ buflen = cd->base_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+
+ /* Try again with the minimum part, if min < base. */
+ if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
+ {
+ buflen = cd->min_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+ }
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ return print_insn (cd, pc, info, buf, buflen);
+}
+
+/* Main entry point.
+ Print one instruction from PC on INFO->STREAM.
+ Return the size of the instruction (in bytes). */
+
+typedef struct cpu_desc_list {
+ struct cpu_desc_list *next;
+ int isa;
+ int mach;
+ int endian;
+ CGEN_CPU_DESC cd;
+} cpu_desc_list;
+
+int
+print_insn_iq2000 (pc, info)
+ bfd_vma pc;
+ disassemble_info *info;
+{
+ static cpu_desc_list *cd_list = 0;
+ cpu_desc_list *cl = 0;
+ static CGEN_CPU_DESC cd = 0;
+ static int prev_isa;
+ static int prev_mach;
+ static int prev_endian;
+ int length;
+ int isa,mach;
+ int endian = (info->endian == BFD_ENDIAN_BIG
+ ? CGEN_ENDIAN_BIG
+ : CGEN_ENDIAN_LITTLE);
+ enum bfd_architecture arch;
+
+ /* ??? gdb will set mach but leave the architecture as "unknown" */
+#ifndef CGEN_BFD_ARCH
+#define CGEN_BFD_ARCH bfd_arch_iq2000
+#endif
+ arch = info->arch;
+ if (arch == bfd_arch_unknown)
+ arch = CGEN_BFD_ARCH;
+
+ /* There's no standard way to compute the machine or isa number
+ so we leave it to the target. */
+#ifdef CGEN_COMPUTE_MACH
+ mach = CGEN_COMPUTE_MACH (info);
+#else
+ mach = info->mach;
+#endif
+
+#ifdef CGEN_COMPUTE_ISA
+ isa = CGEN_COMPUTE_ISA (info);
+#else
+ isa = info->insn_sets;
+#endif
+
+ /* If we've switched cpu's, try to find a handle we've used before */
+ if (cd
+ && (isa != prev_isa
+ || mach != prev_mach
+ || endian != prev_endian))
+ {
+ cd = 0;
+ for (cl = cd_list; cl; cl = cl->next)
+ {
+ if (cl->isa == isa &&
+ cl->mach == mach &&
+ cl->endian == endian)
+ {
+ cd = cl->cd;
+ break;
+ }
+ }
+ }
+
+ /* If we haven't initialized yet, initialize the opcode table. */
+ if (! cd)
+ {
+ const bfd_arch_info_type *arch_type = bfd_lookup_arch (arch, mach);
+ const char *mach_name;
+
+ if (!arch_type)
+ abort ();
+ mach_name = arch_type->printable_name;
+
+ prev_isa = isa;
+ prev_mach = mach;
+ prev_endian = endian;
+ cd = iq2000_cgen_cpu_open (CGEN_CPU_OPEN_ISAS, prev_isa,
+ CGEN_CPU_OPEN_BFDMACH, mach_name,
+ CGEN_CPU_OPEN_ENDIAN, prev_endian,
+ CGEN_CPU_OPEN_END);
+ if (!cd)
+ abort ();
+
+ /* save this away for future reference */
+ cl = xmalloc (sizeof (struct cpu_desc_list));
+ cl->cd = cd;
+ cl->isa = isa;
+ cl->mach = mach;
+ cl->endian = endian;
+ cl->next = cd_list;
+ cd_list = cl;
+
+ iq2000_cgen_init_dis (cd);
+ }
+
+ /* We try to have as much common code as possible.
+ But at this point some targets need to take over. */
+ /* ??? Some targets may need a hook elsewhere. Try to avoid this,
+ but if not possible try to move this hook elsewhere rather than
+ have two hooks. */
+ length = CGEN_PRINT_INSN (cd, pc, info);
+ if (length > 0)
+ return length;
+ if (length < 0)
+ return -1;
+
+ (*info->fprintf_func) (info->stream, UNKNOWN_INSN_MSG);
+ return cd->default_insn_bitsize / 8;
+}
--- /dev/null
+/* Instruction building/extraction support for iq2000. -*- C -*-
+
+THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
+- the resultant file is machine generated, cgen-ibld.in isn't
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and GDB, the GNU debugger.
+
+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, 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. */
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "dis-asm.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "iq2000-desc.h"
+#include "iq2000-opc.h"
+#include "opintl.h"
+#include "safe-ctype.h"
+
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+
+/* Used by the ifield rtx function. */
+#define FLD(f) (fields->f)
+
+static const char * insert_normal
+ PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+ unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
+static const char * insert_insn_normal
+ PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+ CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
+static int extract_normal
+ PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+ unsigned int, unsigned int, unsigned int, unsigned int,
+ unsigned int, unsigned int, bfd_vma, long *));
+static int extract_insn_normal
+ PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+ CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
+#if CGEN_INT_INSN_P
+static void put_insn_int_value
+ PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
+#endif
+#if ! CGEN_INT_INSN_P
+static CGEN_INLINE void insert_1
+ PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
+static CGEN_INLINE int fill_cache
+ PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, bfd_vma));
+static CGEN_INLINE long extract_1
+ PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+ unsigned char *, bfd_vma));
+#endif
+\f
+/* Operand insertion. */
+
+#if ! CGEN_INT_INSN_P
+
+/* Subroutine of insert_normal. */
+
+static CGEN_INLINE void
+insert_1 (cd, value, start, length, word_length, bufp)
+ CGEN_CPU_DESC cd;
+ unsigned long value;
+ int start,length,word_length;
+ unsigned char *bufp;
+{
+ unsigned long x,mask;
+ int shift;
+
+ x = cgen_get_insn_value (cd, bufp, word_length);
+
+ /* Written this way to avoid undefined behaviour. */
+ mask = (((1L << (length - 1)) - 1) << 1) | 1;
+ if (CGEN_INSN_LSB0_P)
+ shift = (start + 1) - length;
+ else
+ shift = (word_length - (start + length));
+ x = (x & ~(mask << shift)) | ((value & mask) << shift);
+
+ cgen_put_insn_value (cd, bufp, word_length, (bfd_vma) x);
+}
+
+#endif /* ! CGEN_INT_INSN_P */
+
+/* Default insertion routine.
+
+ ATTRS is a mask of the boolean attributes.
+ WORD_OFFSET is the offset in bits from the start of the insn of the value.
+ WORD_LENGTH is the length of the word in bits in which the value resides.
+ START is the starting bit number in the word, architecture origin.
+ LENGTH is the length of VALUE in bits.
+ TOTAL_LENGTH is the total length of the insn in bits.
+
+ The result is an error message or NULL if success. */
+
+/* ??? This duplicates functionality with bfd's howto table and
+ bfd_install_relocation. */
+/* ??? This doesn't handle bfd_vma's. Create another function when
+ necessary. */
+
+static const char *
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+ total_length, buffer)
+ CGEN_CPU_DESC cd;
+ long value;
+ unsigned int attrs;
+ unsigned int word_offset, start, length, word_length, total_length;
+ CGEN_INSN_BYTES_PTR buffer;
+{
+ static char errbuf[100];
+ /* Written this way to avoid undefined behaviour. */
+ unsigned long mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ /* If LENGTH is zero, this operand doesn't contribute to the value. */
+ if (length == 0)
+ return NULL;
+
+#if 0
+ if (CGEN_INT_INSN_P
+ && word_offset != 0)
+ abort ();
+#endif
+
+ if (word_length > 32)
+ abort ();
+
+ /* For architectures with insns smaller than the base-insn-bitsize,
+ word_length may be too big. */
+ if (cd->min_insn_bitsize < cd->base_insn_bitsize)
+ {
+ if (word_offset == 0
+ && word_length > total_length)
+ word_length = total_length;
+ }
+
+ /* Ensure VALUE will fit. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT))
+ {
+ long minval = - (1L << (length - 1));
+ unsigned long maxval = mask;
+
+ if ((value > 0 && (unsigned long) value > maxval)
+ || value < minval)
+ {
+ /* xgettext:c-format */
+ sprintf (errbuf,
+ _("operand out of range (%ld not between %ld and %lu)"),
+ value, minval, maxval);
+ return errbuf;
+ }
+ }
+ else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
+ {
+ unsigned long maxval = mask;
+
+ if ((unsigned long) value > maxval)
+ {
+ /* xgettext:c-format */
+ sprintf (errbuf,
+ _("operand out of range (%lu not between 0 and %lu)"),
+ value, maxval);
+ return errbuf;
+ }
+ }
+ else
+ {
+ if (! cgen_signed_overflow_ok_p (cd))
+ {
+ long minval = - (1L << (length - 1));
+ long maxval = (1L << (length - 1)) - 1;
+
+ if (value < minval || value > maxval)
+ {
+ sprintf
+ /* xgettext:c-format */
+ (errbuf, _("operand out of range (%ld not between %ld and %ld)"),
+ value, minval, maxval);
+ return errbuf;
+ }
+ }
+ }
+
+#if CGEN_INT_INSN_P
+
+ {
+ int shift;
+
+ if (CGEN_INSN_LSB0_P)
+ shift = (word_offset + start + 1) - length;
+ else
+ shift = total_length - (word_offset + start + length);
+ *buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift);
+ }
+
+#else /* ! CGEN_INT_INSN_P */
+
+ {
+ unsigned char *bufp = (unsigned char *) buffer + word_offset / 8;
+
+ insert_1 (cd, value, start, length, word_length, bufp);
+ }
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ return NULL;
+}
+
+/* Default insn builder (insert handler).
+ The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
+ that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
+ recorded in host byte order, otherwise BUFFER is an array of bytes
+ and the value is recorded in target byte order).
+ The result is an error message or NULL if success. */
+
+static const char *
+insert_insn_normal (cd, insn, fields, buffer, pc)
+ CGEN_CPU_DESC cd;
+ const CGEN_INSN * insn;
+ CGEN_FIELDS * fields;
+ CGEN_INSN_BYTES_PTR buffer;
+ bfd_vma pc;
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ unsigned long value;
+ const CGEN_SYNTAX_CHAR_TYPE * syn;
+
+ CGEN_INIT_INSERT (cd);
+ value = CGEN_INSN_BASE_VALUE (insn);
+
+ /* If we're recording insns as numbers (rather than a string of bytes),
+ target byte order handling is deferred until later. */
+
+#if CGEN_INT_INSN_P
+
+ put_insn_int_value (cd, buffer, cd->base_insn_bitsize,
+ CGEN_FIELDS_BITSIZE (fields), value);
+
+#else
+
+ cgen_put_insn_value (cd, buffer, min ((unsigned) cd->base_insn_bitsize,
+ (unsigned) CGEN_FIELDS_BITSIZE (fields)),
+ value);
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ /* ??? It would be better to scan the format's fields.
+ Still need to be able to insert a value based on the operand though;
+ e.g. storing a branch displacement that got resolved later.
+ Needs more thought first. */
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); * syn; ++ syn)
+ {
+ const char *errmsg;
+
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ continue;
+
+ errmsg = (* cd->insert_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
+ fields, buffer, pc);
+ if (errmsg)
+ return errmsg;
+ }
+
+ return NULL;
+}
+
+#if CGEN_INT_INSN_P
+/* Cover function to store an insn value into an integral insn. Must go here
+ because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */
+
+static void
+put_insn_int_value (cd, buf, length, insn_length, value)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ CGEN_INSN_BYTES_PTR buf;
+ int length;
+ int insn_length;
+ CGEN_INSN_INT value;
+{
+ /* For architectures with insns smaller than the base-insn-bitsize,
+ length may be too big. */
+ if (length > insn_length)
+ *buf = value;
+ else
+ {
+ int shift = insn_length - length;
+ /* Written this way to avoid undefined behaviour. */
+ CGEN_INSN_INT mask = (((1L << (length - 1)) - 1) << 1) | 1;
+ *buf = (*buf & ~(mask << shift)) | ((value & mask) << shift);
+ }
+}
+#endif
+\f
+/* Operand extraction. */
+
+#if ! CGEN_INT_INSN_P
+
+/* Subroutine of extract_normal.
+ Ensure sufficient bytes are cached in EX_INFO.
+ OFFSET is the offset in bytes from the start of the insn of the value.
+ BYTES is the length of the needed value.
+ Returns 1 for success, 0 for failure. */
+
+static CGEN_INLINE int
+fill_cache (cd, ex_info, offset, bytes, pc)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ CGEN_EXTRACT_INFO *ex_info;
+ int offset, bytes;
+ bfd_vma pc;
+{
+ /* It's doubtful that the middle part has already been fetched so
+ we don't optimize that case. kiss. */
+ unsigned int mask;
+ disassemble_info *info = (disassemble_info *) ex_info->dis_info;
+
+ /* First do a quick check. */
+ mask = (1 << bytes) - 1;
+ if (((ex_info->valid >> offset) & mask) == mask)
+ return 1;
+
+ /* Search for the first byte we need to read. */
+ for (mask = 1 << offset; bytes > 0; --bytes, ++offset, mask <<= 1)
+ if (! (mask & ex_info->valid))
+ break;
+
+ if (bytes)
+ {
+ int status;
+
+ pc += offset;
+ status = (*info->read_memory_func)
+ (pc, ex_info->insn_bytes + offset, bytes, info);
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return 0;
+ }
+
+ ex_info->valid |= ((1 << bytes) - 1) << offset;
+ }
+
+ return 1;
+}
+
+/* Subroutine of extract_normal. */
+
+static CGEN_INLINE long
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+ CGEN_CPU_DESC cd;
+ CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+ int start,length,word_length;
+ unsigned char *bufp;
+ bfd_vma pc ATTRIBUTE_UNUSED;
+{
+ unsigned long x;
+ int shift;
+#if 0
+ int big_p = CGEN_CPU_INSN_ENDIAN (cd) == CGEN_ENDIAN_BIG;
+#endif
+ x = cgen_get_insn_value (cd, bufp, word_length);
+
+ if (CGEN_INSN_LSB0_P)
+ shift = (start + 1) - length;
+ else
+ shift = (word_length - (start + length));
+ return x >> shift;
+}
+
+#endif /* ! CGEN_INT_INSN_P */
+
+/* Default extraction routine.
+
+ INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
+ or sometimes less for cases like the m32r where the base insn size is 32
+ but some insns are 16 bits.
+ ATTRS is a mask of the boolean attributes. We only need `SIGNED',
+ but for generality we take a bitmask of all of them.
+ WORD_OFFSET is the offset in bits from the start of the insn of the value.
+ WORD_LENGTH is the length of the word in bits in which the value resides.
+ START is the starting bit number in the word, architecture origin.
+ LENGTH is the length of VALUE in bits.
+ TOTAL_LENGTH is the total length of the insn in bits.
+
+ Returns 1 for success, 0 for failure. */
+
+/* ??? The return code isn't properly used. wip. */
+
+/* ??? This doesn't handle bfd_vma's. Create another function when
+ necessary. */
+
+static int
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+ word_length, total_length, pc, valuep)
+ CGEN_CPU_DESC cd;
+#if ! CGEN_INT_INSN_P
+ CGEN_EXTRACT_INFO *ex_info;
+#else
+ CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+#endif
+ CGEN_INSN_INT insn_value;
+ unsigned int attrs;
+ unsigned int word_offset, start, length, word_length, total_length;
+#if ! CGEN_INT_INSN_P
+ bfd_vma pc;
+#else
+ bfd_vma pc ATTRIBUTE_UNUSED;
+#endif
+ long *valuep;
+{
+ long value, mask;
+
+ /* If LENGTH is zero, this operand doesn't contribute to the value
+ so give it a standard value of zero. */
+ if (length == 0)
+ {
+ *valuep = 0;
+ return 1;
+ }
+
+#if 0
+ if (CGEN_INT_INSN_P
+ && word_offset != 0)
+ abort ();
+#endif
+
+ if (word_length > 32)
+ abort ();
+
+ /* For architectures with insns smaller than the insn-base-bitsize,
+ word_length may be too big. */
+ if (cd->min_insn_bitsize < cd->base_insn_bitsize)
+ {
+ if (word_offset == 0
+ && word_length > total_length)
+ word_length = total_length;
+ }
+
+ /* Does the value reside in INSN_VALUE, and at the right alignment? */
+
+ if (CGEN_INT_INSN_P || (word_offset == 0 && word_length == total_length))
+ {
+ if (CGEN_INSN_LSB0_P)
+ value = insn_value >> ((word_offset + start + 1) - length);
+ else
+ value = insn_value >> (total_length - ( word_offset + start + length));
+ }
+
+#if ! CGEN_INT_INSN_P
+
+ else
+ {
+ unsigned char *bufp = ex_info->insn_bytes + word_offset / 8;
+
+ if (word_length > 32)
+ abort ();
+
+ if (fill_cache (cd, ex_info, word_offset / 8, word_length / 8, pc) == 0)
+ return 0;
+
+ value = extract_1 (cd, ex_info, start, length, word_length, bufp, pc);
+ }
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ /* Written this way to avoid undefined behaviour. */
+ mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ value &= mask;
+ /* sign extend? */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)
+ && (value & (1L << (length - 1))))
+ value |= ~mask;
+
+ *valuep = value;
+
+ return 1;
+}
+
+/* Default insn extractor.
+
+ INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
+ The extracted fields are stored in FIELDS.
+ EX_INFO is used to handle reading variable length insns.
+ Return the length of the insn in bits, or 0 if no match,
+ or -1 if an error occurs fetching data (memory_error_func will have
+ been called). */
+
+static int
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+ CGEN_CPU_DESC cd;
+ const CGEN_INSN *insn;
+ CGEN_EXTRACT_INFO *ex_info;
+ CGEN_INSN_INT insn_value;
+ CGEN_FIELDS *fields;
+ bfd_vma pc;
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+
+ CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
+
+ CGEN_INIT_EXTRACT (cd);
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
+ {
+ int length;
+
+ if (CGEN_SYNTAX_CHAR_P (*syn))
+ continue;
+
+ length = (* cd->extract_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
+ ex_info, insn_value, fields, pc);
+ if (length <= 0)
+ return length;
+ }
+
+ /* We recognized and successfully extracted this insn. */
+ return CGEN_INSN_BITSIZE (insn);
+}
+\f
+/* machine generated code added here */
+
+const char * iq2000_cgen_insert_operand
+ PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
+
+/* Main entry point for operand insertion.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `parse_insn_normal', but keeping it
+ separate makes clear the interface between `parse_insn_normal' and each of
+ the handlers. It's also needed by GAS to insert operands that couldn't be
+ resolved during parsing. */
+
+const char *
+iq2000_cgen_insert_operand (cd, opindex, fields, buffer, pc)
+ CGEN_CPU_DESC cd;
+ int opindex;
+ CGEN_FIELDS * fields;
+ CGEN_INSN_BYTES_PTR buffer;
+ bfd_vma pc ATTRIBUTE_UNUSED;
+{
+ const char * errmsg = NULL;
+ unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ errmsg = insert_normal (cd, fields->f_rs, 0, 0, 25, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ errmsg = insert_normal (cd, fields->f_imm, 0, 0, 15, 16, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ errmsg = insert_normal (cd, fields->f_rt, 0, 0, 20, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ errmsg = insert_normal (cd, fields->f_bytecount, 0, 0, 7, 8, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ errmsg = insert_normal (cd, fields->f_cam_y, 0, 0, 2, 3, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ errmsg = insert_normal (cd, fields->f_cam_z, 0, 0, 5, 3, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ errmsg = insert_normal (cd, fields->f_cm_3func, 0, 0, 5, 3, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ errmsg = insert_normal (cd, fields->f_cm_3z, 0, 0, 1, 2, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ errmsg = insert_normal (cd, fields->f_cm_4func, 0, 0, 5, 4, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ errmsg = insert_normal (cd, fields->f_cm_4z, 0, 0, 2, 3, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_COUNT :
+ errmsg = insert_normal (cd, fields->f_count, 0, 0, 15, 7, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ errmsg = insert_normal (cd, fields->f_excode, 0, 0, 25, 20, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_HI16 :
+ errmsg = insert_normal (cd, fields->f_imm, 0, 0, 15, 16, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_IMM :
+ errmsg = insert_normal (cd, fields->f_imm, 0, 0, 15, 16, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_INDEX :
+ errmsg = insert_normal (cd, fields->f_index, 0, 0, 8, 9, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ {
+ long value = fields->f_jtarg;
+ value = ((unsigned int) (((value) & (262143))) >> (2));
+ errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 15, 16, 32, total_length, buffer);
+ }
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ {
+ long value = fields->f_jtargq10;
+ value = ((unsigned int) (((value) & (8388607))) >> (2));
+ errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 20, 21, 32, total_length, buffer);
+ }
+ break;
+ case IQ2000_OPERAND_LO16 :
+ errmsg = insert_normal (cd, fields->f_imm, 0, 0, 15, 16, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_MASK :
+ errmsg = insert_normal (cd, fields->f_mask, 0, 0, 9, 4, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_MASKL :
+ errmsg = insert_normal (cd, fields->f_maskl, 0, 0, 4, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ errmsg = insert_normal (cd, fields->f_maskq10, 0, 0, 10, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_MASKR :
+ errmsg = insert_normal (cd, fields->f_rs, 0, 0, 25, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ errmsg = insert_normal (cd, fields->f_imm, 0, 0, 15, 16, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ {
+ long value = fields->f_offset;
+ value = ((int) (((value) - (pc))) >> (2));
+ errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 16, 32, total_length, buffer);
+ }
+ break;
+ case IQ2000_OPERAND_RD :
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ {
+{
+ FLD (f_rd) = FLD (f_rd_rs);
+ FLD (f_rs) = FLD (f_rd_rs);
+}
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rs, 0, 0, 25, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ {
+{
+ FLD (f_rd) = FLD (f_rd_rt);
+ FLD (f_rt) = FLD (f_rd_rt);
+}
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rt, 0, 0, 20, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case IQ2000_OPERAND_RS :
+ errmsg = insert_normal (cd, fields->f_rs, 0, 0, 25, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_RT :
+ errmsg = insert_normal (cd, fields->f_rt, 0, 0, 20, 5, 32, total_length, buffer);
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ {
+{
+ FLD (f_rt) = FLD (f_rt_rs);
+ FLD (f_rs) = FLD (f_rt_rs);
+}
+ errmsg = insert_normal (cd, fields->f_rt, 0, 0, 20, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rs, 0, 0, 25, 5, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ errmsg = insert_normal (cd, fields->f_shamt, 0, 0, 10, 5, 32, total_length, buffer);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while building insn.\n"),
+ opindex);
+ abort ();
+ }
+
+ return errmsg;
+}
+
+int iq2000_cgen_extract_operand
+ PARAMS ((CGEN_CPU_DESC, int, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+ CGEN_FIELDS *, bfd_vma));
+
+/* Main entry point for operand extraction.
+ The result is <= 0 for error, >0 for success.
+ ??? Actual values aren't well defined right now.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `print_insn_normal', but keeping it
+ separate makes clear the interface between `print_insn_normal' and each of
+ the handlers. */
+
+int
+iq2000_cgen_extract_operand (cd, opindex, ex_info, insn_value, fields, pc)
+ CGEN_CPU_DESC cd;
+ int opindex;
+ CGEN_EXTRACT_INFO *ex_info;
+ CGEN_INSN_INT insn_value;
+ CGEN_FIELDS * fields;
+ bfd_vma pc;
+{
+ /* Assume success (for those operands that are nops). */
+ int length = 1;
+ unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_rs);
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm);
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_rt);
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 8, 32, total_length, pc, & fields->f_bytecount);
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 3, 32, total_length, pc, & fields->f_cam_y);
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 3, 32, total_length, pc, & fields->f_cam_z);
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 3, 32, total_length, pc, & fields->f_cm_3func);
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 1, 2, 32, total_length, pc, & fields->f_cm_3z);
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 4, 32, total_length, pc, & fields->f_cm_4func);
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 3, 32, total_length, pc, & fields->f_cm_4z);
+ break;
+ case IQ2000_OPERAND_COUNT :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 7, 32, total_length, pc, & fields->f_count);
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 20, 32, total_length, pc, & fields->f_excode);
+ break;
+ case IQ2000_OPERAND_HI16 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm);
+ break;
+ case IQ2000_OPERAND_IMM :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm);
+ break;
+ case IQ2000_OPERAND_INDEX :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 9, 32, total_length, pc, & fields->f_index);
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ {
+ long value;
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 15, 16, 32, total_length, pc, & value);
+ value = ((((pc) & (0xf0000000))) | (((value) << (2))));
+ fields->f_jtarg = value;
+ }
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ {
+ long value;
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 20, 21, 32, total_length, pc, & value);
+ value = ((((pc) & (0xf0000000))) | (((value) << (2))));
+ fields->f_jtargq10 = value;
+ }
+ break;
+ case IQ2000_OPERAND_LO16 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm);
+ break;
+ case IQ2000_OPERAND_MASK :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 4, 32, total_length, pc, & fields->f_mask);
+ break;
+ case IQ2000_OPERAND_MASKL :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 4, 5, 32, total_length, pc, & fields->f_maskl);
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 5, 32, total_length, pc, & fields->f_maskq10);
+ break;
+ case IQ2000_OPERAND_MASKR :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_rs);
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm);
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ {
+ long value;
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 16, 32, total_length, pc, & value);
+ value = ((((value) << (2))) + (((pc) + (4))));
+ fields->f_offset = value;
+ }
+ break;
+ case IQ2000_OPERAND_RD :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_rd);
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_rd);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_rs);
+ if (length <= 0) break;
+{
+ FLD (f_rd_rs) = FLD (f_rs);
+}
+ }
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_rd);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_rt);
+ if (length <= 0) break;
+{
+ FLD (f_rd_rt) = FLD (f_rt);
+}
+ }
+ break;
+ case IQ2000_OPERAND_RS :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_rs);
+ break;
+ case IQ2000_OPERAND_RT :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_rt);
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_rt);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_rs);
+ if (length <= 0) break;
+{
+ FLD (f_rd_rs) = FLD (f_rs);
+}
+ }
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 5, 32, total_length, pc, & fields->f_shamt);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"),
+ opindex);
+ abort ();
+ }
+
+ return length;
+}
+
+cgen_insert_fn * const iq2000_cgen_insert_handlers[] =
+{
+ insert_insn_normal,
+};
+
+cgen_extract_fn * const iq2000_cgen_extract_handlers[] =
+{
+ extract_insn_normal,
+};
+
+int iq2000_cgen_get_int_operand
+ PARAMS ((CGEN_CPU_DESC, int, const CGEN_FIELDS *));
+bfd_vma iq2000_cgen_get_vma_operand
+ PARAMS ((CGEN_CPU_DESC, int, const CGEN_FIELDS *));
+
+/* Getting values from cgen_fields is handled by a collection of functions.
+ They are distinguished by the type of the VALUE argument they return.
+ TODO: floating point, inlining support, remove cases where result type
+ not appropriate. */
+
+int
+iq2000_cgen_get_int_operand (cd, opindex, fields)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ int opindex;
+ const CGEN_FIELDS * fields;
+{
+ int value;
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ value = fields->f_rt;
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ value = fields->f_bytecount;
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ value = fields->f_cam_y;
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ value = fields->f_cam_z;
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ value = fields->f_cm_3func;
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ value = fields->f_cm_3z;
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ value = fields->f_cm_4func;
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ value = fields->f_cm_4z;
+ break;
+ case IQ2000_OPERAND_COUNT :
+ value = fields->f_count;
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ value = fields->f_excode;
+ break;
+ case IQ2000_OPERAND_HI16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_IMM :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_INDEX :
+ value = fields->f_index;
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ value = fields->f_jtarg;
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ value = fields->f_jtargq10;
+ break;
+ case IQ2000_OPERAND_LO16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_MASK :
+ value = fields->f_mask;
+ break;
+ case IQ2000_OPERAND_MASKL :
+ value = fields->f_maskl;
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ value = fields->f_maskq10;
+ break;
+ case IQ2000_OPERAND_MASKR :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ value = fields->f_offset;
+ break;
+ case IQ2000_OPERAND_RD :
+ value = fields->f_rd;
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ value = fields->f_rd_rs;
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ value = fields->f_rd_rt;
+ break;
+ case IQ2000_OPERAND_RS :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_RT :
+ value = fields->f_rt;
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ value = fields->f_rt_rs;
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ value = fields->f_shamt;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),
+ opindex);
+ abort ();
+ }
+
+ return value;
+}
+
+bfd_vma
+iq2000_cgen_get_vma_operand (cd, opindex, fields)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ int opindex;
+ const CGEN_FIELDS * fields;
+{
+ bfd_vma value;
+
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ value = fields->f_rt;
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ value = fields->f_bytecount;
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ value = fields->f_cam_y;
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ value = fields->f_cam_z;
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ value = fields->f_cm_3func;
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ value = fields->f_cm_3z;
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ value = fields->f_cm_4func;
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ value = fields->f_cm_4z;
+ break;
+ case IQ2000_OPERAND_COUNT :
+ value = fields->f_count;
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ value = fields->f_excode;
+ break;
+ case IQ2000_OPERAND_HI16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_IMM :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_INDEX :
+ value = fields->f_index;
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ value = fields->f_jtarg;
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ value = fields->f_jtargq10;
+ break;
+ case IQ2000_OPERAND_LO16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_MASK :
+ value = fields->f_mask;
+ break;
+ case IQ2000_OPERAND_MASKL :
+ value = fields->f_maskl;
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ value = fields->f_maskq10;
+ break;
+ case IQ2000_OPERAND_MASKR :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ value = fields->f_imm;
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ value = fields->f_offset;
+ break;
+ case IQ2000_OPERAND_RD :
+ value = fields->f_rd;
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ value = fields->f_rd_rs;
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ value = fields->f_rd_rt;
+ break;
+ case IQ2000_OPERAND_RS :
+ value = fields->f_rs;
+ break;
+ case IQ2000_OPERAND_RT :
+ value = fields->f_rt;
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ value = fields->f_rt_rs;
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ value = fields->f_shamt;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),
+ opindex);
+ abort ();
+ }
+
+ return value;
+}
+
+void iq2000_cgen_set_int_operand
+ PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, int));
+void iq2000_cgen_set_vma_operand
+ PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, bfd_vma));
+
+/* Stuffing values in cgen_fields is handled by a collection of functions.
+ They are distinguished by the type of the VALUE argument they accept.
+ TODO: floating point, inlining support, remove cases where argument type
+ not appropriate. */
+
+void
+iq2000_cgen_set_int_operand (cd, opindex, fields, value)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ int opindex;
+ CGEN_FIELDS * fields;
+ int value;
+{
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ fields->f_rt = value;
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ fields->f_bytecount = value;
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ fields->f_cam_y = value;
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ fields->f_cam_z = value;
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ fields->f_cm_3func = value;
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ fields->f_cm_3z = value;
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ fields->f_cm_4func = value;
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ fields->f_cm_4z = value;
+ break;
+ case IQ2000_OPERAND_COUNT :
+ fields->f_count = value;
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ fields->f_excode = value;
+ break;
+ case IQ2000_OPERAND_HI16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_IMM :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_INDEX :
+ fields->f_index = value;
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ fields->f_jtarg = value;
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ fields->f_jtargq10 = value;
+ break;
+ case IQ2000_OPERAND_LO16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_MASK :
+ fields->f_mask = value;
+ break;
+ case IQ2000_OPERAND_MASKL :
+ fields->f_maskl = value;
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ fields->f_maskq10 = value;
+ break;
+ case IQ2000_OPERAND_MASKR :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ fields->f_offset = value;
+ break;
+ case IQ2000_OPERAND_RD :
+ fields->f_rd = value;
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ fields->f_rd_rs = value;
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ fields->f_rd_rt = value;
+ break;
+ case IQ2000_OPERAND_RS :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_RT :
+ fields->f_rt = value;
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ fields->f_rt_rs = value;
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ fields->f_shamt = value;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+void
+iq2000_cgen_set_vma_operand (cd, opindex, fields, value)
+ CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+ int opindex;
+ CGEN_FIELDS * fields;
+ bfd_vma value;
+{
+ switch (opindex)
+ {
+ case IQ2000_OPERAND_BASE :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_BASEOFF :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_BITNUM :
+ fields->f_rt = value;
+ break;
+ case IQ2000_OPERAND_BYTECOUNT :
+ fields->f_bytecount = value;
+ break;
+ case IQ2000_OPERAND_CAM_Y :
+ fields->f_cam_y = value;
+ break;
+ case IQ2000_OPERAND_CAM_Z :
+ fields->f_cam_z = value;
+ break;
+ case IQ2000_OPERAND_CM_3FUNC :
+ fields->f_cm_3func = value;
+ break;
+ case IQ2000_OPERAND_CM_3Z :
+ fields->f_cm_3z = value;
+ break;
+ case IQ2000_OPERAND_CM_4FUNC :
+ fields->f_cm_4func = value;
+ break;
+ case IQ2000_OPERAND_CM_4Z :
+ fields->f_cm_4z = value;
+ break;
+ case IQ2000_OPERAND_COUNT :
+ fields->f_count = value;
+ break;
+ case IQ2000_OPERAND_EXECODE :
+ fields->f_excode = value;
+ break;
+ case IQ2000_OPERAND_HI16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_IMM :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_INDEX :
+ fields->f_index = value;
+ break;
+ case IQ2000_OPERAND_JMPTARG :
+ fields->f_jtarg = value;
+ break;
+ case IQ2000_OPERAND_JMPTARGQ10 :
+ fields->f_jtargq10 = value;
+ break;
+ case IQ2000_OPERAND_LO16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_MASK :
+ fields->f_mask = value;
+ break;
+ case IQ2000_OPERAND_MASKL :
+ fields->f_maskl = value;
+ break;
+ case IQ2000_OPERAND_MASKQ10 :
+ fields->f_maskq10 = value;
+ break;
+ case IQ2000_OPERAND_MASKR :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_MLO16 :
+ fields->f_imm = value;
+ break;
+ case IQ2000_OPERAND_OFFSET :
+ fields->f_offset = value;
+ break;
+ case IQ2000_OPERAND_RD :
+ fields->f_rd = value;
+ break;
+ case IQ2000_OPERAND_RD_RS :
+ fields->f_rd_rs = value;
+ break;
+ case IQ2000_OPERAND_RD_RT :
+ fields->f_rd_rt = value;
+ break;
+ case IQ2000_OPERAND_RS :
+ fields->f_rs = value;
+ break;
+ case IQ2000_OPERAND_RT :
+ fields->f_rt = value;
+ break;
+ case IQ2000_OPERAND_RT_RS :
+ fields->f_rt_rs = value;
+ break;
+ case IQ2000_OPERAND_SHAMT :
+ fields->f_shamt = value;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+/* Function to call before using the instruction builder tables. */
+
+void
+iq2000_cgen_init_ibld_table (cd)
+ CGEN_CPU_DESC cd;
+{
+ cd->insert_handlers = & iq2000_cgen_insert_handlers[0];
+ cd->extract_handlers = & iq2000_cgen_extract_handlers[0];
+
+ cd->insert_operand = iq2000_cgen_insert_operand;
+ cd->extract_operand = iq2000_cgen_extract_operand;
+
+ cd->get_int_operand = iq2000_cgen_get_int_operand;
+ cd->set_int_operand = iq2000_cgen_set_int_operand;
+ cd->get_vma_operand = iq2000_cgen_get_vma_operand;
+ cd->set_vma_operand = iq2000_cgen_set_vma_operand;
+}
--- /dev/null
+/* Instruction opcode table for iq2000.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+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, 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 "sysdep.h"
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "iq2000-desc.h"
+#include "iq2000-opc.h"
+#include "libiberty.h"
+
+/* The hash functions are recorded here to help keep assembler code out of
+ the disassembler and vice versa. */
+
+static int asm_hash_insn_p PARAMS ((const CGEN_INSN *));
+static unsigned int asm_hash_insn PARAMS ((const char *));
+static int dis_hash_insn_p PARAMS ((const CGEN_INSN *));
+static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT));
+
+/* Instruction formats. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
+#else
+#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
+#endif
+static const CGEN_IFMT ifmt_empty = {
+ 0, 0, 0x0, { { 0 } }
+};
+
+static const CGEN_IFMT ifmt_add2 = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_add = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi2 = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ram = {
+ 32, 32, 0xfc000020, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_5) }, { F (F_MASKL) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sll = {
+ 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sllv2 = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_slmv2 = {
+ 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_slmv = {
+ 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_slti2 = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_slti = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sra2 = {
+ 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbi = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbv = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgez = {
+ 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jalr = {
+ 32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jr = {
+ 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lb = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lui = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_break = {
+ 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_syscall = {
+ 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_andoui = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_andoui2 = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mrgb = {
+ 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mrgb2 = {
+ 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bc0f = {
+ 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cfc0 = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_chkhdr = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lulck = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_pkrlr1 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_rfe = {
+ 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_j = {
+ 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mrgbq10 = {
+ 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mrgbq102 = {
+ 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jq10 = {
+ 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jalq10 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_avail = {
+ 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_rbi = {
+ 32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cam36 = {
+ 32, 32, 0xffe007c0, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cm32and = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cm32rd = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cm128ria3 = {
+ 32, 32, 0xfc0007fc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cm128ria4 = {
+ 32, 32, 0xfc0007f8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ctc = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+#undef F
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_INSN_##a)
+#else
+#define A(a) (1 << CGEN_INSN_/**/a)
+#endif
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define OPERAND(op) IQ2000_OPERAND_##op
+#else
+#define OPERAND(op) IQ2000_OPERAND_/**/op
+#endif
+#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+
+/* The instruction table. */
+
+static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
+{
+ /* Special null first entry.
+ A `num' value of zero is thus invalid.
+ Also, the special `invalid' insn resides here. */
+ { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
+/* add ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x20 }
+ },
+/* add $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x20 }
+ },
+/* addi ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0x20000000 }
+ },
+/* addi $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0x20000000 }
+ },
+/* addiu ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0x24000000 }
+ },
+/* addiu $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0x24000000 }
+ },
+/* addu ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x21 }
+ },
+/* addu $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x21 }
+ },
+/* ado16 ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x29 }
+ },
+/* ado16 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x29 }
+ },
+/* and ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x24 }
+ },
+/* and $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x24 }
+ },
+/* andi ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0x30000000 }
+ },
+/* andi $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0x30000000 }
+ },
+/* andoi ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0xb0000000 }
+ },
+/* andoi $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0xb0000000 }
+ },
+/* nor ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x27 }
+ },
+/* nor $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x27 }
+ },
+/* or ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x25 }
+ },
+/* or $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x25 }
+ },
+/* ori ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0x34000000 }
+ },
+/* ori $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0x34000000 }
+ },
+/* ram $rd,$rt,$shamt,$maskl,$maskr */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
+ & ifmt_ram, { 0x9c000000 }
+ },
+/* sll $rd,$rt,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
+ & ifmt_sll, { 0x0 }
+ },
+/* sllv ${rd-rt},$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
+ & ifmt_sllv2, { 0x4 }
+ },
+/* sllv $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_add, { 0x4 }
+ },
+/* slmv ${rd-rt},$rs,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
+ & ifmt_slmv2, { 0x1 }
+ },
+/* slmv $rd,$rt,$rs,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
+ & ifmt_slmv, { 0x1 }
+ },
+/* slt ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x2a }
+ },
+/* slt $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x2a }
+ },
+/* slti ${rt-rs},$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
+ & ifmt_slti2, { 0x28000000 }
+ },
+/* slti $rt,$rs,$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
+ & ifmt_slti, { 0x28000000 }
+ },
+/* sltiu ${rt-rs},$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
+ & ifmt_slti2, { 0x2c000000 }
+ },
+/* sltiu $rt,$rs,$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
+ & ifmt_slti, { 0x2c000000 }
+ },
+/* sltu ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x2b }
+ },
+/* sltu $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x2b }
+ },
+/* sra ${rd-rt},$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
+ & ifmt_sra2, { 0x3 }
+ },
+/* sra $rd,$rt,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
+ & ifmt_sll, { 0x3 }
+ },
+/* srav ${rd-rt},$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
+ & ifmt_sllv2, { 0x7 }
+ },
+/* srav $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_add, { 0x7 }
+ },
+/* srl $rd,$rt,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
+ & ifmt_sll, { 0x2 }
+ },
+/* srlv ${rd-rt},$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
+ & ifmt_sllv2, { 0x6 }
+ },
+/* srlv $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_add, { 0x6 }
+ },
+/* srmv ${rd-rt},$rs,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
+ & ifmt_slmv2, { 0x5 }
+ },
+/* srmv $rd,$rt,$rs,$shamt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
+ & ifmt_slmv, { 0x5 }
+ },
+/* sub ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x22 }
+ },
+/* sub $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x22 }
+ },
+/* subu ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x23 }
+ },
+/* subu $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x23 }
+ },
+/* xor ${rd-rs},$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
+ & ifmt_add2, { 0x26 }
+ },
+/* xor $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x26 }
+ },
+/* xori ${rt-rs},$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
+ & ifmt_addi2, { 0x38000000 }
+ },
+/* xori $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_addi, { 0x38000000 }
+ },
+/* bbi $rs($bitnum),$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
+ & ifmt_bbi, { 0x70000000 }
+ },
+/* bbin $rs($bitnum),$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
+ & ifmt_bbi, { 0x78000000 }
+ },
+/* bbv $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x74000000 }
+ },
+/* bbvn $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x7c000000 }
+ },
+/* beq $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x10000000 }
+ },
+/* beql $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x50000000 }
+ },
+/* bgez $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4010000 }
+ },
+/* bgezal $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4110000 }
+ },
+/* bgezall $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4130000 }
+ },
+/* bgezl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4030000 }
+ },
+/* bltz $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4000000 }
+ },
+/* bltzl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4020000 }
+ },
+/* bltzal $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4100000 }
+ },
+/* bltzall $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4120000 }
+ },
+/* bmb0 $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x60000000 }
+ },
+/* bmb1 $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x64000000 }
+ },
+/* bmb2 $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x68000000 }
+ },
+/* bmb3 $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x6c000000 }
+ },
+/* bne $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x14000000 }
+ },
+/* bnel $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x54000000 }
+ },
+/* jalr $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_jalr, { 0x9 }
+ },
+/* jr $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_jr, { 0x8 }
+ },
+/* lb $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0x80000000 }
+ },
+/* lbu $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0x90000000 }
+ },
+/* lh $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0x84000000 }
+ },
+/* lhu $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0x94000000 }
+ },
+/* lui $rt,$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
+ & ifmt_lui, { 0x3c000000 }
+ },
+/* lw $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0x8c000000 }
+ },
+/* sb $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0xa0000000 }
+ },
+/* sh $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0xa4000000 }
+ },
+/* sw $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0xac000000 }
+ },
+/* break */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_break, { 0xd }
+ },
+/* syscall */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_syscall, { 0xc }
+ },
+/* andoui $rt,$rs,$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui, { 0xfc000000 }
+ },
+/* andoui ${rt-rs},$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui2, { 0xfc000000 }
+ },
+/* orui ${rt-rs},$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui2, { 0xbc000000 }
+ },
+/* orui $rt,$rs,$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui, { 0xbc000000 }
+ },
+/* bgtz $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x1c000000 }
+ },
+/* bgtzl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x5c000000 }
+ },
+/* blez $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x18000000 }
+ },
+/* blezl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x58000000 }
+ },
+/* mrgb $rd,$rs,$rt,$mask */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
+ & ifmt_mrgb, { 0x2d }
+ },
+/* mrgb ${rd-rs},$rt,$mask */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
+ & ifmt_mrgb2, { 0x2d }
+ },
+/* bctxt $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4060000 }
+ },
+/* bc0f $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x41000000 }
+ },
+/* bc0fl $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x41020000 }
+ },
+/* bc3f $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x4d000000 }
+ },
+/* bc3fl $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x4d020000 }
+ },
+/* bc0t $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x41010000 }
+ },
+/* bc0tl $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x41030000 }
+ },
+/* bc3t $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x4d010000 }
+ },
+/* bc3tl $offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (OFFSET), 0 } },
+ & ifmt_bc0f, { 0x4d030000 }
+ },
+/* cfc0 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x40400000 }
+ },
+/* cfc1 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x44400000 }
+ },
+/* cfc2 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x48400000 }
+ },
+/* cfc3 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x4c400000 }
+ },
+/* chkhdr $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4d200000 }
+ },
+/* ctc0 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x40c00000 }
+ },
+/* ctc1 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x44c00000 }
+ },
+/* ctc2 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x48c00000 }
+ },
+/* ctc3 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x4cc00000 }
+ },
+/* jcr $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_jr, { 0xa }
+ },
+/* luc32 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200003 }
+ },
+/* luc32l $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200007 }
+ },
+/* luc64 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x4820000b }
+ },
+/* luc64l $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x4820000f }
+ },
+/* luk $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200008 }
+ },
+/* lulck $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x48200004 }
+ },
+/* lum32 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200002 }
+ },
+/* lum32l $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200006 }
+ },
+/* lum64 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x4820000a }
+ },
+/* lum64l $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x4820000e }
+ },
+/* lur $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200001 }
+ },
+/* lurl $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200005 }
+ },
+/* luulck $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x48200000 }
+ },
+/* mfc0 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x40000000 }
+ },
+/* mfc1 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x44000000 }
+ },
+/* mfc2 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x48000000 }
+ },
+/* mfc3 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x4c000000 }
+ },
+/* mtc0 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x40800000 }
+ },
+/* mtc1 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x44800000 }
+ },
+/* mtc2 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x48800000 }
+ },
+/* mtc3 $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_cfc0, { 0x4c800000 }
+ },
+/* pkrl $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200007 }
+ },
+/* pkrlr1 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4fa00000 }
+ },
+/* pkrlr30 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4fe00000 }
+ },
+/* rb $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200004 }
+ },
+/* rbr1 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4f000000 }
+ },
+/* rbr30 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4f400000 }
+ },
+/* rfe */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_rfe, { 0x42000010 }
+ },
+/* rx $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200006 }
+ },
+/* rxr1 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4f800000 }
+ },
+/* rxr30 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4fc00000 }
+ },
+/* sleep */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_syscall, { 0xe }
+ },
+/* srrd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x48200010 }
+ },
+/* srrdl $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x48200014 }
+ },
+/* srulck $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x48200016 }
+ },
+/* srwr $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200011 }
+ },
+/* srwru $rt,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
+ & ifmt_chkhdr, { 0x48200015 }
+ },
+/* trapqfl */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_break, { 0x4c200008 }
+ },
+/* trapqne */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_break, { 0x4c200009 }
+ },
+/* traprel $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_lulck, { 0x4c20000a }
+ },
+/* wb $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200000 }
+ },
+/* wbu $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200001 }
+ },
+/* wbr1 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4e000000 }
+ },
+/* wbr1u $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4e200000 }
+ },
+/* wbr30 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4e400000 }
+ },
+/* wbr30u $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4e600000 }
+ },
+/* wx $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200002 }
+ },
+/* wxu $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c200003 }
+ },
+/* wxr1 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4e800000 }
+ },
+/* wxr1u $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4ea00000 }
+ },
+/* wxr30 $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4ec00000 }
+ },
+/* wxr30u $rt,$index,$count */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (INDEX), ',', OP (COUNT), 0 } },
+ & ifmt_pkrlr1, { 0x4ee00000 }
+ },
+/* ldw $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0xc0000000 }
+ },
+/* sdw $rt,$lo16($base) */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
+ & ifmt_lb, { 0xe0000000 }
+ },
+/* j $jmptarg */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (JMPTARG), 0 } },
+ & ifmt_j, { 0x8000000 }
+ },
+/* jal $jmptarg */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (JMPTARG), 0 } },
+ & ifmt_j, { 0xc000000 }
+ },
+/* bmb $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0xb4000000 }
+ },
+/* andoui $rt,$rs,$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui, { 0xbc000000 }
+ },
+/* andoui ${rt-rs},$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui2, { 0xbc000000 }
+ },
+/* orui $rt,$rs,$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui, { 0x3c000000 }
+ },
+/* orui ${rt-rs},$hi16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
+ & ifmt_andoui2, { 0x3c000000 }
+ },
+/* mrgb $rd,$rs,$rt,$maskq10 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
+ & ifmt_mrgbq10, { 0x2d }
+ },
+/* mrgb ${rd-rs},$rt,$maskq10 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
+ & ifmt_mrgbq102, { 0x2d }
+ },
+/* j $jmptarg */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (JMPTARG), 0 } },
+ & ifmt_jq10, { 0x8000000 }
+ },
+/* jal $rt,$jmptarg */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
+ & ifmt_jalq10, { 0xc000000 }
+ },
+/* jal $jmptarg */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (JMPTARG), 0 } },
+ & ifmt_jq10, { 0xc1f0000 }
+ },
+/* bbil $rs($bitnum),$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
+ & ifmt_bbi, { 0xf0000000 }
+ },
+/* bbinl $rs($bitnum),$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
+ & ifmt_bbi, { 0xf8000000 }
+ },
+/* bbvl $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0xf4000000 }
+ },
+/* bbvnl $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0xfc000000 }
+ },
+/* bgtzal $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4150000 }
+ },
+/* bgtzall $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4170000 }
+ },
+/* blezal $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4140000 }
+ },
+/* blezall $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4160000 }
+ },
+/* bgtz $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4050000 }
+ },
+/* bgtzl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4070000 }
+ },
+/* blez $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4040000 }
+ },
+/* blezl $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4060000 }
+ },
+/* bmb $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x18000000 }
+ },
+/* bmbl $rs,$rt,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
+ & ifmt_bbv, { 0x58000000 }
+ },
+/* bri $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4080000 }
+ },
+/* brv $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x4090000 }
+ },
+/* bctx $rs,$offset */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
+ & ifmt_bgez, { 0x40c0000 }
+ },
+/* yield */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_break, { 0xe }
+ },
+/* crc32 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000014 }
+ },
+/* crc32b $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000015 }
+ },
+/* cnt1s $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_add, { 0x2e }
+ },
+/* avail $rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), 0 } },
+ & ifmt_avail, { 0x4c000024 }
+ },
+/* free $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_jalr, { 0x4c000025 }
+ },
+/* tstod $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_jalr, { 0x4c000027 }
+ },
+/* cmphdr $rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), 0 } },
+ & ifmt_avail, { 0x4c00002c }
+ },
+/* mcid $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000020 }
+ },
+/* dba $rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), 0 } },
+ & ifmt_avail, { 0x4c000022 }
+ },
+/* dbd $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000021 }
+ },
+/* dpwt $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_jalr, { 0x4c000023 }
+ },
+/* chkhdr $rd,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
+ & ifmt_jalr, { 0x4c000026 }
+ },
+/* rba $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000008 }
+ },
+/* rbal $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000009 }
+ },
+/* rbar $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c00000a }
+ },
+/* wba $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000010 }
+ },
+/* wbau $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000011 }
+ },
+/* wbac $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000012 }
+ },
+/* rbi $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000200 }
+ },
+/* rbil $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000300 }
+ },
+/* rbir $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000100 }
+ },
+/* wbi $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000600 }
+ },
+/* wbic $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000500 }
+ },
+/* wbiu $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x4c000700 }
+ },
+/* pkrli $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x48000000 }
+ },
+/* pkrlih $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x48000200 }
+ },
+/* pkrliu $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x48000100 }
+ },
+/* pkrlic $rd,$rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_rbi, { 0x48000300 }
+ },
+/* pkrla $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000028 }
+ },
+/* pkrlau $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000029 }
+ },
+/* pkrlah $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c00002a }
+ },
+/* pkrlac $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c00002b }
+ },
+/* lock $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000001 }
+ },
+/* unlk $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000003 }
+ },
+/* swrd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000004 }
+ },
+/* swrdl $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000005 }
+ },
+/* swwr $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000006 }
+ },
+/* swwru $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c000007 }
+ },
+/* dwrd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c00000c }
+ },
+/* dwrdl $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c00000d }
+ },
+/* cam36 $rd,$rt,${cam-z},${cam-y} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
+ & ifmt_cam36, { 0x4c000400 }
+ },
+/* cam72 $rd,$rt,${cam-y},${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
+ & ifmt_cam36, { 0x4c000440 }
+ },
+/* cam144 $rd,$rt,${cam-y},${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
+ & ifmt_cam36, { 0x4c000480 }
+ },
+/* cam288 $rd,$rt,${cam-y},${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
+ & ifmt_cam36, { 0x4c0004c0 }
+ },
+/* cm32and $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000ab }
+ },
+/* cm32andn $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000a3 }
+ },
+/* cm32or $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000aa }
+ },
+/* cm32ra $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c0000b0 }
+ },
+/* cm32rd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c0000a1 }
+ },
+/* cm32ri $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c0000a4 }
+ },
+/* cm32rs $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_add, { 0x4c0000a0 }
+ },
+/* cm32sa $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000b8 }
+ },
+/* cm32sd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c0000a9 }
+ },
+/* cm32si $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c0000ac }
+ },
+/* cm32ss $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000a8 }
+ },
+/* cm32xor $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000a2 }
+ },
+/* cm64clr $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c000085 }
+ },
+/* cm64ra $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000090 }
+ },
+/* cm64rd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c000081 }
+ },
+/* cm64ri $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c000084 }
+ },
+/* cm64ria2 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000094 }
+ },
+/* cm64rs $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000080 }
+ },
+/* cm64sa $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000098 }
+ },
+/* cm64sd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c000089 }
+ },
+/* cm64si $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_cm32rd, { 0x4c00008c }
+ },
+/* cm64sia2 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c00009c }
+ },
+/* cm64ss $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000088 }
+ },
+/* cm128ria2 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c000095 }
+ },
+/* cm128ria3 $rd,$rs,$rt,${cm-3z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
+ & ifmt_cm128ria3, { 0x4c000090 }
+ },
+/* cm128ria4 $rd,$rs,$rt,${cm-4z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
+ & ifmt_cm128ria4, { 0x4c0000b0 }
+ },
+/* cm128sia2 $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c00009d }
+ },
+/* cm128sia3 $rd,$rs,$rt,${cm-3z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
+ & ifmt_cm128ria3, { 0x4c000098 }
+ },
+/* cm128sia4 $rd,$rs,$rt,${cm-4z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
+ & ifmt_cm128ria4, { 0x4c0000b8 }
+ },
+/* cm128vsa $rd,$rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_cm32and, { 0x4c0000a6 }
+ },
+/* cfc $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_chkhdr, { 0x4c000000 }
+ },
+/* ctc $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_ctc, { 0x4c000002 }
+ },
+};
+
+#undef A
+#undef OPERAND
+#undef MNEM
+#undef OP
+
+/* Formats for ALIAS macro-insns. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
+#else
+#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
+#endif
+static const CGEN_IFMT ifmt_nop = {
+ 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_li = {
+ 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_move = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lb_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lbu_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lh_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lw_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_add = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_addu = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_and = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_j = {
+ 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_or = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_sll = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_slt = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_sltu = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_sra = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_srl = {
+ 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_not = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_subi = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_sub = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_subu = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sb_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sh_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sw_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_xor = {
+ 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldw_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sdw_base_0 = {
+ 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_avail = {
+ 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cam36 = {
+ 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cam72 = {
+ 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cam144 = {
+ 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cam288 = {
+ 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32read = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64read = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32mlog = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32and = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32andn = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32or = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32ra = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32rd = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32ri = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32rs = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32sa = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32sd = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32si = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32ss = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm32xor = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64clr = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64ra = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64rd = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64ri = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64ria2 = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64rs = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64sa = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64sd = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64si = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64sia2 = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm64ss = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128ria2 = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128ria3 = {
+ 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128ria4 = {
+ 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128sia2 = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128sia3 = {
+ 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cm128sia4 = {
+ 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_cmphdr = {
+ 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_dbd = {
+ 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m2_dbd = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_dpwt = {
+ 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_free = {
+ 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_lock = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrla = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrlac = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrlah = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrlau = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrli = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrlic = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrlih = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_pkrliu = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rba = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rbal = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rbar = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rbi = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rbil = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_rbir = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_swwr = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_swwru = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_tstod = {
+ 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_unlk = {
+ 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wba = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wbac = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wbau = {
+ 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wbi = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wbic = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_m_wbiu = {
+ 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
+};
+
+#undef F
+
+/* Each non-simple macro entry points to an array of expansion possibilities. */
+
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define A(a) (1 << CGEN_INSN_##a)
+#else
+#define A(a) (1 << CGEN_INSN_/**/a)
+#endif
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#define OPERAND(op) IQ2000_OPERAND_##op
+#else
+#define OPERAND(op) IQ2000_OPERAND_/**/op
+#endif
+#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+
+/* The macro instruction table. */
+
+static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
+{
+/* nop */
+ {
+ -1, "nop", "nop", 32,
+ { 0|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* li $rs,$imm */
+ {
+ -1, "li", "li", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* move $rd,$rt */
+ {
+ -1, "move", "move", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* lb $rt,$lo16 */
+ {
+ -1, "lb-base-0", "lb", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* lbu $rt,$lo16 */
+ {
+ -1, "lbu-base-0", "lbu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* lh $rt,$lo16 */
+ {
+ -1, "lh-base-0", "lh", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* lw $rt,$lo16 */
+ {
+ -1, "lw-base-0", "lw", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* add $rt,$rs,$lo16 */
+ {
+ -1, "m-add", "add", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* addu $rt,$rs,$lo16 */
+ {
+ -1, "m-addu", "addu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* and $rt,$rs,$lo16 */
+ {
+ -1, "m-and", "and", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* j $rs */
+ {
+ -1, "m-j", "j", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* or $rt,$rs,$lo16 */
+ {
+ -1, "m-or", "or", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sll $rd,$rt,$rs */
+ {
+ -1, "m-sll", "sll", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* slt $rt,$rs,$imm */
+ {
+ -1, "m-slt", "slt", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sltu $rt,$rs,$imm */
+ {
+ -1, "m-sltu", "sltu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sra $rd,$rt,$rs */
+ {
+ -1, "m-sra", "sra", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* srl $rd,$rt,$rs */
+ {
+ -1, "m-srl", "srl", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* not $rd,$rt */
+ {
+ -1, "not", "not", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* subi $rt,$rs,$mlo16 */
+ {
+ -1, "subi", "subi", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sub $rt,$rs,$mlo16 */
+ {
+ -1, "m-sub", "sub", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* subu $rt,$rs,$mlo16 */
+ {
+ -1, "m-subu", "subu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sb $rt,$lo16 */
+ {
+ -1, "sb-base-0", "sb", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sh $rt,$lo16 */
+ {
+ -1, "sh-base-0", "sh", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* sw $rt,$lo16 */
+ {
+ -1, "sw-base-0", "sw", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* xor $rt,$rs,$lo16 */
+ {
+ -1, "m-xor", "xor", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+ },
+/* ldw $rt,$lo16 */
+ {
+ -1, "ldw-base-0", "ldw", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } }
+ },
+/* sdw $rt,$lo16 */
+ {
+ -1, "sdw-base-0", "sdw", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } }
+ },
+/* avail */
+ {
+ -1, "m-avail", "avail", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cam36 $rd,$rt,${cam-z} */
+ {
+ -1, "m-cam36", "cam36", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cam72 $rd,$rt,${cam-z} */
+ {
+ -1, "m-cam72", "cam72", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cam144 $rd,$rt,${cam-z} */
+ {
+ -1, "m-cam144", "cam144", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cam288 $rd,$rt,${cam-z} */
+ {
+ -1, "m-cam288", "cam288", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32read $rd,$rt */
+ {
+ -1, "m-cm32read", "cm32read", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64read $rd,$rt */
+ {
+ -1, "m-cm64read", "cm64read", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32mlog $rs,$rt */
+ {
+ -1, "m-cm32mlog", "cm32mlog", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32and $rs,$rt */
+ {
+ -1, "m-cm32and", "cm32and", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32andn $rs,$rt */
+ {
+ -1, "m-cm32andn", "cm32andn", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32or $rs,$rt */
+ {
+ -1, "m-cm32or", "cm32or", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32ra $rs,$rt */
+ {
+ -1, "m-cm32ra", "cm32ra", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32rd $rt */
+ {
+ -1, "m-cm32rd", "cm32rd", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32ri $rt */
+ {
+ -1, "m-cm32ri", "cm32ri", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32rs $rs,$rt */
+ {
+ -1, "m-cm32rs", "cm32rs", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32sa $rs,$rt */
+ {
+ -1, "m-cm32sa", "cm32sa", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32sd $rt */
+ {
+ -1, "m-cm32sd", "cm32sd", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32si $rt */
+ {
+ -1, "m-cm32si", "cm32si", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32ss $rs,$rt */
+ {
+ -1, "m-cm32ss", "cm32ss", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm32xor $rs,$rt */
+ {
+ -1, "m-cm32xor", "cm32xor", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64clr $rt */
+ {
+ -1, "m-cm64clr", "cm64clr", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64ra $rs,$rt */
+ {
+ -1, "m-cm64ra", "cm64ra", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64rd $rt */
+ {
+ -1, "m-cm64rd", "cm64rd", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64ri $rt */
+ {
+ -1, "m-cm64ri", "cm64ri", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64ria2 $rs,$rt */
+ {
+ -1, "m-cm64ria2", "cm64ria2", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64rs $rs,$rt */
+ {
+ -1, "m-cm64rs", "cm64rs", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64sa $rs,$rt */
+ {
+ -1, "m-cm64sa", "cm64sa", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64sd $rt */
+ {
+ -1, "m-cm64sd", "cm64sd", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64si $rt */
+ {
+ -1, "m-cm64si", "cm64si", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64sia2 $rs,$rt */
+ {
+ -1, "m-cm64sia2", "cm64sia2", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm64ss $rs,$rt */
+ {
+ -1, "m-cm64ss", "cm64ss", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria2 $rs,$rt */
+ {
+ -1, "m-cm128ria2", "cm128ria2", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria3 $rs,$rt,${cm-3z} */
+ {
+ -1, "m-cm128ria3", "cm128ria3", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128ria4 $rs,$rt,${cm-4z} */
+ {
+ -1, "m-cm128ria4", "cm128ria4", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia2 $rs,$rt */
+ {
+ -1, "m-cm128sia2", "cm128sia2", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia3 $rs,$rt,${cm-3z} */
+ {
+ -1, "m-cm128sia3", "cm128sia3", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cm128sia4 $rs,$rt,${cm-4z} */
+ {
+ -1, "m-cm128sia4", "cm128sia4", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* cmphdr */
+ {
+ -1, "m-cmphdr", "cmphdr", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* dbd $rd,$rt */
+ {
+ -1, "m-dbd", "dbd", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* dbd $rt */
+ {
+ -1, "m2-dbd", "dbd", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* dpwt $rs */
+ {
+ -1, "m-dpwt", "dpwt", 32,
+ { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* free $rs */
+ {
+ -1, "m-free", "free", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* lock $rt */
+ {
+ -1, "m-lock", "lock", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrla $rs,$rt */
+ {
+ -1, "m-pkrla", "pkrla", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlac $rs,$rt */
+ {
+ -1, "m-pkrlac", "pkrlac", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlah $rs,$rt */
+ {
+ -1, "m-pkrlah", "pkrlah", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlau $rs,$rt */
+ {
+ -1, "m-pkrlau", "pkrlau", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrli $rs,$rt,$bytecount */
+ {
+ -1, "m-pkrli", "pkrli", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlic $rs,$rt,$bytecount */
+ {
+ -1, "m-pkrlic", "pkrlic", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrlih $rs,$rt,$bytecount */
+ {
+ -1, "m-pkrlih", "pkrlih", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* pkrliu $rs,$rt,$bytecount */
+ {
+ -1, "m-pkrliu", "pkrliu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rba $rs,$rt */
+ {
+ -1, "m-rba", "rba", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rbal $rs,$rt */
+ {
+ -1, "m-rbal", "rbal", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rbar $rs,$rt */
+ {
+ -1, "m-rbar", "rbar", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rbi $rs,$rt,$bytecount */
+ {
+ -1, "m-rbi", "rbi", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rbil $rs,$rt,$bytecount */
+ {
+ -1, "m-rbil", "rbil", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* rbir $rs,$rt,$bytecount */
+ {
+ -1, "m-rbir", "rbir", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* swwr $rs,$rt */
+ {
+ -1, "m-swwr", "swwr", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* swwru $rs,$rt */
+ {
+ -1, "m-swwru", "swwru", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* tstod $rs */
+ {
+ -1, "m-tstod", "tstod", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* unlk $rt */
+ {
+ -1, "m-unlk", "unlk", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wba $rs,$rt */
+ {
+ -1, "m-wba", "wba", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wbac $rs,$rt */
+ {
+ -1, "m-wbac", "wbac", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wbau $rs,$rt */
+ {
+ -1, "m-wbau", "wbau", 32,
+ { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wbi $rs,$rt,$bytecount */
+ {
+ -1, "m-wbi", "wbi", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wbic $rs,$rt,$bytecount */
+ {
+ -1, "m-wbic", "wbic", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+/* wbiu $rs,$rt,$bytecount */
+ {
+ -1, "m-wbiu", "wbiu", 32,
+ { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+ },
+};
+
+/* The macro instruction opcode table. */
+
+static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
+{
+/* nop */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x0 }
+ },
+/* li $rs,$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
+ & ifmt_li, { 0x34000000 }
+ },
+/* move $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_move, { 0x25 }
+ },
+/* lb $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_lb_base_0, { 0x80000000 }
+ },
+/* lbu $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_lbu_base_0, { 0x90000000 }
+ },
+/* lh $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_lh_base_0, { 0x84000000 }
+ },
+/* lw $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_lw_base_0, { 0x8c000000 }
+ },
+/* add $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_m_add, { 0x20000000 }
+ },
+/* addu $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_m_addu, { 0x24000000 }
+ },
+/* and $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_m_and, { 0x30000000 }
+ },
+/* j $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_m_j, { 0x8 }
+ },
+/* or $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_m_or, { 0x34000000 }
+ },
+/* sll $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_m_sll, { 0x4 }
+ },
+/* slt $rt,$rs,$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
+ & ifmt_m_slt, { 0x28000000 }
+ },
+/* sltu $rt,$rs,$imm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
+ & ifmt_m_sltu, { 0x2c000000 }
+ },
+/* sra $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_m_sra, { 0x7 }
+ },
+/* srl $rd,$rt,$rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
+ & ifmt_m_srl, { 0x6 }
+ },
+/* not $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_not, { 0x27 }
+ },
+/* subi $rt,$rs,$mlo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
+ & ifmt_subi, { 0x24000000 }
+ },
+/* sub $rt,$rs,$mlo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
+ & ifmt_m_sub, { 0x24000000 }
+ },
+/* subu $rt,$rs,$mlo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
+ & ifmt_m_subu, { 0x24000000 }
+ },
+/* sb $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_sb_base_0, { 0xa0000000 }
+ },
+/* sh $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_sh_base_0, { 0xa4000000 }
+ },
+/* sw $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_sw_base_0, { 0xac000000 }
+ },
+/* xor $rt,$rs,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
+ & ifmt_m_xor, { 0x38000000 }
+ },
+/* ldw $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_ldw_base_0, { 0xc0000000 }
+ },
+/* sdw $rt,$lo16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
+ & ifmt_sdw_base_0, { 0xe0000000 }
+ },
+/* avail */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_m_avail, { 0x4c000024 }
+ },
+/* cam36 $rd,$rt,${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
+ & ifmt_m_cam36, { 0x4c000400 }
+ },
+/* cam72 $rd,$rt,${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
+ & ifmt_m_cam72, { 0x4c000440 }
+ },
+/* cam144 $rd,$rt,${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
+ & ifmt_m_cam144, { 0x4c000480 }
+ },
+/* cam288 $rd,$rt,${cam-z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
+ & ifmt_m_cam288, { 0x4c0004c0 }
+ },
+/* cm32read $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_m_cm32read, { 0x4c0000b0 }
+ },
+/* cm64read $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_m_cm64read, { 0x4c000090 }
+ },
+/* cm32mlog $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32mlog, { 0x4c0000aa }
+ },
+/* cm32and $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32and, { 0x4c0000ab }
+ },
+/* cm32andn $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32andn, { 0x4c0000a3 }
+ },
+/* cm32or $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32or, { 0x4c0000aa }
+ },
+/* cm32ra $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32ra, { 0x4c0000b0 }
+ },
+/* cm32rd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm32rd, { 0x4c0000a1 }
+ },
+/* cm32ri $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm32ri, { 0x4c0000a4 }
+ },
+/* cm32rs $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32rs, { 0x4c0000a0 }
+ },
+/* cm32sa $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32sa, { 0x4c0000b8 }
+ },
+/* cm32sd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm32sd, { 0x4c0000a9 }
+ },
+/* cm32si $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm32si, { 0x4c0000ac }
+ },
+/* cm32ss $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32ss, { 0x4c0000a8 }
+ },
+/* cm32xor $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm32xor, { 0x4c0000a2 }
+ },
+/* cm64clr $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm64clr, { 0x4c000085 }
+ },
+/* cm64ra $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64ra, { 0x4c000090 }
+ },
+/* cm64rd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm64rd, { 0x4c000081 }
+ },
+/* cm64ri $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm64ri, { 0x4c000084 }
+ },
+/* cm64ria2 $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64ria2, { 0x4c000094 }
+ },
+/* cm64rs $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64rs, { 0x4c000080 }
+ },
+/* cm64sa $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64sa, { 0x4c000098 }
+ },
+/* cm64sd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm64sd, { 0x4c000089 }
+ },
+/* cm64si $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_cm64si, { 0x4c00008c }
+ },
+/* cm64sia2 $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64sia2, { 0x4c00009c }
+ },
+/* cm64ss $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm64ss, { 0x4c000088 }
+ },
+/* cm128ria2 $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm128ria2, { 0x4c000095 }
+ },
+/* cm128ria3 $rs,$rt,${cm-3z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
+ & ifmt_m_cm128ria3, { 0x4c000090 }
+ },
+/* cm128ria4 $rs,$rt,${cm-4z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
+ & ifmt_m_cm128ria4, { 0x4c0000b0 }
+ },
+/* cm128sia2 $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_cm128sia2, { 0x4c00009d }
+ },
+/* cm128sia3 $rs,$rt,${cm-3z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
+ & ifmt_m_cm128sia3, { 0x4c000098 }
+ },
+/* cm128sia4 $rs,$rt,${cm-4z} */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
+ & ifmt_m_cm128sia4, { 0x4c0000b8 }
+ },
+/* cmphdr */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_m_cmphdr, { 0x4c00002c }
+ },
+/* dbd $rd,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
+ & ifmt_m_dbd, { 0x4c000021 }
+ },
+/* dbd $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m2_dbd, { 0x4c000021 }
+ },
+/* dpwt $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_m_dpwt, { 0x4c000023 }
+ },
+/* free $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_m_free, { 0x4c000025 }
+ },
+/* lock $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_lock, { 0x4c000001 }
+ },
+/* pkrla $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_pkrla, { 0x4c000028 }
+ },
+/* pkrlac $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_pkrlac, { 0x4c00002b }
+ },
+/* pkrlah $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_pkrlah, { 0x4c00002a }
+ },
+/* pkrlau $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_pkrlau, { 0x4c000029 }
+ },
+/* pkrli $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_pkrli, { 0x48000000 }
+ },
+/* pkrlic $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_pkrlic, { 0x48000300 }
+ },
+/* pkrlih $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_pkrlih, { 0x48000200 }
+ },
+/* pkrliu $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_pkrliu, { 0x48000100 }
+ },
+/* rba $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_rba, { 0x4c000008 }
+ },
+/* rbal $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_rbal, { 0x4c000009 }
+ },
+/* rbar $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_rbar, { 0x4c00000a }
+ },
+/* rbi $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_rbi, { 0x4c000200 }
+ },
+/* rbil $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_rbil, { 0x4c000300 }
+ },
+/* rbir $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_rbir, { 0x4c000100 }
+ },
+/* swwr $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_swwr, { 0x4c000006 }
+ },
+/* swwru $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_swwru, { 0x4c000007 }
+ },
+/* tstod $rs */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), 0 } },
+ & ifmt_m_tstod, { 0x4c000027 }
+ },
+/* unlk $rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RT), 0 } },
+ & ifmt_m_unlk, { 0x4c000003 }
+ },
+/* wba $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_wba, { 0x4c000010 }
+ },
+/* wbac $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_wbac, { 0x4c000012 }
+ },
+/* wbau $rs,$rt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
+ & ifmt_m_wbau, { 0x4c000011 }
+ },
+/* wbi $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_wbi, { 0x4c000600 }
+ },
+/* wbic $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_wbic, { 0x4c000500 }
+ },
+/* wbiu $rs,$rt,$bytecount */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
+ & ifmt_m_wbiu, { 0x4c000700 }
+ },
+};
+
+#undef A
+#undef OPERAND
+#undef MNEM
+#undef OP
+
+#ifndef CGEN_ASM_HASH_P
+#define CGEN_ASM_HASH_P(insn) 1
+#endif
+
+#ifndef CGEN_DIS_HASH_P
+#define CGEN_DIS_HASH_P(insn) 1
+#endif
+
+/* Return non-zero if INSN is to be added to the hash table.
+ Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
+
+static int
+asm_hash_insn_p (insn)
+ const CGEN_INSN *insn ATTRIBUTE_UNUSED;
+{
+ return CGEN_ASM_HASH_P (insn);
+}
+
+static int
+dis_hash_insn_p (insn)
+ const CGEN_INSN *insn;
+{
+ /* If building the hash table and the NO-DIS attribute is present,
+ ignore. */
+ if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
+ return 0;
+ return CGEN_DIS_HASH_P (insn);
+}
+
+#ifndef CGEN_ASM_HASH
+#define CGEN_ASM_HASH_SIZE 127
+#ifdef CGEN_MNEMONIC_OPERANDS
+#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
+#else
+#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
+#endif
+#endif
+
+/* It doesn't make much sense to provide a default here,
+ but while this is under development we do.
+ BUFFER is a pointer to the bytes of the insn, target order.
+ VALUE is the first base_insn_bitsize bits as an int in host order. */
+
+#ifndef CGEN_DIS_HASH
+#define CGEN_DIS_HASH_SIZE 256
+#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
+#endif
+
+/* The result is the hash value of the insn.
+ Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
+
+static unsigned int
+asm_hash_insn (mnem)
+ const char * mnem;
+{
+ return CGEN_ASM_HASH (mnem);
+}
+
+/* BUF is a pointer to the bytes of the insn, target order.
+ VALUE is the first base_insn_bitsize bits as an int in host order. */
+
+static unsigned int
+dis_hash_insn (buf, value)
+ const char * buf ATTRIBUTE_UNUSED;
+ CGEN_INSN_INT value ATTRIBUTE_UNUSED;
+{
+ return CGEN_DIS_HASH (buf, value);
+}
+
+static void set_fields_bitsize PARAMS ((CGEN_FIELDS *, int));
+
+/* Set the recorded length of the insn in the CGEN_FIELDS struct. */
+
+static void
+set_fields_bitsize (fields, size)
+ CGEN_FIELDS *fields;
+ int size;
+{
+ CGEN_FIELDS_BITSIZE (fields) = size;
+}
+
+/* Function to call before using the operand instance table.
+ This plugs the opcode entries and macro instructions into the cpu table. */
+
+void
+iq2000_cgen_init_opcode_table (cd)
+ CGEN_CPU_DESC cd;
+{
+ int i;
+ int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
+ sizeof (iq2000_cgen_macro_insn_table[0]));
+ const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
+ const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
+ CGEN_INSN *insns = (CGEN_INSN *) xmalloc (num_macros * sizeof (CGEN_INSN));
+ memset (insns, 0, num_macros * sizeof (CGEN_INSN));
+ for (i = 0; i < num_macros; ++i)
+ {
+ insns[i].base = &ib[i];
+ insns[i].opcode = &oc[i];
+ iq2000_cgen_build_insn_regex (& insns[i]);
+ }
+ cd->macro_insn_table.init_entries = insns;
+ cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
+ cd->macro_insn_table.num_init_entries = num_macros;
+
+ oc = & iq2000_cgen_insn_opcode_table[0];
+ insns = (CGEN_INSN *) cd->insn_table.init_entries;
+ for (i = 0; i < MAX_INSNS; ++i)
+ {
+ insns[i].opcode = &oc[i];
+ iq2000_cgen_build_insn_regex (& insns[i]);
+ }
+
+ cd->sizeof_fields = sizeof (CGEN_FIELDS);
+ cd->set_fields_bitsize = set_fields_bitsize;
+
+ cd->asm_hash_p = asm_hash_insn_p;
+ cd->asm_hash = asm_hash_insn;
+ cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
+
+ cd->dis_hash_p = dis_hash_insn_p;
+ cd->dis_hash = dis_hash_insn;
+ cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
+}
--- /dev/null
+/* Instruction opcode header for iq2000.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+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, 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 IQ2000_OPC_H
+#define IQ2000_OPC_H
+
+/* -- opc.h */
+
+/* Allows reason codes to be output when assembler errors occur. */
+#define CGEN_VERBOSE_ASSEMBLER_ERRORS
+
+/* Override disassembly hashing - there are variable bits in the top
+ byte of these instructions. */
+#define CGEN_DIS_HASH_SIZE 8
+#define CGEN_DIS_HASH(buf,value) (((* (unsigned char*) (buf)) >> 6) % CGEN_DIS_HASH_SIZE)
+
+/* following activates check beyond hashing since some iq2000 and iq10
+ instructions have same mnemonics but different functionality. */
+#define CGEN_VALIDATE_INSN_SUPPORTED
+
+extern int iq2000_cgen_insn_supported (CGEN_CPU_DESC cd, CGEN_INSN *insn);
+
+/* -- asm.c */
+/* Enum declaration for iq2000 instruction types. */
+typedef enum cgen_insn_type {
+ IQ2000_INSN_INVALID, IQ2000_INSN_ADD2, IQ2000_INSN_ADD, IQ2000_INSN_ADDI2
+ , IQ2000_INSN_ADDI, IQ2000_INSN_ADDIU2, IQ2000_INSN_ADDIU, IQ2000_INSN_ADDU2
+ , IQ2000_INSN_ADDU, IQ2000_INSN_ADO162, IQ2000_INSN_ADO16, IQ2000_INSN_AND2
+ , IQ2000_INSN_AND, IQ2000_INSN_ANDI2, IQ2000_INSN_ANDI, IQ2000_INSN_ANDOI2
+ , IQ2000_INSN_ANDOI, IQ2000_INSN_NOR2, IQ2000_INSN_NOR, IQ2000_INSN_OR2
+ , IQ2000_INSN_OR, IQ2000_INSN_ORI2, IQ2000_INSN_ORI, IQ2000_INSN_RAM
+ , IQ2000_INSN_SLL, IQ2000_INSN_SLLV2, IQ2000_INSN_SLLV, IQ2000_INSN_SLMV2
+ , IQ2000_INSN_SLMV, IQ2000_INSN_SLT2, IQ2000_INSN_SLT, IQ2000_INSN_SLTI2
+ , IQ2000_INSN_SLTI, IQ2000_INSN_SLTIU2, IQ2000_INSN_SLTIU, IQ2000_INSN_SLTU2
+ , IQ2000_INSN_SLTU, IQ2000_INSN_SRA2, IQ2000_INSN_SRA, IQ2000_INSN_SRAV2
+ , IQ2000_INSN_SRAV, IQ2000_INSN_SRL, IQ2000_INSN_SRLV2, IQ2000_INSN_SRLV
+ , IQ2000_INSN_SRMV2, IQ2000_INSN_SRMV, IQ2000_INSN_SUB2, IQ2000_INSN_SUB
+ , IQ2000_INSN_SUBU2, IQ2000_INSN_SUBU, IQ2000_INSN_XOR2, IQ2000_INSN_XOR
+ , IQ2000_INSN_XORI2, IQ2000_INSN_XORI, IQ2000_INSN_BBI, IQ2000_INSN_BBIN
+ , IQ2000_INSN_BBV, IQ2000_INSN_BBVN, IQ2000_INSN_BEQ, IQ2000_INSN_BEQL
+ , IQ2000_INSN_BGEZ, IQ2000_INSN_BGEZAL, IQ2000_INSN_BGEZALL, IQ2000_INSN_BGEZL
+ , IQ2000_INSN_BLTZ, IQ2000_INSN_BLTZL, IQ2000_INSN_BLTZAL, IQ2000_INSN_BLTZALL
+ , IQ2000_INSN_BMB0, IQ2000_INSN_BMB1, IQ2000_INSN_BMB2, IQ2000_INSN_BMB3
+ , IQ2000_INSN_BNE, IQ2000_INSN_BNEL, IQ2000_INSN_JALR, IQ2000_INSN_JR
+ , IQ2000_INSN_LB, IQ2000_INSN_LBU, IQ2000_INSN_LH, IQ2000_INSN_LHU
+ , IQ2000_INSN_LUI, IQ2000_INSN_LW, IQ2000_INSN_SB, IQ2000_INSN_SH
+ , IQ2000_INSN_SW, IQ2000_INSN_BREAK, IQ2000_INSN_SYSCALL, IQ2000_INSN_ANDOUI
+ , IQ2000_INSN_ANDOUI2, IQ2000_INSN_ORUI2, IQ2000_INSN_ORUI, IQ2000_INSN_BGTZ
+ , IQ2000_INSN_BGTZL, IQ2000_INSN_BLEZ, IQ2000_INSN_BLEZL, IQ2000_INSN_MRGB
+ , IQ2000_INSN_MRGB2, IQ2000_INSN_BCTXT, IQ2000_INSN_BC0F, IQ2000_INSN_BC0FL
+ , IQ2000_INSN_BC3F, IQ2000_INSN_BC3FL, IQ2000_INSN_BC0T, IQ2000_INSN_BC0TL
+ , IQ2000_INSN_BC3T, IQ2000_INSN_BC3TL, IQ2000_INSN_CFC0, IQ2000_INSN_CFC1
+ , IQ2000_INSN_CFC2, IQ2000_INSN_CFC3, IQ2000_INSN_CHKHDR, IQ2000_INSN_CTC0
+ , IQ2000_INSN_CTC1, IQ2000_INSN_CTC2, IQ2000_INSN_CTC3, IQ2000_INSN_JCR
+ , IQ2000_INSN_LUC32, IQ2000_INSN_LUC32L, IQ2000_INSN_LUC64, IQ2000_INSN_LUC64L
+ , IQ2000_INSN_LUK, IQ2000_INSN_LULCK, IQ2000_INSN_LUM32, IQ2000_INSN_LUM32L
+ , IQ2000_INSN_LUM64, IQ2000_INSN_LUM64L, IQ2000_INSN_LUR, IQ2000_INSN_LURL
+ , IQ2000_INSN_LUULCK, IQ2000_INSN_MFC0, IQ2000_INSN_MFC1, IQ2000_INSN_MFC2
+ , IQ2000_INSN_MFC3, IQ2000_INSN_MTC0, IQ2000_INSN_MTC1, IQ2000_INSN_MTC2
+ , IQ2000_INSN_MTC3, IQ2000_INSN_PKRL, IQ2000_INSN_PKRLR1, IQ2000_INSN_PKRLR30
+ , IQ2000_INSN_RB, IQ2000_INSN_RBR1, IQ2000_INSN_RBR30, IQ2000_INSN_RFE
+ , IQ2000_INSN_RX, IQ2000_INSN_RXR1, IQ2000_INSN_RXR30, IQ2000_INSN_SLEEP
+ , IQ2000_INSN_SRRD, IQ2000_INSN_SRRDL, IQ2000_INSN_SRULCK, IQ2000_INSN_SRWR
+ , IQ2000_INSN_SRWRU, IQ2000_INSN_TRAPQFL, IQ2000_INSN_TRAPQNE, IQ2000_INSN_TRAPREL
+ , IQ2000_INSN_WB, IQ2000_INSN_WBU, IQ2000_INSN_WBR1, IQ2000_INSN_WBR1U
+ , IQ2000_INSN_WBR30, IQ2000_INSN_WBR30U, IQ2000_INSN_WX, IQ2000_INSN_WXU
+ , IQ2000_INSN_WXR1, IQ2000_INSN_WXR1U, IQ2000_INSN_WXR30, IQ2000_INSN_WXR30U
+ , IQ2000_INSN_LDW, IQ2000_INSN_SDW, IQ2000_INSN_J, IQ2000_INSN_JAL
+ , IQ2000_INSN_BMB, IQ2000_INSN_ANDOUI_Q10, IQ2000_INSN_ANDOUI2_Q10, IQ2000_INSN_ORUI_Q10
+ , IQ2000_INSN_ORUI2_Q10, IQ2000_INSN_MRGBQ10, IQ2000_INSN_MRGBQ102, IQ2000_INSN_JQ10
+ , IQ2000_INSN_JALQ10, IQ2000_INSN_JALQ10_2, IQ2000_INSN_BBIL, IQ2000_INSN_BBINL
+ , IQ2000_INSN_BBVL, IQ2000_INSN_BBVNL, IQ2000_INSN_BGTZAL, IQ2000_INSN_BGTZALL
+ , IQ2000_INSN_BLEZAL, IQ2000_INSN_BLEZALL, IQ2000_INSN_BGTZ_Q10, IQ2000_INSN_BGTZL_Q10
+ , IQ2000_INSN_BLEZ_Q10, IQ2000_INSN_BLEZL_Q10, IQ2000_INSN_BMB_Q10, IQ2000_INSN_BMBL
+ , IQ2000_INSN_BRI, IQ2000_INSN_BRV, IQ2000_INSN_BCTX, IQ2000_INSN_YIELD
+ , IQ2000_INSN_CRC32, IQ2000_INSN_CRC32B, IQ2000_INSN_CNT1S, IQ2000_INSN_AVAIL
+ , IQ2000_INSN_FREE, IQ2000_INSN_TSTOD, IQ2000_INSN_CMPHDR, IQ2000_INSN_MCID
+ , IQ2000_INSN_DBA, IQ2000_INSN_DBD, IQ2000_INSN_DPWT, IQ2000_INSN_CHKHDRQ10
+ , IQ2000_INSN_RBA, IQ2000_INSN_RBAL, IQ2000_INSN_RBAR, IQ2000_INSN_WBA
+ , IQ2000_INSN_WBAU, IQ2000_INSN_WBAC, IQ2000_INSN_RBI, IQ2000_INSN_RBIL
+ , IQ2000_INSN_RBIR, IQ2000_INSN_WBI, IQ2000_INSN_WBIC, IQ2000_INSN_WBIU
+ , IQ2000_INSN_PKRLI, IQ2000_INSN_PKRLIH, IQ2000_INSN_PKRLIU, IQ2000_INSN_PKRLIC
+ , IQ2000_INSN_PKRLA, IQ2000_INSN_PKRLAU, IQ2000_INSN_PKRLAH, IQ2000_INSN_PKRLAC
+ , IQ2000_INSN_LOCK, IQ2000_INSN_UNLK, IQ2000_INSN_SWRD, IQ2000_INSN_SWRDL
+ , IQ2000_INSN_SWWR, IQ2000_INSN_SWWRU, IQ2000_INSN_DWRD, IQ2000_INSN_DWRDL
+ , IQ2000_INSN_CAM36, IQ2000_INSN_CAM72, IQ2000_INSN_CAM144, IQ2000_INSN_CAM288
+ , IQ2000_INSN_CM32AND, IQ2000_INSN_CM32ANDN, IQ2000_INSN_CM32OR, IQ2000_INSN_CM32RA
+ , IQ2000_INSN_CM32RD, IQ2000_INSN_CM32RI, IQ2000_INSN_CM32RS, IQ2000_INSN_CM32SA
+ , IQ2000_INSN_CM32SD, IQ2000_INSN_CM32SI, IQ2000_INSN_CM32SS, IQ2000_INSN_CM32XOR
+ , IQ2000_INSN_CM64CLR, IQ2000_INSN_CM64RA, IQ2000_INSN_CM64RD, IQ2000_INSN_CM64RI
+ , IQ2000_INSN_CM64RIA2, IQ2000_INSN_CM64RS, IQ2000_INSN_CM64SA, IQ2000_INSN_CM64SD
+ , IQ2000_INSN_CM64SI, IQ2000_INSN_CM64SIA2, IQ2000_INSN_CM64SS, IQ2000_INSN_CM128RIA2
+ , IQ2000_INSN_CM128RIA3, IQ2000_INSN_CM128RIA4, IQ2000_INSN_CM128SIA2, IQ2000_INSN_CM128SIA3
+ , IQ2000_INSN_CM128SIA4, IQ2000_INSN_CM128VSA, IQ2000_INSN_CFC, IQ2000_INSN_CTC
+} CGEN_INSN_TYPE;
+
+/* Index of `invalid' insn place holder. */
+#define CGEN_INSN_INVALID IQ2000_INSN_INVALID
+
+/* Total number of insns in table. */
+#define MAX_INSNS ((int) IQ2000_INSN_CTC + 1)
+
+/* This struct records data prior to insertion or after extraction. */
+struct cgen_fields
+{
+ int length;
+ long f_nil;
+ long f_anyof;
+ long f_opcode;
+ long f_rs;
+ long f_rt;
+ long f_rd;
+ long f_shamt;
+ long f_cp_op;
+ long f_cp_op_10;
+ long f_cp_grp;
+ long f_func;
+ long f_imm;
+ long f_rd_rs;
+ long f_rd_rt;
+ long f_rt_rs;
+ long f_jtarg;
+ long f_jtargq10;
+ long f_offset;
+ long f_count;
+ long f_bytecount;
+ long f_index;
+ long f_mask;
+ long f_maskq10;
+ long f_maskl;
+ long f_excode;
+ long f_rsrvd;
+ long f_10_11;
+ long f_24_19;
+ long f_5;
+ long f_10;
+ long f_25;
+ long f_cam_z;
+ long f_cam_y;
+ long f_cm_3func;
+ long f_cm_4func;
+ long f_cm_3z;
+ long f_cm_4z;
+};
+
+#define CGEN_INIT_PARSE(od) \
+{\
+}
+#define CGEN_INIT_INSERT(od) \
+{\
+}
+#define CGEN_INIT_EXTRACT(od) \
+{\
+}
+#define CGEN_INIT_PRINT(od) \
+{\
+}
+
+
+#endif /* IQ2000_OPC_H */
--- /dev/null
+/* Disassemble MSP430 instructions.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ Contributed by Dmitry Diky <diwil@mail.ru>
+
+ 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 <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <sys/types.h>
+
+#include "dis-asm.h"
+#include "opintl.h"
+#include "libiberty.h"
+
+#define DASM_SECTION
+#include "opcode/msp430.h"
+#undef DASM_SECTION
+
+
+static unsigned short msp430dis_opcode
+ PARAMS ((bfd_vma, disassemble_info *));
+int print_insn_msp430
+ PARAMS ((bfd_vma, disassemble_info *));
+int msp430_nooperands
+ PARAMS ((struct msp430_opcode_s *, bfd_vma, unsigned short, char *, int *));
+int msp430_singleoperand
+ PARAMS ((disassemble_info *, struct msp430_opcode_s *, bfd_vma, unsigned short,
+ char *, char *, int *));
+int msp430_doubleoperand
+ PARAMS ((disassemble_info *, struct msp430_opcode_s *, bfd_vma, unsigned short,
+ char *, char *, char *, char *, int *));
+int msp430_branchinstr
+ PARAMS ((disassemble_info *, struct msp430_opcode_s *, bfd_vma, unsigned short,
+ char *, char *, int *));
+
+#define PS(x) (0xffff & (x))
+
+static unsigned short
+msp430dis_opcode (addr, info)
+ bfd_vma addr;
+ disassemble_info *info;
+{
+ bfd_byte buffer[2];
+ int status;
+
+ status = info->read_memory_func (addr, buffer, 2, info);
+ if (status != 0)
+ {
+ info->memory_error_func (status, addr, info);
+ return -1;
+ }
+ return bfd_getl16 (buffer);
+}
+
+int
+print_insn_msp430 (addr, info)
+ bfd_vma addr;
+ disassemble_info *info;
+{
+ void *stream = info->stream;
+ fprintf_ftype prin = info->fprintf_func;
+ struct msp430_opcode_s *opcode;
+ char op1[32], op2[32], comm1[64], comm2[64];
+ int cmd_len = 0;
+ unsigned short insn;
+ int cycles = 0;
+ char *bc = "";
+ char dinfo[32]; /* Debug purposes. */
+
+ insn = msp430dis_opcode (addr, info);
+ sprintf (dinfo, "0x%04x", insn);
+
+ if (((int) addr & 0xffff) > 0xffdf)
+ {
+ (*prin) (stream, "interrupt service routine at 0x%04x", 0xffff & insn);
+ return 2;
+ }
+
+ *comm1 = 0;
+ *comm2 = 0;
+
+ for (opcode = msp430_opcodes; opcode->name; opcode++)
+ {
+ if ((insn & opcode->bin_mask) == opcode->bin_opcode
+ && opcode->bin_opcode != 0x9300)
+ {
+ *op1 = 0;
+ *op2 = 0;
+ *comm1 = 0;
+ *comm2 = 0;
+
+ /* r0 as destination. Ad should be zero. */
+ if (opcode->insn_opnumb == 3 && (insn & 0x000f) == 0
+ && (0x0080 & insn) == 0)
+ {
+ cmd_len =
+ msp430_branchinstr (info, opcode, addr, insn, op1, comm1,
+ &cycles);
+ if (cmd_len)
+ break;
+ }
+
+ switch (opcode->insn_opnumb)
+ {
+ case 0:
+ cmd_len = msp430_nooperands (opcode, addr, insn, comm1, &cycles);
+ break;
+ case 2:
+ cmd_len =
+ msp430_doubleoperand (info, opcode, addr, insn, op1, op2,
+ comm1, comm2, &cycles);
+ if (insn & BYTE_OPERATION)
+ bc = ".b";
+ break;
+ case 1:
+ cmd_len =
+ msp430_singleoperand (info, opcode, addr, insn, op1, comm1,
+ &cycles);
+ if (insn & BYTE_OPERATION && opcode->fmt != 3)
+ bc = ".b";
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (cmd_len)
+ break;
+ }
+
+ dinfo[5] = 0;
+
+ if (cmd_len < 1)
+ {
+ /* Unknown opcode, or invalid combination of operands. */
+ (*prin) (stream, ".word 0x%04x; ????", PS (insn));
+ return 2;
+ }
+
+ (*prin) (stream, "%s%s", opcode->name, bc);
+
+ if (*op1)
+ (*prin) (stream, "\t%s", op1);
+ if (*op2)
+ (*prin) (stream, ",");
+
+ if (strlen (op1) < 7)
+ (*prin) (stream, "\t");
+ if (!strlen (op1))
+ (*prin) (stream, "\t");
+
+ if (*op2)
+ (*prin) (stream, "%s", op2);
+ if (strlen (op2) < 8)
+ (*prin) (stream, "\t");
+
+ if (*comm1 || *comm2)
+ (*prin) (stream, ";");
+ else if (cycles)
+ {
+ if (*op2)
+ (*prin) (stream, ";");
+ else
+ {
+ if (strlen (op1) < 7)
+ (*prin) (stream, ";");
+ else
+ (*prin) (stream, "\t;");
+ }
+ }
+ if (*comm1)
+ (*prin) (stream, "%s", comm1);
+ if (*comm1 && *comm2)
+ (*prin) (stream, ",");
+ if (*comm2)
+ (*prin) (stream, " %s", comm2);
+ return cmd_len;
+}
+
+int
+msp430_nooperands (opcode, addr, insn, comm, cycles)
+ struct msp430_opcode_s *opcode;
+ bfd_vma addr ATTRIBUTE_UNUSED;
+ unsigned short insn ATTRIBUTE_UNUSED;
+ char *comm;
+ int *cycles;
+{
+ /* Pop with constant. */
+ if (insn == 0x43b2)
+ return 0;
+ if (insn == opcode->bin_opcode)
+ return 2;
+
+ if (opcode->fmt == 0)
+ {
+ if ((insn & 0x0f00) != 3 || (insn & 0x0f00) != 2)
+ return 0;
+
+ strcpy (comm, "emulated...");
+ *cycles = 1;
+ }
+ else
+ {
+ strcpy (comm, "return from interupt");
+ *cycles = 5;
+ }
+
+ return 2;
+}
+
+
+int
+msp430_singleoperand (info, opcode, addr, insn, op, comm, cycles)
+ disassemble_info *info;
+ struct msp430_opcode_s *opcode;
+ bfd_vma addr;
+ unsigned short insn;
+ char *op;
+ char *comm;
+ int *cycles;
+{
+ int regs = 0, regd = 0;
+ int ad = 0, as = 0;
+ int where = 0;
+ int cmd_len = 2;
+ short dst = 0;
+
+ regd = insn & 0x0f;
+ regs = (insn & 0x0f00) >> 8;
+ as = (insn & 0x0030) >> 4;
+ ad = (insn & 0x0080) >> 7;
+
+ switch (opcode->fmt)
+ {
+ case 0: /* Emulated work with dst register. */
+ if (regs != 2 && regs != 3 && regs != 1)
+ return 0;
+
+ /* Check if not clr insn. */
+ if (opcode->bin_opcode == 0x4300 && (ad || as))
+ return 0;
+
+ /* Check if really inc, incd insns. */
+ if ((opcode->bin_opcode & 0xff00) == 0x5300 && as == 3)
+ return 0;
+
+ if (ad == 0)
+ {
+ *cycles = 1;
+
+ /* Register. */
+ if (regd == 0)
+ {
+ *cycles += 1;
+ sprintf (op, "r0");
+ }
+ else if (regd == 1)
+ sprintf (op, "r1");
+
+ else if (regd == 2)
+ sprintf (op, "r2");
+
+ else
+ sprintf (op, "r%d", regd);
+ }
+ else /* ad == 1 msp430dis_opcode. */
+ {
+ if (regd == 0)
+ {
+ /* PC relative. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ *cycles = 4;
+ sprintf (op, "0x%04x", dst);
+ sprintf (comm, "PC rel. abs addr 0x%04x",
+ PS ((short) (addr + 2) + dst));
+ }
+ else if (regd == 2)
+ {
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ *cycles = 4;
+ sprintf (op, "&0x%04x", PS (dst));
+ }
+ else
+ {
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ *cycles = 4;
+ sprintf (op, "%d(r%d)", dst, regd);
+ }
+ }
+ break;
+
+ case 2: /* rrc, push, call, swpb, rra, sxt, push, call, reti etc... */
+
+ if (as == 0)
+ {
+ if (regd == 3)
+ {
+ /* Constsnts. */
+ sprintf (op, "#0");
+ sprintf (comm, "r3 As==00");
+ }
+ else
+ {
+ /* Register. */
+ sprintf (op, "r%d", regd);
+ }
+ *cycles = 1;
+ }
+ else if (as == 2)
+ {
+ *cycles = 1;
+ if (regd == 2)
+ {
+ sprintf (op, "#4");
+ sprintf (comm, "r2 As==10");
+ }
+ else if (regd == 3)
+ {
+ sprintf (op, "#2");
+ sprintf (comm, "r3 As==10");
+ }
+ else
+ {
+ *cycles = 3;
+ /* Indexed register mode @Rn. */
+ sprintf (op, "@r%d", regd);
+ }
+ }
+ else if (as == 3)
+ {
+ *cycles = 1;
+ if (regd == 2)
+ {
+ sprintf (op, "#8");
+ sprintf (comm, "r2 As==11");
+ }
+ else if (regd == 3)
+ {
+ sprintf (op, "#-1");
+ sprintf (comm, "r3 As==11");
+ }
+ else if (regd == 0)
+ {
+ *cycles = 3;
+ /* absolute. @pc+ */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op, "#%d", dst);
+ sprintf (comm, "#0x%04x", PS (dst));
+ }
+ else
+ {
+ *cycles = 3;
+ sprintf (op, "@r%d+", regd);
+ }
+ }
+ else if (as == 1)
+ {
+ *cycles = 4;
+ if (regd == 0)
+ {
+ /* PC relative. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op, "0x%04x", PS (dst));
+ sprintf (comm, "PC rel. 0x%04x",
+ PS ((short) addr + 2 + dst));
+ }
+ else if (regd == 2)
+ {
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op, "&0x%04x", PS (dst));
+ }
+ else if (regd == 3)
+ {
+ *cycles = 1;
+ sprintf (op, "#1");
+ sprintf (comm, "r3 As==01");
+ }
+ else
+ {
+ /* Indexd. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op, "%d(r%d)", dst, regd);
+ }
+ }
+ break;
+
+ case 3: /* Jumps. */
+ where = insn & 0x03ff;
+ if (where & 0x200)
+ where |= ~0x03ff;
+ if (where > 512 || where < -511)
+ return 0;
+
+ where *= 2;
+ sprintf (op, "$%+-8d", where + 2);
+ sprintf (comm, "abs 0x%x", PS ((short) (addr) + 2 + where));
+ *cycles = 2;
+ return 2;
+ break;
+ default:
+ cmd_len = 0;
+ }
+
+ return cmd_len;
+}
+
+int
+msp430_doubleoperand (info, opcode, addr, insn, op1, op2, comm1, comm2, cycles)
+ disassemble_info *info;
+ struct msp430_opcode_s *opcode;
+ bfd_vma addr;
+ unsigned short insn;
+ char *op1, *op2;
+ char *comm1, *comm2;
+ int *cycles;
+{
+ int regs = 0, regd = 0;
+ int ad = 0, as = 0;
+ int cmd_len = 2;
+ short dst = 0;
+
+ regd = insn & 0x0f;
+ regs = (insn & 0x0f00) >> 8;
+ as = (insn & 0x0030) >> 4;
+ ad = (insn & 0x0080) >> 7;
+
+ if (opcode->fmt == 0)
+ {
+ /* Special case: rla and rlc are the only 2 emulated instructions that
+ fall into two operand instructions. */
+ /* With dst, there are only:
+ Rm Register,
+ x(Rm) Indexed,
+ 0xXXXX Relative,
+ &0xXXXX Absolute
+ emulated_ins dst
+ basic_ins dst, dst. */
+
+ if (regd != regs || as != ad)
+ return 0; /* May be 'data' section. */
+
+ if (ad == 0)
+ {
+ /* Register mode. */
+ if (regd == 3)
+ {
+ strcpy (comm1, "Illegal as emulation instr");
+ return -1;
+ }
+
+ sprintf (op1, "r%d", regd);
+ *cycles = 1;
+ }
+ else /* ad == 1 */
+ {
+ if (regd == 0)
+ {
+ /* PC relative, Symbolic. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 4;
+ *cycles = 6;
+ sprintf (op1, "0x%04x", PS (dst));
+ sprintf (comm1, "PC rel. 0x%04x",
+ PS ((short) addr + 2 + dst));
+
+ }
+ else if (regd == 2)
+ {
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 4;
+ *cycles = 6;
+ sprintf (op1, "&0x%04x", PS (dst));
+ }
+ else
+ {
+ /* Indexed. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 4;
+ *cycles = 6;
+ sprintf (op1, "%d(r%d)", dst, regd);
+ }
+ }
+
+ *op2 = 0;
+ *comm2 = 0;
+ return cmd_len;
+ }
+
+ /* Two operands exactly. */
+ if (ad == 0 && regd == 3)
+ {
+ /* R2/R3 are illegal as dest: may be data section. */
+ strcpy (comm1, "Illegal as 2-op instr");
+ return -1;
+ }
+
+ /* Source. */
+ if (as == 0)
+ {
+ *cycles = 1;
+ if (regs == 3)
+ {
+ /* Constsnts. */
+ sprintf (op1, "#0");
+ sprintf (comm1, "r3 As==00");
+ }
+ else
+ {
+ /* Register. */
+ sprintf (op1, "r%d", regs);
+ }
+ }
+ else if (as == 2)
+ {
+ *cycles = 1;
+
+ if (regs == 2)
+ {
+ sprintf (op1, "#4");
+ sprintf (comm1, "r2 As==10");
+ }
+ else if (regs == 3)
+ {
+ sprintf (op1, "#2");
+ sprintf (comm1, "r3 As==10");
+ }
+ else
+ {
+ *cycles = 2;
+
+ /* Indexed register mode @Rn. */
+ sprintf (op1, "@r%d", regs);
+ }
+ if (!regs)
+ *cycles = 3;
+ }
+ else if (as == 3)
+ {
+ if (regs == 2)
+ {
+ sprintf (op1, "#8");
+ sprintf (comm1, "r2 As==11");
+ *cycles = 1;
+ }
+ else if (regs == 3)
+ {
+ sprintf (op1, "#-1");
+ sprintf (comm1, "r3 As==11");
+ *cycles = 1;
+ }
+ else if (regs == 0)
+ {
+ *cycles = 3;
+ /* Absolute. @pc+ */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "#%d", dst);
+ sprintf (comm1, "#0x%04x", PS (dst));
+ }
+ else
+ {
+ *cycles = 2;
+ sprintf (op1, "@r%d+", regs);
+ }
+ }
+ else if (as == 1)
+ {
+ if (regs == 0)
+ {
+ *cycles = 4;
+ /* PC relative. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "0x%04x", PS (dst));
+ sprintf (comm1, "PC rel. 0x%04x",
+ PS ((short) addr + 2 + dst));
+ }
+ else if (regs == 2)
+ {
+ *cycles = 2;
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "&0x%04x", PS (dst));
+ sprintf (comm1, "0x%04x", PS (dst));
+ }
+ else if (regs == 3)
+ {
+ *cycles = 1;
+ sprintf (op1, "#1");
+ sprintf (comm1, "r3 As==01");
+ }
+ else
+ {
+ *cycles = 3;
+ /* Indexed. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "%d(r%d)", dst, regs);
+ }
+ }
+
+ /* Destination. Special care needed on addr + XXXX. */
+
+ if (ad == 0)
+ {
+ /* Register. */
+ if (regd == 0)
+ {
+ *cycles += 1;
+ sprintf (op2, "r0");
+ }
+ else if (regd == 1)
+ sprintf (op2, "r1");
+
+ else if (regd == 2)
+ sprintf (op2, "r2");
+
+ else
+ sprintf (op2, "r%d", regd);
+ }
+ else /* ad == 1. */
+ {
+ * cycles += 3;
+
+ if (regd == 0)
+ {
+ /* PC relative. */
+ *cycles += 1;
+ dst = msp430dis_opcode (addr + cmd_len, info);
+ sprintf (op2, "0x%04x", PS (dst));
+ sprintf (comm2, "PC rel. 0x%04x",
+ PS ((short) addr + cmd_len + dst));
+ cmd_len += 2;
+ }
+ else if (regd == 2)
+ {
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + cmd_len, info);
+ cmd_len += 2;
+ sprintf (op2, "&0x%04x", PS (dst));
+ }
+ else
+ {
+ dst = msp430dis_opcode (addr + cmd_len, info);
+ cmd_len += 2;
+ sprintf (op2, "%d(r%d)", dst, regd);
+ }
+ }
+
+ return cmd_len;
+}
+
+
+int
+msp430_branchinstr (info, opcode, addr, insn, op1, comm1, cycles)
+ disassemble_info *info;
+ struct msp430_opcode_s *opcode ATTRIBUTE_UNUSED;
+ bfd_vma addr ATTRIBUTE_UNUSED;
+ unsigned short insn;
+ char *op1;
+ char *comm1;
+ int *cycles;
+{
+ int regs = 0, regd = 0;
+ int ad = 0, as = 0;
+ int cmd_len = 2;
+ short dst = 0;
+
+ regd = insn & 0x0f;
+ regs = (insn & 0x0f00) >> 8;
+ as = (insn & 0x0030) >> 4;
+ ad = (insn & 0x0080) >> 7;
+
+ if (regd != 0) /* Destination register is not a PC. */
+ return 0;
+
+ /* dst is a source register. */
+ if (as == 0)
+ {
+ /* Constants. */
+ if (regs == 3)
+ {
+ *cycles = 1;
+ sprintf (op1, "#0");
+ sprintf (comm1, "r3 As==00");
+ }
+ else
+ {
+ /* Register. */
+ *cycles = 1;
+ sprintf (op1, "r%d", regs);
+ }
+ }
+ else if (as == 2)
+ {
+ if (regs == 2)
+ {
+ *cycles = 2;
+ sprintf (op1, "#4");
+ sprintf (comm1, "r2 As==10");
+ }
+ else if (regs == 3)
+ {
+ *cycles = 1;
+ sprintf (op1, "#2");
+ sprintf (comm1, "r3 As==10");
+ }
+ else
+ {
+ /* Indexed register mode @Rn. */
+ *cycles = 2;
+ sprintf (op1, "@r%d", regs);
+ }
+ }
+ else if (as == 3)
+ {
+ if (regs == 2)
+ {
+ *cycles = 1;
+ sprintf (op1, "#8");
+ sprintf (comm1, "r2 As==11");
+ }
+ else if (regs == 3)
+ {
+ *cycles = 1;
+ sprintf (op1, "#-1");
+ sprintf (comm1, "r3 As==11");
+ }
+ else if (regs == 0)
+ {
+ /* Absolute. @pc+ */
+ *cycles = 3;
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "#0x%04x", PS (dst));
+ }
+ else
+ {
+ *cycles = 2;
+ sprintf (op1, "@r%d+", regs);
+ }
+ }
+ else if (as == 1)
+ {
+ * cycles = 3;
+
+ if (regs == 0)
+ {
+ /* PC relative. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ (*cycles)++;
+ sprintf (op1, "0x%04x", PS (dst));
+ sprintf (comm1, "PC rel. 0x%04x",
+ PS ((short) addr + 2 + dst));
+ }
+ else if (regs == 2)
+ {
+ /* Absolute. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "&0x%04x", PS (dst));
+ }
+ else if (regs == 3)
+ {
+ (*cycles)--;
+ sprintf (op1, "#1");
+ sprintf (comm1, "r3 As==01");
+ }
+ else
+ {
+ /* Indexd. */
+ dst = msp430dis_opcode (addr + 2, info);
+ cmd_len += 2;
+ sprintf (op1, "%d(r%d)", dst, regs);
+ }
+ }
+
+ return cmd_len;
+}
--- /dev/null
+
+This directory contains the standard release of the ARMulator from
+Advanced RISC Machines, and was ftp'd from.
+
+ftp.cl.cam.ac.uk:/arm/gnu
+
+It likes to use TCP/IP between the simulator and the host, which is
+nice, but is a pain to use under anything non-unix.
+
+I've added created a new Makefile.in (the original in Makefile.orig)
+to build a version of the simulator without the TCP/IP stuff, and a
+wrapper.c to link directly into gdb and the run command.
+
+It should be possible (barring major changes in the layout of
+the armulator) to upgrade the simulator by copying all the files
+out of a release into this directory and renaming the Makefile.
+
+(Except that I changed armos.c to work more simply with our
+simulator rigs)
+
+Steve
+
+sac@cygnus.com
+
+Mon May 15 12:03:28 PDT 1995
+
+