]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
This commit was manufactured by cvs2svn to create branch 'gdb-csl-gxxpro- gdb-csl-gxxpro-6_3-branchpoint
authornobody <>
Thu, 17 Nov 2005 00:00:03 +0000 (00:00 +0000)
committernobody <>
Thu, 17 Nov 2005 00:00:03 +0000 (00:00 +0000)
6_3-branch'.

Sprout from gdb_6_4-branch 2005-11-04 02:48:52 UTC nobody 'This commit was manufactured by cvs2svn to create branch 'gdb_6_4-branch'.'
Cherrypick from gdb_6_4-branch 2005-11-01 22:57:24 UTC nobody 'This commit was manufactured by cvs2svn to create branch 'gdb_6_4-branch'.':
    gdb/README
Cherrypick from master 2005-11-17 00:00:02 UTC gdbadmin <gdbadmin@sourceware.org> '*** empty log message ***':
    ChangeLog
    Makefile.def
    Makefile.in
    Makefile.tpl
    bfd/ChangeLog
    bfd/archures.c
    bfd/bfd-in2.h
    bfd/bfdio.c
    bfd/cache.c
    bfd/config.in
    bfd/configure
    bfd/configure.host
    bfd/configure.in
    bfd/cpu-ms1.c
    bfd/elf.c
    bfd/elf32-ms1.c
    bfd/elflink.c
    bfd/elfxx-mips.c
    bfd/elfxx-mips.h
    bfd/libbfd-in.h
    bfd/libbfd.h
    bfd/opncls.c
    bfd/reloc.c
    bfd/version.h
    bfd/warning.m4
    configure
    configure.in
    cpu/ChangeLog
    cpu/ms1.cpu
    cpu/ms1.opc
    gdb/ChangeLog
    gdb/MAINTAINERS
    gdb/Makefile.in
    gdb/NEWS
    gdb/arm-linux-tdep.c
    gdb/cli/cli-script.c
    gdb/doc/ChangeLog
    gdb/doc/gdb.texinfo
    gdb/dwarf2loc.c
    gdb/dwarf2read.c
    gdb/elfread.c
    gdb/event-top.c
    gdb/frv-linux-tdep.c
    gdb/frv-tdep.c
    gdb/gdbserver/ChangeLog
    gdb/gdbserver/configure.srv
    gdb/gdbserver/linux-arm-low.c
    gdb/gdbserver/linux-x86-64-low.c
    gdb/hppa-linux-nat.c
    gdb/ia64-tdep.c
    gdb/infrun.c
    gdb/inftarg.c
    gdb/interps.h
    gdb/linux-nat.c
    gdb/m32r-linux-tdep.c
    gdb/m32r-tdep.c
    gdb/m68hc11-tdep.c
    gdb/main.c
    gdb/main.h
    gdb/monitor.c
    gdb/ppc-sysv-tdep.c
    gdb/remote-e7000.c
    gdb/remote-m32r-sdi.c
    gdb/sh-tdep.c
    gdb/sh64-tdep.c
    gdb/solib-frv.c
    gdb/testsuite/ChangeLog
    gdb/testsuite/gdb.arch/gdb1558.c
    gdb/testsuite/gdb.asm/asm-source.exp
    gdb/testsuite/gdb.asm/m68hc11.inc
    gdb/testsuite/gdb.base/break.exp
    gdb/testsuite/gdb.base/structs2.exp
    gdb/thread.c
    gdb/top.c
    gdb/tui/tui-command.c
    gdb/tui/tui-interp.c
    gdb/tui/tui-win.c
    gdb/version.in
    include/ChangeLog
    include/bfdlink.h
    include/elf/ChangeLog
    include/elf/hppa.h
    include/elf/mips.h
    include/elf/ms1.h
    include/opcode/ChangeLog
    include/opcode/mips.h
    libiberty/ChangeLog
    libiberty/splay-tree.c
    opcodes/ChangeLog
    opcodes/arm-dis.c
    opcodes/configure
    opcodes/i386-dis.c
    opcodes/iq2000-desc.c
    opcodes/iq2000-desc.h
    opcodes/iq2000-dis.c
    opcodes/iq2000-opc.c
    opcodes/m32c-desc.c
    opcodes/m68k-dis.c
    opcodes/mips-dis.c
    opcodes/mips16-opc.c
    opcodes/ms1-asm.c
    opcodes/ms1-desc.c
    opcodes/ms1-desc.h
    opcodes/ms1-dis.c
    opcodes/ms1-ibld.c
    opcodes/ms1-opc.c
    opcodes/ms1-opc.h
    opcodes/ppc-opc.c
    sim/ChangeLog
    sim/cris/cris-tmpl.c
    sim/sh/ChangeLog
    sim/sh/interp.c
Delete:
    gdb/config/ms1/ms1.mt
    gdb/config/v850/v850.mt
    gdb/testsuite/gdb.ada/array_return/p.adb
    gdb/testsuite/gdb.ada/array_return/pck.adb
    gdb/testsuite/gdb.ada/array_return/pck.ads
    gdb/testsuite/gdb.ada/arrayidx/p.adb

112 files changed:
ChangeLog
Makefile.def
Makefile.in
Makefile.tpl
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/configure
bfd/configure.host
bfd/cpu-ms1.c
bfd/elf.c
bfd/elf32-ms1.c
bfd/elflink.c
bfd/elfxx-mips.c
bfd/elfxx-mips.h
bfd/libbfd.h
bfd/reloc.c
bfd/version.h
bfd/warning.m4
configure
configure.in
cpu/ChangeLog
cpu/ms1.cpu
cpu/ms1.opc
gdb/ChangeLog
gdb/MAINTAINERS
gdb/Makefile.in
gdb/NEWS
gdb/README
gdb/arm-linux-tdep.c
gdb/cli/cli-script.c
gdb/config/ms1/ms1.mt [deleted file]
gdb/config/v850/v850.mt [deleted file]
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/dwarf2loc.c
gdb/dwarf2read.c
gdb/elfread.c
gdb/event-top.c
gdb/frv-linux-tdep.c
gdb/frv-tdep.c
gdb/gdbserver/ChangeLog
gdb/gdbserver/configure.srv
gdb/gdbserver/linux-arm-low.c
gdb/gdbserver/linux-x86-64-low.c
gdb/hppa-linux-nat.c
gdb/ia64-tdep.c
gdb/infrun.c
gdb/inftarg.c
gdb/interps.h
gdb/m32r-linux-tdep.c
gdb/m32r-tdep.c
gdb/m68hc11-tdep.c
gdb/main.c
gdb/main.h
gdb/monitor.c
gdb/ppc-sysv-tdep.c
gdb/remote-e7000.c
gdb/remote-m32r-sdi.c
gdb/sh-tdep.c
gdb/sh64-tdep.c
gdb/solib-frv.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/array_return/p.adb [deleted file]
gdb/testsuite/gdb.ada/array_return/pck.adb [deleted file]
gdb/testsuite/gdb.ada/array_return/pck.ads [deleted file]
gdb/testsuite/gdb.ada/arrayidx/p.adb [deleted file]
gdb/testsuite/gdb.arch/gdb1558.c
gdb/testsuite/gdb.asm/asm-source.exp
gdb/testsuite/gdb.asm/m68hc11.inc
gdb/testsuite/gdb.base/break.exp
gdb/testsuite/gdb.base/structs2.exp
gdb/thread.c
gdb/top.c
gdb/tui/tui-command.c
gdb/tui/tui-interp.c
gdb/tui/tui-win.c
gdb/version.in
include/ChangeLog
include/bfdlink.h
include/elf/ChangeLog
include/elf/hppa.h
include/elf/mips.h
include/elf/ms1.h
include/opcode/ChangeLog
include/opcode/mips.h
libiberty/ChangeLog
libiberty/splay-tree.c
opcodes/ChangeLog
opcodes/arm-dis.c
opcodes/configure
opcodes/i386-dis.c
opcodes/iq2000-desc.c
opcodes/iq2000-desc.h
opcodes/iq2000-dis.c
opcodes/iq2000-opc.c
opcodes/m32c-desc.c
opcodes/m68k-dis.c
opcodes/mips-dis.c
opcodes/mips16-opc.c
opcodes/ms1-asm.c
opcodes/ms1-desc.c
opcodes/ms1-desc.h
opcodes/ms1-dis.c
opcodes/ms1-ibld.c
opcodes/ms1-opc.c
opcodes/ms1-opc.h
opcodes/ppc-opc.c
sim/ChangeLog
sim/cris/cris-tmpl.c
sim/sh/ChangeLog
sim/sh/interp.c

index 5f555453bd487016b3def5aecee9e193b48e8e80..886c86573eef81e2c0753b48e6b8560ab52590c6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * Makefile.def: Remove gdb dependencies for gdbtk.
+       * Makefile.tpl (CONFIGURE_GDB_TK, INSTALL_GDB_TK): New variables.
+       (configure-gdb, install-gdb): New rules.
+       * configure.in: Set CONFIGURE_GDB_TK and INSTALL_GDB_TK.
+       * Makefile.in, configure: Regenerated.
+
 2005-10-22  Paolo Bonzini  <bonzini@gnu.org>
 
        PR bootstrap/24297
index 035def58c52af982e1ecf26e6cc4fa9a804801dd..dc7d61291ab721a43e660eb9a808d34965a6de3d 100644 (file)
@@ -275,9 +275,6 @@ dependencies = { module=all-fixincludes; on=all-libiberty; };
 dependencies = { module=all-gnattools; on=all-target-libada; };
 
 // Host modules specific to gdb.
-dependencies = { module=configure-gdb; on=configure-itcl; };
-dependencies = { module=configure-gdb; on=configure-tcl; };
-dependencies = { module=configure-gdb; on=configure-tk; };
 dependencies = { module=configure-gdb; on=configure-sim; };
 dependencies = { module=all-gdb; on=all-libiberty; };
 dependencies = { module=all-gdb; on=all-opcodes; };
@@ -286,10 +283,6 @@ dependencies = { module=all-gdb; on=all-readline; };
 dependencies = { module=all-gdb; on=all-build-bison; };
 dependencies = { module=all-gdb; on=all-build-byacc; };
 dependencies = { module=all-gdb; on=all-sim; };
-dependencies = { module=install-gdb; on=install-tcl; };
-dependencies = { module=install-gdb; on=install-tk; };
-dependencies = { module=install-gdb; on=install-itcl; };
-dependencies = { module=install-gdb; on=install-libgui; };
 
 dependencies = { module=configure-libgui; on=configure-tcl; };
 dependencies = { module=configure-libgui; on=configure-tk; };
index 0344ad3ae7070770d4df13cf25fa3309e139ea63..fe0db6c4572c1a2522e805447b486464519d19a0 100644 (file)
@@ -36621,9 +36621,6 @@ all-stageprofile-libcpp: maybe-all-stageprofile-intl
 all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
 all-fixincludes: maybe-all-libiberty
 all-gnattools: maybe-all-target-libada
-configure-gdb: maybe-configure-itcl
-configure-gdb: maybe-configure-tcl
-configure-gdb: maybe-configure-tk
 configure-gdb: maybe-configure-sim
 all-gdb: maybe-all-libiberty
 all-gdb: maybe-all-opcodes
@@ -36632,10 +36629,6 @@ all-gdb: maybe-all-readline
 all-gdb: maybe-all-build-bison
 all-gdb: maybe-all-build-byacc
 all-gdb: maybe-all-sim
-install-gdb: maybe-install-tcl
-install-gdb: maybe-install-tk
-install-gdb: maybe-install-itcl
-install-gdb: maybe-install-libgui
 configure-libgui: maybe-configure-tcl
 configure-libgui: maybe-configure-tk
 all-libgui: maybe-all-tcl
@@ -36934,8 +36927,12 @@ all-prebootstrap: maybe-all-libiberty
 all-prebootstrap: maybe-all-zlib
 @endif gcc-no-bootstrap
 
+CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@
 GDB_TK = @GDB_TK@
+INSTALL_GDB_TK = @INSTALL_GDB_TK@
+configure-gdb: $(CONFIGURE_GDB_TK)
 all-gdb: $(gdbnlmrequirements) $(GDB_TK)
+install-gdb: $(INSTALL_GDB_TK)
 
 # Serialization dependencies.  Host configures don't work well in parallel to
 # each other, due to contention over config.cache.  Target configures and 
index 0c3d75ed2335c4e095478cccea03f56258bd3297..c99ba5b5494dd0bc8df44e97f93776c6076ef060 100644 (file)
@@ -1756,8 +1756,12 @@ all-prebootstrap: maybe-all-[+module+][+
 ENDFOR host_modules +]
 @endif gcc-no-bootstrap
 
+CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@
 GDB_TK = @GDB_TK@
+INSTALL_GDB_TK = @INSTALL_GDB_TK@
+configure-gdb: $(CONFIGURE_GDB_TK)
 all-gdb: $(gdbnlmrequirements) $(GDB_TK)
+install-gdb: $(INSTALL_GDB_TK)
 
 # Serialization dependencies.  Host configures don't work well in parallel to
 # each other, due to contention over config.cache.  Target configures and 
index ff9effd72a879acf4ea213880c4ef864f085dbcb..fdc81a2f7598eb27940ff420654ffc4c976e6d62 100644 (file)
@@ -1,3 +1,40 @@
+2005-11-11  Nick Clifton  <nickc@redhat.com>
+
+       PR 1150
+       * elfxx-mips.c (mips_elf_calculate_relocation): Ignore an
+       undefined symbol if it is optional.
+       (_bfd_mips_elf_merge_symbol_attribute): Make sure that the
+       optional flag is merged as well as the visibility.
+       * elfxx-mips.h (_bfd_mips_elf_merge_symbol_attribute): Prototype.
+       (elf_backend_merge_symbol_attribute): Define.
+
+2005-11-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Add ms2 support
+       * archures.c (bfd_mach_ms2): Define.
+       * cpu-ms1.c (arch_info_struct): Add ms2 stanza.
+       * elf32-ms1.c (elf32_ms1_machine): Add ms2 case.
+       (ms1_elf_merge_private_bfd_data): Remove unused variables.  Add
+       correct merging logic, with workaround.
+       (ms1_elf_print_private_bfd_data): Add ms2 case.
+       * reloc.c (BFD_RELOC_MS1_PCINSN8): Add ms2 specific reloc.
+       * libbfd.h: Regenerated.
+       * bfd-in2.h: Regenerated.
+
+2005-11-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * warning.m4 (AM_BINUTILS_WARNINGS): Default to empty string
+       if compiler is not GCC.
+       * configure: Regenerate
+
+2005-11-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * configure: Regenerate after modifying bfd/warning.m4.
+
+2005-11-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * configure.host (ia64-*-hpux*): Set _LARGEFILE64_SOURCE.
+
 2005-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * configure.in: Check for fopen64.
@@ -7,6 +44,21 @@
        * opncls.c (bfd_fopen, bfd_fill_in_gnu_debuglink_section): Use it.
        * cache.c (bfd_open_file): Likewise.
 
+2005-11-03  Thiemo Seufer  <ths@networkno.de>
+
+       * elfxx-mips.c (mips_elf_calculate_relocation): Handle only
+       forced local symbols here.
+       (mips_elf_create_dynamic_relocation): Likewise.
+       (_bfd_mips_elf_finish_dynamic_symbol): Fix typo in comment.
+
+2005-11-03  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf.c (elf_fake_sections): When calculating tbss size, just use
+       the last link_order.
+       (assign_file_positions_for_segments): Likewise.
+       * elflink.c (bfd_elf_final_link): Likewise.
+       (elf_reloc_link_order): Correct comment.
+
 2005-11-02  Alan Modra  <amodra@bigpond.net.au>
 
        PR ld/1775
index a96771cf8dabcf4f090bf903b61946980490deec..561ddfc8ec15cf57f2e3419781c150ae119cf819 100644 (file)
@@ -320,6 +320,7 @@ DESCRIPTION
 .  bfd_arch_ms1,
 .#define bfd_mach_ms1           1
 .#define bfd_mach_mrisc2        2
+.#define bfd_mach_ms2           3
 .  bfd_arch_pj,
 .  bfd_arch_avr,       {* Atmel AVR microcontrollers.  *}
 .#define bfd_mach_avr1         1
index 7afe43725a706090a0e717cfc152ce6f2d29e3bd..d8570866fca717a0d4fd9575ef78150c51be70e5 100644 (file)
@@ -1908,6 +1908,7 @@ enum bfd_architecture
   bfd_arch_ms1,
 #define bfd_mach_ms1           1
 #define bfd_mach_mrisc2        2
+#define bfd_mach_ms2           3
   bfd_arch_pj,
   bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
 #define bfd_mach_avr1          1
@@ -3970,6 +3971,9 @@ This is the 5 bits of a value.  */
 /* Morpho MS1 - Used to tell the linker which vtable entries are used.  */
   BFD_RELOC_MS1_GNU_VTENTRY,
 
+/* Morpho MS1 - 8 bit immediate relocation.  */
+  BFD_RELOC_MS1_PCINSN8,
+
 /* msp430 specific relocation codes  */
   BFD_RELOC_MSP430_10_PCREL,
   BFD_RELOC_MSP430_16_PCREL,
index a70caff3296ccf357bf71ca37e638be227d61223..57f1e72d9cc907414cbbd60cca5b15dadd201739 100755 (executable)
@@ -975,7 +975,7 @@ esac
     else
       echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi
-    cd "$ac_popdir"
+    cd $ac_popdir
   done
 fi
 
@@ -1999,7 +1999,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2057,7 +2058,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2173,7 +2175,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2227,7 +2230,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2272,7 +2276,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2316,7 +2321,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2394,7 +2400,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2448,7 +2455,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3968,7 +3976,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
 case $host in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 3971 "configure"' > conftest.$ac_ext
+  echo '#line 3979 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4064,7 +4072,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4276,7 +4285,7 @@ _ACEOF
 fi
 
 
-WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
 
 # Check whether --enable-werror or --disable-werror was given.
 if test "${enable_werror+set}" = set; then
@@ -4297,20 +4306,26 @@ fi
 
 NO_WERROR=
 if test "${ERROR_ON_WARNING}" = yes ; then
-    WARN_CFLAGS="$WARN_CFLAGS -Werror"
+    GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror"
     NO_WERROR="-Wno-error"
 fi
 
+if test "${GCC}" = yes ; then
+  WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+fi
+
 # Check whether --enable-build-warnings or --disable-build-warnings was given.
 if test "${enable_build_warnings+set}" = set; then
   enableval="$enable_build_warnings"
   case "${enableval}" in
-  yes) ;;
-  no)  WARN_CFLAGS="-w";;
+  yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+  no)  if test "${GCC}" = yes ; then
+         WARN_CFLAGS="-w"
+       fi;;
   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${WARN_CFLAGS} ${t}";;
+        WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";;
   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${t} ${WARN_CFLAGS}";;
+        WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
   *)    WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
 esac
 fi;
@@ -4787,7 +4802,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4845,7 +4861,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4961,7 +4978,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5015,7 +5033,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5060,7 +5079,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5104,7 +5124,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5514,7 +5535,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5721,7 +5743,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5781,7 +5804,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5860,7 +5884,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5925,7 +5950,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5990,7 +6016,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6054,7 +6081,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6135,7 +6163,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6276,7 +6305,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6414,7 +6444,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6598,7 +6629,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6849,7 +6881,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7043,7 +7076,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7146,7 +7180,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7217,7 +7252,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7314,7 +7350,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7450,7 +7487,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7514,7 +7552,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7569,7 +7608,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7709,7 +7749,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7842,7 +7883,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8119,7 +8161,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8391,7 +8434,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8449,7 +8493,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8511,7 +8556,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8551,7 +8597,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8607,7 +8654,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8647,7 +8695,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8711,7 +8760,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8742,8 +8792,10 @@ See \`config.log' for more details." >&2;}
 esac
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -8857,7 +8909,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8919,7 +8972,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8959,7 +9013,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9015,7 +9070,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9055,7 +9111,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9119,7 +9176,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9150,8 +9208,10 @@ See \`config.log' for more details." >&2;}
 esac
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -9330,7 +9390,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9481,7 +9542,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9629,7 +9691,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9700,7 +9763,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9772,7 +9836,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9826,7 +9891,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9897,7 +9963,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9951,7 +10018,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10015,7 +10083,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10121,7 +10190,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10222,7 +10292,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10287,7 +10358,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10358,7 +10430,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10429,7 +10502,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10500,7 +10574,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10571,7 +10646,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10653,7 +10729,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10724,7 +10801,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10795,7 +10873,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10866,7 +10945,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10937,7 +11017,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11008,7 +11089,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11079,7 +11161,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11150,7 +11233,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11221,7 +11305,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11448,7 +11533,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11568,7 +11654,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11715,7 +11802,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11779,7 +11867,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11843,7 +11932,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11907,7 +11997,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11971,7 +12062,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12035,7 +12127,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12099,7 +12192,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12163,7 +12257,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12227,7 +12322,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12291,7 +12387,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12355,7 +12452,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12419,7 +12517,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12483,7 +12582,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12547,7 +12647,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12611,7 +12712,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12675,7 +12777,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13298,7 +13401,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13363,7 +13467,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13425,7 +13530,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13465,7 +13571,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13521,7 +13628,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13561,7 +13669,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13625,7 +13734,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13656,8 +13766,10 @@ See \`config.log' for more details." >&2;}
 esac
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -13796,7 +13908,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13980,7 +14093,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14257,7 +14371,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15238,6 +15353,11 @@ esac
   *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
   esac
 
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
   # Let's still pretend it is `configure' which instantiates (i.e., don't
   # use $as_me), people would be surprised to read:
   #    /* config.h.  Generated by config.status.  */
@@ -15276,12 +15396,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
         fi;;
       esac
     done` || { (exit 1); exit 1; }
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
   sed "$ac_vpsub
index 024ed625420119cf37e054733c4c8067765e2c32..adf2cc6bf7a8bd83641b61cdcb779323f87a4c13 100644 (file)
@@ -29,6 +29,8 @@ hppa*-*-mpeix*)               HDEFINES=-DHOST_HPPAMPEIX ;;
 hppa*-*-bsd*)          HDEFINES=-DHOST_HPPABSD ;;
 hppa*-*-osf*)          HDEFINES=-DHOST_HPPAOSF ;;
 
+ia64-*-hpux*)          HDEFINES=-D_LARGEFILE64_SOURCE
+                       host64=true;;
 ia64-*-*)              host64=true;;
 
 # Workaround for limitations on win9x where file contents are
index 1a0a726e30f546a3c1ea20dbdc53628d55303064..18d75a0ce35b6d4860fba280718972b83b6b2beb 100644 (file)
@@ -35,8 +35,22 @@ const bfd_arch_info_type arch_info_struct[] =
   FALSE,                       /* The default ?  */
   bfd_default_compatible,      /* Architecture comparison fn.  */
   bfd_default_scan,            /* String to architecture convert fn.  */
+  &arch_info_struct[1]          /* Next in list.  */
+},
+{
+  32,                          /* Bits per word - not really true.  */
+  32,                          /* Bits per address.  */
+  8,                           /* Bits per byte.  */
+  bfd_arch_ms1,                        /* Architecture.  */
+  bfd_mach_ms2,                        /* Machine.  */
+  "ms1",                       /* Architecture name.  */
+  "ms2",                       /* Printable name.  */
+  1,                           /* 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_ms1_arch =
index 0e72d4ef93f3bac01468cdae88590fb0161c5cd2..ea86c3ef859a93befa18132e66fd843c399f2d25 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2764,16 +2764,18 @@ elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg)
   if ((asect->flags & SEC_THREAD_LOCAL) != 0)
     {
       this_hdr->sh_flags |= SHF_TLS;
-      if (asect->size == 0 && (asect->flags & SEC_HAS_CONTENTS) == 0)
+      if (asect->size == 0
+         && (asect->flags & SEC_HAS_CONTENTS) == 0)
        {
-         struct bfd_link_order *o;
+         struct bfd_link_order *o = asect->map_tail.link_order;
 
          this_hdr->sh_size = 0;
-         for (o = asect->map_head.link_order; o != NULL; o = o->next)
-           if (this_hdr->sh_size < o->offset + o->size)
+         if (o != NULL)
+           {
              this_hdr->sh_size = o->offset + o->size;
-         if (this_hdr->sh_size)
-           this_hdr->sh_type = SHT_NOBITS;
+             if (this_hdr->sh_size != 0)
+               this_hdr->sh_type = SHT_NOBITS;
+           }
        }
     }
 
@@ -4396,14 +4398,9 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
                  && sec->size == 0
                  && (sec->flags & SEC_HAS_CONTENTS) == 0)
                {
-                 struct bfd_link_order *o;
-                 bfd_vma tbss_size = 0;
-
-                 for (o = sec->map_head.link_order; o != NULL; o = o->next)
-                   if (tbss_size < o->offset + o->size)
-                     tbss_size = o->offset + o->size;
-
-                 p->p_memsz += tbss_size;
+                 struct bfd_link_order *o = sec->map_tail.link_order;
+                 if (o != NULL)
+                   p->p_memsz += o->offset + o->size;
                }
 
              if (align > p->p_align
index 51841e512454e2e92b749c4e9bc0dca08e1001da..c4ce61421040d1202cb293a3ff1e0d6bafb67588 100644 (file)
@@ -501,6 +501,7 @@ elf32_ms1_machine (bfd *abfd)
     {
     case EF_MS1_CPU_MRISC:     return bfd_mach_ms1;
     case EF_MS1_CPU_MRISC2:  return bfd_mach_mrisc2;
+    case EF_MS1_CPU_MS2:  return bfd_mach_ms2;
     }
 
   return bfd_mach_ms1;
@@ -548,7 +549,6 @@ ms1_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
 {
   flagword     old_flags, new_flags;
   bfd_boolean  error = FALSE;
-  static bfd * last_ibfd = 0;
 
   /* Check if we have the same endianess.  */
   if (_bfd_generic_verify_endian_match (ibfd, obfd) == FALSE)
@@ -569,13 +569,29 @@ ms1_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
                      ibfd, old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no");
 #endif
 
-  elf_flags_init (obfd) = TRUE;
-
-  if ((new_flags & EF_MS1_CPU_MASK) == EF_MS1_CPU_MRISC2)
+  if (!elf_flags_init (obfd))
+    {
+      old_flags = new_flags;
+      elf_flags_init (obfd) = TRUE;
+    }
+  else if ((new_flags & EF_MS1_CPU_MASK) != (old_flags & EF_MS1_CPU_MASK))
+    {
+      /* CPU has changed.  This is invalid, because MRISC, MRISC2 and
+        MS2 are not subsets of each other.   */
+      error = 1;
+      
+      /* FIXME:However, until the compiler is multilibbed, preventing
+        mixing breaks the build.  So we allow merging and use the
+        greater CPU value.  This is of course unsafe.  */
+      error = 0;
+      if ((new_flags & EF_MS1_CPU_MASK) > (old_flags & EF_MS1_CPU_MASK))
+       old_flags = ((old_flags & ~EF_MS1_CPU_MASK)
+                    | (new_flags & EF_MS1_CPU_MASK));
+    }
+  if (!error)
     {
-      elf_elfheader (obfd)->e_flags = new_flags;
-      last_ibfd = ibfd;
       obfd->arch_info = ibfd->arch_info;
+      elf_elfheader (obfd)->e_flags = old_flags;
     }
 
   return !error;
@@ -598,8 +614,9 @@ ms1_elf_print_private_bfd_data (bfd * abfd, void * ptr)
   switch (flags & EF_MS1_CPU_MASK)
     {
     default:
-    case EF_MS1_CPU_MRISC:     fprintf (file, " ms1-16-002");  break;
+    case EF_MS1_CPU_MRISC:   fprintf (file, " ms1-16-002");    break;
     case EF_MS1_CPU_MRISC2:  fprintf (file, " ms1-16-003");    break;
+    case EF_MS1_CPU_MS2:     fprintf (file, " ms2");   break;
     }
 
   fputc ('\n', file);
index 899c48db8e92e6f5fd4be85168c3915b6734da1e..1fcfce352d8989abc781b6dd48cd0dd40880cdfe 100644 (file)
@@ -7394,7 +7394,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
 }
 
 /* Generate a reloc when linking an ELF file.  This is a reloc
-   requested by the linker, and does come from any input file.  This
+   requested by the linker, and does not come from any input file.  This
    is used to build constructor and destructor tables when linking
    with -Ur.  */
 
@@ -8129,15 +8129,14 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
           sec && (sec->flags & SEC_THREAD_LOCAL);
           sec = sec->next)
        {
-         bfd_vma size = sec->size;
+         bfd_size_type size = sec->size;
 
-         if (size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0)
+         if (size == 0
+             && (sec->flags & SEC_HAS_CONTENTS) == 0)
            {
-             struct bfd_link_order *o;
-
-             for (o = sec->map_head.link_order; o != NULL; o = o->next)
-               if (size < o->offset + o->size)
-                 size = o->offset + o->size;
+             struct bfd_link_order *o = sec->map_tail.link_order;
+             if (o != NULL)
+               size = o->offset + o->size;
            }
          end = sec->vma + size;
        }
index 685f1d22e3fbf969a54bc78d957f7a70d9d8fcc1..d4b90de3c34381f423aa2bc016f23a9d4c775177 100644 (file)
@@ -3792,6 +3792,17 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
          BFD_ASSERT (bfd_get_section_by_name (abfd, ".dynamic") == NULL);
          symbol = 0;
        }
+      else if (ELF_MIPS_IS_OPTIONAL (h->root.other))
+       {
+         /* This is an optional symbol - an Irix specific extension to the
+            ELF spec.  Ignore it for now.
+            XXX - FIXME - there is more to the spec for OPTIONAL symbols
+            than simply ignoring them, but we do not handle this for now.
+            For information see the "64-bit ELF Object File Specification"
+            which is available from here:
+            http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf  */
+         symbol = 0;
+       }
       else
        {
          if (! ((*info->callbacks->undefined_symbol)
@@ -3918,7 +3929,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
          if (h->tls_type == GOT_NORMAL
              && (! elf_hash_table(info)->dynamic_sections_created
                  || (info->shared
-                     && (info->symbolic || h->root.dynindx == -1)
+                     && (info->symbolic || h->root.forced_local)
                      && h->root.def_regular)))
            {
              /* This is a static link or a -Bsymbolic link.  The
@@ -4483,10 +4494,8 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
   /* We must now calculate the dynamic symbol table index to use
      in the relocation.  */
   if (h != NULL
-      && (! info->symbolic || !h->root.def_regular)
-      /* h->root.dynindx may be -1 if this symbol was marked to
-        become local.  */
-      && h->root.dynindx != -1)
+      && (!h->root.def_regular
+         || (info->shared && !info->symbolic && !h->root.forced_local)))
     {
       indx = h->root.dynindx;
       if (SGI_COMPAT (output_bfd))
@@ -7379,7 +7388,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
                                   MIPS_ELF_STUB_SECTION_NAME (dynobj));
       BFD_ASSERT (s != NULL);
 
-      /* FIXME: Can h->dynindex be more than 64K?  */
+      /* FIXME: Can h->dynindx be more than 64K?  */
       if (h->dynindx & 0xffff0000)
        return FALSE;
 
@@ -8869,8 +8878,7 @@ _bfd_elf_mips_get_relocated_section_contents
                case bfd_reloc_undefined:
                  if (!((*link_info->callbacks->undefined_symbol)
                        (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
-                        input_bfd, input_section, (*parent)->address,
-                        TRUE)))
+                        input_bfd, input_section, (*parent)->address, TRUE)))
                    goto error_return;
                  break;
                case bfd_reloc_dangerous:
@@ -9996,3 +10004,16 @@ const struct bfd_elf_special_section _bfd_mips_elf_special_sections[] =
   { ".ucode",  6,  0, SHT_MIPS_UCODE, 0 },
   { NULL,      0,  0, 0,              0 }
 };
+
+/* Ensure that the STO_OPTIONAL flag is copied into h->other,
+   even if this is not a defintion of the symbol.  */
+void
+_bfd_mips_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
+                                     const Elf_Internal_Sym *isym,
+                                     bfd_boolean definition,
+                                     bfd_boolean dynamic ATTRIBUTE_UNUSED)
+{
+  if (! definition
+      && ELF_MIPS_IS_OPTIONAL (isym->st_other))
+    h->other |= STO_OPTIONAL;
+}
index d419435c110c69f614118b034107c28bfb1f9b50..3af342a23025f619125c9591769e66827584b97b 100644 (file)
@@ -127,6 +127,8 @@ extern bfd_boolean _bfd_mips_relax_section
   (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
 extern bfd_vma _bfd_mips_elf_sign_extend
   (bfd_vma, int);
+extern void _bfd_mips_elf_merge_symbol_attribute
+  (struct elf_link_hash_entry *, const Elf_Internal_Sym *, bfd_boolean, bfd_boolean);
 
 extern const struct bfd_elf_special_section _bfd_mips_elf_special_sections [];
 
@@ -134,3 +136,4 @@ extern const struct bfd_elf_special_section _bfd_mips_elf_special_sections [];
   _bfd_mips_elf_name_local_section_symbols
 #define elf_backend_special_sections _bfd_mips_elf_special_sections
 #define elf_backend_eh_frame_address_size _bfd_mips_elf_eh_frame_address_size
+#define elf_backend_merge_symbol_attribute  _bfd_mips_elf_merge_symbol_attribute
index 1fc541645ce69fba923cb65cef620ee4bc39b4eb..e05252c949be41c37a3a7b5618b7cee7049d9d8b 100644 (file)
@@ -1764,6 +1764,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MS1_LO16",
   "BFD_RELOC_MS1_GNU_VTINHERIT",
   "BFD_RELOC_MS1_GNU_VTENTRY",
+  "BFD_RELOC_MS1_PCINSN8",
   "BFD_RELOC_MSP430_10_PCREL",
   "BFD_RELOC_MSP430_16_PCREL",
   "BFD_RELOC_MSP430_16",
index ea73d1373729277030e9620e6973350abe4677d2..d964f1656c1983c904595104ab2c9052c39a604c 100644 (file)
@@ -4424,6 +4424,10 @@ ENUM
   BFD_RELOC_MS1_GNU_VTENTRY
 ENUMDOC
   Morpho MS1 - Used to tell the linker which vtable entries are used.
+ENUM
+  BFD_RELOC_MS1_PCINSN8
+ENUMDOC
+  Morpho MS1 - 8 bit immediate relocation. 
 
 ENUM
   BFD_RELOC_MSP430_10_PCREL
index c9200e1dedee37c7414b5b3b862ac50891aa2388..83fdb5394688dbcbb36cd87b947a001a596f449b 100644 (file)
@@ -1,3 +1,3 @@
-#define BFD_VERSION_DATE 20051101
+#define BFD_VERSION_DATE 20051117
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING @bfd_version_string@
index 38feb5f03363d7bfb6eb24f8212ce259e7773dbf..2e2dd424c0f76432446e9d22e063e110a554b7c9 100644 (file)
@@ -1,7 +1,7 @@
 dnl Common configure.in fragment
 
 AC_DEFUN([AM_BINUTILS_WARNINGS],[
-WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
 
 AC_ARG_ENABLE(werror,
   [  --enable-werror    treat compile warnings as errors],
@@ -18,19 +18,25 @@ fi
 
 NO_WERROR=
 if test "${ERROR_ON_WARNING}" = yes ; then
-    WARN_CFLAGS="$WARN_CFLAGS -Werror"
+    GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror"
     NO_WERROR="-Wno-error"
 fi
                   
+if test "${GCC}" = yes ; then
+  WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+fi
+
 AC_ARG_ENABLE(build-warnings,
 [  --enable-build-warnings Enable build-time compiler warnings],
 [case "${enableval}" in
-  yes) ;;
-  no)  WARN_CFLAGS="-w";;
+  yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+  no)  if test "${GCC}" = yes ; then
+         WARN_CFLAGS="-w"
+       fi;;
   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${WARN_CFLAGS} ${t}";;
+        WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";;
   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${t} ${WARN_CFLAGS}";;
+        WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
   *)    WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
 esac])
 
index 2131c6cb7253e52fd215317f63b77105686e963a..42b7e28ce2b344f45fe2ccb86c871cf83a551771 100755 (executable)
--- a/configure
+++ b/configure
@@ -3133,6 +3133,8 @@ case "$enable_gdbtk" in
     fi
     ;;
 esac
+CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
+INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
 
 # Strip out unwanted targets.
 
@@ -3494,6 +3496,8 @@ done
 
 
 
+
+
 # Build module lists & subconfigure args.
 
 
@@ -3521,7 +3525,7 @@ test -n "$target_alias" && ncn_target_tool_prefix=$target_alias-
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3525: checking for $ac_word" >&5
+echo "configure:3529: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3552,7 +3556,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3556: checking for $ac_word" >&5
+echo "configure:3560: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3596,7 +3600,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3600: checking for $ac_word" >&5
+echo "configure:3604: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3627,7 +3631,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3631: checking for $ac_word" >&5
+echo "configure:3635: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3671,7 +3675,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3675: checking for $ac_word" >&5
+echo "configure:3679: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3702,7 +3706,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3706: checking for $ac_word" >&5
+echo "configure:3710: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3746,7 +3750,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3750: checking for $ac_word" >&5
+echo "configure:3754: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3777,7 +3781,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3781: checking for $ac_word" >&5
+echo "configure:3785: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3821,7 +3825,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3825: checking for $ac_word" >&5
+echo "configure:3829: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3852,7 +3856,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3856: checking for $ac_word" >&5
+echo "configure:3860: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3896,7 +3900,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3900: checking for $ac_word" >&5
+echo "configure:3904: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3927,7 +3931,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3931: checking for $ac_word" >&5
+echo "configure:3935: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3966,7 +3970,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3970: checking for $ac_word" >&5
+echo "configure:3974: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3997,7 +4001,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4001: checking for $ac_word" >&5
+echo "configure:4005: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4041,7 +4045,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4045: checking for $ac_word" >&5
+echo "configure:4049: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4072,7 +4076,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4076: checking for $ac_word" >&5
+echo "configure:4080: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4116,7 +4120,7 @@ fi
     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4120: checking for $ac_word" >&5
+echo "configure:4124: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4147,7 +4151,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4151: checking for $ac_word" >&5
+echo "configure:4155: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4199,7 +4203,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4203: checking for $ac_word" >&5
+echo "configure:4207: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4230,7 +4234,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4234: checking for $ac_word" >&5
+echo "configure:4238: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4274,7 +4278,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4278: checking for $ac_word" >&5
+echo "configure:4282: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4305,7 +4309,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4309: checking for $ac_word" >&5
+echo "configure:4313: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4349,7 +4353,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4353: checking for $ac_word" >&5
+echo "configure:4357: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4380,7 +4384,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4384: checking for $ac_word" >&5
+echo "configure:4388: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4424,7 +4428,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4428: checking for $ac_word" >&5
+echo "configure:4432: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4455,7 +4459,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4459: checking for $ac_word" >&5
+echo "configure:4463: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4499,7 +4503,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4503: checking for $ac_word" >&5
+echo "configure:4507: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4530,7 +4534,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4534: checking for $ac_word" >&5
+echo "configure:4538: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4574,7 +4578,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4578: checking for $ac_word" >&5
+echo "configure:4582: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4605,7 +4609,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4609: checking for $ac_word" >&5
+echo "configure:4613: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4644,7 +4648,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4648: checking for $ac_word" >&5
+echo "configure:4652: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4675,7 +4679,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4679: checking for $ac_word" >&5
+echo "configure:4683: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4719,7 +4723,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4723: checking for $ac_word" >&5
+echo "configure:4727: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4750,7 +4754,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4754: checking for $ac_word" >&5
+echo "configure:4758: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4794,7 +4798,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4798: checking for $ac_word" >&5
+echo "configure:4802: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4825,7 +4829,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4829: checking for $ac_word" >&5
+echo "configure:4833: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4869,7 +4873,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4873: checking for $ac_word" >&5
+echo "configure:4877: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4900,7 +4904,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4904: checking for $ac_word" >&5
+echo "configure:4908: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4944,7 +4948,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4948: checking for $ac_word" >&5
+echo "configure:4952: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4975,7 +4979,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4979: checking for $ac_word" >&5
+echo "configure:4983: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5019,7 +5023,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5023: checking for $ac_word" >&5
+echo "configure:5027: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5050,7 +5054,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5054: checking for $ac_word" >&5
+echo "configure:5058: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5094,7 +5098,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5098: checking for $ac_word" >&5
+echo "configure:5102: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5125,7 +5129,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5129: checking for $ac_word" >&5
+echo "configure:5133: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5164,7 +5168,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5168: checking for $ac_word" >&5
+echo "configure:5172: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5195,7 +5199,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5199: checking for $ac_word" >&5
+echo "configure:5203: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5239,7 +5243,7 @@ fi
     # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5243: checking for $ac_word" >&5
+echo "configure:5247: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5270,7 +5274,7 @@ fi
     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
 set dummy ${ncn_progname}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5274: checking for $ac_word" >&5
+echo "configure:5278: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5380,7 +5384,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target}
 NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:5384: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:5388: checking whether to enable maintainer-specific portions of Makefiles" >&5
 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
@@ -5427,7 +5431,7 @@ esac
 # gcc for stageN-gcc and stagePREV-gcc for stage(N-1).  In case this is not
 # possible, however, we can resort to mv.
 echo $ac_n "checking if symbolic links between directories work""... $ac_c" 1>&6
-echo "configure:5431: checking if symbolic links between directories work" >&5
+echo "configure:5435: checking if symbolic links between directories work" >&5
 if eval "test \"`echo '$''{'gcc_cv_prog_ln_s_dir'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5673,7 +5677,9 @@ s%@BUILD_PREFIX@%$BUILD_PREFIX%g
 s%@BUILD_PREFIX_1@%$BUILD_PREFIX_1%g
 s%@tooldir@%$tooldir%g
 s%@build_tooldir@%$build_tooldir%g
+s%@CONFIGURE_GDB_TK@%$CONFIGURE_GDB_TK%g
 s%@GDB_TK@%$GDB_TK%g
+s%@INSTALL_GDB_TK@%$INSTALL_GDB_TK%g
 s%@build_configargs@%$build_configargs%g
 s%@build_configdirs@%$build_configdirs%g
 s%@host_configargs@%$host_configargs%g
index 61c80404bdc19b1c894dc2e1445121c606edc481..c9169b6bd587096c1ae5394b56901a9753e50558 100644 (file)
@@ -1724,6 +1724,8 @@ case "$enable_gdbtk" in
     fi
     ;;
 esac
+CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
+INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
 
 # Strip out unwanted targets.
 
@@ -2077,7 +2079,9 @@ AC_SUBST(BUILD_PREFIX)
 AC_SUBST(BUILD_PREFIX_1)
 AC_SUBST(tooldir)
 AC_SUBST(build_tooldir)
+AC_SUBST(CONFIGURE_GDB_TK)
 AC_SUBST(GDB_TK)
+AC_SUBST(INSTALL_GDB_TK)
 
 # Build module lists & subconfigure args.
 AC_SUBST(build_configargs)
index 1fc6255def02190059a5c20483484e890040635f..e159430def97f25a8a973dd70a4fd328af2477d3 100644 (file)
@@ -1,3 +1,25 @@
+2005-11-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Add ms2
+       * ms1.cpu (ms2, ms2bf): New architecture variant, cpu, machine and
+       model.
+       (f-uu8, f-uu1, f-imm16l, f-loopo, f-cb1sel, f-cb2sel, f-cb1incr,
+       f-cb2incr, f-rc3): New fields.
+       (LOOP): New instruction.
+       (JAL-HAZARD): New hazard.
+       (imm16o, loopsize, imm16l, rc3, cb1sel, cb2sel, cb1incr, cb2incr):
+       New operands.
+       (mul, muli, dbnz, iflush): Enable for ms2
+       (jal, reti): Has JAL-HAZARD.
+       (ldctxt, ldfb, stfb): Only ms1.
+       (fbcb): Only ms1,ms1-003.
+       (wfbinc, mefbinc, wfbincr, mwfbincr, fbcbincs, mfbcbincs,
+       fbcbincrs, mfbcbincrs): Enable for ms2.
+       (loop, loopu, dfbc, dwfb, fbwfb, dfbr): New ms2 insns.
+       * ms1.opc (parse_loopsize): New.
+       (parse_imm16): hi16/lo16 relocs are applicable to IMM16L.
+       (print_pcrel): New.
+
 2005-10-28  Dave Brolley  <brolley@redhat.com>
 
        Contribute the following change:
index f80690c9d0561991db93c9a07fc6810d982a5bef..441a93733447d2068595fa87a48328e98f997f4a 100644 (file)
@@ -32,7 +32,7 @@
   (comment "Morpho Technologies mRISC family")
   (default-alignment aligned)
   (insn-lsb0? #t)
-  (machs ms1 ms1-003)
+  (machs ms1 ms1-003 ms2)
   (isas ms1)
 )
 
   (word-bitsize 32)
 )
 
+(define-cpu
+  ; cpu names must be distinct from the architecture name and machine names.
+  (name ms2bf)
+  (comment "Morpho Technologies mRISC family")
+  (endian big)
+  (word-bitsize 32)
+)
+
 (define-mach
   (name ms1)
   (comment "Morpho Technologies mrisc")
   (isas ms1)
 )
 
+(define-mach
+  (name ms2)
+  (comment "Morpho Technologies ms2")
+  (cpu ms2bf)
+  (isas ms1)
+)
+
 \f
 ; Model descriptions.
 ; Can probably take the u-exec out.  We'll see.
        )
 )
 
-; Macros to simplify MACH attribute specification.
-
-(define-pmacro MACHMS1 (MACH ms1))
-(define-pmacro MACHMS1-003 (MACH ms1-003))
+(define-model
+  (name ms2)
+  (comment "Morpho Technologies ms2")
+  (mach ms2)
+  (unit u-exec "Execution Unit" ()
+       1 1 ; issue done
+       () ; state
+       () ; inputs
+       () ; outputs
+       () ; profile action (default)
+       )
+)
 
 ; FIXME: It might simplify things to separate the execute process from the
 ; one that updates the PC.
 ; f-imm16a: 16 bit immediate value when it's a pc-rel offset.
 ; f-uu4a: unused 4 bit field.
 ; f-uu4b: second unsed 4 bit field.
+; f-uu1: unused 1 bit field
 ; f-uu12: unused 12 bit field.
 ; f-uu16: unused 16 bit field.
 ; f-uu24: unused 24 bit field.
 (dnf f-uu4a      "unused 4 bit field"          () 19 4)
 (dnf f-uu4b      "unused 4 bit field"          () 23 4)
 (dnf f-uu12      "unused 12 bit field"         () 11 12)
+(dnf f-uu8       "unused 8 bit field"           () 15 8)
 (dnf f-uu16      "unused 16 bit field"                 () 15 16)
+(dnf f-uu1       "unused 1 bit field"          ()  7 1)
 
 ; The following ifields are used exclusively for the MorphoSys instructions.
 ; In a few cases, a bit field is used for something in addition to what its
 (dnf f-rc2       "rc2"                         ()  6 1)
 (dnf f-ctxdisp   "context displacement"                ()  5 6)
 
+; additional fields in ms2
+(dnf f-imm16l    "loop count"                   () 23 16)
+(df  f-loopo    "loop offset"                  () 7 8 UINT
+    ((value pc) (srl SI value 2))
+    ((value pc) (add SI (sll value 2) 8))
+ )
+(dnf f-cb1sel    "cb1 select"                   () 25 3)
+(dnf f-cb2sel    "cb2 select"                   () 22 3)
+(dnf f-cb1incr   "cb1 increment"                (SIGNED) 19 6)
+(dnf f-cb2incr   "cb2 increment"                (SIGNED) 13 6)
+(dnf f-rc3       "row/colum context"            ()  7 1)
 
 ; The following is just for a test
 (dnf f-msysfrsr2 "sr2 for msys"                        () 19 4)
   (ADD  ADDU SUB  SUBU MUL   -      -    -
    AND  OR   XOR  NAND NOR   XNOR   LDUI -
    LSL  LSR  ASR  -    -     -      -    -
-   BRLT BRLE BREQ JMP  JAL   BRNEQ  DBNZ -
+   BRLT BRLE BREQ JMP  JAL   BRNEQ  DBNZ LOOP
    LDW  STW  -    -    -     -      -    -
    -    -    -    -    -     -      -    -
    EI   DI   SI   RETI BREAK IFLUSH -    -
 ; insn-imm: bit 24.  Immediate operand indicator.
 (define-normal-insn-enum insn-imm "imm enums" () IMM_ f-imm
   ; This bit specifies whether and immediate operand will be present.
-  ; It's 1 if ther is, 0 if there is not.
+  ; It's 1 if there is, 0 if there is not.
   (NO YES)
 )
 ;;;;;;;;;;;;;;;;
   (comment "insn performs an I/O operation")
 )
 
+(define-attr
+  (for insn)
+  (type boolean)
+  (name JAL-HAZARD)
+  (comment "insn has jal-like hazard")
+)
+
 (define-pmacro (define-reg-use-attr regfield)
   (define-attr
     (for insn)
   (type h-sint) (index f-imm16s) (handlers (parse "imm16") (print "dollarhex")))
 (define-operand (name imm16z) (comment "immediate value - zero extd") (attrs) 
   (type h-uint) (index f-imm16u) (handlers (parse "imm16") (print "dollarhex")))
-(define-operand (name imm16o) (comment "immediate value") (attrs) 
-  (type h-uint) (index f-imm16s) (handlers (parse "imm16") (print "dollarhex")))
+(define-operand (name imm16o) (comment "immediate value") (attrs PCREL-ADDR
+  (type h-uint) (index f-imm16s) (handlers (parse "imm16") (print "pcrel")))
 
 ; Operands for MorphoSys Instructions
 
 (define-operand (name fbincr)  (comment "fb incr") (attrs)
   (type h-uint) (index f-fbincr) (handlers (print "dollarhex")))
 
+; For the ms2 insns
+(define-operand (name loopsize) (comment "immediate value")
+  (attrs (MACH ms2) PCREL-ADDR)
+  (type h-uint) (index f-loopo) (handlers (parse "loopsize") (print "pcrel")))
+(define-operand (name imm16l) (comment "immediate value")
+  (attrs (MACH ms2))
+  (type h-uint) (index f-imm16l) (handlers (print "dollarhex")))
+(define-operand (name rc3) (comment "rc3") (attrs (MACH ms2))
+  (type h-uint) (index f-rc3) (handlers (parse "rc") (print "dollarhex")))
+(define-operand (name cb1sel) (comment "cb1sel") (attrs (MACH ms2))
+  (type h-uint) (index f-cb1sel) (handlers (print "dollarhex")))
+(define-operand (name cb2sel) (comment "cb2sel") (attrs (MACH ms2))
+  (type h-uint) (index f-cb2sel) (handlers (print "dollarhex")))
+(define-operand (name cb1incr) (comment "cb1incr") (attrs (MACH ms2))
+  (type h-sint) (index f-cb1incr) (handlers (print "dollarhex")))
+(define-operand (name cb2incr) (comment "cb2incr") (attrs (MACH ms2))
+  (type h-sint) (index f-cb2incr) (handlers (print "dollarhex")))
+
 ; Probaby won't need most of these.
 (define-pmacro r0    (reg h-spr #x0))
 (define-pmacro r1    (reg h-spr #x01))
 )
 
 (dni mul "MUL DstReg, SrcReg1, SrcReg2"
-     (MACHMS1-003 AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2)
+     ((MACH ms1-003,ms2) AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2)
      "mul $frdrrr,$frsr1,$frsr2"
      (+ MSYS_NO OPC_MUL IMM_NO frsr1 frsr2 frdrrr (f-uu12 0))
      (sequence((HI op1) (HI op2))
 )
 
 (dni muli "MULI DstReg, SrcReg1, UnsImm"
-     (MACHMS1-003 AL-INSN USES-FRDR USES-FRSR1)
+     ((MACH ms1-003,ms2) AL-INSN USES-FRDR USES-FRSR1)
      "muli $frdr,$frsr1,#$imm16"
      (+ MSYS_NO OPC_MUL IMM_YES frsr1 frdr imm16)
      (sequence((HI op1) (HI op2))
 )
 
 (dni jal "JAL DstReg, SrcReg1"
-     (BR-INSN DELAY-SLOT BR-INSN USES-FRDR USES-FRSR1)
+     (BR-INSN DELAY-SLOT BR-INSN USES-FRDR USES-FRSR1 JAL-HAZARD)
      "jal $frdrrr,$frsr1"
      (+ MSYS_NO OPC_JAL IMM_NO frsr1 (f-uu4a 0) frdrrr (f-uu12 0))
      (sequence()
 )
 
 (dni dbnz "DBNZ SrcReg1, label"
-     (MACHMS1-003 BR-INSN DELAY-SLOT USES-FRSR1)
+     ((MACH ms1-003,ms2) BR-INSN DELAY-SLOT USES-FRSR1)
      "dbnz $frsr1,$imm16o"
      (+ MSYS_NO OPC_DBNZ IMM_YES frsr1 (f-uu4a 0) imm16o)
      (sequence()
 )
 
 (dni reti "RETI SrcReg1"
-     (DELAY-SLOT BR-INSN USES-FRSR1)
+     (DELAY-SLOT BR-INSN USES-FRSR1 JAL-HAZARD)
      "reti $frsr1"
      (+ MSYS_NO OPC_RETI IMM_NO frsr1 (f-uu4a 0) (f-uu16 0))
      (sequence()
 ; Cache Flush Instruction
 
 (dni iflush "IFLUSH"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "iflush"
      (+ MSYS_NO OPC_IFLUSH (f-imm 0) (f-uu24 0))
      (nop)
 ; MorphoSys Instructions
 
 (dni ldctxt "LDCTXT SRC1, SRC2, r/c, r/c#, context#"
-     ()
+     ((MACH ms1))
      "ldctxt $frsr1,$frsr2,#$rc,#$rcnum,#$contnum"
      (+ MSYS_YES MSOPC_LDCTXT (f-uu-2-25 0) frsr1 frsr2 rc rcnum (f-uu-3-11 0)
        contnum )
 )
 
 (dni ldfb "LDFB SRC1, byte#"
-     ()
+     ((MACH ms1))
      "ldfb $frsr1,$frsr2,#$imm16z"
      (+ MSYS_YES MSOPC_LDFB (f-uu-2-25 0) frsr1 frsr2 imm16z)
      (nop)
 )
 
 (dni stfb "STFB SRC1, SRC2, byte "
-     ()
+     ((MACH ms1))
      "stfb $frsr1,$frsr2,#$imm16z"
      (+ MSYS_YES MSOPC_STFB (f-uu-2-25 0) frsr1 frsr2 imm16z)
      (nop)
 )
 
 (dni fbcb "FBCB SRC1, RT/BR1/BR2/CS, B_all, B_r_c, r/c, CB/RB, cell, dup, ctx_disp"
-     ()
+     ((MACH ms1,ms1-003))
      "fbcb $frsr1,#$rbbc,#$ball,#$brc,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_FBCB rbbc frsr1 ball brc (f-uu-4-15 0) rc cbrb cell dup ctxdisp)
      (nop)
 ;; Issue 66262: The documenatation gives the wrong order for 
 ;;               the arguments to the WFBINC instruction.
 (dni wfbinc "WFBINC type, ccb/rcb, incr, all, c/r, length, rca_row, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "wfbinc #$rda,#$wr,#$fbincr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_WFBINC rda wr fbincr ball colnum length rownum1 rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni mwfbinc "MWFBINC mreg, type, ccb/rcb, incr, length, rca_row, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "mwfbinc $frsr2,#$rda,#$wr,#$fbincr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_MWFBINC rda wr fbincr frsr2 length rownum1 rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni wfbincr "WFBINCR ireg, type, ccb/rcb, all, c/r, length, rca_row, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "wfbincr $frsr1,#$rda,#$wr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_WFBINCR rda wr frsr1 ball colnum length rownum1 rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni mwfbincr "MWFBINCR ireg, mreg, type, ccb/rcb, length, rca_row, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "mwfbincr $frsr1,$frsr2,#$rda,#$wr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_MWFBINCR rda wr frsr1 frsr2 length rownum1 rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni fbcbincs "FBCBINCS             perm, all, c/r, cbs, incr, ccb/rcb, cdb/rdb, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "fbcbincs #$perm,#$a23,#$cr,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_FBCBINCS perm a23 cr cbs incr ccb cdb rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni mfbcbincs "MFBCBINCS              ireg, perm, cbs, incr, ccb/rcb, cdb/rdb, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "mfbcbincs $frsr1,#$perm,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_MFBCBINCS perm frsr1 cbs incr ccb cdb rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni fbcbincrs "FBCBINCRS           ireg, perm, all, c/r, cbs, ccb/rcb, cdb/rdb, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "fbcbincrs $frsr1,#$perm,#$ball,#$colnum,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_FBCBINCRS perm frsr1 ball colnum (f-uu-1-15 0) cbx ccb cdb rownum2 dup ctxdisp)
      (nop)
 )
 
 (dni mfbcbincrs "MFBCBINCRS ireg, mreg, perm, cbs, ccb/rcb, cdb/rdb, word, dup, ctxt_disp"
-     (MACHMS1-003)
+     ((MACH ms1-003,ms2))
      "mfbcbincrs $frsr1,$frsr2,#$perm,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp"
      (+ MSYS_YES MSOPC_MFBCBINCRS perm frsr1 frsr2 (f-uu-1-15 0) cbx ccb cdb rownum2 dup ctxdisp)
      (nop)
      ()
 )
+
+; MS2 instructions
+(dni loop "LOOP SrcReg1, label"
+     ((MACH ms2) DELAY-SLOT USES-FRSR1)
+     "loop $frsr1,$loopsize"
+     (+ MSYS_NO OPC_LOOP IMM_NO frsr1 (f-uu4a 0) (f-uu8 0) loopsize)
+     (nop)      ;; to be filled in
+     ()
+)
+
+(dni loopi "LOOPI niter, label"
+     ((MACH ms2) DELAY-SLOT)
+     "loopi #$imm16l,$loopsize"
+     (+ MSYS_NO OPC_LOOP IMM_YES imm16l loopsize)
+     (nop)      ;; to be filled in
+     ()
+)
+
+(dni dfbc "dfbc cb1sel,cb2sel,cb1inc,cb2inc,dr/c,cr/c,ctxdisp"
+     ((MACH ms2))
+     "dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp"
+     (+ MSYS_YES MSOPC_LDCTXT cb1sel cb2sel cb1incr cb2incr rc3 rc2 ctxdisp)
+     (nop)
+     ()
+)
+
+(dni dwfb "dwfb cb1sel,cb2sel,cb1inc,cb2inc,cr/c,ctxdisp"
+     ((MACH ms2))
+     "dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp"
+     (+ MSYS_YES MSOPC_LDFB cb1sel cb2sel cb1incr cb2incr (f-uu1 0) rc2 ctxdisp)
+     (nop)
+     ()
+)
+
+(dni fbwfb "fbwfb cb1sel,cb2sel,cb1inc,cb2inc,r0/1,cr/c,ctxdisp"
+     ((MACH ms2))
+     "fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp"
+     (+ MSYS_YES MSOPC_STFB cb1sel cb2sel cb1incr cb2incr rc3 rc2 ctxdisp)
+     (nop)
+     ()
+)
+
+(dni dfbr "dfbr cb1sel,cb2sel,reg,W/O1,W/O2,mode,cr/c,ctxdisp"
+     ((MACH ms2) USES-FRSR2)
+     "dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp"
+     (+ MSYS_YES MSOPC_FBCB cb1sel cb2sel frsr2 length rownum1 rownum2 rc2 ctxdisp)
+     (nop)
+     ()
+)
index 3655f14d458ef219816a0a904ca9323e446db189..e3b32db7b94b5beb5064831ae9a1c5ee12d63878 100644 (file)
@@ -100,6 +100,31 @@ signed_out_of_bounds (long val)
   return 0;
 }
 
+static const char *
+parse_loopsize (CGEN_CPU_DESC cd,
+               const char **strp,
+               int opindex,
+               void *arg)
+{
+  signed long * valuep = (signed long *) arg;
+  const char *errmsg;
+  bfd_reloc_code_real_type code = BFD_RELOC_NONE;
+  enum cgen_parse_operand_result result_type;
+  bfd_vma value;
+
+  /* Is it a control transfer instructions?  */ 
+  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_LOOPSIZE)
+    {
+      code = BFD_RELOC_MS1_PCINSN8;
+      errmsg = cgen_parse_address (cd, strp, opindex, code,
+                                   & result_type, & value);
+      *valuep = value;
+      return errmsg;
+    }
+
+  abort ();
+}
+
 static const char *
 parse_imm16 (CGEN_CPU_DESC cd,
             const char **strp,
@@ -129,7 +154,9 @@ parse_imm16 (CGEN_CPU_DESC cd,
 
   /* If it's not a control transfer instruction, then
      we have to check for %OP relocating operators.  */
-  if (strncmp (*strp, "%hi16", 5) == 0)
+  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_IMM16L)
+    ;
+  else if (strncmp (*strp, "%hi16", 5) == 0)
     {
       *strp += 5;
       code = BFD_RELOC_HI16;
@@ -411,6 +438,7 @@ parse_type (CGEN_CPU_DESC cd,
 
 /* -- dis.c */
 static void print_dollarhex (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
+static void print_pcrel (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
 
 static void
 print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
@@ -428,6 +456,16 @@ print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     print_normal (cd, dis_info, value, attrs, pc, length);
 }
 
+static void
+print_pcrel (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+            void * dis_info,
+            long value,
+            unsigned int attrs ATTRIBUTE_UNUSED,
+            bfd_vma pc ATTRIBUTE_UNUSED,
+            int length ATTRIBUTE_UNUSED)
+{
+  print_address (cd, dis_info, value + pc, attrs, pc, length);
+}
 
 /* -- */
 
index e8d04ef3b4d8ce65919b274b276ac58b8cdfcbef..5bc4e768bc57d4c292307e9b3c86861e006d722d 100644 (file)
+2005-11-16  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * NEWS (6.4): Mention $argc.
+
+2005-11-15  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * NEWS: Add --batch-silent, --return-child-result, and --eval-command
+       options to the 6.4 section.
+
+2005-11-15  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * cli/cli-script.c: Include gdb_assert.h.
+       (locate_arg): Detect $argc.
+       (insert_args): Substitute $argc.
+       * Makefile.in (cli-script.o): Add dependency on gdb_assert.h.
+
+2005-11-14  James E Wilson  <wilson@specifix.com>
+
+       PR 2024
+       * dwarf2loc.c (dwarf_expr_frame_base): Use get_frame_address_in_block
+       instead of get_frame_pc.
+       (loclist_read_variable): Likewise.
+
+2005-11-14  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * MAINTAINERS (Write After Approval): Add myself to the list.
+
+2005-11-14  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * thread.c (_initialize_thread): Correct the 'thread apply' help
+       message.
+
+2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * elfread.c (elf_symtab_read): Remove if (1) and reindent.
+
+2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * arm-linux-tdep.c (eabi_linux_arm_le_breakpoint)
+       (eabi_linux_arm_be_breakpoint): New variables.
+       (arm_linux_init_abi): Use them.
+
+2005-11-11  Michael Snyder  <msnyder@redhat.com>
+
+       * inftarg.c (child_wait): Delete unused local variable.
+
+2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>
+
+       PR tui/1995
+       * tui/tui-command.c (tui_dispatch_ctrl_char): Handle CTRL-L even if the
+       focus is on the command window.
+
+2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>
+
+       * tui/tui-win.c (tui_update_gdb_sizes): Use tui_term_width() and
+       tui_term_height() to restore the terminal size when leaving the
+       TUI mode.
+
+2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>
+
+       * m68hc11-tdep.c (m68hc11_pseudo_register_write): Use gdb_byte
+       for buffers.
+       (m68hc11_pseudo_register_read): Likewise.
+       (m68hc11_return_value): Likewise.
+       (m68hc11_frame_prev_register): Likewise.
+       (m68hc11_frame_align): Remove as its seems no longer necessary.
+       (m68hc11_gdbarch_init): Don't install frame_align handler.
+       (m68hc11_scan_prologue): Fix crash that occurred when called from
+       m68hc11_skip_prologue
+
+2005-11-10  Mark Kettenis  <kettenis@gnu.org>
+
+       * MAINTAINERS: Mark m68k-elf, sparc-elf and vax-netbsd as no
+       longer broken.
+
+2005-11-09  Randolph Chung <tausq@debian.org>
+
+       * hppa-linux-nat.c (_initialize_hppa_linux_nat): Use
+       hppa_linux_{store,fetch}_inferior_registers instead of
+       arm_linux_{store,fetch}_inferior_registers.
+
+2005-11-08  Kei Sakamoto  <sakamoto.kei@renesas.com>
+
+       * remote-m32r-sdi.c: Update copyright years.
+       (m32r_resume): Write DBT at word-aligned addresses.
+       (m32r_wait): Use SDI_WRITE_MEMORY to remove DBT.
+
+2005-11-08  Kei Sakamoto  <sakamoto.kei@renesas.com>
+
+       * m32r-linux-tdep.c (linux_sigtramp_code): Use 'gdb_byte' instead
+       of 'unsigned char'.
+       (m32r_linux_sigtramp_start): Likewise.
+       (linux_rt_sigtramp_code): Likewise.
+       (m32r_linux_rt_sigtramp_start): Likewise.
+       (m32r_linux_sigtramp_frame_prev_register): Use 'gdb_byte *' instead
+       of 'void *'.
+       * m32r-tdep.c (m32r_memory_insert_breakpoint): Use 'gdb_byte'
+       instead of 'char'.
+       (m32r_memory_remove_breakpoint): Likewise.
+       (m32r_breakpoint_from_pc): Likewise.
+       (m32r_store_return_value): Likewise.
+       (decode_prologue): Likewise.
+       (m32r_push_dummy_call): Likewise.
+       (m32r_return_value): Use 'gdb_byte *' instead of 'void *'.
+       * remote-m32r-sdi.c (m32r_xfer_memory): Use 'gdb_byte' instead of
+       'char'.
+
+2005-11-07  Kevin Buettner  <kevinb@redhat.com>
+
+       * ia64-tdep.c (floatformat_valid): Change type of `from' from
+       `const char *' to `const void *'.
+
+2005-11-07  Kevin Buettner  <kevinb@redhat.com>
+
+       * frv-linux-tdep.c (frv_linux_sigtrapm_frame_prev_register): Change
+       type of `valuep' argument to `gdb_byte *'.
+       * frv-tdep.c (frv_pseudo_register_write): Change type of `buffer'
+       argument to `gdb_byte *'.
+       (frv_extract_return_value): Change type of `valbuf' argument to
+       `gdb_byte *'.
+       (frv_store_return_value): Likewise.
+       (frv_frame_prev_register): Change type of `bufferp' argument to
+       `gdb_byte *'
+       * solib-frv.c (ext_Elf32_Half, ext_Elf32_Addr, ext_Elf32_Word)
+       (ext_ptr): Change base type from `unsigned char' to `gdb_byte'.  Adjust
+       calls to extract_unsigned_integer which use struct members declared
+       with these array types to not try to take the address of those
+       members.
+       (fetch_loadmap, frv_current_sos): Change cast in target_read_memory()
+       calls from `char *' to `gdb_byte *'.
+       (lm_base): Change base type of `buf' from `char' to `gdb_byte'.
+       (enable_break2): Change type of `buf' from `char *' to `gdb_byte *'.
+       Change base type of `addr_buf' from `char' to `gdb_byte'.
+       (find_canonical_descriptor_in_load_object): Change base type of `buf'
+       from `char' to `gdb_byte'.
+
+2005-11-07  Paul Gilliam  <pgilliam@us.ibm.com
+
+       * ppc-sysv-tdep.c (ppc64_sysv_abi_return_value): Copy code from
+       ppc_sysv_abi_return_value() to handle a vector return value.
+
+2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * main.h (return_child_result, return_child_result_value): Declare.
+       * infrun.c: Include main.h.
+       (print_stop_reason): Remove declaration of return_child_result_value.
+       * top.c: Include main.h.
+       (quit_force): Remove declarations of return_child_result_value and
+       return_child_result.
+       * Makefile.in (top.o, infrun.o): Add main.h to dependencies.
+
+2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * Makefile.in (tui-winsource.o): Add gdb_assert.h to dependencies.
+
+2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * main.c (captured_main): Define struct cmdarg. Change type of cmdarg.
+       Add new options --eval-command and alias -ex.
+       Adjust --command to use the new struct cmdarg.
+       Execute commands given with --eval-command.
+       (print_gdb_help): Add new options --eval-command, -ex and mention -x.
+
+2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * main.c (main): Use INTERP_TUI instead of "tui".
+       Set interpreter to INTERP_INSIGHT when '-w' given.
+       * interps.h (INTERP_INSIGHT): New define.
+       * tui/tui-interp.c (_initialize_tui_interp): Use INTERP_TUI instead
+       of "tui".
+
+2005-11-04  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * infrun.c (print_stop_reason): Set return_child_result_value on exit.
+       * main.c (return_child_result): New variable.
+       (return_child_result_value): Likewise.
+       (captured_main): Add option --return-child-result.
+       Replace call to target_detach and exit (in batch mode) with quit_force.
+       (print_gdb_help): Add option --return-child-result.
+       * top.c (quit_force): Return child result if appropriate.
+
+2005-11-03  Wu Zhou  <woodzltc@cn.ibm.com>
+
+        Checked in by Elena Zannoni  <ezannoni@redhat.com>
+
+       * dwarf2read.c (read_structure_type): Add IBM XL C++
+       specific code to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE
+       of a virtual class if a field named "__vfp" is found. 
+
+2005-11-03  Jim Blandy  <jimb@redhat.com>
+
+        Checked in by Elena Zannoni  <ezannoni@redhat.com>     
+
+       * dwarf2read.c (file_full_name): Cope with file numbers that are
+       out of range for the given line header.
+
 2005-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
 
+        Checked in by Elena Zannoni  <ezannoni@redhat.com>
+
+       * elfread.c (elf_symtab_read): Add number_of_symbols and
+       symbol_table as arguments.  Do not load the symbol table
+       here.
+       (elf_symfile_read): Load the static and dynamic symbol tables
+       here, before calling elf_symtab_read.  Also load any synthetic
+       symbols and process those.
+       
+2005-11-03 Andrew Cagney  <cagney@gnu.org>
+
+       Checked in by Elena Zannoni  <ezannoni@redhat.com>
+
+       * dwarf2loc.c (dwarf2_evaluate_loc_desc): Handle DW_OP_piece
+       reads.
+
+2006-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
+
        * linux-nat.c (linux_nat_resume): Add more debugging messages.  Do
        not short-circuit resuming all threads if the signal will be ignored
        in linux_nat_wait.
 
-2005-11-02  Joel Brobecker  <brobecker@adacore.com>
+2005-11-02  Andrew Stubbs  <andrew.stubbs@st.com>
 
-       * NEWS: Changes sinces GDB 6.3 are now labled as changes in GDB 6.4.
-       * README: Update README for GDB 6.4 release by replacing all 6.3
-       occurrences with 6.4.
+       * monitor.c (monitor_xfer_memory): Change char to gdb_byte.
+       (monitor_insert_breakpoint): Likewise.
+       (monitor_remove_breakpoint): Likewise.
+       * remote-e7000.c (e7000_xfer_inferior_memory): Likewise.
+       * sh-tdep.c (sh_return_value_nofpu): Change void to gdb_byte.
+       (sh_return_value_fpu): Likewise.
+       (sh_pseudo_register_read): Likewise.
+       (sh_pseudo_register_write): Likewise.
+       (sh_frame_prev_register): Likewise.
+       * sh64-tdep.c (sh64_extract_return_value): Change char to gdb_byte.
+       (sh64_return_value): Change void to gdb_byte.
+       (sh64_pseudo_register_read): Likewise.
+       (sh64_pseudo_register_write): Likewise.
+       (sh64_frame_prev_register): Likewise.
 
-2005-11-02  Joel Brobecker  <brobecker@adacore.com>
+2005-11-01  Joel Brobecker  <brobecker@adacore.com>
 
-       * version.in: Bump version number to 6.3.90 in preparation for
-       the 6.4 release.
+       * event-top.c (gdb_setup_readline): Add missing type in extern
+       declaration.
 
 2005-11-01  Paul Gilliam  <pgilliam@us.ibm.com>
 
        * eval.c (evaluate_struct_tuple): Use strcmp instead of
        DEPRECATED_STREQ.
 
+2005-06-27  Michael Snyder  <msnyder@redhat.com>
+
+       * mn10300-linux-tdep.c: New file.  OSABI sniffer at end.
+       * Makefile.in: Add rule for mn10300-linux-tdep.c.
+       * config/mn10300/linux.mt: Add mn10300-linux-tdep.c to tdep files.
+
 2005-06-27  Michael Snyder  <msnyder@redhat.com>
 
        * config/mn10300/linux.mt: New file.
index 2fa3e13ee25ebf94d0d1d463c2c91b7f51daaa7e..9c41797f1263fd5b6bee59bdefb1aac4118a3937 100644 (file)
@@ -120,8 +120,7 @@ the native maintainer when resolving ABI issues.
        m68hc11         --target=m68hc11-elf ,-Werror ,
                        Stephane Carrez         stcarrez@nerim.fr
 
-       m68k            --target=m68k-elf broken
-                       (opcodes/m68k-dis.c:338 longjmp clober)
+       m68k            --target=m68k-elf ,-Werror
 
        m88k            --target=m88k-openbsd ,-Werror
                        Mark Kettenis           kettenis@gnu.org
@@ -148,13 +147,11 @@ the native maintainer when resolving ABI issues.
        sh              --target=sh-elf ,-Werror
                        --target=sh64-elf ,-Werror
 
-       sparc           --target=sparc-elf broken
-                       (bfd/elfxx-sparc:512 bfd_elf64_swap_reloca_out undef)
+       sparc           --target=sparc-elf ,-Werror
 
        v850            --target=v850-elf ,-Werror
 
-       vax             --target=vax-netbsd broken
-                       (opcodes/vax-dis.c:224 longjmp clober)
+       vax             --target=vax-netbsd ,-Werror
 
        x86-64          --target=x86_64-linux-gnu ,-Werror
 
@@ -396,6 +393,7 @@ Stephen P. Smith                            ischis2@cox.net
 Jackie Smith Cashion                           jsmith@redhat.com
 Michael Snyder                                 msnyder@redhat.com
 Petr Sorfa                                     petrs@caldera.com
+Andrew Stubbs                                  andrew.stubbs@st.com
 Ian Lance Taylor                               ian@airs.com
 Gary Thomas                                    gthomas@redhat.com
 Jason Thorpe                                   thorpej@netbsd.org
index 8d113523df4f1260b63fd38f38cc175bb6f2520a..8d8a79e6abb39c8ae5bda779eae73a349397845d 100644 (file)
@@ -2133,7 +2133,7 @@ infrun.o: infrun.c $(defs_h) $(gdb_string_h) $(symtab_h) $(frame_h) \
        $(gdbcore_h) $(gdbcmd_h) $(cli_script_h) $(target_h) $(gdbthread_h) \
        $(annotate_h) $(symfile_h) $(top_h) $(inf_loop_h) $(regcache_h) \
        $(value_h) $(observer_h) $(language_h) $(solib_h) $(gdb_assert_h) \
-       $(mi_common_h)
+       $(mi_common_h) $(main_h)
 inftarg.o: inftarg.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
        $(gdbcore_h) $(command_h) $(gdb_stat_h) $(observer_h) $(gdb_wait_h) \
        $(inflow_h)
@@ -2689,7 +2689,7 @@ top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \
        $(annotate_h) $(completer_h) $(top_h) $(version_h) $(serial_h) \
        $(doublest_h) $(gdb_assert_h) $(readline_h) $(readline_history_h) \
        $(event_top_h) $(gdb_string_h) $(gdb_stat_h) $(ui_out_h) \
-       $(cli_out_h)
+       $(cli_out_h) $(main_h)
 tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(gdbtypes_h) \
        $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) $(language_h) \
        $(gdb_string_h) $(inferior_h) $(tracepoint_h) $(remote_h) \
@@ -2807,7 +2807,7 @@ cli-logging.o: $(srcdir)/cli/cli-logging.c $(defs_h) $(gdbcmd_h) $(ui_out_h) \
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-logging.c
 cli-script.o: $(srcdir)/cli/cli-script.c $(defs_h) $(value_h) $(language_h) \
        $(ui_out_h) $(gdb_string_h) $(exceptions_h) $(top_h) $(cli_cmds_h) \
-       $(cli_decode_h) $(cli_script_h)
+       $(cli_decode_h) $(cli_script_h) $(gdb_assert_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-script.c
 cli-setshow.o: $(srcdir)/cli/cli-setshow.c $(defs_h) $(readline_tilde_h) \
        $(value_h) $(gdb_string_h) $(ui_out_h) $(cli_decode_h) $(cli_cmds_h) \
@@ -3139,7 +3139,7 @@ tui-winsource.o: $(srcdir)/tui/tui-winsource.c $(defs_h) $(symtab_h) \
        $(frame_h) $(breakpoint_h) $(value_h) $(source_h) $(tui_h) \
        $(tui_data_h) $(tui_stack_h) $(tui_win_h) $(tui_wingeneral_h) \
        $(tui_winsource_h) $(tui_source_h) $(tui_disasm_h) $(gdb_string_h) \
-       $(gdb_curses_h)
+       $(gdb_curses_h) $(gdb_assert_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-winsource.c
 
 ### end of the gdb Makefile.in.
index 9eec2efa9ca5a0cfac88881479d67851473c9235..84dc82792295fece7df16945d736da86ac465a80 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -1,7 +1,7 @@
                What has changed in GDB?
             (Organized release by release)
 
-*** Changes in GDB 6.4
+*** Changes since GDB 6.3
 
 * New native configurations
 
@@ -12,6 +12,16 @@ OpenBSD/mips64                       mips64-*-openbsd*
 
 Morpho Technologies ms1                ms1-elf
 
+* New command line options
+
+--batch-silent                 As for --batch, but totally silent.
+--return-child-result          The debugger will exist with the same value
+                               the child (debugged) program exited with.
+--eval-command COMMAND, -ex COMMAND
+                               Execute a single GDB CLI command. This may be
+                               specified multiple times and in conjunction
+                               with the --command (-x) option.
+
 * Deprecated commands removed
 
 The following commands, that were deprecated in 2000, have been
@@ -60,6 +70,12 @@ behavior.
 
 GDB now supports the not-quite-ieee VAX F and D floating point formats.
 
+* User-defined command support
+
+In addition to using $arg0..$arg9 for argument passing, it is now possible
+to use $argc to determine now many arguments have been passed.  See the
+section on user-defined commands in the user manual for more information.
+
 *** Changes in GDB 6.3:
 
 * New command line option
index fd2fe203ea44efc2cbdc26f4fded6bedf28eaba7..801d0279be373325691391bd32977b2f0f925ca0 100644 (file)
@@ -1,4 +1,4 @@
-                    README for gdb-6.4 release
+                    README for gdb-6.3 release
                Updated 8, November, 2004 by Andrew Cagney
 
 This is GDB, the GNU source-level debugger.
@@ -20,7 +20,7 @@ Unpacking and Installation -- quick overview
    In this release, the GDB debugger sources, the generic GNU include
 files, the BFD ("binary file description") library, the readline
 library, and other libraries all have directories of their own
-underneath the gdb-6.4 directory.  The idea is that a variety of GNU
+underneath the gdb-6.3 directory.  The idea is that a variety of GNU
 tools can share a common copy of these things.  Be aware of variation
 over time--for example don't try to build gdb with a copy of bfd from
 a release other than the gdb release (such as a binutils release),
@@ -29,8 +29,8 @@ Configuration scripts and makefiles exist to cruise up and down this
 directory tree and automatically build all the pieces in the right
 order.
 
-   When you unpack the gdb-6.4.tar.gz file, you'll find a directory
-called `gdb-6.4', which contains:
+   When you unpack the gdb-6.3.tar.gz file, you'll find a directory
+called `gdb-6.3', which contains:
 
   COPYING       config-ml.in  gettext.m4   ltconfig        sim
   COPYING.LIB   config.guess  include      ltmain.sh       src-release
@@ -43,7 +43,7 @@ called `gdb-6.4', which contains:
 
 You can build GDB right in the source directory:
 
-      cd gdb-6.4
+      cd gdb-6.3
       ./configure
       make
       cp gdb/gdb /usr/local/bin/gdb    (or wherever you want)
@@ -57,25 +57,25 @@ You can build GDB in any empty build directory:
 
       mkdir build
       cd build
-      <full path to your sources>/gdb-6.4/configure
+      <full path to your sources>/gdb-6.3/configure
       make
       cp gdb/gdb /usr/local/bin/gdb    (or wherever you want)
 
 (Building GDB with DJGPP tools for MS-DOS/MS-Windows is slightly
-different; see the file gdb-6.4/gdb/config/djgpp/README for details.)
+different; see the file gdb-6.3/gdb/config/djgpp/README for details.)
 
    This will configure and build all the libraries as well as GDB.  If
 `configure' can't determine your system type, specify one as its
 argument, e.g., `./configure sun4' or `./configure decstation'.
 
-   Make sure that your 'configure' line ends in 'gdb-6.4/configure':
+   Make sure that your 'configure' line ends in 'gdb-6.3/configure':
 
-      /berman/migchain/source/gdb-6.4/configure      # RIGHT
-      /berman/migchain/source/gdb-6.4/gdb/configure  # WRONG
+      /berman/migchain/source/gdb-6.3/configure      # RIGHT
+      /berman/migchain/source/gdb-6.3/gdb/configure  # WRONG
 
    The gdb package contains several subdirectories, such as 'gdb',
 'bfd', and 'readline'.  If your 'configure' line ends in
-'gdb-6.4/gdb/configure', then you are configuring only the gdb
+'gdb-6.3/gdb/configure', then you are configuring only the gdb
 subdirectory, not the whole gdb package.  This leads to build errors
 such as:
 
@@ -106,7 +106,7 @@ documentation and TeX (or `texi2roff') to typeset the printed version.
 
    GDB includes an already formatted copy of the on-line Info version
 of this manual in the `gdb/doc' subdirectory.  The main Info file is
-`gdb-6.4/gdb/doc/gdb.info', and it refers to subordinate files
+`gdb-6.3/gdb/doc/gdb.info', and it refers to subordinate files
 matching `gdb.info*' in the same directory.  If necessary, you can
 print out these files, or read them with any editor; but they are
 easier to read using the `info' subsystem in GNU Emacs or the
@@ -118,7 +118,7 @@ Info formatting programs, such as `texinfo-format-buffer' or
 `makeinfo'.
 
    If you have `makeinfo' installed, and are in the top level GDB
-source directory (`gdb-6.4', in the case of version 6.4), you can make
+source directory (`gdb-6.3', in the case of version 6.3), you can make
 the Info file by typing:
 
       cd gdb/doc
@@ -127,7 +127,7 @@ the Info file by typing:
    If you want to typeset and print copies of this manual, you need
 TeX, a program to print its DVI output files, and `texinfo.tex', the
 Texinfo definitions file.  This file is included in the GDB
-distribution, in the directory `gdb-6.4/texinfo'.
+distribution, in the directory `gdb-6.3/texinfo'.
 
    TeX is a typesetting program; it does not print files directly, but
 produces output files called DVI files.  To print a typeset document,
@@ -141,11 +141,11 @@ without any extension or a `.dvi' extension.
 This file tells TeX how to typeset a document written in Texinfo
 format.  On its own, TeX cannot read, much less typeset a Texinfo file.
  `texinfo.tex' is distributed with GDB and is located in the
-`gdb-6.4/texinfo' directory.
+`gdb-6.3/texinfo' directory.
 
    If you have TeX and a DVI printer program installed, you can typeset
 and print this manual.  First switch to the the `gdb' subdirectory of
-the main source directory (for example, to `gdb-6.4/gdb') and then type:
+the main source directory (for example, to `gdb-6.3/gdb') and then type:
 
       make doc/gdb.dvi
 
@@ -168,43 +168,43 @@ preparing GDB for installation; you can then use `make' to build the
 a single directory, whose name is usually composed by appending the
 version number to `gdb'.
 
-   For example, the GDB version 6.4 distribution is in the `gdb-6.4'
+   For example, the GDB version 6.3 distribution is in the `gdb-6.3'
 directory.  That directory contains:
 
-`gdb-6.4/{COPYING,COPYING.LIB}'
+`gdb-6.3/{COPYING,COPYING.LIB}'
      Standard GNU license files.  Please read them.
 
-`gdb-6.4/bfd'
+`gdb-6.3/bfd'
      source for the Binary File Descriptor library
 
-`gdb-6.4/config*'
+`gdb-6.3/config*'
      script for configuring GDB, along with other support files
 
-`gdb-6.4/gdb'
+`gdb-6.3/gdb'
      the source specific to GDB itself
 
-`gdb-6.4/include'
+`gdb-6.3/include'
      GNU include files
 
-`gdb-6.4/libiberty'
+`gdb-6.3/libiberty'
      source for the `-liberty' free software library
 
-`gdb-6.4/opcodes'
+`gdb-6.3/opcodes'
      source for the library of opcode tables and disassemblers
 
-`gdb-6.4/readline'
+`gdb-6.3/readline'
      source for the GNU command-line interface
      NOTE:  The readline library is compiled for use by GDB, but will
      not be installed on your system when "make install" is issued.
 
-`gdb-6.4/sim'
+`gdb-6.3/sim'
      source for some simulators (ARM, D10V, SPARC, M32R, MIPS, PPC, V850, etc)
 
-`gdb-6.4/texinfo'
+`gdb-6.3/texinfo'
      The `texinfo.tex' file, which you need in order to make a printed
      manual using TeX.
 
-`gdb-6.4/etc'
+`gdb-6.3/etc'
      Coding standards, useful files for editing GDB, and other
      miscellanea.
 
@@ -214,14 +214,14 @@ MS-DOS/MS-Windows are in the file gdb/config/djgpp/README.
 
    The simplest way to configure and build GDB is to run `configure'
 from the `gdb-VERSION-NUMBER' source directory, which in this example
-is the `gdb-6.4' directory.
+is the `gdb-6.3' directory.
 
    First switch to the `gdb-VERSION-NUMBER' source directory if you are
 not already in it; then run `configure'.
 
    For example:
 
-      cd gdb-6.4
+      cd gdb-6.3
       ./configure
       make
 
@@ -237,8 +237,8 @@ you may need to run `sh' on it explicitly:
       sh configure
 
    If you run `configure' from a directory that contains source
-directories for multiple libraries or programs, such as the `gdb-6.4'
-source directory for version 6.4, `configure' creates configuration
+directories for multiple libraries or programs, such as the `gdb-6.3'
+source directory for version 6.3, `configure' creates configuration
 files for every directory level underneath (unless you tell it not to,
 with the `--norecursion' option).
 
@@ -246,10 +246,10 @@ with the `--norecursion' option).
 directories in the GDB distribution, if you only want to configure that
 subdirectory; but be sure to specify a path to it.
 
-   For example, with version 6.4, type the following to configure only
+   For example, with version 6.3, type the following to configure only
 the `bfd' subdirectory:
 
-      cd gdb-6.4/bfd
+      cd gdb-6.3/bfd
       ../configure
 
    You can install `gdb' anywhere; it has no hardwired paths. However,
@@ -278,13 +278,13 @@ directory.  If the path to `configure' would be the same as the
 argument to `--srcdir', you can leave out the `--srcdir' option; it
 will be assumed.)
 
-   For example, with version 6.4, you can build GDB in a separate
+   For example, with version 6.3, you can build GDB in a separate
 directory for a Sun 4 like this:
 
-     cd gdb-6.4
+     cd gdb-6.3
      mkdir ../gdb-sun4
      cd ../gdb-sun4
-     ../gdb-6.4/configure
+     ../gdb-6.3/configure
      make
 
    When `configure' builds a configuration using a remote source
@@ -305,8 +305,8 @@ called `configure' (or one of its subdirectories).
 
    The `Makefile' that `configure' generates in each source directory
 also runs recursively.  If you type `make' in a source directory such
-as `gdb-6.4' (or in a separate configured directory configured with
-`--srcdir=PATH/gdb-6.4'), you will build all the required libraries,
+as `gdb-6.3' (or in a separate configured directory configured with
+`--srcdir=PATH/gdb-6.3'), you will build all the required libraries,
 and then build GDB.
 
    When you have multiple hosts or targets configured in separate
@@ -349,7 +349,7 @@ you can use it to test your guesses on abbreviations--for example:
      Invalid configuration `i786v': machine `i786v' not recognized
 
 `config.sub' is also distributed in the GDB source directory
-(`gdb-6.4', for version 6.4).
+(`gdb-6.3', for version 6.3).
 
 
 `configure' options
@@ -479,7 +479,7 @@ As an alternative, the bug report can be submitted, via e-mail, to the
 address "bug-gdb@gnu.org".
 
    When submitting a bug, please include the GDB version number (e.g.,
-gdb-6.4), and how you configured it (e.g., "sun4" or "mach386 host,
+gdb-6.3), and how you configured it (e.g., "sun4" or "mach386 host,
 i586-intel-synopsys target").  Since GDB now supports so many
 different configurations, it is important that you be precise about
 this.  If at all possible, you should include the actual banner that
@@ -534,17 +534,17 @@ ftp://sources.redhat.com/pub/dejagnu/ will contain a recent snapshot.
 Once DejaGNU is installed, you can run the tests in one of the
 following ways:
 
-  (1)  cd gdb-6.4
+  (1)  cd gdb-6.3
        make check-gdb
 
 or
 
-  (2)  cd gdb-6.4/gdb
+  (2)  cd gdb-6.3/gdb
        make check
 
 or
 
-  (3)  cd gdb-6.4/gdb/testsuite
+  (3)  cd gdb-6.3/gdb/testsuite
        make site.exp   (builds the site specific file)
        runtest -tool gdb GDB=../gdb    (or GDB=<somepath> as appropriate)
 
index e6ce06f56e95d2eebe4355e377127083ef1d7eb4..98786f63764b45110b695f1d64e0bc73e0617f1b 100644 (file)
@@ -45,6 +45,19 @@ static const char arm_linux_arm_le_breakpoint[] = { 0x01, 0x00, 0x9f, 0xef };
 
 static const char arm_linux_arm_be_breakpoint[] = { 0xef, 0x9f, 0x00, 0x01 };
 
+/* However, the EABI syscall interface (new in Nov. 2005) does not look at
+   the operand of the swi if old-ABI compatibility is disabled.  Therefore,
+   use an undefined instruction instead.  This is supported as of kernel
+   version 2.5.70 (May 2003), so should be a safe assumption for EABI
+   binaries.  */
+
+static const char eabi_linux_arm_le_breakpoint[] = { 0xf0, 0x01, 0xf0, 0xe7 };
+
+static const char eabi_linux_arm_be_breakpoint[] = { 0xe7, 0xf0, 0x01, 0xf0 };
+
+/* All the kernels which support Thumb support using a specific undefined
+   instruction for the Thumb breakpoint.  */
+
 static const char arm_linux_thumb_be_breakpoint[] = {0xde, 0x01};
 
 static const char arm_linux_thumb_le_breakpoint[] = {0x01, 0xde};
@@ -329,12 +342,18 @@ arm_linux_init_abi (struct gdbarch_info info,
   tdep->lowest_pc = 0x8000;
   if (info.byte_order == BFD_ENDIAN_BIG)
     {
-      tdep->arm_breakpoint = arm_linux_arm_be_breakpoint;
+      if (tdep->arm_abi == ARM_ABI_AAPCS)
+       tdep->arm_breakpoint = eabi_linux_arm_be_breakpoint;
+      else
+       tdep->arm_breakpoint = arm_linux_arm_be_breakpoint;
       tdep->thumb_breakpoint = arm_linux_thumb_be_breakpoint;
     }
   else
     {
-      tdep->arm_breakpoint = arm_linux_arm_le_breakpoint;
+      if (tdep->arm_abi == ARM_ABI_AAPCS)
+       tdep->arm_breakpoint = eabi_linux_arm_le_breakpoint;
+      else
+       tdep->arm_breakpoint = arm_linux_arm_le_breakpoint;
       tdep->thumb_breakpoint = arm_linux_thumb_le_breakpoint;
     }
   tdep->arm_breakpoint_size = sizeof (arm_linux_arm_le_breakpoint);
index a4da9c5c5861d849c3afac382fb51c353eb170ea..1a91d2dd1865c8b9d6c43060609a4d0f99c316d9 100644 (file)
@@ -33,6 +33,7 @@
 #include "cli/cli-cmds.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-script.h"
+#include "gdb_assert.h"
 
 /* Prototypes for local functions */
 
@@ -572,7 +573,8 @@ locate_arg (char *p)
 {
   while ((p = strchr (p, '$')))
     {
-      if (strncmp (p, "$arg", 4) == 0 && isdigit (p[4]))
+      if (strncmp (p, "$arg", 4) == 0
+         && (isdigit (p[4]) || p[4] == 'c'))
        return p;
       p++;
     }
@@ -596,12 +598,20 @@ insert_args (char *line)
       len += p - line;
       i = p[4] - '0';
 
-      if (i >= user_args->count)
+      if (p[4] == 'c')
+       {
+         /* $argc.  Number will be <=10.  */
+         len += user_args->count == 10 ? 2 : 1;
+       }
+      else if (i >= user_args->count)
        {
          error (_("Missing argument %d in user function."), i);
          return NULL;
        }
-      len += user_args->a[i].len;
+      else
+       {
+         len += user_args->a[i].len;
+       }
       line = p + 5;
     }
 
@@ -625,13 +635,27 @@ insert_args (char *line)
 
       memcpy (new_line, line, p - line);
       new_line += p - line;
-      i = p[4] - '0';
 
-      len = user_args->a[i].len;
-      if (len)
+      if (p[4] == 'c')
+       {
+         gdb_assert (user_args->count >= 0 && user_args->count <= 10);
+         if (user_args->count == 10)
+           {
+             *(new_line++) = '1';
+             *(new_line++) = '0';
+           }
+         else
+           *(new_line++) = user_args->count + '0';
+       }
+      else
        {
-         memcpy (new_line, user_args->a[i].arg, len);
-         new_line += len;
+         i = p[4] - '0';
+         len = user_args->a[i].len;
+         if (len)
+         {
+           memcpy (new_line, user_args->a[i].arg, len);
+           new_line += len;
+         }
        }
       line = p + 5;
     }
diff --git a/gdb/config/ms1/ms1.mt b/gdb/config/ms1/ms1.mt
deleted file mode 100644 (file)
index 18ce1ab..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Target: Morpho Technologies ms1 processor
-TDEPFILES= ms1-tdep.o
diff --git a/gdb/config/v850/v850.mt b/gdb/config/v850/v850.mt
deleted file mode 100644 (file)
index 701a240..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Target: NEC V850 processor
-TDEPFILES= v850-tdep.o
-SIM_OBS = remote-sim.o
-SIM = ../sim/v850/libsim.a
index f62c31230cf923d0089799c1b43d01efd6a77afc..d8a9cefd972b3f5f602fc898cacf4f38c2432be9 100644 (file)
@@ -1,3 +1,61 @@
+2005-11-16  Jim Blandy  <jimb@redhat.com>
+
+       * gdb.texinfo (Packets, Stop Reply Packets)
+       (General Query Packets): Various formatting cleanups.
+       - Use @samp for packet contents.
+       - Drop summaries from packet @item lines; the same information appears
+         immediately below in the description.
+       - Delete paragraph breaks after packet @item commands, so that the
+         description appears directly to the right of the packet prototype
+         in the printed manual, if it fits.
+       - Place spaces in packet prototypes between @vars and non-@var
+         letters, and explain that they're just for formatting.
+       - Use @dots{} instead of '...'.
+       - Fix uses of @code where @var was needed.
+       - Replace "deprecated" markers with English text spelling out the
+         packet's status and the preferred alternatives.
+       - Remove "(reserved)" markers on 'A' and 'I' packets; it's unclear
+         what this ever meant.
+       - Remove "(draft)" markers on 'i' packets; nobody has commented on
+         this for a long time.
+       - Remove "(draft)" markers on 'z' and 'Z' packets; these have been
+         implemented several times, and have been in use for years.
+
+2005-11-15  Jim Blandy  <jimb@redhat.com>
+
+       * gdb.texinfo (Packets): Add index entries for 'm' packet
+       disclaimers.
+       
+       * gdb.texinfo (Packets): Clarify lack of restrictions on behavior
+       of stub when processing an 'm' packet.
+
+       * gdb.texinfo (Packets): Mention that packets beginning with
+       letters are reserved once, at the top, instead of actually listing
+       them all and saying "reserved".
+
+2005-11-15  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * gdb.texinfo (User-defined commands): Add $argc. Add missing 'end'.
+       Change @var{$arg0 to @code{$arg0.
+
+2005-11-14  Wu Zhou  <woodzltc@cn.ibm.com>
+
+       * gdb.texinfo (Fortran): Add some words about Fortran debugging.
+
+2005-11-12  Jim Blandy  <jimb@redhat.com>
+
+       * gdb.texinfo (General Query Packets): Put packets in alphabetical
+       order.  Remove extraneous 'z'.
+
+2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * gdb.texinfo (Choosing files): Add --eval-command.
+
+2005-11-04  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * gdb.texinfo (Choosing modes): Add --return-child-result.
+
+
 2005-11-01  Andrew Stubbs  <andrew.stubbs@st.com>
 
        * gdb.texinfo (Choosing modes): Add --batch-silent.
index 75ae4ef7f07df0925acd947fed481eaacea2f2eb..e26341b4831673ff8aa5490c9998610a71692aae 100644 (file)
@@ -932,6 +932,20 @@ file named @var{number}.
 Execute @value{GDBN} commands from file @var{file}.  @xref{Command
 Files,, Command files}.
 
+@item -eval-command @var{command}
+@itemx -ex @var{command}
+@cindex @code{--eval-command}
+@cindex @code{-ex}
+Execute a single @value{GDBN} command.
+
+This option may be used multiple times to call multiple commands.  It may
+also be interleaved with @samp{-command} as required.
+
+@smallexample
+@value{GDBP} -ex 'target sim' -ex 'load' \
+   -x setbreakpoints -ex 'run' a.out
+@end smallexample
+
 @item -directory @var{directory}
 @itemx -d @var{directory}
 @cindex @code{--directory}
@@ -1007,6 +1021,27 @@ messages, for example.
 Note that targets that give their output via @value{GDBN}, as opposed to
 writing directly to @code{stdout}, will also be made silent.
 
+@item -return-child-result
+@cindex @code{--return-child-result}
+The return code from @value{GDBN} will be the return code from the child
+process (the process being debugged), with the following exceptions:
+
+@itemize @bullet
+@item
+@value{GDBN} exits abnormally.  E.g., due to an incorrect argument or an
+internal error.  In this case the exit code is the same as it would have been
+without @samp{-return-child-result}.
+@item
+The user quits with an explicit value.  E.g., @samp{quit 1}.
+@item
+The child process never runs, or is not allowed to terminate, in which case
+the exit code will be -1.
+@end itemize
+
+This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
+when @value{GDBN} is being used as a remote program loader or simulator
+interface.
+
 @item -nowindows
 @itemx -nw
 @cindex @code{--nowindows}
@@ -9089,6 +9124,59 @@ function, @code{_NSPrintForDebugger}, defined.
 @subsection Fortran
 @cindex Fortran-specific support in @value{GDBN}
 
+@value{GDBN} can be used to debug programs written in Fortran, but it
+currently supports only the features of Fortran 77 language.
+
+@cindex trailing underscore, in Fortran symbols
+Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
+among them) append an underscore to the names of variables and
+functions.  When you debug programs compiled by those compilers, you
+will need to refer to variables and functions with a trailing
+underscore.
+
+@menu
+* Fortran Operators::           Fortran operators and expressions
+* Fortran Defaults::            Default settings for Fortran
+* Special Fortran commands::    Special @value{GDBN} commands for Fortran
+@end menu
+
+@node Fortran Operators
+@subsubsection Fortran operators and expressions
+
+@cindex Fortran operators and expressions
+
+Operators must be defined on values of specific types.  For instance,
+@code{+} is defined on numbers, but not on characters or other non-
+arithmetic types.  Operators are often defined on groups of types.
+
+@table @code
+@item **
+The exponentiation operator. It raises the first operand to the power
+of the second one.
+
+@item :
+The range operator.  Normally used in the form of array(low:high) to
+represent a section of array.
+@end table
+
+@node Fortran Defaults
+@subsubsection Fortran Defaults
+
+@cindex Fortran Defaults
+
+Fortran symbols are usually case-insensitive, so @value{GDBN} by
+default uses case-insensitive matches for Fortran symbols.  You can
+change that with the @samp{set case-insensitive} command, see
+@ref{Symbols}, for the details.
+
+@node Special Fortran commands
+@subsubsection Special Fortran commands
+
+@cindex Special Fortran commands
+
+@value{GDBN} had some commands to support Fortran specific feature,
+such as common block displaying.
+
 @table @code
 @cindex @code{COMMON} blocks, Fortran
 @kindex info common
@@ -9099,11 +9187,6 @@ all @code{COMMON} blocks visible at current program location are
 printed.
 @end table
 
-Fortran symbols are usually case-insensitive, so @value{GDBN} by
-default uses case-insensitive matches for Fortran symbols.  You can
-change that with the @samp{set case-insensitive} command, see
-@ref{Symbols}, for the details.
-
 @node Pascal
 @subsection Pascal
 
@@ -15625,11 +15708,12 @@ A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
 which you assign a new name as a command.  This is done with the
 @code{define} command.  User commands may accept up to 10 arguments
 separated by whitespace.  Arguments are accessed within the user command
-via @var{$arg0@dots{}$arg9}.  A trivial example:
+via @code{$arg0@dots{}$arg9}.  A trivial example:
 
 @smallexample
 define adder
   print $arg0 + $arg1 + $arg2
+end
 @end smallexample
 
 @noindent
@@ -15645,6 +15729,20 @@ its three arguments.  Note the arguments are text substitutions, so they may
 reference variables, use complex expressions, or even perform inferior
 functions calls.
 
+In addition, @code{$argc} may be used to find out how many arguments have
+been passed.  This expands to a number in the range 0@dots{}10.
+
+@smallexample
+define adder
+  if $argc == 2
+    print $arg0 + $arg1
+  end
+  if $argc == 3
+    print $arg0 + $arg1 + $arg2
+  end
+end
+@end smallexample
+
 @table @code
 
 @kindex define
@@ -22030,11 +22128,26 @@ The following table provides a complete list of all currently defined
 @xref{File-I/O remote protocol extension}, for details about the File
 I/O extension of the remote protocol.
 
-@table @r
+Each packet's description has a template showing the packet's overall
+syntax, followed by an explanation of the packet's meaning.  We
+include spaces in some of the templates for clarity; these are not
+part of the packet's syntax.  No @value{GDBN} packet uses spaces to
+separate its components.  For example, a template like @samp{foo
+@var{bar} @var{baz}} describes a packet beginning with the three ASCII
+bytes @samp{foo}, followed by a @var{bar}, followed directly by a
+@var{baz}.  GDB does not transmit a space character between the
+@samp{foo} and the @var{bar}, or between the @var{bar} and the
+@var{baz}.
 
-@item @code{!} --- extended mode
-@cindex @code{!} packet
+Note that all packet forms beginning with an upper- or lower-case
+letter, other than those described here, are reserved for future use.
 
+Here are the packet descriptions.
+
+@table @samp
+
+@item !
+@cindex @samp{!} packet
 Enable extended mode.  In extended mode, the remote server is made
 persistent.  The @samp{R} packet is used to restart the program being
 debugged.
@@ -22045,35 +22158,31 @@ Reply:
 The remote target both supports and has enabled extended mode.
 @end table
 
-@item @code{?} --- last signal
-@cindex @code{?} packet
-
+@item ?
+@cindex @samp{?} packet
 Indicate the reason the target halted.  The reply is the same as for
 step and continue.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{a} --- reserved
-
-Reserved for future use.
-
-@item @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,@dots{}} ---  set program arguments @strong{(reserved)}
-@cindex @code{A} packet
-
-Initialized @samp{argv[]} array passed into program. @var{arglen}
-specifies the number of bytes in the hex encoded byte stream @var{arg}.
-See @code{gdbserver} for more details.
+@item A @var{arglen},@var{argnum},@var{arg},@dots{}
+@cindex @samp{A} packet
+Initialized @code{argv[]} array passed into program. @var{arglen}
+specifies the number of bytes in the hex encoded byte stream
+@var{arg}.  See @code{gdbserver} for more details.
 
 Reply:
 @table @samp
 @item OK
-@item E@var{NN}
+The arguments were set.
+@item E @var{NN}
+An error occurred.
 @end table
 
-@item @code{b}@var{baud} --- set baud @strong{(deprecated)}
-@cindex @code{b} packet
-
+@item b @var{baud}
+@cindex @samp{b} packet
+(Don't use this packet; its behavior is not well-defined.)
 Change the serial line speed to @var{baud}.
 
 JTC: @emph{When does the transport layer state change?  When it's
@@ -22086,41 +22195,39 @@ some kind of out-of-band message to a specially-setup stub and have the
 switch happen "in between" packets, so that from remote protocol's point
 of view, nothing actually happened.}
 
-@item @code{B}@var{addr},@var{mode} --- set breakpoint @strong{(deprecated)}
-@cindex @code{B} packet
-
+@item B @var{addr},@var{mode}
+@cindex @samp{B} packet
 Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
 breakpoint at @var{addr}.
 
-This packet has been replaced by the @samp{Z} and @samp{z} packets
+Don't use this packet.  Use the @samp{Z} and @samp{z} packets instead
 (@pxref{insert breakpoint or watchpoint packet}).
 
-@item @code{c}@var{addr} --- continue
-@cindex @code{c} packet
-
-@var{addr} is address to resume.  If @var{addr} is omitted, resume at
-current address.
+@item c @var{addr}
+@cindex @samp{c} packet
+Continue.  @var{addr} is address to resume.  If @var{addr} is omitted,
+resume at current address.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{C}@var{sig}@code{;}@var{addr} --- continue with signal
-@cindex @code{C} packet
-
+@item C @var{sig};@var{addr}
+@cindex @samp{C} packet
 Continue with signal @var{sig} (hex signal number).  If
-@code{;}@var{addr} is omitted, resume at same address.
+@samp{;@var{addr}} is omitted, resume at same address.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{d} --- toggle debug @strong{(deprecated)}
-@cindex @code{d} packet
-
+@item d
+@cindex @samp{d} packet
 Toggle debug flag.
 
-@item @code{D} --- detach
-@cindex @code{D} packet
+Don't use this packet; instead, define a general set packet
+(@pxref{General Query Packets}).
 
+@item D
+@cindex @samp{D} packet
 Detach @value{GDBN} from the remote system.  Sent to the remote target
 before @value{GDBN} disconnects via the @code{detach} command.
 
@@ -22128,33 +22235,19 @@ Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{e} --- reserved
-
-Reserved for future use.
-
-@item @code{E} --- reserved
-
-Reserved for future use.
-
-@item @code{f} --- reserved
-
-Reserved for future use.
+@item F @var{RC},@var{EE},@var{CF};@var{XX}
+@cindex @samp{F} packet
+A reply from @value{GDBN} to an @samp{F} packet sent by the target.
+This is part of the File-I/O protocol extension.  @xref{File-I/O
+remote protocol extension}, for the specification.
 
-@item @code{F}@var{RC}@code{,}@var{EE}@code{,}@var{CF}@code{;}@var{XX} --- Reply to target's F packet.
-@cindex @code{F} packet
-
-This packet is send by @value{GDBN} as reply to a @code{F} request packet
-sent by the target.  This is part of the File-I/O protocol extension.
-@xref{File-I/O remote protocol extension}, for the specification.
-
-@item @code{g} --- read registers
+@item g
 @anchor{read registers packet}
-@cindex @code{g} packet
-
+@cindex @samp{g} packet
 Read general registers.
 
 Reply:
@@ -22162,46 +22255,40 @@ Reply:
 @item @var{XX@dots{}}
 Each byte of register data is described by two hex digits.  The bytes
 with the register are transmitted in target byte order.  The size of
-each register and their position within the @samp{g} @var{packet} are
+each register and their position within the @samp{g} packet are
 determined by the @value{GDBN} internal macros
-@var{DEPRECATED_REGISTER_RAW_SIZE} and @var{REGISTER_NAME} macros.  The
-specification of several standard @code{g} packets is specified below.
-@item E@var{NN}
+@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{REGISTER_NAME} macros.  The
+specification of several standard @samp{g} packets is specified below.
+@item E @var{NN}
 for an error.
 @end table
 
-@item @code{G}@var{XX@dots{}} --- write regs
-@cindex @code{G} packet
-
-@xref{read registers packet}, for a description of the @var{XX@dots{}}
-data.
+@item G @var{XX@dots{}}
+@cindex @samp{G} packet
+Write general registers.  @xref{read registers packet}, for a
+description of the @var{XX@dots{}} data.
 
 Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{h} --- reserved
-
-Reserved for future use.
-
-@item @code{H}@var{c}@var{t@dots{}} --- set thread
-@cindex @code{H} packet
-
+@item H @var{c} @var{t}
+@cindex @samp{H} packet
 Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
 @samp{G}, et.al.).  @var{c} depends on the operation to be performed: it
 should be @samp{c} for step and continue operations, @samp{g} for other
-operations.  The thread designator @var{t@dots{}} may be -1, meaning all
-the threads, a thread number, or zero which means pick any thread.
+operations.  The thread designator @var{t} may be @samp{-1}, meaning all
+the threads, a thread number, or @samp{0} which means pick any thread.
 
 Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
@@ -22220,98 +22307,68 @@ for an error
 @c                selected, sets the registers of the register block of
 @c                that thread; otherwise sets current registers.
 
-@item @code{i}@var{addr}@code{,}@var{nnn} --- cycle step @strong{(draft)}
+@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
 @anchor{cycle step packet}
-@cindex @code{i} packet
-
-Step the remote target by a single clock cycle.  If @code{,}@var{nnn} is
+@cindex @samp{i} packet
+Step the remote target by a single clock cycle.  If @samp{,@var{nnn}} is
 present, cycle step @var{nnn} cycles.  If @var{addr} is present, cycle
 step starting at that address.
 
-@item @code{I} --- signal then cycle step @strong{(reserved)}
-@cindex @code{I} packet
+@item I
+@cindex @samp{I} packet
+Signal, then cycle step.  @xref{step with signal packet}.  @xref{cycle
+step packet}.
 
-@xref{step with signal packet}.  @xref{cycle step packet}.
-
-@item @code{j} --- reserved
-
-Reserved for future use.
-
-@item @code{J} --- reserved
-
-Reserved for future use.
-
-@item @code{k} --- kill request
-@cindex @code{k} packet
+@item k
+@cindex @samp{k} packet
+Kill request.
 
 FIXME: @emph{There is no description of how to operate when a specific
 thread context has been selected (i.e.@: does 'k' kill only that
 thread?)}.
 
-@item @code{K} --- reserved
-
-Reserved for future use.
-
-@item @code{l} --- reserved
-
-Reserved for future use.
-
-@item @code{L} --- reserved
-
-Reserved for future use.
-
-@item @code{m}@var{addr}@code{,}@var{length} --- read memory
-@cindex @code{m} packet
-
+@item m @var{addr},@var{length}
+@cindex @samp{m} packet
 Read @var{length} bytes of memory starting at address @var{addr}.
-Neither @value{GDBN} nor the stub assume that sized memory transfers are
-assumed using word aligned accesses. FIXME: @emph{A word aligned memory
-transfer mechanism is needed.}
+Note that @var{addr} may not be aligned to any particular boundary.
+
+The stub need not use any particular size or alignment when gathering
+data from memory for the response; even if @var{addr} is word-aligned
+and @var{length} is a multiple of the word size, the stub is free to
+use byte accesses, or not.  For this reason, this packet may not be
+suitable for accessing memory-mapped I/O devices.
+@cindex alignment of remote memory accesses
+@cindex size of remote memory accesses
+@cindex memory, alignment and size of remote accesses
 
 Reply:
 @table @samp
 @item @var{XX@dots{}}
-@var{XX@dots{}} is mem contents. Can be fewer bytes than requested if able
-to read only part of the data.  Neither @value{GDBN} nor the stub assume
-that sized memory transfers are assumed using word aligned
-accesses. FIXME: @emph{A word aligned memory transfer mechanism is
-needed.}
-@item E@var{NN}
+Memory contents; each byte is transmitted as a two-digit hexidecimal
+number.  The reply may contain fewer bytes than requested if the
+server was able to read only part of the region of memory.
+@item E @var{NN}
 @var{NN} is errno
 @end table
 
-@item @code{M}@var{addr},@var{length}@code{:}@var{XX@dots{}} --- write mem
-@cindex @code{M} packet
-
+@item M @var{addr},@var{length}:@var{XX@dots{}}
+@cindex @samp{M} packet
 Write @var{length} bytes of memory starting at address @var{addr}.
-@var{XX@dots{}} is the data.
+@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
+hexidecimal number.
 
 Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error (this includes the case where only part of the data was
 written).
 @end table
 
-@item @code{n} --- reserved
-
-Reserved for future use.
-
-@item @code{N} --- reserved
-
-Reserved for future use.
-
-@item @code{o} --- reserved
-
-Reserved for future use.
-
-@item @code{O} --- reserved
-
-@item @code{p}@var{hex number of register} --- read register packet
-@cindex @code{p} packet
-
+@item p @var{n}
+@cindex @samp{p} packet
+Read the value of register @var{n}; @var{n} is in hex.
 @xref{read registers packet}, for a description of how the returned
 register value is encoded.
 
@@ -22319,210 +22376,168 @@ Reply:
 @table @samp
 @item @var{XX@dots{}}
 the register's value
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @item
 Indicating an unrecognized @var{query}.
 @end table
 
-@item @code{P}@var{n@dots{}}@code{=}@var{r@dots{}} --- write register
+@item P @var{n@dots{}}=@var{r@dots{}}
 @anchor{write register packet}
-@cindex @code{P} packet
-
-Write register @var{n@dots{}} with value @var{r@dots{}}, which contains two hex
+@cindex @samp{P} packet
+Write register @var{n@dots{}} with value @var{r@dots{}}.  The register
+number @var{n} is in hexidecimal, and @var{r@dots{}} contains two hex
 digits for each byte in the register (target byte order).
 
 Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{q}@var{query} --- general query
+@item q @var{query}
 @anchor{general query packet}
-@cindex @code{q} packet
-
-Request info about @var{query}.  In general @value{GDBN} queries have a
-leading upper case letter.  Custom vendor queries should use a company
-prefix (in lower case) ex: @samp{qfsf.var}.  @var{query} may optionally
-be followed by a @samp{,} or @samp{;} separated list.  Stubs must ensure
-that they match the full @var{query} name.
+@cindex @samp{q} packet
+General query.  Request info about @var{query}.  In general
+@value{GDBN} queries have a leading upper case letter.  Custom vendor
+queries should use a company prefix (in lower case) ex:
+@samp{qfsf.var}.  @var{query} may optionally be followed by a @samp{,}
+or @samp{;} separated list.  Stubs must ensure that they match the
+full @var{query} name.
 
 Reply:
 @table @samp
 @item @var{XX@dots{}}
-Hex encoded data from query.  The reply can not be empty.
-@item E@var{NN}
+Hex encoded data from query.  The reply must not be empty.
+@item E @var{NN}
 error reply
 @item
 Indicating an unrecognized @var{query}.
 @end table
 
-@item @code{Q}@var{var}@code{=}@var{val} --- general set
-@cindex @code{Q} packet
-
-Set value of @var{var} to @var{val}.
-
+@item Q @var{var}=@var{val}
+@cindex @samp{Q} packet
+General set.  Set value of @var{var} to @var{val}.
 @xref{general query packet}, for a discussion of naming conventions.
 
-@item @code{r} --- reset @strong{(deprecated)}
-@cindex @code{r} packet
-
+@item r
+@cindex @samp{r} packet
 Reset the entire system.
 
-@item @code{R}@var{XX} --- remote restart
-@cindex @code{R} packet
+Don't use this packet; use the @samp{R} packet instead.
 
+@item R @var{XX}
+@cindex @samp{R} packet
 Restart the program being debugged.  @var{XX}, while needed, is ignored.
 This packet is only available in extended mode.
 
-Reply:
-@table @samp
-@item @emph{no reply}
 The @samp{R} packet has no reply.
-@end table
-
-@item @code{s}@var{addr} --- step
-@cindex @code{s} packet
 
-@var{addr} is address to resume.  If @var{addr} is omitted, resume at
-same address.
+@item s @var{addr}
+@cindex @samp{s} packet
+Single step.  @var{addr} is the address at which to resume.  If
+@var{addr} is omitted, resume at same address.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{S}@var{sig}@code{;}@var{addr} --- step with signal
+@item S @var{sig};@var{addr}
 @anchor{step with signal packet}
-@cindex @code{S} packet
-
-Like @samp{C} but step not continue.
+@cindex @samp{S} packet
+Step with signal.  This is analogous to the @samp{C} packet, but
+requests a single-step, rather than a normal resumption of execution.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM} --- search
-@cindex @code{t} packet
-
+@item t @var{addr}:@var{PP},@var{MM}
+@cindex @samp{t} packet
 Search backwards starting at address @var{addr} for a match with pattern
 @var{PP} and mask @var{MM}.  @var{PP} and @var{MM} are 4 bytes.
 @var{addr} must be at least 3 digits.
 
-@item @code{T}@var{XX} --- thread alive
-@cindex @code{T} packet
-
+@item T @var{XX}
+@cindex @samp{T} packet
 Find out if the thread XX is alive.
 
 Reply:
 @table @samp
 @item OK
 thread is still alive
-@item E@var{NN}
+@item E @var{NN}
 thread is dead
 @end table
 
-@item @code{u} --- reserved
-
-Reserved for future use.
-
-@item @code{U} --- reserved
-
-Reserved for future use.
-
-@item @code{v} --- verbose packet prefix
-
-Packets starting with @code{v} are identified by a multi-letter name,
-up to the first @code{;} or @code{?} (or the end of the packet).
-
-@item @code{vCont}[;@var{action}[@code{:}@var{tid}]]... --- extended resume
-@cindex @code{vCont} packet
+@item v
+Packets starting with @samp{v} are identified by a multi-letter name,
+up to the first @samp{;} or @samp{?} (or the end of the packet).
 
-Resume the inferior.  Different actions may be specified for each thread.
+@item vCont@r{[};@var{action}@r{[}:@var{tid}@r{]]}@dots{}
+@cindex @samp{vCont} packet
+Resume the inferior, specifying different actions for each thread.
 If an action is specified with no @var{tid}, then it is applied to any
 threads that don't have a specific action specified; if no default action is
 specified then other threads should remain stopped.  Specifying multiple
 default actions is an error; specifying no actions is also an error.
 Thread IDs are specified in hexadecimal.  Currently supported actions are:
 
-@table @code
+@table @samp
 @item c
 Continue.
-@item C@var{sig}
+@item C @var{sig}
 Continue with signal @var{sig}.  @var{sig} should be two hex digits.
 @item s
 Step.
-@item S@var{sig}
+@item S @var{sig}
 Step with signal @var{sig}.  @var{sig} should be two hex digits.
 @end table
 
 The optional @var{addr} argument normally associated with these packets is
-not supported in @code{vCont}.
+not supported in @samp{vCont}.
 
 Reply:
 @xref{Stop Reply Packets}, for the reply specifications.
 
-@item @code{vCont?} --- extended resume query
-@cindex @code{vCont?} packet
-
-Query support for the @code{vCont} packet.
+@item vCont?
+@cindex @samp{vCont?} packet
+Request a list of actions supporetd by the @samp{vCont} packet.
 
 Reply:
 @table @samp
-@item @code{vCont}[;@var{action}]...
-The @code{vCont} packet is supported.  Each @var{action} is a supported
-command in the @code{vCont} packet.
+@item vCont@r{[};@var{action}@dots{}@r{]}
+The @samp{vCont} packet is supported.  Each @var{action} is a supported
+command in the @samp{vCont} packet.
 @item
-The @code{vCont} packet is not supported.
+The @samp{vCont} packet is not supported.
 @end table
 
-@item @code{V} --- reserved
-
-Reserved for future use.
-
-@item @code{w} --- reserved
-
-Reserved for future use.
-
-@item @code{W} --- reserved
-
-Reserved for future use.
-
-@item @code{x} --- reserved
-
-Reserved for future use.
-
-@item @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX@dots{}} --- write mem (binary)
-@cindex @code{X} packet
-
-@var{addr} is address, @var{length} is number of bytes, @var{XX@dots{}}
-is binary data.  The characters @code{$}, @code{#}, and @code{0x7d} are
-escaped using @code{0x7d}, and then XORed with @code{0x20}.
-For example, @code{0x7d} would be transmitted as @code{0x7d 0x5d}.
+@item X @var{addr},@var{length}:@var{XX@dots{}}
+@cindex @samp{X} packet
+Write data to memory, where the data is transmitted in binary.
+@var{addr} is address, @var{length} is number of bytes,
+@samp{@var{XX}@dots{}} is binary data.  The bytes @code{0x23}
+(@sc{ascii} @samp{#}), @code{0x24} (@sc{ascii} @samp{$}), and
+@code{0x7d} (@sc{ascii} @samp{@}}) are escaped using @code{0x7d}
+(@sc{ascii} @samp{@}}), and then XORed with @code{0x20}.  For example,
+the byte @code{0x7d} would be transmitted as the two bytes @code{0x7d
+0x5d}.
 
 Reply:
 @table @samp
 @item OK
 for success
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{y} --- reserved
-
-Reserved for future use.
-
-@item @code{Y} reserved
-
-Reserved for future use.
-
-@item @code{z}@var{type}@code{,}@var{addr}@code{,}@var{length} --- remove breakpoint or watchpoint @strong{(draft)}
-@itemx @code{Z}@var{type}@code{,}@var{addr}@code{,}@var{length} --- insert breakpoint or watchpoint @strong{(draft)}
+@item z @var{type},@var{addr},@var{length}
+@itemx Z @var{type},@var{addr},@var{length}
 @anchor{insert breakpoint or watchpoint packet}
-@cindex @code{z} packet
-@cindex @code{Z} packets
-
-Insert (@code{Z}) or remove (@code{z}) a @var{type} breakpoint or
+@cindex @samp{z} packet
+@cindex @samp{Z} packets
+Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
 watchpoint starting at address @var{address} and covering the next
 @var{length} bytes.
 
@@ -22532,21 +22547,20 @@ separately.
 @emph{Implementation notes: A remote target shall return an empty string
 for an unrecognized breakpoint or watchpoint packet @var{type}.  A
 remote target shall support either both or neither of a given
-@code{Z}@var{type}@dots{} and @code{z}@var{type}@dots{} packet pair.  To
+@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair.  To
 avoid potential problems with duplicate packets, the operations should
 be implemented in an idempotent way.}
 
-@item @code{z}@code{0}@code{,}@var{addr}@code{,}@var{length} --- remove memory breakpoint @strong{(draft)}
-@item @code{Z}@code{0}@code{,}@var{addr}@code{,}@var{length} --- insert memory breakpoint @strong{(draft)}
-@cindex @code{z0} packet
-@cindex @code{Z0} packet
-
-Insert (@code{Z0}) or remove (@code{z0}) a memory breakpoint at address
-@code{addr} of size @code{length}.
+@item z0,@var{addr},@var{length}
+@itemx Z0,@var{addr},@var{length}
+@cindex @samp{z0} packet
+@cindex @samp{Z0} packet
+Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
+@var{addr} of size @var{length}.
 
 A memory breakpoint is implemented by replacing the instruction at
 @var{addr} with a software breakpoint or trap instruction.  The
-@code{length} is used by targets that indicates the size of the
+@var{length} is used by targets that indicates the size of the
 breakpoint (in bytes) that should be inserted (e.g., the @sc{arm} and
 @sc{mips} can insert either a 2 or 4 byte breakpoint).
 
@@ -22561,17 +22575,16 @@ Reply:
 success
 @item
 not supported
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{z}@code{1}@code{,}@var{addr}@code{,}@var{length} --- remove hardware breakpoint @strong{(draft)}
-@item @code{Z}@code{1}@code{,}@var{addr}@code{,}@var{length} --- insert hardware breakpoint @strong{(draft)}
-@cindex @code{z1} packet
-@cindex @code{Z1} packet
-
-Insert (@code{Z1}) or remove (@code{z1}) a hardware breakpoint at
-address @code{addr} of size @code{length}.
+@item z1,@var{addr},@var{length}
+@itemx Z1,@var{addr},@var{length}
+@cindex @samp{z1} packet
+@cindex @samp{Z1} packet
+Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
+address @var{addr} of size @var{length}.
 
 A hardware breakpoint is implemented using a mechanism that is not
 dependant on being able to modify the target's memory.
@@ -22585,16 +22598,15 @@ Reply:
 success
 @item
 not supported
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{z}@code{2}@code{,}@var{addr}@code{,}@var{length} --- remove write watchpoint @strong{(draft)}
-@item @code{Z}@code{2}@code{,}@var{addr}@code{,}@var{length} --- insert write watchpoint @strong{(draft)}
-@cindex @code{z2} packet
-@cindex @code{Z2} packet
-
-Insert (@code{Z2}) or remove (@code{z2}) a write watchpoint.
+@item z2,@var{addr},@var{length}
+@itemx Z2,@var{addr},@var{length}
+@cindex @samp{z2} packet
+@cindex @samp{Z2} packet
+Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint.
 
 Reply:
 @table @samp
@@ -22602,16 +22614,15 @@ Reply:
 success
 @item
 not supported
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{z}@code{3}@code{,}@var{addr}@code{,}@var{length} --- remove read watchpoint @strong{(draft)}
-@item @code{Z}@code{3}@code{,}@var{addr}@code{,}@var{length} --- insert read watchpoint @strong{(draft)}
-@cindex @code{z3} packet
-@cindex @code{Z3} packet
-
-Insert (@code{Z3}) or remove (@code{z3}) a read watchpoint.
+@item z3,@var{addr},@var{length}
+@itemx Z3,@var{addr},@var{length}
+@cindex @samp{z3} packet
+@cindex @samp{Z3} packet
+Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint.
 
 Reply:
 @table @samp
@@ -22619,16 +22630,15 @@ Reply:
 success
 @item
 not supported
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
-@item @code{z}@code{4}@code{,}@var{addr}@code{,}@var{length} --- remove access watchpoint @strong{(draft)}
-@item @code{Z}@code{4}@code{,}@var{addr}@code{,}@var{length} --- insert access watchpoint @strong{(draft)}
-@cindex @code{z4} packet
-@cindex @code{Z4} packet
-
-Insert (@code{Z4}) or remove (@code{z4}) an access watchpoint.
+@item z4,@var{addr},@var{length}
+@itemx Z4,@var{addr},@var{length}
+@cindex @samp{z4} packet
+@cindex @samp{Z4} packet
+Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint.
 
 Reply:
 @table @samp
@@ -22636,7 +22646,7 @@ Reply:
 success
 @item
 not supported
-@item E@var{NN}
+@item E @var{NN}
 for an error
 @end table
 
@@ -22649,60 +22659,75 @@ for an error
 The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
 receive any of the below as a reply.  In the case of the @samp{C},
 @samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
-when the target halts.  In the below the exact meaning of @samp{signal
-number} is poorly defined.  In general one of the UNIX signal numbering
-conventions is used.
-
-@table @samp
+when the target halts.  In the below the exact meaning of @dfn{signal
+number} is poorly defined.  In general one of the UNIX signal
+numbering conventions is used.
 
-@item S@var{AA}
-@var{AA} is the signal number
+As in the description of request packets, we include spaces in the
+reply templates for clarity; these are not part of the reply packet's
+syntax.  No @value{GDBN} stop reply packet uses spaces to separate its
+components.
 
-@item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
-@cindex @code{T} packet reply
+@table @samp
 
-@var{AA} = two hex digit signal number; @var{n...} = register number
-(hex), @var{r...}  = target byte ordered register contents, size defined
-by @code{DEPRECATED_REGISTER_RAW_SIZE}; @var{n...} = @samp{thread},
-@var{r...} = thread process ID, this is a hex integer; @var{n...} =
-(@samp{watch} | @samp{rwatch} | @samp{awatch}, @var{r...} = data
-address, this is a hex integer; @var{n...} = other string not starting
-with valid hex digit.  @value{GDBN} should ignore this @var{n...},
-@var{r...} pair and go on to the next.  This way we can extend the
-protocol.
+@item S @var{AA}
+The program received signal number @var{AA} (a two-digit hexidecimal
+number).
 
-@item W@var{AA}
+@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
+@cindex @samp{T} packet reply
+The program received signal number @var{AA} (a two-digit hexidecimal
+number).  Single-step and breakpoint traps are reported this way.  The
+@samp{@var{n}:@var{r}} pairs give the values of important registers or
+other information:
+@enumerate
+@item
+If @var{n} is a hexidecimal number, it is a register number, and the
+corresponding @var{r} gives that register's value.  @var{r} is a
+series of bytes in target byte order, with each byte given by a
+two-digit hex number.
+@item
+If @var{n} is @samp{thread}, then @var{r} is the thread process ID, in
+hex.
+@item
+If @var{n} is @samp{watch}, @samp{rwatch}, or @samp{awatch}, then the
+packet indicates a watchpoint hit, and @var{r} is the data address, in
+hex.
+@item
+Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
+and go on to the next; this allows us to extend the protocol in the
+future.
+@end enumerate
 
+@item W @var{AA}
 The process exited, and @var{AA} is the exit status.  This is only
 applicable to certain targets.
 
-@item X@var{AA}
-
+@item X @var{AA}
 The process terminated with signal @var{AA}.
 
-@item O@var{XX@dots{}}
-
-@var{XX@dots{}} is hex encoding of @sc{ascii} data.  This can happen at
-any time while the program is running and the debugger should continue
-to wait for @samp{W}, @samp{T}, etc.
-
-@item F@var{call-id}@code{,}@var{parameter@dots{}}
+@item O @var{XX}@dots{}
+@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
+written as the program's console output.  This can happen at any time
+while the program is running and the debugger should continue to wait
+for @samp{W}, @samp{T}, etc.
 
+@item F @var{call-id},@var{parameter}@dots{}
 @var{call-id} is the identifier which says which host system call should
 be called.  This is just the name of the function.  Translation into the
 correct system call is only applicable as it's defined in @value{GDBN}.
 @xref{File-I/O remote protocol extension}, for a list of implemented
 system calls.
 
-@var{parameter@dots{}} is a list of parameters as defined for this very
-system call.
+@samp{@var{parameter}@dots{}} is a list of parameters as defined for
+this very system call.
 
-The target replies with this packet when it expects @value{GDBN} to call
-a host system call on behalf of the target.  @value{GDBN} replies with
-an appropriate @code{F} packet and keeps up waiting for the next reply
-packet from the target.  The latest @samp{C}, @samp{c}, @samp{S} or
-@samp{s} action is expected to be continued.
-@xref{File-I/O remote protocol extension}, for more details.
+The target replies with this packet when it expects @value{GDBN} to
+call a host system call on behalf of the target.  @value{GDBN} replies
+with an appropriate @samp{F} packet and keeps up waiting for the next
+reply packet from the target.  The latest @samp{C}, @samp{c}, @samp{S}
+or @samp{s} action is expected to be continued.  @xref{File-I/O remote
+protocol extension}, for more details.
 
 @end table
 
@@ -22712,72 +22737,107 @@ packet from the target.  The latest @samp{C}, @samp{c}, @samp{S} or
 
 The following set and query packets have already been defined.
 
-@table @r
+Like the descriptions of the other packets, each description here
+has a template showing the packet's overall syntax, followed by an
+explanation of the packet's meaning.  We include spaces in some of the
+templates for clarity; these are not part of the packet's syntax.  No
+@value{GDBN} packet uses spaces to separate its components.
+
+@table @samp
 
-@item @code{q}@code{C} --- current thread
+@item qC
 @cindex current thread, remote request
-@cindex @code{qC} packet
+@cindex @samp{qC} packet
 Return the current thread id.
 
 Reply:
 @table @samp
-@item @code{QC}@var{pid}
+@item QC @var{pid}
 Where @var{pid} is an unsigned hexidecimal process id.
-@item *
+@item @r{(anything else)}
 Any other reply implies the old pid.
 @end table
 
-@item @code{q}@code{fThreadInfo} -- all thread ids
-@cindex list active threads, remote request
-@cindex @code{qfThreadInfo} packet
-@code{q}@code{sThreadInfo}
+@item qCRC:@var{addr},@var{length}
+@cindex CRC of memory block, remote request
+@cindex @samp{qCRC} packet
+Compute the CRC checksum of a block of memory.
+Reply:
+@table @samp
+@item E @var{NN}
+An error (such as memory fault)
+@item C @var{crc32}
+The specified memory region's checksum is @var{crc32}.
+@end table
 
-Obtain a list of active thread ids from the target (OS).  Since there
+@item qfThreadInfo
+@itemx qsThreadInfo
+@cindex list active threads, remote request
+@cindex @samp{qfThreadInfo} packet
+@cindex @samp{qsThreadInfo} packet
+Obtain a list of all active thread ids from the target (OS).  Since there
 may be too many active threads to fit into one reply packet, this query
 works iteratively: it may require more than one query/reply sequence to
 obtain the entire list of threads.  The first query of the sequence will
-be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
-sequence will be the @code{qs}@code{ThreadInfo} query.
+be the @samp{qfThreadInfo} query; subsequent queries in the
+sequence will be the @samp{qsThreadInfo} query.
 
-NOTE: replaces the @code{qL} query (see below).
+NOTE: This packet replaces the @samp{qL} query (see below).
 
 Reply:
 @table @samp
-@item @code{m}@var{id}
+@item @var{id}
 A single thread id
-@item @code{m}@var{id},@var{id}@dots{}
+@item @var{id},@var{id}@dots{}
 a comma-separated list of thread ids
-@item @code{l}
-(lower case 'el') denotes end of list.
+@item l
+(lower case letter @samp{L}) denotes end of list.
 @end table
 
 In response to each query, the target will reply with a list of one or
 more thread ids, in big-endian unsigned hex, separated by commas.
 @value{GDBN} will respond to each reply with a request for more thread
-ids (using the @code{qs} form of the query), until the target responds
-with @code{l} (lower-case el, for @code{'last'}).
+ids (using the @samp{qs} form of the query), until the target responds
+with @samp{l} (lower-case el, for @dfn{last}).
 
-@item @code{q}@code{ThreadExtraInfo}@code{,}@var{id} --- extra thread info
-@cindex thread attributes info, remote request
-@cindex @code{qThreadExtraInfo} packet
-Where @var{id} is a thread-id in big-endian hex.  Obtain a printable
-string description of a thread's attributes from the target OS.  This
-string may contain anything that the target OS thinks is interesting for
-@value{GDBN} to tell the user about the thread.  The string is displayed
-in @value{GDBN}'s @samp{info threads} display.  Some examples of
-possible thread extra info strings are ``Runnable'', or ``Blocked on
-Mutex''.
+@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
+@cindex get thread-local storage address, remote request
+@cindex @samp{qGetTLSAddr} packet
+Fetch the address associated with thread local storage specified
+by @var{thread-id}, @var{offset}, and @var{lm}.
+
+@var{thread-id} is the (big endian, hex encoded) thread id associated with the
+thread for which to fetch the TLS address.
+
+@var{offset} is the (big endian, hex encoded) offset associated with the
+thread local variable.  (This offset is obtained from the debug
+information associated with the variable.)
+
+@var{lm} is the (big endian, hex encoded) OS/ABI specific encoding of the
+the load module associated with the thread local storage.  For example,
+a @sc{gnu}/Linux system will pass the link map address of the shared
+object associated with the thread local storage under consideration. 
+Other operating environments may choose to represent the load module
+differently, so the precise meaning of this parameter will vary.
 
 Reply:
 @table @samp
-@item @var{XX@dots{}}
-Where @var{XX@dots{}} is a hex encoding of @sc{ascii} data, comprising
-the printable string containing the extra information about the thread's
-attributes.
+@item @var{XX}@dots{}
+Hex encoded (big endian) bytes representing the address of the thread
+local storage requested.
+
+@item E @var{nn}
+An error occurred.  @var{nn} are hex digits.
+
+@item
+An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
 @end table
 
-@item @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread} --- query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
+Use of this request packet is controlled by the @code{set remote
+get-thread-local-storage-address} command (@pxref{Remote
+configuration, set remote get-thread-local-storage-address}).
 
+@item qL @var{startflag} @var{threadcount} @var{nextthread}
 Obtain thread information from RTOS.  Where: @var{startflag} (one hex
 digit) is one to indicate the first query and zero to indicate a
 subsequent query; @var{threadcount} (two hex digits) is the maximum
@@ -22785,34 +22845,22 @@ number of threads the response packet can contain; and @var{nextthread}
 (eight hex digits), for subsequent queries (@var{startflag} is zero), is
 returned in the response as @var{argthread}.
 
-NOTE: this query is replaced by the @code{q}@code{fThreadInfo} query
-(see above).
+Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
 
 Reply:
 @table @samp
-@item @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread@dots{}}
+@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
 Where: @var{count} (two hex digits) is the number of threads being
 returned; @var{done} (one hex digit) is zero to indicate more threads
 and one indicates no further threads; @var{argthreadid} (eight hex
-digits) is @var{nextthread} from the request packet; @var{thread@dots{}}
+digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
 is a sequence of thread IDs from the target.  @var{threadid} (eight hex
 digits).  See @code{remote.c:parse_threadlist_response()}.
 @end table
 
-@item @code{q}@code{CRC:}@var{addr}@code{,}@var{length} --- compute CRC of memory block
-@cindex CRC of memory block, remote request
-@cindex @code{qCRC} packet
-Reply:
-@table @samp
-@item @code{E}@var{NN}
-An error (such as memory fault)
-@item @code{C}@var{CRC32}
-A 32 bit cyclic redundancy check of the specified memory region.
-@end table
-
-@item @code{q}@code{Offsets} --- query sect offs
+@item qOffsets
 @cindex section offsets, remote request
-@cindex @code{qOffsets} packet
+@cindex @samp{qOffsets} packet
 Get section offsets that the target used when re-locating the downloaded
 image.  @emph{Note: while a @code{Bss} offset is included in the
 response, @value{GDBN} ignores this and instead applies the @code{Data}
@@ -22820,203 +22868,179 @@ offset to the @code{Bss} section.}
 
 Reply:
 @table @samp
-@item @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
+@item Text=@var{xxx};Data=@var{yyy};Bss=@var{zzz}
 @end table
 
-@item @code{q}@code{P}@var{mode}@var{threadid} --- thread info request
+@item qP @var{mode} @var{threadid}
 @cindex thread information, remote request
-@cindex @code{qP} packet
+@cindex @samp{qP} packet
 Returns information on @var{threadid}.  Where: @var{mode} is a hex
 encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
 
-Reply:
-@table @samp
-@item *
-@end table
-
-See @code{remote.c:remote_unpack_thread_info_response()}.
-
-@item @code{q}@code{Rcmd,}@var{command} --- remote command
-@cindex execute remote command, remote request
-@cindex @code{qRcmd} packet
-@var{command} (hex encoded) is passed to the local interpreter for
-execution.  Invalid commands should be reported using the output string.
-Before the final result packet, the target may also respond with a
-number of intermediate @code{O}@var{output} console output packets.
-@emph{Implementors should note that providing access to a stubs's
-interpreter may have security implications}.
-
-Reply:
-@table @samp
-@item OK
-A command response with no output.
-@item @var{OUTPUT}
-A command response with the hex encoded output string @var{OUTPUT}.
-@item @code{E}@var{NN}
-Indicate a badly formed request.
-@item @samp{}
-When @samp{q}@samp{Rcmd} is not recognized.
-@end table
-z
-@item @code{qSymbol::} --- symbol lookup
-@cindex symbol lookup, remote request
-@cindex @code{qSymbol} packet
-Notify the target that @value{GDBN} is prepared to serve symbol lookup
-requests.  Accept requests from the target for the values of symbols.
-
-Reply:
-@table @samp
-@item @code{OK}
-The target does not need to look up any (more) symbols.
-@item @code{qSymbol:}@var{sym_name}
-The target requests the value of symbol @var{sym_name} (hex encoded).
-@value{GDBN} may provide the value by using the
-@code{qSymbol:}@var{sym_value}:@var{sym_name} message, described below.
-@end table
-
-@item @code{qSymbol:}@var{sym_value}:@var{sym_name} --- symbol value
-
-Set the value of @var{sym_name} to @var{sym_value}.
-
-@var{sym_name} (hex encoded) is the name of a symbol whose value the
-target has previously requested.
-
-@var{sym_value} (hex) is the value for symbol @var{sym_name}.  If
-@value{GDBN} cannot supply a value for @var{sym_name}, then this field
-will be empty.
-
-Reply:
-@table @samp
-@item @code{OK}
-The target does not need to look up any (more) symbols.
-@item @code{qSymbol:}@var{sym_name}
-The target requests the value of a new symbol @var{sym_name} (hex
-encoded).  @value{GDBN} will continue to supply the values of symbols
-(if available), until the target ceases to request them.
-@end table
+Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
 
-@item @code{qPart}:@var{object}:@code{read}:@var{annex}:@var{offset},@var{length} --- read special data
+@item qPart:@var{object}:read:@var{annex}:@var{offset},@var{length}
 @cindex read special object, remote request
-@cindex @code{qPart} packet
+@cindex @samp{qPart} packet
 Read uninterpreted bytes from the target's special data area
-identified by the keyword @code{object}.
-Request @var{length} bytes starting at @var{offset} bytes into the data.
-The content and encoding of @var{annex} is specific to the object;
-it can supply additional details about what data to access.
+identified by the keyword @var{object}.  Request @var{length} bytes
+starting at @var{offset} bytes into the data.  The content and
+encoding of @var{annex} is specific to the object; it can supply
+additional details about what data to access.
 
-Here are the specific requests of this form defined so far.
-All @samp{@code{qPart}:@var{object}:@code{read}:@dots{}}
-requests use the same reply formats, listed below.
+Here are the specific requests of this form defined so far.  All
+@samp{qPart:@var{object}:read:@dots{}} requests use the same reply
+formats, listed below.
 
-@table @asis
-@item @code{qPart}:@code{auxv}:@code{read}::@var{offset},@var{length}
+@table @samp
+@item qPart:auxv:read::@var{offset},@var{length}
 Access the target's @dfn{auxiliary vector}.  @xref{OS Information,
 auxiliary vector}, and see @ref{Remote configuration,
 read-aux-vector-packet}.  Note @var{annex} must be empty.
 @end table
 
 Reply:
-@table @asis
-@item @code{OK}
+@table @samp
+@item OK
 The @var{offset} in the request is at the end of the data.
 There is no more data to be read.
 
-@item @var{XX@dots{}}
+@item @var{XX}@dots{}
 Hex encoded data bytes read.
 This may be fewer bytes than the @var{length} in the request.
 
-@item @code{E00}
+@item E00
 The request was malformed, or @var{annex} was invalid.
 
-@item @code{E}@var{nn}
+@item @var{nn}
 The offset was invalid, or there was an error encountered reading the data.
 @var{nn} is a hex-encoded @code{errno} value.
 
-@item @code{""} (empty)
+@item
 An empty reply indicates the @var{object} or @var{annex} string was not
 recognized by the stub.
 @end table
 
-@item @code{qPart}:@var{object}:@code{write}:@var{annex}:@var{offset}:@var{data@dots{}}
+@item qPart:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
 @cindex write data into object, remote request
 Write uninterpreted bytes into the target's special data area
-identified by the keyword @code{object},
-starting at @var{offset} bytes into the data.
-@var{data@dots{}} is the hex-encoded data to be written.
-The content and encoding of @var{annex} is specific to the object;
-it can supply additional details about what data to access.
+identified by the keyword @var{object}, starting at @var{offset} bytes
+into the data.  @samp{@var{data}@dots{}} is the hex-encoded data to be
+written.  The content and encoding of @var{annex} is specific to the
+object; it can supply additional details about what data to access.
 
 No requests of this form are presently in use.  This specification
 serves as a placeholder to document the common format that new
 specific request specifications ought to use.
 
 Reply:
-@table @asis
+@table @samp
 @item @var{nn}
 @var{nn} (hex encoded) is the number of bytes written.
 This may be fewer bytes than supplied in the request.
 
-@item @code{E00}
+@item E00
 The request was malformed, or @var{annex} was invalid.
 
-@item @code{E}@var{nn}
+@item @var{nn}
 The offset was invalid, or there was an error encountered writing the data.
 @var{nn} is a hex-encoded @code{errno} value.
 
-@item @code{""} (empty)
+@item
 An empty reply indicates the @var{object} or @var{annex} string was not
 recognized by the stub, or that the object does not support writing.
 @end table
 
-@item @code{qPart}:@var{object}:@var{operation}:@dots{}
+@item qPart:@var{object}:@var{operation}:@dots{}
 Requests of this form may be added in the future.  When a stub does
 not recognize the @var{object} keyword, or its support for
-@var{object} does not recognize the @var{operation} keyword,
-the stub must respond with an empty packet.
-
-@item @code{qGetTLSAddr}:@var{thread-id},@var{offset},@var{lm} --- get thread local storage address
-@cindex get thread-local storage address, remote request
-@cindex @code{qGetTLSAddr} packet
-Fetch the address associated with thread local storage specified
-by @var{thread-id}, @var{offset}, and @var{lm}.
+@var{object} does not recognize the @var{operation} keyword, the stub
+must respond with an empty packet.
 
-@var{thread-id} is the (big endian, hex encoded) thread id associated with the
-thread for which to fetch the TLS address.
+@item qRcmd,@var{command}
+@cindex execute remote command, remote request
+@cindex @samp{qRcmd} packet
+@var{command} (hex encoded) is passed to the local interpreter for
+execution.  Invalid commands should be reported using the output
+string.  Before the final result packet, the target may also respond
+with a number of intermediate @samp{O@var{output}} console output
+packets.  @emph{Implementors should note that providing access to a
+stubs's interpreter may have security implications}.
 
-@var{offset} is the (big endian, hex encoded) offset associated with the
-thread local variable.  (This offset is obtained from the debug
-information associated with the variable.)
+Reply:
+@table @samp
+@item OK
+A command response with no output.
+@item @var{OUTPUT}
+A command response with the hex encoded output string @var{OUTPUT}.
+@item E @var{NN}
+Indicate a badly formed request.
+@item
+An empty reply indicates that @samp{qRcmd} is not recognized.
+@end table
 
-@var{lm} is the (big endian, hex encoded) OS/ABI specific encoding of the
-the load module associated with the thread local storage.  For example,
-a @sc{gnu}/Linux system will pass the link map address of the shared
-object associated with the thread local storage under consideration. 
-Other operating environments may choose to represent the load module
-differently, so the precise meaning of this parameter will vary.
+@item qSymbol::
+@cindex symbol lookup, remote request
+@cindex @samp{qSymbol} packet
+Notify the target that @value{GDBN} is prepared to serve symbol lookup
+requests.  Accept requests from the target for the values of symbols.
 
 Reply:
-@table @asis
-@item @var{XX@dots{}}
-Hex encoded (big endian) bytes representing the address of the thread
-local storage requested.
+@table @samp
+@item OK
+The target does not need to look up any (more) symbols.
+@item qSymbol:@var{sym_name}
+The target requests the value of symbol @var{sym_name} (hex encoded).
+@value{GDBN} may provide the value by using the
+@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
+below.
+@end table
 
-@item @code{E}@var{nn} (where @var{nn} are hex digits)
-An error occurred.
+@item qSymbol:@var{sym_value}:@var{sym_name}
+Set the value of @var{sym_name} to @var{sym_value}.
+
+@var{sym_name} (hex encoded) is the name of a symbol whose value the
+target has previously requested.
+
+@var{sym_value} (hex) is the value for symbol @var{sym_name}.  If
+@value{GDBN} cannot supply a value for @var{sym_name}, then this field
+will be empty.
 
-@item @code{""} (empty)
-An empty reply indicates that @code{qGetTLSAddr} is not supported by the stub.
+Reply:
+@table @samp
+@item OK
+The target does not need to look up any (more) symbols.
+@item qSymbol:@var{sym_name}
+The target requests the value of a new symbol @var{sym_name} (hex
+encoded).  @value{GDBN} will continue to supply the values of symbols
+(if available), until the target ceases to request them.
 @end table
 
-Use of this request packet is controlled by the @code{set remote
-get-thread-local-storage-address} command (@pxref{Remote
-configuration, set remote get-thread-local-storage-address}).
+@item qThreadExtraInfo,@var{id}
+@cindex thread attributes info, remote request
+@cindex @samp{qThreadExtraInfo} packet
+Obtain a printable string description of a thread's attributes from
+the target OS.  @var{id} is a thread-id in big-endian hex.  This
+string may contain anything that the target OS thinks is interesting
+for @value{GDBN} to tell the user about the thread.  The string is
+displayed in @value{GDBN}'s @code{info threads} display.  Some
+examples of possible thread extra info strings are @samp{Runnable}, or
+@samp{Blocked on Mutex}.
+
+Reply:
+@table @samp
+@item @var{XX}@dots{}
+Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
+comprising the printable string containing the extra information about
+the thread's attributes.
+@end table
 
 @end table
 
 @node Register Packet Format
 @section Register Packet Format
 
-The following @samp{g}/@samp{G} packets have previously been defined.
+The following @code{g}/@code{G} packets have previously been defined.
 In the below, some thirty-two bit registers are transferred as
 sixty-four bits.  Those registers should be zero/sign extended (which?)
 to fill the space allocated.  Register bytes are transfered in target
index 6c334485bb76407733968f0ebfc0654bd886920c..8a3e99faf31a8be6b8db567bf49b2495a312bf07 100644 (file)
@@ -164,9 +164,11 @@ dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
   if (SYMBOL_OPS (framefunc) == &dwarf2_loclist_funcs)
     {
       struct dwarf2_loclist_baton *symbaton;
+      struct frame_info *frame = debaton->frame;
+
       symbaton = SYMBOL_LOCATION_BATON (framefunc);
       *start = find_location_expression (symbaton, length,
-                                        get_frame_pc (debaton->frame));
+                                        get_frame_address_in_block (frame));
     }
   else
     {
@@ -302,11 +304,28 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
   dwarf_expr_eval (ctx, data, size);
   if (ctx->num_pieces > 0)
     {
-      /* We haven't implemented splicing together pieces from
-         arbitrary sources yet.  */
-      error (_("The value of variable '%s' is distributed across several\n"
-             "locations, and GDB cannot access its value.\n"),
-             SYMBOL_NATURAL_NAME (var));
+      int i;
+      long offset = 0;
+      bfd_byte *contents;
+
+      retval = allocate_value (SYMBOL_TYPE (var));
+      contents = value_contents_raw (retval);
+      for (i = 0; i < ctx->num_pieces; i++)
+       {
+         struct dwarf_expr_piece *p = &ctx->pieces[i];
+         if (p->in_reg)
+           {
+             bfd_byte regval[MAX_REGISTER_SIZE];
+             int gdb_regnum = DWARF2_REG_TO_REGNUM (p->value);
+             get_frame_register (frame, gdb_regnum, regval);
+             memcpy (contents + offset, regval, p->size);
+           }
+         else /* In memory?  */
+           {
+             read_memory (p->value, contents + offset, p->size);
+           }
+         offset += p->size;
+       }
     }
   else if (ctx->in_reg)
     {
@@ -580,7 +599,8 @@ loclist_read_variable (struct symbol *symbol, struct frame_info *frame)
   size_t size;
 
   data = find_location_expression (dlbaton, &size,
-                                  frame ? get_frame_pc (frame) : 0);
+                                  frame ? get_frame_address_in_block (frame)
+                                  : 0);
   if (data == NULL)
     {
       val = allocate_value (SYMBOL_TYPE (symbol));
index 4b0b6bd846082c8ade2ddef3c11807516bb37d1b..0a59a8cc1ff4fd543b62980990d30a06c41c5a21 100644 (file)
@@ -3855,6 +3855,28 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
                  TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
                }
            }
+         else if (cu->producer
+                  && strncmp (cu->producer,
+                              "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
+           {
+             /* The IBM XLC compiler does not provide direct indication
+                of the containing type, but the vtable pointer is
+                always named __vfp.  */
+
+             int i;
+
+             for (i = TYPE_NFIELDS (type) - 1;
+                  i >= TYPE_N_BASECLASSES (type);
+                  --i)
+               {
+                 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
+                   {
+                     TYPE_VPTR_FIELDNO (type) = i;
+                     TYPE_VPTR_BASETYPE (type) = type;
+                     break;
+                   }
+               }
+           }
        }
 
       do_cleanups (back_to);
@@ -8795,32 +8817,51 @@ dwarf_alloc_die (void)
 static char *
 file_full_name (int file, struct line_header *lh, const char *comp_dir)
 {
-  struct file_entry *fe = &lh->file_names[file - 1];
+  /* Is the file number a valid index into the line header's file name
+     table?  Remember that file numbers start with one, not zero.  */
+  if (1 <= file && file <= lh->num_file_names)
+    {
+      struct file_entry *fe = &lh->file_names[file - 1];
   
-  if (IS_ABSOLUTE_PATH (fe->name))
-    return xstrdup (fe->name);
+      if (IS_ABSOLUTE_PATH (fe->name))
+        return xstrdup (fe->name);
+      else
+        {
+          const char *dir;
+          int dir_len;
+          char *full_name;
+
+          if (fe->dir_index)
+            dir = lh->include_dirs[fe->dir_index - 1];
+          else
+            dir = comp_dir;
+
+          if (dir)
+            {
+              dir_len = strlen (dir);
+              full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
+              strcpy (full_name, dir);
+              full_name[dir_len] = '/';
+              strcpy (full_name + dir_len + 1, fe->name);
+              return full_name;
+            }
+          else
+            return xstrdup (fe->name);
+        }
+    }
   else
     {
-      const char *dir;
-      int dir_len;
-      char *full_name;
+      /* The compiler produced a bogus file number.  We can at least
+         record the macro definitions made in the file, even if we
+         won't be able to find the file by name.  */
+      char fake_name[80];
+      sprintf (fake_name, "<bad macro file number %d>", file);
 
-      if (fe->dir_index)
-        dir = lh->include_dirs[fe->dir_index - 1];
-      else
-        dir = comp_dir;
+      complaint (&symfile_complaints, 
+                 _("bad file number in macro information (%d)"),
+                 file);
 
-      if (dir)
-        {
-          dir_len = strlen (dir);
-          full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
-          strcpy (full_name, dir);
-          full_name[dir_len] = '/';
-          strcpy (full_name + dir_len + 1, fe->name);
-          return full_name;
-        }
-      else
-        return xstrdup (fe->name);
+      return xstrdup (fake_name);
     }
 }
 
index 70a825fb42f88f0cdcd45ad11e7740a92c3c847a..f8e08ea19fcfe946f772187308ea30f1f26fbbee 100644 (file)
@@ -124,13 +124,14 @@ record_minimal_symbol (char *name, CORE_ADDR address,
 
    SYNOPSIS
 
-   void elf_symtab_read (struct objfile *objfile, int dynamic)
+   void elf_symtab_read (struct objfile *objfile, int dynamic,
+                        long number_of_symbols, asymbol **symbol_table)
 
    DESCRIPTION
 
-   Given an objfile and a flag that specifies whether or not the objfile
-   is for an executable or not (may be shared library for example), add
-   all the global function and data symbols to the minimal symbol table.
+   Given an objfile, a symbol table, and a flag indicating whether the
+   symbol table contains dynamic symbols, add all the global function
+   and data symbols to the minimal symbol table.
 
    In stabs-in-ELF, as implemented by Sun, there are some local symbols
    defined in the ELF symbol table, which can be used to locate
@@ -141,14 +142,12 @@ record_minimal_symbol (char *name, CORE_ADDR address,
  */
 
 static void
-elf_symtab_read (struct objfile *objfile, int dynamic)
+elf_symtab_read (struct objfile *objfile, int dynamic,
+                long number_of_symbols, asymbol **symbol_table)
 {
   long storage_needed;
   asymbol *sym;
-  asymbol **symbol_table;
-  long number_of_symbols;
   long i;
-  struct cleanup *back_to;
   CORE_ADDR symaddr;
   CORE_ADDR offset;
   enum minimal_symbol_type ms_type;
@@ -165,292 +164,262 @@ elf_symtab_read (struct objfile *objfile, int dynamic)
   struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info;
   int stripped = (bfd_get_symcount (objfile->obfd) == 0);
 
-  if (dynamic)
+  for (i = 0; i < number_of_symbols; i++)
     {
-      storage_needed = bfd_get_dynamic_symtab_upper_bound (objfile->obfd);
+      sym = symbol_table[i];
+      if (sym->name == NULL || *sym->name == '\0')
+       {
+         /* Skip names that don't exist (shouldn't happen), or names
+            that are null strings (may happen). */
+         continue;
+       }
 
-      /* Nothing to be done if there is no dynamic symtab.  */
-      if (storage_needed < 0)
-       return;
-    }
-  else
-    {
-      storage_needed = bfd_get_symtab_upper_bound (objfile->obfd);
-      if (storage_needed < 0)
-       error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd),
-              bfd_errmsg (bfd_get_error ()));
-    }
-  if (storage_needed > 0)
-    {
-      symbol_table = (asymbol **) xmalloc (storage_needed);
-      back_to = make_cleanup (xfree, symbol_table);
-      if (dynamic)
-       number_of_symbols = bfd_canonicalize_dynamic_symtab (objfile->obfd,
-                                                            symbol_table);
-      else
-       number_of_symbols = bfd_canonicalize_symtab (objfile->obfd, symbol_table);
-      if (number_of_symbols < 0)
-       error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd),
-              bfd_errmsg (bfd_get_error ()));
+      offset = ANOFFSET (objfile->section_offsets, sym->section->index);
+      if (dynamic
+         && sym->section == &bfd_und_section
+         && (sym->flags & BSF_FUNCTION))
+       {
+         struct minimal_symbol *msym;
+
+         /* Symbol is a reference to a function defined in
+            a shared library.
+            If its value is non zero then it is usually the address
+            of the corresponding entry in the procedure linkage table,
+            plus the desired section offset.
+            If its value is zero then the dynamic linker has to resolve
+            the symbol. We are unable to find any meaningful address
+            for this symbol in the executable file, so we skip it.  */
+         symaddr = sym->value;
+         if (symaddr == 0)
+           continue;
+         symaddr += offset;
+         msym = record_minimal_symbol
+           ((char *) sym->name, symaddr,
+            mst_solib_trampoline, sym->section, objfile);
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+         if (msym != NULL)
+           msym->filename = filesymname;
+#endif
+         continue;
+       }
 
-      for (i = 0; i < number_of_symbols; i++)
+      /* If it is a nonstripped executable, do not enter dynamic
+        symbols, as the dynamic symbol table is usually a subset
+        of the main symbol table.  */
+      if (dynamic && !stripped)
+       continue;
+      if (sym->flags & BSF_FILE)
        {
-         sym = symbol_table[i];
-         if (sym->name == NULL || *sym->name == '\0')
+         /* STT_FILE debugging symbol that helps stabs-in-elf debugging.
+            Chain any old one onto the objfile; remember new sym.  */
+         if (sectinfo != NULL)
            {
-             /* Skip names that don't exist (shouldn't happen), or names
-                that are null strings (may happen). */
-             continue;
+             sectinfo->next = dbx->stab_section_info;
+             dbx->stab_section_info = sectinfo;
+             sectinfo = NULL;
            }
-
-          offset = ANOFFSET (objfile->section_offsets, sym->section->index);
-         if (dynamic
-             && sym->section == &bfd_und_section
-             && (sym->flags & BSF_FUNCTION))
-           {
-             struct minimal_symbol *msym;
-
-             /* Symbol is a reference to a function defined in
-                a shared library.
-                If its value is non zero then it is usually the address
-                of the corresponding entry in the procedure linkage table,
-                plus the desired section offset.
-                If its value is zero then the dynamic linker has to resolve
-                the symbol. We are unable to find any meaningful address
-                for this symbol in the executable file, so we skip it.  */
-             symaddr = sym->value;
-             if (symaddr == 0)
-               continue;
-             symaddr += offset;
-             msym = record_minimal_symbol
-               ((char *) sym->name, symaddr,
-                mst_solib_trampoline, sym->section, objfile);
+         filesym = sym;
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             if (msym != NULL)
-               msym->filename = filesymname;
+         filesymname =
+           obsavestring ((char *) filesym->name, strlen (filesym->name),
+                         &objfile->objfile_obstack);
 #endif
-             continue;
+       }
+      else if (sym->flags & BSF_SECTION_SYM)
+       continue;
+      else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
+       {
+         struct minimal_symbol *msym;
+
+         /* Select global/local/weak symbols.  Note that bfd puts abs
+            symbols in their own section, so all symbols we are
+            interested in will have a section. */
+         /* Bfd symbols are section relative. */
+         symaddr = sym->value + sym->section->vma;
+         /* Relocate all non-absolute symbols by the section offset.  */
+         if (sym->section != &bfd_abs_section)
+           {
+             symaddr += offset;
            }
-
-         /* If it is a nonstripped executable, do not enter dynamic
-            symbols, as the dynamic symbol table is usually a subset
-            of the main symbol table.  */
-         if (dynamic && !stripped)
-           continue;
-         if (sym->flags & BSF_FILE)
+         /* For non-absolute symbols, use the type of the section
+            they are relative to, to intuit text/data.  Bfd provides
+            no way of figuring this out for absolute symbols. */
+         if (sym->section == &bfd_abs_section)
            {
-             /* STT_FILE debugging symbol that helps stabs-in-elf debugging.
-                Chain any old one onto the objfile; remember new sym.  */
-             if (sectinfo != NULL)
+             /* This is a hack to get the minimal symbol type
+                right for Irix 5, which has absolute addresses
+                with special section indices for dynamic symbols. */
+             unsigned short shndx =
+               ((elf_symbol_type *) sym)->internal_elf_sym.st_shndx;
+
+             switch (shndx)
                {
-                 sectinfo->next = dbx->stab_section_info;
-                 dbx->stab_section_info = sectinfo;
-                 sectinfo = NULL;
+               case SHN_MIPS_TEXT:
+                 ms_type = mst_text;
+                 break;
+               case SHN_MIPS_DATA:
+                 ms_type = mst_data;
+                 break;
+               case SHN_MIPS_ACOMMON:
+                 ms_type = mst_bss;
+                 break;
+               default:
+                 ms_type = mst_abs;
+               }
+
+             /* If it is an Irix dynamic symbol, skip section name
+                symbols, relocate all others by section offset. */
+             if (ms_type != mst_abs)
+               {
+                 if (sym->name[0] == '.')
+                   continue;
+                 symaddr += offset;
                }
-             filesym = sym;
-#ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             filesymname =
-               obsavestring ((char *) filesym->name, strlen (filesym->name),
-                             &objfile->objfile_obstack);
-#endif
            }
-         else if (sym->flags & BSF_SECTION_SYM)
-           continue;
-         else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
+         else if (sym->section->flags & SEC_CODE)
            {
-             struct minimal_symbol *msym;
-
-             /* Select global/local/weak symbols.  Note that bfd puts abs
-                symbols in their own section, so all symbols we are
-                interested in will have a section. */
-             /* Bfd symbols are section relative. */
-             symaddr = sym->value + sym->section->vma;
-             /* Relocate all non-absolute symbols by the section offset.  */
-             if (sym->section != &bfd_abs_section)
+             if (sym->flags & BSF_GLOBAL)
                {
-                 symaddr += offset;
+                 ms_type = mst_text;
                }
-             /* For non-absolute symbols, use the type of the section
-                they are relative to, to intuit text/data.  Bfd provides
-                no way of figuring this out for absolute symbols. */
-             if (sym->section == &bfd_abs_section)
+             else if ((sym->name[0] == '.' && sym->name[1] == 'L')
+                      || ((sym->flags & BSF_LOCAL)
+                          && sym->name[0] == '$'
+                          && sym->name[1] == 'L'))
+               /* Looks like a compiler-generated label.  Skip
+                  it.  The assembler should be skipping these (to
+                  keep executables small), but apparently with
+                  gcc on the (deleted) delta m88k SVR4, it loses.
+                  So to have us check too should be harmless (but
+                  I encourage people to fix this in the assembler
+                  instead of adding checks here).  */
+               continue;
+             else
                {
-                 /* This is a hack to get the minimal symbol type
-                    right for Irix 5, which has absolute addresses
-                    with special section indices for dynamic symbols. */
-                 unsigned short shndx =
-                 ((elf_symbol_type *) sym)->internal_elf_sym.st_shndx;
-
-                 switch (shndx)
-                   {
-                   case SHN_MIPS_TEXT:
-                     ms_type = mst_text;
-                     break;
-                   case SHN_MIPS_DATA:
-                     ms_type = mst_data;
-                     break;
-                   case SHN_MIPS_ACOMMON:
-                     ms_type = mst_bss;
-                     break;
-                   default:
-                     ms_type = mst_abs;
-                   }
-
-                 /* If it is an Irix dynamic symbol, skip section name
-                    symbols, relocate all others by section offset. */
-                 if (ms_type != mst_abs)
-                   {
-                     if (sym->name[0] == '.')
-                       continue;
-                     symaddr += offset;
-                   }
+                 ms_type = mst_file_text;
                }
-             else if (sym->section->flags & SEC_CODE)
+           }
+         else if (sym->section->flags & SEC_ALLOC)
+           {
+             if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
                {
-                 if (sym->flags & BSF_GLOBAL)
+                 if (sym->section->flags & SEC_LOAD)
                    {
-                     ms_type = mst_text;
+                     ms_type = mst_data;
                    }
-                 else if ((sym->name[0] == '.' && sym->name[1] == 'L')
-                          || ((sym->flags & BSF_LOCAL)
-                              && sym->name[0] == '$'
-                              && sym->name[1] == 'L'))
-                   /* Looks like a compiler-generated label.  Skip
-                      it.  The assembler should be skipping these (to
-                      keep executables small), but apparently with
-                      gcc on the (deleted) delta m88k SVR4, it loses.
-                      So to have us check too should be harmless (but
-                      I encourage people to fix this in the assembler
-                      instead of adding checks here).  */
-                   continue;
                  else
                    {
-                     ms_type = mst_file_text;
+                     ms_type = mst_bss;
                    }
                }
-             else if (sym->section->flags & SEC_ALLOC)
+             else if (sym->flags & BSF_LOCAL)
                {
-                 if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
-                   {
-                     if (sym->section->flags & SEC_LOAD)
-                       {
-                         ms_type = mst_data;
-                       }
-                     else
-                       {
-                         ms_type = mst_bss;
-                       }
-                   }
-                 else if (sym->flags & BSF_LOCAL)
+                 /* Named Local variable in a Data section.
+                    Check its name for stabs-in-elf.  */
+                 int special_local_sect;
+                 if (strcmp ("Bbss.bss", sym->name) == 0)
+                   special_local_sect = SECT_OFF_BSS (objfile);
+                 else if (strcmp ("Ddata.data", sym->name) == 0)
+                   special_local_sect = SECT_OFF_DATA (objfile);
+                 else if (strcmp ("Drodata.rodata", sym->name) == 0)
+                   special_local_sect = SECT_OFF_RODATA (objfile);
+                 else
+                   special_local_sect = -1;
+                 if (special_local_sect >= 0)
                    {
-                     /* Named Local variable in a Data section.
-                        Check its name for stabs-in-elf.  */
-                     int special_local_sect;
-                     if (strcmp ("Bbss.bss", sym->name) == 0)
-                       special_local_sect = SECT_OFF_BSS (objfile);
-                     else if (strcmp ("Ddata.data", sym->name) == 0)
-                       special_local_sect = SECT_OFF_DATA (objfile);
-                     else if (strcmp ("Drodata.rodata", sym->name) == 0)
-                       special_local_sect = SECT_OFF_RODATA (objfile);
-                     else
-                       special_local_sect = -1;
-                     if (special_local_sect >= 0)
+                     /* Found a special local symbol.  Allocate a
+                        sectinfo, if needed, and fill it in.  */
+                     if (sectinfo == NULL)
                        {
-                         /* Found a special local symbol.  Allocate a
-                            sectinfo, if needed, and fill it in.  */
-                         if (sectinfo == NULL)
+                         int max_index;
+                         size_t size;
+
+                         max_index 
+                           = max (SECT_OFF_BSS (objfile),
+                                  max (SECT_OFF_DATA (objfile),
+                                       SECT_OFF_RODATA (objfile)));
+
+                         /* max_index is the largest index we'll
+                            use into this array, so we must
+                            allocate max_index+1 elements for it.
+                            However, 'struct stab_section_info'
+                            already includes one element, so we
+                            need to allocate max_index aadditional
+                            elements.  */
+                         size = (sizeof (struct stab_section_info) 
+                                 + (sizeof (CORE_ADDR)
+                                    * max_index));
+                         sectinfo = (struct stab_section_info *)
+                           xmalloc (size);
+                         memset (sectinfo, 0, size);
+                         sectinfo->num_sections = max_index;
+                         if (filesym == NULL)
                            {
-                             int max_index;
-                             size_t size;
-
-                             max_index 
-                               = max (SECT_OFF_BSS (objfile),
-                                      max (SECT_OFF_DATA (objfile),
-                                           SECT_OFF_RODATA (objfile)));
-
-                              /* max_index is the largest index we'll
-                                 use into this array, so we must
-                                 allocate max_index+1 elements for it.
-                                 However, 'struct stab_section_info'
-                                 already includes one element, so we
-                                 need to allocate max_index aadditional
-                                 elements.  */
-                             size = (sizeof (struct stab_section_info) 
-                                     + (sizeof (CORE_ADDR)
-                                        * max_index));
-                             sectinfo = (struct stab_section_info *)
-                               xmalloc (size);
-                             memset (sectinfo, 0, size);
-                             sectinfo->num_sections = max_index;
-                             if (filesym == NULL)
-                               {
-                                 complaint (&symfile_complaints,
-                                            _("elf/stab section information %s without a preceding file symbol"),
-                                            sym->name);
-                               }
-                             else
-                               {
-                                 sectinfo->filename =
-                                   (char *) filesym->name;
-                               }
+                             complaint (&symfile_complaints,
+                                        _("elf/stab section information %s without a preceding file symbol"),
+                                        sym->name);
+                           }
+                         else
+                           {
+                             sectinfo->filename =
+                               (char *) filesym->name;
                            }
-                         if (sectinfo->sections[special_local_sect] != 0)
-                           complaint (&symfile_complaints,
-                                      _("duplicated elf/stab section information for %s"),
-                                      sectinfo->filename);
-                         /* BFD symbols are section relative.  */
-                         symaddr = sym->value + sym->section->vma;
-                         /* Relocate non-absolute symbols by the
-                             section offset.  */
-                         if (sym->section != &bfd_abs_section)
-                           symaddr += offset;
-                         sectinfo->sections[special_local_sect] = symaddr;
-                         /* The special local symbols don't go in the
-                            minimal symbol table, so ignore this one.  */
-                         continue;
-                       }
-                     /* Not a special stabs-in-elf symbol, do regular
-                        symbol processing.  */
-                     if (sym->section->flags & SEC_LOAD)
-                       {
-                         ms_type = mst_file_data;
-                       }
-                     else
-                       {
-                         ms_type = mst_file_bss;
                        }
+                     if (sectinfo->sections[special_local_sect] != 0)
+                       complaint (&symfile_complaints,
+                                  _("duplicated elf/stab section information for %s"),
+                                  sectinfo->filename);
+                     /* BFD symbols are section relative.  */
+                     symaddr = sym->value + sym->section->vma;
+                     /* Relocate non-absolute symbols by the
+                        section offset.  */
+                     if (sym->section != &bfd_abs_section)
+                       symaddr += offset;
+                     sectinfo->sections[special_local_sect] = symaddr;
+                     /* The special local symbols don't go in the
+                        minimal symbol table, so ignore this one.  */
+                     continue;
+                   }
+                 /* Not a special stabs-in-elf symbol, do regular
+                    symbol processing.  */
+                 if (sym->section->flags & SEC_LOAD)
+                   {
+                     ms_type = mst_file_data;
                    }
                  else
                    {
-                     ms_type = mst_unknown;
+                     ms_type = mst_file_bss;
                    }
                }
              else
                {
-                 /* FIXME:  Solaris2 shared libraries include lots of
-                    odd "absolute" and "undefined" symbols, that play 
-                    hob with actions like finding what function the PC
-                    is in.  Ignore them if they aren't text, data, or bss.  */
-                 /* ms_type = mst_unknown; */
-                 continue;     /* Skip this symbol. */
+                 ms_type = mst_unknown;
                }
-             msym = record_minimal_symbol
-               ((char *) sym->name, symaddr,
-                ms_type, sym->section, objfile);
-             if (msym)
-             {
-               /* Pass symbol size field in via BFD.  FIXME!!!  */
-               unsigned long size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
-               MSYMBOL_SIZE(msym) = size;
-             }
+           }
+         else
+           {
+             /* FIXME:  Solaris2 shared libraries include lots of
+                odd "absolute" and "undefined" symbols, that play 
+                hob with actions like finding what function the PC
+                is in.  Ignore them if they aren't text, data, or bss.  */
+             /* ms_type = mst_unknown; */
+             continue; /* Skip this symbol. */
+           }
+         msym = record_minimal_symbol
+           ((char *) sym->name, symaddr,
+            ms_type, sym->section, objfile);
+         if (msym)
+           {
+             /* Pass symbol size field in via BFD.  FIXME!!!  */
+             unsigned long size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+             MSYMBOL_SIZE(msym) = size;
+           }
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             if (msym != NULL)
-               msym->filename = filesymname;
+         if (msym != NULL)
+           msym->filename = filesymname;
 #endif
-             ELF_MAKE_MSYMBOL_SPECIAL (sym, msym);
-           }
+         ELF_MAKE_MSYMBOL_SPECIAL (sym, msym);
        }
-      do_cleanups (back_to);
     }
 }
 
@@ -493,6 +462,9 @@ elf_symfile_read (struct objfile *objfile, int mainline)
   struct elfinfo ei;
   struct cleanup *back_to;
   CORE_ADDR offset;
+  long symcount = 0, dynsymcount = 0, synthcount, storage_needed;
+  asymbol **symbol_table = NULL, **dyn_symbol_table = NULL;
+  asymbol *synthsyms;
 
   init_minimal_symbol_collection ();
   back_to = make_cleanup_discard_minimal_symbols ();
@@ -509,11 +481,65 @@ elf_symfile_read (struct objfile *objfile, int mainline)
      chain of info into the dbx_symfile_info in objfile->deprecated_sym_stab_info,
      which can later be used by elfstab_offset_sections.  */
 
-  elf_symtab_read (objfile, 0);
+  storage_needed = bfd_get_symtab_upper_bound (objfile->obfd);
+  if (storage_needed < 0)
+    error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd),
+          bfd_errmsg (bfd_get_error ()));
+
+  if (storage_needed > 0)
+    {
+      symbol_table = (asymbol **) xmalloc (storage_needed);
+      make_cleanup (xfree, symbol_table);
+      symcount = bfd_canonicalize_symtab (objfile->obfd, symbol_table);
+
+      if (symcount < 0)
+       error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd),
+              bfd_errmsg (bfd_get_error ()));
+
+      elf_symtab_read (objfile, 0, symcount, symbol_table);
+    }
 
   /* Add the dynamic symbols.  */
 
-  elf_symtab_read (objfile, 1);
+  storage_needed = bfd_get_dynamic_symtab_upper_bound (objfile->obfd);
+
+  if (storage_needed > 0)
+    {
+      dyn_symbol_table = (asymbol **) xmalloc (storage_needed);
+      make_cleanup (xfree, dyn_symbol_table);
+      dynsymcount = bfd_canonicalize_dynamic_symtab (objfile->obfd,
+                                                    dyn_symbol_table);
+
+      if (dynsymcount < 0)
+       error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd),
+              bfd_errmsg (bfd_get_error ()));
+
+      elf_symtab_read (objfile, 1, dynsymcount, dyn_symbol_table);
+    }
+
+  /* Add synthetic symbols - for instance, names for any PLT entries.  */
+
+  synthcount = bfd_get_synthetic_symtab (abfd, symcount, symbol_table,
+                                        dynsymcount, dyn_symbol_table,
+                                        &synthsyms);
+  if (synthcount > 0)
+    {
+      asymbol **synth_symbol_table;
+      long i;
+
+      make_cleanup (xfree, synthsyms);
+      synth_symbol_table = xmalloc (sizeof (asymbol *) * synthcount);
+      for (i = 0; i < synthcount; i++)
+       {
+         synth_symbol_table[i] = synthsyms + i;
+         /* Synthetic symbols are not, strictly speaking, either local
+            or global.  But we can treat them as global symbols, since
+            they are effectively dynamic symbols.  */
+         synth_symbol_table[i]->flags |= BSF_GLOBAL;
+       }
+      make_cleanup (xfree, synth_symbol_table);
+      elf_symtab_read (objfile, 0, synthcount, synth_symbol_table);
+    }
 
   /* Install any minimal symbols that have been collected as the current
      minimal symbols for this objfile.  The debug readers below this point
index bc1fe8ea38c54eb1764d04f44703bc83d9782594..438ef2035dc9f9a4eb85251fcdeeadd9fd475845 100644 (file)
@@ -1110,7 +1110,7 @@ gdb_setup_readline (void)
      that the sync setup is ALL done in gdb_init, and we would only
      mess it up here.  The sync stuff should really go away over
      time.  */
-  extern batch_silent;
+  extern int batch_silent;
 
   if (!batch_silent)
     gdb_stdout = stdio_fileopen (stdout);
index 2ec44d12e591311498cc70675afba7f4771e39cc..b9447edc86e99bd4b41bf6e90fc0b9882754b5e1 100644 (file)
@@ -300,7 +300,7 @@ frv_linux_sigtramp_frame_prev_register (struct frame_info *next_frame,
                                   void **this_cache,
                                   int regnum, int *optimizedp,
                                   enum lval_type *lvalp, CORE_ADDR *addrp,
-                                  int *realnump, void *valuep)
+                                  int *realnump, gdb_byte *valuep)
 {
   /* Make sure we've initialized the cache.  */
   struct trad_frame_cache *cache =
index e597037b9122c5088464185f10fe2f1595da528b..483de85a210363c0c2892b87dee9b1d7b7213716 100644 (file)
@@ -309,7 +309,7 @@ frv_register_type (struct gdbarch *gdbarch, int reg)
 
 static void
 frv_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
-                          int reg, void *buffer)
+                          int reg, gdb_byte *buffer)
 {
   if (reg == iacc0_regnum)
     {
@@ -335,7 +335,7 @@ frv_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
 
 static void
 frv_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
-                          int reg, const void *buffer)
+                          int reg, const gdb_byte *buffer)
 {
   if (reg == iacc0_regnum)
     {
@@ -1031,7 +1031,7 @@ frv_frame_unwind_cache (struct frame_info *next_frame,
 
 static void
 frv_extract_return_value (struct type *type, struct regcache *regcache,
-                          void *valbuf)
+                          gdb_byte *valbuf)
 {
   int len = TYPE_LENGTH (type);
 
@@ -1247,7 +1247,7 @@ frv_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 
 static void
 frv_store_return_value (struct type *type, struct regcache *regcache,
-                        const void *valbuf)
+                        const gdb_byte *valbuf)
 {
   int len = TYPE_LENGTH (type);
 
@@ -1377,7 +1377,7 @@ frv_frame_prev_register (struct frame_info *next_frame,
                          void **this_prologue_cache,
                          int regnum, int *optimizedp,
                          enum lval_type *lvalp, CORE_ADDR *addrp,
-                         int *realnump, void *bufferp)
+                         int *realnump, gdb_byte *bufferp)
 {
   struct frv_unwind_cache *info
     = frv_frame_unwind_cache (next_frame, this_prologue_cache);
index bdf99aeddb3bbdc198d09b06f2b59f4ea5a72ce7..ec1e152706fe1e857ad027b0bdfa943600621c73 100644 (file)
@@ -1,3 +1,16 @@
+2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * linux-arm-low.c (arm_eabi_breakpoint): New variable.
+       (arm_breakpoint_at): Recognize both breakpoints.
+       (the_low_target): Use the correct breakpoint instruction.
+
+2005-11-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.srv (x86_64-*-linux*): Turn on thread_db support.
+       * linux-x86-64-low.c (x86_64_breakpoint, x86_64_breakpoint_len)
+       (x86_64_get_pc, x86_64_set_pc, x86_64_breakpoint_at): New.
+       (the_low_target): Update.
+
 2005-10-25  Andreas Schwab  <schwab@suse.de>
 
        * server.c (main): Allocate mem_buf with PBUFSIZ bytes.
index f0e4dd368b9680489e9b6724724ed059b955db0c..e2d52c09e75089522109c18b79599c01e973fd19 100644 (file)
@@ -87,6 +87,7 @@ case "${target}" in
   x86_64-*-linux*)     srv_regobj=reg-x86-64.o
                        srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o"
                        srv_linux_regsets=yes
+                       srv_linux_thread_db=yes
                        ;;
   xscale*-*-linux*)    srv_regobj=reg-arm.o
                        srv_tgtobj="linux-low.o linux-arm-low.o"
index 7c23b17789ad0c0f9622d6db2468687da353870e..643da0853a30c6e6f5e1d6f289e30cbcafd78e55 100644 (file)
@@ -70,6 +70,12 @@ arm_set_pc (CORE_ADDR pc)
 static const unsigned long arm_breakpoint = 0xef9f0001;
 #define arm_breakpoint_len 4
 
+/* For new EABI binaries.  We recognize it regardless of which ABI
+   is used for gdbserver, so single threaded debugging should work
+   OK, but for multi-threaded debugging we only insert the current
+   ABI's breakpoint instruction.  For now at least.  */
+static const unsigned long arm_eabi_breakpoint = 0xe7f001f0;
+
 static int
 arm_breakpoint_at (CORE_ADDR where)
 {
@@ -79,8 +85,12 @@ arm_breakpoint_at (CORE_ADDR where)
   if (insn == arm_breakpoint)
     return 1;
 
+  if (insn == arm_eabi_breakpoint)
+    return 1;
+
   /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
+     two.  */
+
   return 0;
 }
 
@@ -102,7 +112,11 @@ struct linux_target_ops the_low_target = {
   arm_cannot_store_register,
   arm_get_pc,
   arm_set_pc,
+#ifndef __ARM_EABI__
   (const unsigned char *) &arm_breakpoint,
+#else
+  (const unsigned char *) &arm_eabi_breakpoint,
+#endif
   arm_breakpoint_len,
   arm_reinsert_addr,
   0,
index fa7440dbd2afca531cd150c52a648bec7dc1e5ed..fdf5ee10e99a3db68be7fb4ee85841367fb58b27 100644 (file)
@@ -1,6 +1,6 @@
 /* GNU/Linux/x86-64 specific low level interface, for the remote server
    for GDB.
-   Copyright 2002, 2004
+   Copyright 2002, 2004, 2005
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -129,9 +129,53 @@ struct regset_info target_regsets[] = {
   { 0, 0, -1, -1, NULL, NULL }
 };
 
+static const unsigned char x86_64_breakpoint[] = { 0xCC };
+#define x86_64_breakpoint_len 1
+                
+extern int debug_threads;
+
+static CORE_ADDR
+x86_64_get_pc ()
+{
+  unsigned long pc;
+
+  collect_register_by_name ("rip", &pc);
+
+  if (debug_threads)
+    fprintf (stderr, "stop pc (before any decrement) is %08lx\n", pc);
+  return pc;
+}
+
+static void
+x86_64_set_pc (CORE_ADDR newpc)
+{
+  if (debug_threads)
+    fprintf (stderr, "set pc to %08lx\n", (long) newpc);
+  supply_register_by_name ("rip", &newpc);
+}
+
+static int
+x86_64_breakpoint_at (CORE_ADDR pc)
+{
+  unsigned char c;
+
+  read_inferior_memory (pc, &c, 1);
+  if (c == 0xCC)
+    return 1;
+
+  return 0;
+}
+
 struct linux_target_ops the_low_target = {
   -1,
   NULL,
   NULL,
   NULL,
+  x86_64_get_pc,
+  x86_64_set_pc,
+  x86_64_breakpoint,  
+  x86_64_breakpoint_len,
+  NULL,                                 
+  1,
+  x86_64_breakpoint_at,
 };
index 94a5cc88124b457239dc9551852e68f930bb4922..dfc75b8e49453dbc30a4a62be6a84dd036b2fcee 100644 (file)
@@ -388,8 +388,8 @@ _initialize_hppa_linux_nat (void)
   t = linux_target ();
 
   /* Add our register access methods.  */
-  t->to_fetch_registers = arm_linux_fetch_inferior_registers;
-  t->to_store_registers = arm_linux_store_inferior_registers;
+  t->to_fetch_registers = hppa_linux_fetch_inferior_registers;
+  t->to_store_registers = hppa_linux_store_inferior_registers;
 
   /* Register the target.  */
   add_target (t);
index ac43d26ad5632ccb89c3fb6a35fa46e7b32a115f..0d63aebd47fc888b23930048074f06ddee88f35b 100644 (file)
@@ -324,7 +324,7 @@ ia64_dwarf_reg_to_regnum (int reg)
 }
 
 static int
-floatformat_valid (const struct floatformat *fmt, const char *from)
+floatformat_valid (const struct floatformat *fmt, const void *from)
 {
   return 1;
 }
index 4c2a78d2dbc33cbefd374edae41d8478809eb586..fab0a962adeea0012c0cf72c5caebbf03e97afd5 100644 (file)
@@ -46,6 +46,7 @@
 #include "observer.h"
 #include "language.h"
 #include "solib.h"
+#include "main.h"
 
 #include "gdb_assert.h"
 #include "mi/mi-common.h"
@@ -2931,6 +2932,8 @@ print_stop_reason (enum inferior_stop_reason stop_reason, int stop_info)
               async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY));
          ui_out_text (uiout, "\nProgram exited normally.\n");
        }
+      /* Support the --return-child-result option.  */
+      return_child_result_value = stop_info;
       break;
     case SIGNAL_RECEIVED:
       /* Signal received. The signal table tells us to print about
index 5d7750d65bd152ac4f5853d38ddf96b45eecea85..e6abcfaf2f5561e1a59fa73417d85d7215285629 100644 (file)
@@ -102,7 +102,6 @@ child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
   int status;
   char *execd_pathname = NULL;
   int exit_status;
-  int related_pid;
   int syscall_id;
   enum target_waitkind kind;
   int pid;
index 858c1e44309001239438f17380ce7ac0f98f7fa7..4d0250e3b484f6a3bfe8e29ac5b2af2c35cf0d48 100644 (file)
@@ -76,5 +76,6 @@ extern void clear_interpreter_hooks (void);
 #define INTERP_MI3             "mi3"
 #define INTERP_MI              "mi"
 #define INTERP_TUI             "tui"
+#define INTERP_INSIGHT         "insight"
 
 #endif
index a4f407f994288044fdbe382611e587c390e2a6e1..3d4aed43704c0e6a533f475ceb7580692c5f2899 100644 (file)
@@ -77,7 +77,7 @@
    to the ones used by the kernel.  Therefore, these trampolines are
    supported too.  */
 
-static const unsigned char linux_sigtramp_code[] = {
+static const gdb_byte linux_sigtramp_code[] = {
   0x67, 0x77, 0x10, 0xf2,
 };
 
@@ -87,7 +87,7 @@ static const unsigned char linux_sigtramp_code[] = {
 static CORE_ADDR
 m32r_linux_sigtramp_start (CORE_ADDR pc, struct frame_info *next_frame)
 {
-  unsigned char buf[4];
+  gdb_byte buf[4];
 
   /* We only recognize a signal trampoline if PC is at the start of
      one of the instructions.  We optimize for finding the PC at the
@@ -125,7 +125,7 @@ m32r_linux_sigtramp_start (CORE_ADDR pc, struct frame_info *next_frame)
 
    The effect is to call the system call rt_sigreturn.  */
 
-static const unsigned char linux_rt_sigtramp_code[] = {
+static const gdb_byte linux_rt_sigtramp_code[] = {
   0x97, 0xf0, 0x00, 0xad, 0x10, 0xf2, 0xf0, 0x00,
 };
 
@@ -135,7 +135,7 @@ static const unsigned char linux_rt_sigtramp_code[] = {
 static CORE_ADDR
 m32r_linux_rt_sigtramp_start (CORE_ADDR pc, struct frame_info *next_frame)
 {
-  unsigned char buf[4];
+  gdb_byte buf[4];
 
   /* We only recognize a signal trampoline if PC is at the start of
      one of the instructions.  We optimize for finding the PC at the
@@ -282,7 +282,7 @@ m32r_linux_sigtramp_frame_prev_register (struct frame_info *next_frame,
                                         int regnum, int *optimizedp,
                                         enum lval_type *lvalp,
                                         CORE_ADDR *addrp,
-                                        int *realnump, void *valuep)
+                                        int *realnump, gdb_byte *valuep)
 {
   struct m32r_frame_cache *cache =
     m32r_linux_sigtramp_frame_cache (next_frame, this_cache);
index 26deea0d5eed0314564b5116f49a127f82cb44de..b978dfeef70083ab7774b5ad895e713a892445ee 100644 (file)
@@ -84,8 +84,8 @@ static int
 m32r_memory_insert_breakpoint (CORE_ADDR addr, bfd_byte *contents_cache)
 {
   int val;
-  char buf[4];
-  char bp_entry[] = { 0x10, 0xf1 };    /* dpt */
+  gdb_byte buf[4];
+  gdb_byte bp_entry[] = { 0x10, 0xf1 };        /* dpt */
 
   /* Save the memory contents.  */
   val = target_read_memory (addr & 0xfffffffc, contents_cache, 4);
@@ -137,7 +137,7 @@ static int
 m32r_memory_remove_breakpoint (CORE_ADDR addr, bfd_byte *contents_cache)
 {
   int val;
-  char buf[4];
+  gdb_byte buf[4];
 
   buf[0] = contents_cache[0];
   buf[1] = contents_cache[1];
@@ -161,12 +161,12 @@ m32r_memory_remove_breakpoint (CORE_ADDR addr, bfd_byte *contents_cache)
   return val;
 }
 
-static const unsigned char *
+static const gdb_byte *
 m32r_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
 {
-  static char be_bp_entry[] = { 0x10, 0xf1, 0x70, 0x00 };      /* dpt -> nop */
-  static char le_bp_entry[] = { 0x00, 0x70, 0xf1, 0x10 };      /* dpt -> nop */
-  unsigned char *bp;
+  static gdb_byte be_bp_entry[] = { 0x10, 0xf1, 0x70, 0x00 };  /* dpt -> nop */
+  static gdb_byte le_bp_entry[] = { 0x00, 0x70, 0xf1, 0x10 };  /* dpt -> nop */
+  gdb_byte *bp;
 
   /* Determine appropriate breakpoint.  */
   if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
@@ -250,7 +250,7 @@ m32r_store_return_value (struct type *type, struct regcache *regcache,
 
   if (len > 4)
     {
-      regval = extract_unsigned_integer ((char *) valbuf + 4, len - 4);
+      regval = extract_unsigned_integer ((gdb_byte *) valbuf + 4, len - 4);
       regcache_cooked_write_unsigned (regcache, RET1_REGNUM + 1, regval);
     }
 }
@@ -345,7 +345,7 @@ decode_prologue (CORE_ADDR start_pc, CORE_ADDR scan_limit,
       if ((insn >> 8) == 0x4f) /* addi sp, xx */
        /* add 8 bit sign-extended offset */
        {
-         int stack_adjust = (char) (insn & 0xff);
+         int stack_adjust = (gdb_byte) (insn & 0xff);
 
          /* there are probably two of these stack adjustments:
             1) A negative one in the prologue, and
@@ -574,7 +574,7 @@ m32r_frame_unwind_cache (struct frame_info *next_frame,
       else if ((op & 0xff00) == 0x4f00)
        {
          /* addi sp, xx */
-         int n = (char) (op & 0xff);
+         int n = (gdb_byte) (op & 0xff);
          info->sp_offset += n;
        }
       else if (op == 0x1d8f)
@@ -679,8 +679,8 @@ m32r_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
   struct type *type;
   enum type_code typecode;
   CORE_ADDR regval;
-  char *val;
-  char valbuf[MAX_REGISTER_SIZE];
+  gdb_byte *val;
+  gdb_byte valbuf[MAX_REGISTER_SIZE];
   int len;
   int odd_sized_struct;
 
@@ -726,11 +726,11 @@ m32r_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
        {
          /* value gets right-justified in the register or stack word */
          memcpy (valbuf + (register_size (gdbarch, argreg) - len),
-                 (char *) value_contents (args[argnum]), len);
+                 (gdb_byte *) value_contents (args[argnum]), len);
          val = valbuf;
        }
       else
-       val = (char *) value_contents (args[argnum]);
+       val = (gdb_byte *) value_contents (args[argnum]);
 
       while (len > 0)
        {
@@ -791,8 +791,8 @@ m32r_extract_return_value (struct type *type, struct regcache *regcache,
 
 enum return_value_convention
 m32r_return_value (struct gdbarch *gdbarch, struct type *valtype,
-                  struct regcache *regcache, void *readbuf,
-                  const void *writebuf)
+                  struct regcache *regcache, gdb_byte *readbuf,
+                  const gdb_byte *writebuf)
 {
   if (TYPE_LENGTH (valtype) > 8)
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -852,7 +852,7 @@ m32r_frame_prev_register (struct frame_info *next_frame,
                          void **this_prologue_cache,
                          int regnum, int *optimizedp,
                          enum lval_type *lvalp, CORE_ADDR *addrp,
-                         int *realnump, void *bufferp)
+                         int *realnump, gdb_byte *bufferp)
 {
   struct m32r_unwind_cache *info
     = m32r_frame_unwind_cache (next_frame, this_prologue_cache);
index ed4cac02778f6a49b87aae835228d63dd160c1d6..053e991549487eaeacff4989b8b924d2a494dcdd 100644 (file)
@@ -291,7 +291,7 @@ m68hc11_which_soft_register (CORE_ADDR addr)
 static void
 m68hc11_pseudo_register_read (struct gdbarch *gdbarch,
                              struct regcache *regcache,
-                             int regno, void *buf)
+                             int regno, gdb_byte *buf)
 {
   /* The PC is a pseudo reg only for 68HC12 with the memory bank
      addressing mode.  */
@@ -332,7 +332,7 @@ m68hc11_pseudo_register_read (struct gdbarch *gdbarch,
 static void
 m68hc11_pseudo_register_write (struct gdbarch *gdbarch,
                               struct regcache *regcache,
-                              int regno, const void *buf)
+                              int regno, const gdb_byte *buf)
 {
   /* The PC is a pseudo reg only for 68HC12 with the memory bank
      addressing mode.  */
@@ -706,7 +706,8 @@ m68hc11_scan_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
                 break;
 
               save_addr -= 2;
-              info->saved_regs[saved_reg].addr = save_addr;
+              if (info->saved_regs)
+                info->saved_regs[saved_reg].addr = save_addr;
             }
           else
             {
@@ -905,7 +906,7 @@ m68hc11_frame_prev_register (struct frame_info *next_frame,
                              void **this_prologue_cache,
                              int regnum, int *optimizedp,
                              enum lval_type *lvalp, CORE_ADDR *addrp,
-                             int *realnump, void *bufferp)
+                             int *realnump, gdb_byte *bufferp)
 {
   struct m68hc11_unwind_cache *info
     = m68hc11_frame_unwind_cache (next_frame, this_prologue_cache);
@@ -1155,12 +1156,6 @@ m68hc11_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
     }
 }
 
-static CORE_ADDR
-m68hc11_stack_align (CORE_ADDR addr)
-{
-  return ((addr + 1) & -2);
-}
-
 static CORE_ADDR
 m68hc11_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                          struct regcache *regcache, CORE_ADDR bp_addr,
@@ -1177,11 +1172,7 @@ m68hc11_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
   first_stack_argnum = 0;
   if (struct_return)
     {
-      /* The struct is allocated on the stack and gdb used the stack
-         pointer for the address of that struct.  We must apply the
-         stack offset on the address.  */
-      regcache_cooked_write_unsigned (regcache, HARD_D_REGNUM,
-                                      struct_addr + STACK_CORRECTION);
+      regcache_cooked_write_unsigned (regcache, HARD_D_REGNUM, struct_addr);
     }
   else if (nargs > 0)
     {
@@ -1324,8 +1315,8 @@ m68hc11_extract_return_value (struct type *type, struct regcache *regcache,
 
 enum return_value_convention
 m68hc11_return_value (struct gdbarch *gdbarch, struct type *valtype,
-                     struct regcache *regcache, void *readbuf,
-                     const void *writebuf)
+                     struct regcache *regcache, gdb_byte *readbuf,
+                     const gdb_byte *writebuf)
 {
   if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
       || TYPE_CODE (valtype) == TYPE_CODE_UNION
@@ -1526,7 +1517,6 @@ m68hc11_gdbarch_init (struct gdbarch_info info,
   set_gdbarch_skip_prologue (gdbarch, m68hc11_skip_prologue);
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
   set_gdbarch_breakpoint_from_pc (gdbarch, m68hc11_breakpoint_from_pc);
-  set_gdbarch_deprecated_stack_align (gdbarch, m68hc11_stack_align);
   set_gdbarch_print_insn (gdbarch, gdb_print_insn_m68hc11);
 
   m68hc11_add_reggroups (gdbarch);
index 5e912953da3bdb6cf1771d3a0d7cd1a933d0c23d..3c9c26894c0e5e1eeeca48f17de8eda0a7841008 100644 (file)
@@ -76,6 +76,12 @@ struct ui_file *gdb_stdtargerr;
 /* Support for the --batch-silent option.  */
 int batch_silent = 0;
 
+/* Support for --return-child-result option.
+   Set the default to -1 to return error in the case
+   that the program does not run or does not complete.  */
+int return_child_result = 0;
+int return_child_result_value = -1;
+
 /* Whether to enable writing into executable and core files */
 extern int write_files;
 
@@ -132,7 +138,13 @@ captured_main (void *data)
   static int print_version;
 
   /* Pointers to all arguments of --command option.  */
-  char **cmdarg;
+  struct cmdarg {
+    enum {
+      CMDARG_FILE,
+      CMDARG_COMMAND
+    } type;
+    char *string;
+  } *cmdarg;
   /* Allocated size of cmdarg.  */
   int cmdsize;
   /* Number of elements of cmdarg used.  */
@@ -172,7 +184,7 @@ captured_main (void *data)
 #endif
 
   cmdsize = 1;
-  cmdarg = (char **) xmalloc (cmdsize * sizeof (*cmdarg));
+  cmdarg = (struct cmdarg *) xmalloc (cmdsize * sizeof (*cmdarg));
   ncmd = 0;
   dirsize = 1;
   dirarg = (char **) xmalloc (dirsize * sizeof (*dirarg));
@@ -279,8 +291,10 @@ captured_main (void *data)
       {"pid", required_argument, 0, 'p'},
       {"p", required_argument, 0, 'p'},
       {"command", required_argument, 0, 'x'},
+      {"eval-command", required_argument, 0, 'X'},
       {"version", no_argument, &print_version, 1},
       {"x", required_argument, 0, 'x'},
+      {"ex", required_argument, 0, 'X'},
 #ifdef GDBTK
       {"tclcommand", required_argument, 0, 'z'},
       {"enable-external-editor", no_argument, 0, 'y'},
@@ -303,6 +317,7 @@ captured_main (void *data)
       {"write", no_argument, &write_files, 1},
       {"args", no_argument, &set_args, 1},
      {"l", required_argument, 0, 'l'},
+      {"return-child-result", no_argument, &return_child_result, 1},
       {0, no_argument, 0, 0}
     };
 
@@ -343,11 +358,16 @@ captured_main (void *data)
          case OPT_TUI:
            /* --tui is equivalent to -i=tui.  */
            xfree (interpreter_p);
-           interpreter_p = xstrdup ("tui");
+           interpreter_p = xstrdup (INTERP_TUI);
            break;
          case OPT_WINDOWS:
            /* FIXME: cagney/2003-03-01: Not sure if this option is
                actually useful, and if it is, what it should do.  */
+#ifdef GDBTK
+           /* --windows is equivalent to -i=insight.  */
+           xfree (interpreter_p);
+           interpreter_p = xstrdup (INTERP_INSIGHT);
+#endif
            use_windows = 1;
            break;
          case OPT_NOWINDOWS:
@@ -375,12 +395,23 @@ captured_main (void *data)
            corearg = optarg;
            break;
          case 'x':
-           cmdarg[ncmd++] = optarg;
+           cmdarg[ncmd].type = CMDARG_FILE;
+           cmdarg[ncmd++].string = optarg;
            if (ncmd >= cmdsize)
              {
                cmdsize *= 2;
-               cmdarg = (char **) xrealloc ((char *) cmdarg,
-                                            cmdsize * sizeof (*cmdarg));
+               cmdarg = xrealloc ((char *) cmdarg,
+                                  cmdsize * sizeof (*cmdarg));
+             }
+           break;
+         case 'X':
+           cmdarg[ncmd].type = CMDARG_COMMAND;
+           cmdarg[ncmd++].string = optarg;
+           if (ncmd >= cmdsize)
+             {
+               cmdsize *= 2;
+               cmdarg = xrealloc ((char *) cmdarg,
+                                  cmdsize * sizeof (*cmdarg));
              }
            break;
          case 'B':
@@ -721,7 +752,12 @@ extern int gdbtk_test (char *);
          do_cleanups (ALL_CLEANUPS);
        }
 #endif
-      catch_command_errors (source_command, cmdarg[i], !batch, RETURN_MASK_ALL);
+      if (cmdarg[i].type == CMDARG_FILE)
+        catch_command_errors (source_command, cmdarg[i].string,
+                             !batch, RETURN_MASK_ALL);
+      else  /* cmdarg[i].type == CMDARG_COMMAND */
+        catch_command_errors (execute_command, cmdarg[i].string,
+                             !batch, RETURN_MASK_ALL);
     }
   xfree (cmdarg);
 
@@ -730,15 +766,8 @@ extern int gdbtk_test (char *);
 
   if (batch)
     {
-      if (attach_flag)
-       /* Either there was a problem executing the command in the
-          batch file aborted early, or the batch file forgot to do an
-          explicit detach.  Explicitly detach the inferior ensuring
-          that there are no zombies.  */
-       target_detach (NULL, 0);
-      
       /* We have hit the end of the batch file.  */
-      exit (0);
+      quit_force (NULL, 0);
     }
 
   /* Do any host- or target-specific hacks.  This is used for i960 targets
@@ -838,8 +867,14 @@ Options:\n\n\
   -b BAUDRATE        Set serial port baud rate used for remote debugging.\n\
   --batch            Exit after processing options.\n\
   --batch-silent     As for --batch, but suppress all gdb stdout output.\n\
+  --return-child-result\n\
+                     GDB exit code will be the child's exit code.\n\
   --cd=DIR           Change current directory to DIR.\n\
-  --command=FILE     Execute GDB commands from FILE.\n\
+  --command=FILE, -x Execute GDB commands from FILE.\n\
+  --eval-command=COMMAND, -ex\n\
+                     Execute a single GDB command.\n\
+                     May be used multiple times and in conjunction\n\
+                     with --command.\n\
   --core=COREFILE    Analyze the core dump COREFILE.\n\
   --pid=PID          Attach to running process PID.\n\
 "), stream);
index 1c91d0770f87cbcdf89d025ed0bc4f48c933ae25..2f5e90cd67fb5788c8823f7040f7b4c1f49649c5 100644 (file)
@@ -32,4 +32,8 @@ struct captured_main_args
 
 extern int gdb_main (struct captured_main_args *);
 
+/* From main.c.  */
+extern int return_child_result;
+extern int return_child_result_value;
+
 #endif
index c805eb478348c47794e7e1bd7c8f795d278707bd..fe856c0dc4b69568bb9c45f12a25961102d2183f 100644 (file)
@@ -80,13 +80,13 @@ static ptid_t monitor_wait (ptid_t ptid, struct target_waitstatus *status);
 static void monitor_fetch_registers (int regno);
 static void monitor_store_registers (int regno);
 static void monitor_prepare_to_store (void);
-static int monitor_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+static int monitor_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
                                int write, 
                                struct mem_attrib *attrib,
                                struct target_ops *target);
 static void monitor_files_info (struct target_ops *ops);
-static int monitor_insert_breakpoint (CORE_ADDR addr, char *shadow);
-static int monitor_remove_breakpoint (CORE_ADDR addr, char *shadow);
+static int monitor_insert_breakpoint (CORE_ADDR addr, gdb_byte *shadow);
+static int monitor_remove_breakpoint (CORE_ADDR addr, gdb_byte *shadow);
 static void monitor_kill (void);
 static void monitor_load (char *file, int from_tty);
 static void monitor_mourn_inferior (void);
@@ -1982,7 +1982,7 @@ monitor_read_memory (CORE_ADDR memaddr, char *myaddr, int len)
    unused. */
 
 static int
-monitor_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
+monitor_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
                     struct mem_attrib *attrib, struct target_ops *target)
 {
   int res;
@@ -2038,7 +2038,7 @@ monitor_mourn_inferior (void)
 /* Tell the monitor to add a breakpoint.  */
 
 static int
-monitor_insert_breakpoint (CORE_ADDR addr, char *shadow)
+monitor_insert_breakpoint (CORE_ADDR addr, gdb_byte *shadow)
 {
   int i;
   const unsigned char *bp;
@@ -2072,7 +2072,7 @@ monitor_insert_breakpoint (CORE_ADDR addr, char *shadow)
 /* Tell the monitor to remove a breakpoint.  */
 
 static int
-monitor_remove_breakpoint (CORE_ADDR addr, char *shadow)
+monitor_remove_breakpoint (CORE_ADDR addr, gdb_byte *shadow)
 {
   int i;
 
index 4285077e4362dd2835ac28ffdf5e8337c8112615..ea3b1c74c1f8ae9e9a383b9546fd19d3ba1363ba 100644 (file)
@@ -906,11 +906,11 @@ ppc64_sysv_abi_return_value (struct gdbarch *gdbarch, struct type *valtype,
        }
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
+  /* Integers in r3.  */
   if ((TYPE_CODE (valtype) == TYPE_CODE_INT
        || TYPE_CODE (valtype) == TYPE_CODE_ENUM)
       && TYPE_LENGTH (valtype) <= 8)
     {
-      /* Integers in r3.  */
       if (writebuf != NULL)
        {
          /* Be careful to sign extend the value.  */
@@ -938,24 +938,37 @@ ppc64_sysv_abi_return_value (struct gdbarch *gdbarch, struct type *valtype,
        regcache_cooked_read (regcache, tdep->ppc_gp0_regnum + 3, readbuf);
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
-      && TYPE_LENGTH (valtype) <= 8
-      && TYPE_CODE (TYPE_TARGET_TYPE (valtype)) == TYPE_CODE_INT
-      && TYPE_LENGTH (TYPE_TARGET_TYPE (valtype)) == 1)
+  /* Array type has more than one use.  */
+  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
     {
       /* Small character arrays are returned, right justified, in r3.  */
-      int offset = (register_size (gdbarch, tdep->ppc_gp0_regnum + 3)
-                   - TYPE_LENGTH (valtype));
-      if (writebuf != NULL)
-       regcache_cooked_write_part (regcache, tdep->ppc_gp0_regnum + 3,
-                                   offset, TYPE_LENGTH (valtype), writebuf);
-      if (readbuf != NULL)
-       regcache_cooked_read_part (regcache, tdep->ppc_gp0_regnum + 3,
-                                  offset, TYPE_LENGTH (valtype), readbuf);
-      return RETURN_VALUE_REGISTER_CONVENTION;
+      if (TYPE_LENGTH (valtype) <= 8
+        && TYPE_CODE (TYPE_TARGET_TYPE (valtype)) == TYPE_CODE_INT
+        && TYPE_LENGTH (TYPE_TARGET_TYPE (valtype)) == 1)
+        {
+          int offset = (register_size (gdbarch, tdep->ppc_gp0_regnum + 3)
+                       - TYPE_LENGTH (valtype));
+          if (writebuf != NULL)
+           regcache_cooked_write_part (regcache, tdep->ppc_gp0_regnum + 3,
+                                      offset, TYPE_LENGTH (valtype), writebuf);
+          if (readbuf != NULL)
+           regcache_cooked_read_part (regcache, tdep->ppc_gp0_regnum + 3,
+                                      offset, TYPE_LENGTH (valtype), readbuf);
+          return RETURN_VALUE_REGISTER_CONVENTION;
+       }
+      /* A VMX vector is returned in v2.  */
+      if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
+        && TYPE_VECTOR (valtype) && tdep->ppc_vr0_regnum >= 0)
+        {
+          if (readbuf)
+            regcache_cooked_read (regcache, tdep->ppc_vr0_regnum + 2, readbuf);
+          if (writebuf)
+            regcache_cooked_write (regcache, tdep->ppc_vr0_regnum + 2, writebuf);
+          return RETURN_VALUE_REGISTER_CONVENTION;
+        }
     }
   /* Big floating point values get stored in adjacent floating
-     point registers.  */
+     point registers, starting with F1.  */
   if (TYPE_CODE (valtype) == TYPE_CODE_FLT
       && (TYPE_LENGTH (valtype) == 16 || TYPE_LENGTH (valtype) == 32))
     {
index 76a245c9973c48ec5ed931a5808da2df5e613a20..aa430e6eda2fa5c85f570fe89894b7d1b6ad5942 100644 (file)
@@ -1478,7 +1478,7 @@ fast_but_for_the_pause_e7000_read_inferior_memory (CORE_ADDR memaddr,
    Returns the number of bytes transferred. */
 
 static int
-e7000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len,
+e7000_xfer_inferior_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
                            int write, struct mem_attrib *attrib,
                            struct target_ops *target)
 {
index 9471c1153815bbf771a95f4d94ccef9b8b3dba74..41644d04a8d7e5b69550a2a0abea100482f37292 100644 (file)
@@ -1,6 +1,6 @@
 /* Remote debugging interface for M32R/SDI.
 
-   Copyright 2003, 2004 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2005 Free Software Foundation, Inc.
 
    Contributed by Renesas Technology Co.
    Written by Kei Sakamoto <sakamoto.kei@renesas.com>.
@@ -534,7 +534,7 @@ m32r_resume (ptid_t ptid, int step, enum target_signal sig)
 
       /* Write DBT instruction. */
       buf[0] = SDI_WRITE_MEMORY;
-      store_long_parameter (buf + 1, bp_addr);
+      store_long_parameter (buf + 1, (bp_addr & 0xfffffffc));
       store_long_parameter (buf + 5, 4);
       if ((bp_addr & 2) == 0 && bp_addr != (pc_addr & 0xfffffffc))
        {
@@ -810,7 +810,7 @@ m32r_wait (ptid_t ptid, struct target_waitstatus *status)
        {
          if (!mmu_on)
            bp_addr &= 0x7fffffff;
-         buf[0] = SDI_READ_MEMORY;
+         buf[0] = SDI_WRITE_MEMORY;
          store_long_parameter (buf + 1, bp_addr & 0xfffffffc);
          store_long_parameter (buf + 5, 4);
          buf[9] = bp_data[i][0];
@@ -1032,7 +1032,7 @@ m32r_files_info (struct target_ops *target)
 
 /* Read/Write memory.  */
 static int
-m32r_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+m32r_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
                  int write,
                  struct mem_attrib *attrib, struct target_ops *target)
 {
index 15e89e985305f8e682d862d94b3d2418aede90fd..30fcf2f031e748f04dbccef32f6da1443f990044 100644 (file)
@@ -1285,7 +1285,7 @@ sh_store_return_value_fpu (struct type *type, struct regcache *regcache,
 static enum return_value_convention
 sh_return_value_nofpu (struct gdbarch *gdbarch, struct type *type,
                       struct regcache *regcache,
-                      void *readbuf, const void *writebuf)
+                      gdb_byte *readbuf, const gdb_byte *writebuf)
 {
   if (sh_use_struct_convention (0, type))
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -1299,7 +1299,7 @@ sh_return_value_nofpu (struct gdbarch *gdbarch, struct type *type,
 static enum return_value_convention
 sh_return_value_fpu (struct gdbarch *gdbarch, struct type *type,
                     struct regcache *regcache,
-                    void *readbuf, const void *writebuf)
+                    gdb_byte *readbuf, const gdb_byte *writebuf)
 {
   if (sh_use_struct_convention (0, type))
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -1890,7 +1890,7 @@ dr_reg_base_num (int dr_regnum)
 
 static void
 sh_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
-                        int reg_nr, void *buffer)
+                        int reg_nr, gdb_byte *buffer)
 {
   int base_regnum, portion;
   char temp_buffer[MAX_REGISTER_SIZE];
@@ -1929,7 +1929,7 @@ sh_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
 
 static void
 sh_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
-                         int reg_nr, const void *buffer)
+                         int reg_nr, const gdb_byte *buffer)
 {
   int base_regnum, portion;
   char temp_buffer[MAX_REGISTER_SIZE];
@@ -2282,7 +2282,7 @@ static void
 sh_frame_prev_register (struct frame_info *next_frame, void **this_cache,
                        int regnum, int *optimizedp,
                        enum lval_type *lvalp, CORE_ADDR *addrp,
-                       int *realnump, void *valuep)
+                       int *realnump, gdb_byte *valuep)
 {
   struct sh_frame_cache *cache = sh_frame_cache (next_frame, this_cache);
 
index 7f5aa90ff27463cf058a3857f6f9b14c4d70eb7f..1de876441ba2fd8481ae79dca2e6a19f275a39b8 100644 (file)
@@ -1228,9 +1228,9 @@ sh64_extract_return_value (struct type *type, struct regcache *regcache,
        {
          /* return value stored in DR0_REGNUM */
          DOUBLEST val;
-         char buf[8];
+         gdb_byte buf[8];
 
-         regcache_cooked_read (regcache, DR0_REGNUM, &buf);
+         regcache_cooked_read (regcache, DR0_REGNUM, buf);
          
          if (TARGET_BYTE_ORDER == BFD_ENDIAN_LITTLE)
            floatformat_to_doublest (&floatformat_ieee_double_littlebyte_bigword,
@@ -1313,7 +1313,7 @@ sh64_store_return_value (struct type *type, struct regcache *regcache,
 static enum return_value_convention
 sh64_return_value (struct gdbarch *gdbarch, struct type *type,
                   struct regcache *regcache,
-                  void *readbuf, const void *writebuf)
+                  gdb_byte *readbuf, const gdb_byte *writebuf)
 {
   if (sh64_use_struct_convention (type))
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -1575,7 +1575,7 @@ sh64_register_convert_to_raw (struct type *type, int regnum,
 
 static void
 sh64_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
-                          int reg_nr, void *buffer)
+                          int reg_nr, gdb_byte *buffer)
 {
   int base_regnum;
   int portion;
@@ -1744,7 +1744,7 @@ sh64_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
 
 static void
 sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
-                           int reg_nr, const void *buffer)
+                           int reg_nr, const gdb_byte *buffer)
 {
   int base_regnum, portion;
   int offset;
@@ -2290,7 +2290,7 @@ static void
 sh64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
                          int regnum, int *optimizedp,
                          enum lval_type *lvalp, CORE_ADDR *addrp,
-                         int *realnump, void *valuep)
+                         int *realnump, gdb_byte *valuep)
 {
   struct sh64_frame_cache *cache = sh64_frame_cache (next_frame, this_cache);
 
index 48be77df7e2d4d518efe236f9beba7771da0617b..09b4c6217bc6696d9317415e6328d58aca0b6c96 100644 (file)
@@ -44,9 +44,9 @@ enum { FRV_PTR_SIZE = 4 };
 /* External versions; the size and alignment of the fields should be
    the same as those on the target.  When loaded, the placement of
    the bits in each field will be the same as on the target.  */
-typedef unsigned char ext_Elf32_Half[2];
-typedef unsigned char ext_Elf32_Addr[4];
-typedef unsigned char ext_Elf32_Word[4];
+typedef gdb_byte ext_Elf32_Half[2];
+typedef gdb_byte ext_Elf32_Addr[4];
+typedef gdb_byte ext_Elf32_Word[4];
 
 struct ext_elf32_fdpic_loadseg
 {
@@ -105,7 +105,7 @@ fetch_loadmap (CORE_ADDR ldmaddr)
   int version, seg, nsegs;
 
   /* Fetch initial portion of the loadmap.  */
-  if (target_read_memory (ldmaddr, (char *) &ext_ldmbuf_partial,
+  if (target_read_memory (ldmaddr, (gdb_byte *) &ext_ldmbuf_partial,
                           sizeof ext_ldmbuf_partial))
     {
       /* Problem reading the target's memory.  */
@@ -113,7 +113,7 @@ fetch_loadmap (CORE_ADDR ldmaddr)
     }
 
   /* Extract the version.  */
-  version = extract_unsigned_integer (&ext_ldmbuf_partial.version,
+  version = extract_unsigned_integer (ext_ldmbuf_partial.version,
                                       sizeof ext_ldmbuf_partial.version);
   if (version != 0)
     {
@@ -122,7 +122,7 @@ fetch_loadmap (CORE_ADDR ldmaddr)
     }
 
   /* Extract the number of segments.  */
-  nsegs = extract_unsigned_integer (&ext_ldmbuf_partial.nsegs,
+  nsegs = extract_unsigned_integer (ext_ldmbuf_partial.nsegs,
                                     sizeof ext_ldmbuf_partial.nsegs);
 
   /* Allocate space for the complete (external) loadmap.  */
@@ -135,7 +135,7 @@ fetch_loadmap (CORE_ADDR ldmaddr)
 
   /* Read the rest of the loadmap from the target.  */
   if (target_read_memory (ldmaddr + sizeof ext_ldmbuf_partial,
-                          (char *) ext_ldmbuf + sizeof ext_ldmbuf_partial,
+                          (gdb_byte *) ext_ldmbuf + sizeof ext_ldmbuf_partial,
                           ext_ldmbuf_size - sizeof ext_ldmbuf_partial))
     {
       /* Couldn't read rest of the loadmap.  */
@@ -155,13 +155,13 @@ fetch_loadmap (CORE_ADDR ldmaddr)
   for (seg = 0; seg < nsegs; seg++)
     {
       int_ldmbuf->segs[seg].addr
-       = extract_unsigned_integer (&ext_ldmbuf->segs[seg].addr,
+       = extract_unsigned_integer (ext_ldmbuf->segs[seg].addr,
                                    sizeof (ext_ldmbuf->segs[seg].addr));
       int_ldmbuf->segs[seg].p_vaddr
-       = extract_unsigned_integer (&ext_ldmbuf->segs[seg].p_vaddr,
+       = extract_unsigned_integer (ext_ldmbuf->segs[seg].p_vaddr,
                                    sizeof (ext_ldmbuf->segs[seg].p_vaddr));
       int_ldmbuf->segs[seg].p_memsz
-       = extract_unsigned_integer (&ext_ldmbuf->segs[seg].p_memsz,
+       = extract_unsigned_integer (ext_ldmbuf->segs[seg].p_memsz,
                                    sizeof (ext_ldmbuf->segs[seg].p_memsz));
     }
 
@@ -171,7 +171,7 @@ fetch_loadmap (CORE_ADDR ldmaddr)
 
 /* External link_map and elf32_fdpic_loadaddr struct definitions.  */
 
-typedef unsigned char ext_ptr[4];
+typedef gdb_byte ext_ptr[4];
 
 struct ext_elf32_fdpic_loadaddr
 {
@@ -359,7 +359,7 @@ lm_base (void)
 {
   struct minimal_symbol *got_sym;
   CORE_ADDR addr;
-  char buf[FRV_PTR_SIZE];
+  gdb_byte buf[FRV_PTR_SIZE];
 
   /* If we already have a cached value, return it.  */
   if (lm_base_cache)
@@ -438,14 +438,14 @@ frv_current_sos (void)
                            "current_sos: reading link_map entry at %s\n",
                            hex_string_custom (lm_addr, 8));
 
-      if (target_read_memory (lm_addr, (char *) &lm_buf, sizeof (lm_buf)) != 0)
+      if (target_read_memory (lm_addr, (gdb_byte *) &lm_buf, sizeof (lm_buf)) != 0)
        {
          warning (_("frv_current_sos: Unable to read link map entry.  Shared object chain may be incomplete."));
          break;
        }
 
       got_addr
-       = extract_unsigned_integer (&lm_buf.l_addr.got_value,
+       = extract_unsigned_integer (lm_buf.l_addr.got_value,
                                    sizeof (lm_buf.l_addr.got_value));
       /* If the got_addr is the same as mgotr, then we're looking at the
         entry for the main executable.  By convention, we don't include
@@ -459,7 +459,7 @@ frv_current_sos (void)
          CORE_ADDR addr;
 
          /* Fetch the load map address.  */
-         addr = extract_unsigned_integer (&lm_buf.l_addr.map,
+         addr = extract_unsigned_integer (lm_buf.l_addr.map,
                                           sizeof lm_buf.l_addr.map);
          loadmap = fetch_loadmap (addr);
          if (loadmap == NULL)
@@ -474,7 +474,7 @@ frv_current_sos (void)
          sop->lm_info->got_value = got_addr;
          sop->lm_info->lm_addr = lm_addr;
          /* Fetch the name.  */
-         addr = extract_unsigned_integer (&lm_buf.l_name,
+         addr = extract_unsigned_integer (lm_buf.l_name,
                                           sizeof (lm_buf.l_name));
          target_read_string (addr, &name_buf, SO_NAME_MAX_PATH_SIZE - 1,
                              &errcode);
@@ -502,7 +502,7 @@ frv_current_sos (void)
          main_lm_addr = lm_addr;
        }
 
-      lm_addr = extract_unsigned_integer (&lm_buf.l_next, sizeof (lm_buf.l_next));
+      lm_addr = extract_unsigned_integer (lm_buf.l_next, sizeof (lm_buf.l_next));
     }
 
   enable_break2 ();
@@ -621,13 +621,13 @@ enable_break2 (void)
   if (interp_sect)
     {
       unsigned int interp_sect_size;
-      char *buf;
+      gdb_byte *buf;
       bfd *tmp_bfd = NULL;
       int tmp_fd = -1;
       char *tmp_pathname = NULL;
       int status;
       CORE_ADDR addr, interp_loadmap_addr;
-      char addr_buf[FRV_PTR_SIZE];
+      gdb_byte addr_buf[FRV_PTR_SIZE];
       struct int_elf32_fdpic_loadmap *ldm;
 
       /* Read the contents of the .interp section into a local buffer;
@@ -1185,7 +1185,7 @@ find_canonical_descriptor_in_load_object
       if ((name == 0 || strcmp (name, (*rel->sym_ptr_ptr)->name) == 0)
           && rel->howto->type == R_FRV_FUNCDESC)
        {
-         char buf[FRV_PTR_SIZE];
+         gdb_byte buf [FRV_PTR_SIZE];
 
          /* Compute address of address of candidate descriptor.  */
          addr = rel->address + displacement_from_map (lm->map, rel->address);
index c4aad6937da40ef4bb142d91fedddd04f11ddb61..bf009b47c7d1b0546b87283666f00a5ca97611b7 100644 (file)
@@ -1,3 +1,28 @@
+2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>
+
+       * gdb.asm/m68hc11.inc: Setup the data section.
+       * gdb.asm/asm-source.exp (m6811-*-*): Don't use the target board linker
+       script for this test.
+       (m6812-*-*): Likewise.
+
+2005-11-09  Randolph Chung <tausq@debian.org>
+
+       * gdb.base/structs2.exp: Update xfail to only trigger for gcc-3.x.
+
+2005-11-09  Wu Zhou  <woodzltc@cn.ibm.com>
+
+       * gdb.base/break.exp: Fix a comment typo.
+
+2005-11-03  Jim Blandy  <jimb@redhat.com>
+
+        Checked in by Elena Zannoni  <ezannoni@redhat.com>
+       * gdb.dwarf2/mac-fileno.exp, gdb.dwarf2/mac-fileno.S: New tests.
+
+2005-11-02  Corinna Vinschen  <vinschen@redhat.com>
+
+       * gdb.arch/gdb1558.c: Include stdio.h.
+
 2005-10-31  Mark Kettenis  <kettenis@gnu.org>
 
        * gdb.asm/asm-source.exp: Use -e instead of --entry.
diff --git a/gdb/testsuite/gdb.ada/array_return/p.adb b/gdb/testsuite/gdb.ada/array_return/p.adb
deleted file mode 100644 (file)
index c465d28..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-with Pck; use Pck;
-
-procedure P is
-   Small : Data_Small;
-   Large : Data_Large;
-begin
-   Small := Create_Small;
-   Large := Create_Large;
-   Small (1) := Large (1);
-end P;
diff --git a/gdb/testsuite/gdb.ada/array_return/pck.adb b/gdb/testsuite/gdb.ada/array_return/pck.adb
deleted file mode 100644 (file)
index 30282d1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package body Pck is
-
-   function Create_Small return Data_Small is
-   begin
-      return (others => 1);
-   end Create_Small;
-
-   function Create_Large return Data_Large is
-   begin
-      return (others => 2);
-   end Create_Large;
-
-end Pck;
diff --git a/gdb/testsuite/gdb.ada/array_return/pck.ads b/gdb/testsuite/gdb.ada/array_return/pck.ads
deleted file mode 100644 (file)
index 2561ac7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-package Pck is
-
-   type Data_Small is array (1 .. 2) of Integer;
-   type Data_Large is array (1 .. 4) of Integer;
-
-   function Create_Small return Data_Small;
-   function Create_Large return Data_Large;
-
-end Pck;
-
diff --git a/gdb/testsuite/gdb.ada/arrayidx/p.adb b/gdb/testsuite/gdb.ada/arrayidx/p.adb
deleted file mode 100644 (file)
index 398e34d..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
---  Copyright 2005 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., 51 Franklin Street, Fifth Floor, Boston,
---  MA 02110-1301, USA
-
-procedure P is
-   type Index is (One, Two, Three);
-
-   type Table is array (Integer range 1 .. 3) of Integer;
-   type ETable is array (Index) of Integer;
-   type RTable is array (Index range Two .. Three) of Integer;
-   type UTable is array (Positive range <>) of Integer;
-
-   type PTable is array (Index) of Boolean;
-   pragma Pack (PTable);
-
-   function Get_UTable (I : Integer) return UTable is
-   begin
-      return Utable'(1 => I, 2 => 2, 3 => 3);
-   end Get_UTable;
-
-   One_Two_Three : Table := (1, 2, 3);
-   E_One_Two_Three : ETable := (1, 2, 3);
-   R_Two_Three : RTable := (2, 3);
-   U_One_Two_Three : UTable := Get_UTable (1);
-   P_One_Two_Three : PTable := (False, True, True);
-
-   Few_Reps : UTable := (1, 2, 3, 3, 3, 3, 3, 4, 5);
-   Many_Reps : UTable := (1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5);
-
-   Empty : array (1 .. 0) of Integer := (others => 0);
-
-begin
-   One_Two_Three (1) := 4;  --  START
-   E_One_Two_Three (One) := 4;
-   R_Two_Three (Two) := 4;
-   U_One_Two_Three (U_One_Two_Three'First) := 4;
-   P_One_Two_Three (One) := True;
-
-   Few_Reps (Few_Reps'First) := 2;
-   Many_Reps (Many_Reps'First) := 2;
-
-   Empty := (others => 1);
-end P;
index d1051cf79a70e3ad61a85438901d6b859a14e767..fc13be161f2ee7195e7095eb6d250b4870dcd331 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright 2004 Free Software Foundation, Inc.
+/* Copyright 2004, 2005 Free Software Foundation, Inc.
  
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -19,6 +19,8 @@
  
    This file is part of the gdb testsuite.  */
 
+#include <stdio.h>
+
 sub1 ()
 {
   printf ("In sub1\n");
index 5abe8eeae9ee1b4ae192448083202b190ef9a08e..ced0af7d0c2b716f0e49265f5b1bd167770c8ea5 100644 (file)
@@ -80,11 +80,25 @@ switch -glob -- [istarget] {
     }
     "m6811-*-*" {
         set asm-arch m68hc11
-        set asm-flags "-mshort-double -m68hc11 -gdwarf-2 --no-warn -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+        set asm-flags "-mshort-double -m68hc11 --no-warn -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+       set debug-flags "-gdwarf-2"
+       # This asm test is specific and uses the linker directly.
+       # We must not use the target board linker script defined for other
+       # tests.  Remove it and restore it later on.
+       set board [target_info name]
+       set old_ldscript [board_info $board ldscript]
+       unset_board_info "ldscript"
     }
     "m6812-*-*" {
         set asm-arch m68hc11
-        set asm-flags "-mshort-double -m68hc12 -gdwarf-2 --no-warn -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+        set asm-flags "-mshort-double -m68hc12 --no-warn -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+       set debug-flags "-gdwarf-2"
+       # This asm test is specific and uses the linker directly.
+       # We must not use the target board linker script defined for other
+       # tests.  Remove it and restore it later on.
+       set board [target_info name]
+       set old_ldscript [board_info $board ldscript]
+       set_board_info ldscript ""
     }
     "mips*-*" {
         set asm-arch mips
@@ -226,6 +240,11 @@ if {[target_link "asmsrc1.o asmsrc2.o" "${binfile}" ${link-flags}] != "" } then
      gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
 }
 
+# Restore the target board linker script for HC11/HC12.
+if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
+    set_board_info ldscript $old_ldscript
+}
+
 remote_exec build "mv asmsrc1.o asmsrc2.o ${objdir}/${subdir}"
 
 
index 820908b277ae1979ecc918a68e0a22b9c465fc9a..e8f5018c0b212808cf7ed19562de526464d81ed0 100644 (file)
 _.frame: .word 0
         .previous
         lds     #0x2000
+        ; the linker script maps the data section in ROM (LMA) for its initial
+        ; content and in RAM (VMA) for its runtime value.  We have to do
+        ; what the default crt0 does: copy the ROM part in RAM.
+        ; (otherwise any 'globalvar' appears uninitialized)
+       ldx     #__data_image
+       ldy     #__data_section_start
+       bra     Start_map
+Loop:
+       ldaa    0,x
+       staa    0,y
+       inx
+       iny
+Start_map:
+       cpx     #__data_image_end
+       blo     Loop
+Done:
         clr     _.frame
         clr     _.frame+1
        .endm
@@ -46,5 +62,5 @@ _.frame: .word 0
        .macro gdbasm_datavar name value
        .data
 \name:
-       .long   \value
+       .word   \value
        .endm
index c425d1439cfc6b6d04c110580372769ea356a6d8..bcbdd1e22dcca810fb6b9675434de647424585aa 100644 (file)
@@ -67,7 +67,7 @@ if [target_info exists gdb_stub] {
 
 # Test deleting all breakpoints when there are none installed,
 # GDB should not prompt for confirmation.
-# Note that gdb-init.exp provides a "delete_breakpoints" proc
+# Note that lib/gdb.exp provides a "delete_breakpoints" proc
 # for general use elsewhere.
 
 send_gdb "delete breakpoints\n"
index e7f6553c6504154145a2f97ae0b46f0fe03e58f5..7f96a220f4380ddd171877bc69d878bbc287395a 100644 (file)
@@ -70,14 +70,14 @@ gdb_test "break param_reg" \
     "Breakpoint .* at .*" \
     "structs2 breakpoint set"
 
-if [test_compiler_info gcc-*-*] {
+if [test_compiler_info gcc-3-*] {
   setup_xfail hppa*-* gcc/15860
 }
 gdb_test "continue" \
     ".*pr_char=120.*pr_uchar=130.*pr_short=32000.*pr_ushort=33000.*bkpt = 1.*" \
     "structs2 continue1"
 
-if [test_compiler_info gcc-*-*] {
+if [test_compiler_info gcc-3-*] {
   setup_xfail hppa*-* gcc/15860
 }
 gdb_test "continue" \
index 1f88acbfe5325ad25967a6506533274f97c3e2b9..19e9a2c69bffc6fc36a1e03d79150c535892c326 100644 (file)
@@ -691,7 +691,7 @@ The new thread ID must be currently known."),
 
   add_prefix_cmd ("apply", class_run, thread_apply_command,
                  _("Apply a command to a list of threads."),
-                 &thread_apply_list, "apply ", 1, &thread_cmd_list);
+                 &thread_apply_list, "thread apply ", 1, &thread_cmd_list);
 
   add_cmd ("all", class_run, thread_apply_all_command,
           _("Apply a command to all threads."), &thread_apply_list);
index 98ad51b7f8ec1c4be604cf8a9efc40639050c7b5..e4fb84519d10d9ee146e8f416d0ae6ae6d0d34b3 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -46,6 +46,7 @@
 #include "serial.h"
 #include "doublest.h"
 #include "gdb_assert.h"
+#include "main.h"
 
 /* readline include files */
 #include "readline/readline.h"
@@ -1186,6 +1187,8 @@ quit_force (char *args, int from_tty)
 
       exit_code = (int) value_as_long (val);
     }
+  else if (return_child_result)
+    exit_code = return_child_result_value;
 
   qt.args = args;
   qt.from_tty = from_tty;
index 7f3fc7599b29f1fb961e88a0f2a9ae792732489f..cf8f263b683e7759850c698adf672d0350231e34 100644 (file)
@@ -1,6 +1,6 @@
 /* Specific command window processing.
 
-   Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+   Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
    Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
@@ -48,13 +48,14 @@ unsigned int
 tui_dispatch_ctrl_char (unsigned int ch)
 {
   struct tui_win_info *win_info = tui_win_with_focus ();
-  WINDOW *w = TUI_CMD_WIN->generic.handle;
 
-  /*
-     ** If the command window has the logical focus, or no-one does
-     ** assume it is the command window; in this case, pass the
-     ** character on through and do nothing here.
-   */
+  /* Handle the CTRL-L refresh for each window.  */
+  if (ch == '\f')
+    tui_refresh_all_win ();
+
+  /* If the command window has the logical focus, or no-one does
+     assume it is the command window; in this case, pass the
+     character on through and do nothing here.  */
   if (win_info == NULL || win_info == TUI_CMD_WIN)
     return ch;
   else
@@ -76,6 +77,7 @@ tui_dispatch_ctrl_char (unsigned int ch)
            {
              unsigned int page_ch = 0;
              unsigned int tmp_char;
+              WINDOW *w = TUI_CMD_WIN->generic.handle;
 
              tmp_char = 0;
              while (!key_is_end_sequence (tmp_char))
@@ -123,8 +125,7 @@ tui_dispatch_ctrl_char (unsigned int ch)
          tui_scroll_right (win_info, 1);
          break;
        case '\f':
-         tui_refresh_all_win ();
-         break;
+          break;
        default:
          c = ch_copy;
          break;
index 17dda51d8caa715dbdb1149088b110e785b9eb10..aeb204740b827c580185794b728365f41dba1910 100644 (file)
@@ -199,13 +199,13 @@ _initialize_tui_interp (void)
 
   /* Create a default uiout builder for the TUI. */
   tui_out = tui_out_new (gdb_stdout);
-  interp_add (interp_new ("tui", NULL, tui_out, &procs));
-  if (interpreter_p && strcmp (interpreter_p, "tui") == 0)
+  interp_add (interp_new (INTERP_TUI, NULL, tui_out, &procs));
+  if (interpreter_p && strcmp (interpreter_p, INTERP_TUI) == 0)
     tui_start_enabled = 1;
 
   if (interpreter_p && strcmp (interpreter_p, INTERP_CONSOLE) == 0)
     {
       xfree (interpreter_p);
-      interpreter_p = xstrdup ("tui");
+      interpreter_p = xstrdup (INTERP_TUI);
     }
 }
index 739c53c7d6e043f23caa7493b4a4a863ec47e833..a056045b2e4c057ed70d14e9e18744a0e0f3adea 100644 (file)
@@ -450,15 +450,13 @@ void
 tui_update_gdb_sizes (void)
 {
   char cmd[50];
-  int screenheight, screenwidth;
 
-  rl_get_screen_size (&screenheight, &screenwidth);
   /* Set to TUI command window dimension or use readline values.  */
   sprintf (cmd, "set width %d",
-           tui_active ? TUI_CMD_WIN->generic.width : screenwidth);
+           tui_active ? TUI_CMD_WIN->generic.width : tui_term_width());
   execute_command (cmd, 0);
   sprintf (cmd, "set height %d",
-           tui_active ? TUI_CMD_WIN->generic.height : screenheight);
+           tui_active ? TUI_CMD_WIN->generic.height : tui_term_height());
   execute_command (cmd, 0);
 }
 
index c1f65696850d7176f58b5f62a285f955671eae1c..d0034bde235ac25adf26c295183f7ce85605931a 100644 (file)
@@ -1 +1 @@
-6.3.90-20051104-cvs
+6.3.50.20051117-cvs
index e2c90f819a7240a30e9793424ce9df68384995d2..3b2f3efd8d3b640f20cf0ad83fc8e918f51270fb 100644 (file)
@@ -1,3 +1,16 @@
+2005-11-07  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Add ms2.
+       * elf/ms1.h (EF_MS1_CPU_MS2): New.
+
+2005-11-06  John David Anglin  <dave.anglin@nrc-crnc.gc.ca>
+
+       * elf/hppa.h (R_PARISC_DIR64WR, R_PARISC_DIR64DR): Remove relocs.
+
+2005-11-03  Alan Modra  <amodra@bigpond.net.au>
+
+       * bfdlink.h (struct bfd_link_order): Tweak comment.
+
 2005-10-31  Mark Kettenis  <kettenis@gnu.org>
 
        * floatformat.h (enum floatformat_byteorders): Add
index 66a5b4284118296b95a88722984e270da414aa9c..3c978e80bfa978306e405de006a304ea0120bcb0 100644 (file)
@@ -554,7 +554,7 @@ enum bfd_link_order_type
 };
 
 /* This is the link_order structure itself.  These form a chain
-   attached to the section whose contents they are describing.  */
+   attached to the output section whose contents they are describing.  */
 
 struct bfd_link_order
 {
index 485a78e32a894a346fa18835ec587e6606cfa0c4..af4947c7e3ba50cb78dd2647d48871202d05a211 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-11  Nick Clifton  <nickc@redhat.com>
+
+       PR 1150
+       * mips.h (STO_OPTIONAL): Define.
+       (ELF_MIPS_IS_OPTIONAL): Define.
+
 2005-09-30  Catherine Moore  <clm@cm00re.com>
 
        * bfin.h: New file.
index 57efac674611706fae164e236e64d4409b34a717..38a464e90fea9ee7a9e815c6a635279764ed3093 100644 (file)
@@ -309,12 +309,6 @@ RELOC_NUMBER (R_PARISC_PCREL16DF,          79)
 RELOC_NUMBER (R_PARISC_DIR64,          80)
 /*             64-bit doubleword          symbol + addend                */
 
-RELOC_NUMBER (R_PARISC_DIR64WR,        81)
-/*             64-bit doubleword          RR(symbol, addend)             */
-
-RELOC_NUMBER (R_PARISC_DIR64DR,        82)
-/*             64-bit doubleword          RR(symbol, addend)             */
-
 RELOC_NUMBER (R_PARISC_DIR14WR,        83)
 /*             load/store mod. comp. (2)  RR(symbol, addend)             */
 
index 540815bfe76574b24beeeebb3ae3ad24fcc8e247..6afc12ffe83f424b4a3047907139eac78c878168 100644 (file)
@@ -718,6 +718,13 @@ extern void bfd_mips_elf32_swap_reginfo_out
 
 /* This value is used for a mips16 .text symbol.  */
 #define STO_MIPS16             0xf0
+
+/* This bit is used on Irix to indicate a symbol whose definition
+   is optional - if, at final link time, it cannot be found, no
+   error message should be produced.  */
+#define STO_OPTIONAL           (1 << 2)
+/* A macro to examine the STO_OPTIONAL bit.  */
+#define ELF_MIPS_IS_OPTIONAL(other)    ((other) & STO_OPTIONAL)
 \f
 /* The 64-bit MIPS ELF ABI uses an unusual reloc format.  Each
    relocation entry specifies up to three actual relocations, all at
index 747dc898defa928d50220fcb5ba9c2a2902fa88e..1cb7ad6ee55ffe5120ea6c26299383a9013770d7 100644 (file)
@@ -35,6 +35,7 @@ END_RELOC_NUMBERS(R_MS1_max)
 
 #define EF_MS1_CPU_MRISC       0x00000001      /* default */
 #define EF_MS1_CPU_MRISC2      0x00000002      /* MRISC2 */
+#define EF_MS1_CPU_MS2         0x00000003      /* MS2 */
 #define EF_MS1_CPU_MASK                0x00000003      /* specific cpu bits */
 #define EF_MS1_ALL_FLAGS       (EF_MS1_CPU_MASK)
 
index a282a622261ef11b628748a94c008abb0d90b02a..c9a4a1257d02503b6be68e224f85d41c1852f2db 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-14  David Ung  <davidu@mips.com>
+
+       * mips.h: Assign 'm'/'M' codes to MIPS16e save/restore
+       instructions.  Define MIPS16_ALL_ARGS and MIPS16_ALL_STATICS for
+       save/restore encoding of the args field.
+
 2005-10-28  Dave Brolley  <brolley@redhat.com>
 
        Contribute the following changes:
index e46ba2c0996b626ec6bb08fad708e5086f1a8683..4bec5edcc8ccb44a2ddf36a8119e869943f10483 100644 (file)
@@ -928,7 +928,14 @@ extern int bfd_mips_num_opcodes;
    "A" 8 bit PC relative address * 4 (MIPS16OP_*_IMM8)
    "B" 5 bit PC relative address * 8 (MIPS16OP_*_IMM5)
    "E" 5 bit PC relative address * 4 (MIPS16OP_*_IMM5)
-   */
+   "m" 7 bit register list for save instruction (18 bit extended)
+   "M" 7 bit register list for restore instruction (18 bit extended)
+  */
+
+/* Save/restore encoding for the args field when all 4 registers are
+   either saved as arguments or saved/restored as statics.  */
+#define MIPS16_ALL_ARGS    0xe
+#define MIPS16_ALL_STATICS 0xb
 
 /* For the mips16, we use the same opcode table format and a few of
    the same flags.  However, most of the flags are different.  */
index eeae1e3435fe246f8dc54a408991d6a03a777525..6fdeba3e85214c0753651fcad2b9b19ca99883ba 100644 (file)
@@ -1,3 +1,10 @@
+2005-11-06  Richard Guenther  <rguenther@suse.de>
+
+       * splay-tree.c (rotate_left): New function.
+       (rotate_right): Likewise.
+       (splay_tree_splay_helper): Remove.
+       (splay_tree_splay): Re-implement.
+
 2005-10-31  Mark Kettenis  <kettenis@gnu.org>
 
        * floatformat.c (floatformat_vax_aingle, floatformat_vax_double):
index 311b49edffbcf011f88993fd7d553fdd80a19e35..060f900ae0a08792a75fe2ece703d6c837a525d9 100644 (file)
@@ -38,12 +38,11 @@ Boston, MA 02110-1301, USA.  */
 #include "splay-tree.h"
 
 static void splay_tree_delete_helper (splay_tree, splay_tree_node);
+static inline void rotate_left (splay_tree_node *,
+                               splay_tree_node, splay_tree_node);
+static inline void rotate_right (splay_tree_node *,
+                               splay_tree_node, splay_tree_node);
 static void splay_tree_splay (splay_tree, splay_tree_key);
-static splay_tree_node splay_tree_splay_helper (splay_tree,
-                                               splay_tree_key,
-                                               splay_tree_node*,
-                                               splay_tree_node*,
-                                               splay_tree_node*);
 static int splay_tree_foreach_helper (splay_tree, splay_tree_node,
                                       splay_tree_foreach_fn, void*);
 
@@ -107,116 +106,33 @@ splay_tree_delete_helper (splay_tree sp, splay_tree_node node)
 #undef VDEL
 }
 
-/* Help splay SP around KEY.  PARENT and GRANDPARENT are the parent
-   and grandparent, respectively, of NODE.  */
+/* Rotate the edge joining the left child N with its parent P.  PP is the
+   grandparents pointer to P.  */
 
-static splay_tree_node
-splay_tree_splay_helper (splay_tree sp, splay_tree_key key,
-                         splay_tree_node *node, splay_tree_node *parent,
-                         splay_tree_node *grandparent)
+static inline void
+rotate_left (splay_tree_node *pp, splay_tree_node p, splay_tree_node n)
 {
-  splay_tree_node *next;
-  splay_tree_node n;
-  int comparison;
-  
-  n = *node;
-
-  if (!n)
-    return *parent;
-
-  comparison = (*sp->comp) (key, n->key);
-
-  if (comparison == 0)
-    /* We've found the target.  */
-    next = 0;
-  else if (comparison < 0)
-    /* The target is to the left.  */
-    next = &n->left;
-  else 
-    /* The target is to the right.  */
-    next = &n->right;
-
-  if (next)
-    {
-      /* Continue down the tree.  */
-      n = splay_tree_splay_helper (sp, key, next, node, parent);
-
-      /* The recursive call will change the place to which NODE
-        points.  */
-      if (*node != n)
-       return n;
-    }
-
-  if (!parent)
-    /* NODE is the root.  We are done.  */
-    return n;
-
-  /* First, handle the case where there is no grandparent (i.e.,
-     *PARENT is the root of the tree.)  */
-  if (!grandparent) 
-    {
-      if (n == (*parent)->left)
-       {
-         *node = n->right;
-         n->right = *parent;
-       }
-      else
-       {
-         *node = n->left;
-         n->left = *parent;
-       }
-      *parent = n;
-      return n;
-    }
+  splay_tree_node tmp;
+  tmp = n->right;
+  n->right = p;
+  p->left = tmp;
+  *pp = n;
+}
 
-  /* Next handle the cases where both N and *PARENT are left children,
-     or where both are right children.  */
-  if (n == (*parent)->left && *parent == (*grandparent)->left)
-    {
-      splay_tree_node p = *parent;
-
-      (*grandparent)->left = p->right;
-      p->right = *grandparent;
-      p->left = n->right;
-      n->right = p;
-      *grandparent = n;
-      return n; 
-    }
-  else if  (n == (*parent)->right && *parent == (*grandparent)->right)
-    {
-      splay_tree_node p = *parent;
-
-      (*grandparent)->right = p->left;
-      p->left = *grandparent;
-      p->right = n->left;
-      n->left = p;
-      *grandparent = n;
-      return n;
-    }
+/* Rotate the edge joining the right child N with its parent P.  PP is the
+   grandparents pointer to P.  */
 
-  /* Finally, deal with the case where N is a left child, but *PARENT
-     is a right child, or vice versa.  */
-  if (n == (*parent)->left) 
-    {
-      (*parent)->left = n->right;
-      n->right = *parent;
-      (*grandparent)->right = n->left;
-      n->left = *grandparent;
-      *grandparent = n;
-      return n;
-    } 
-  else
-    {
-      (*parent)->right = n->left;
-      n->left = *parent;
-      (*grandparent)->left = n->right;
-      n->right = *grandparent;
-      *grandparent = n;
-      return n;
-    }
+static inline void
+rotate_right (splay_tree_node *pp, splay_tree_node p, splay_tree_node n)
+{
+  splay_tree_node tmp;
+  tmp = n->left;
+  n->left = p;
+  p->right = tmp;
+  *pp = n;
 }
 
-/* Splay SP around KEY.  */
+/* Bottom up splay of key.  */
 
 static void
 splay_tree_splay (splay_tree sp, splay_tree_key key)
@@ -224,8 +140,61 @@ splay_tree_splay (splay_tree sp, splay_tree_key key)
   if (sp->root == 0)
     return;
 
-  splay_tree_splay_helper (sp, key, &sp->root, 
-                          /*grandparent=*/0, /*parent=*/0); 
+  do {
+    int cmp1, cmp2;
+    splay_tree_node n, c;
+
+    n = sp->root;
+    cmp1 = (*sp->comp) (key, n->key);
+
+    /* Found.  */
+    if (cmp1 == 0)
+      return;
+
+    /* Left or right?  If no child, then we're done.  */
+    if (cmp1 < 0)
+      c = n->left;
+    else
+      c = n->right;
+    if (!c)
+      return;
+
+    /* Next one left or right?  If found or no child, we're done
+       after one rotation.  */
+    cmp2 = (*sp->comp) (key, c->key);
+    if (cmp2 == 0
+        || (cmp2 < 0 && !c->left)
+        || (cmp2 > 0 && !c->right))
+      {
+       if (cmp1 < 0)
+         rotate_left (&sp->root, n, c);
+       else
+         rotate_right (&sp->root, n, c);
+        return;
+      }
+
+    /* Now we have the four cases of double-rotation.  */
+    if (cmp1 < 0 && cmp2 < 0)
+      {
+       rotate_left (&n->left, c, c->left);
+       rotate_left (&sp->root, n, n->left);
+      }
+    else if (cmp1 > 0 && cmp2 > 0)
+      {
+       rotate_right (&n->right, c, c->right);
+       rotate_right (&sp->root, n, n->right);
+      }
+    else if (cmp1 < 0 && cmp2 > 0)
+      {
+       rotate_right (&n->left, c, c->right);
+       rotate_left (&sp->root, n, n->left);
+      }
+    else if (cmp1 > 0 && cmp2 < 0)
+      {
+       rotate_left (&n->right, c, c->left);
+       rotate_right (&sp->root, n, n->right);
+      }
+  } while (1);
 }
 
 /* Call FN, passing it the DATA, for every node below NODE, all of
index 5bf79149affec3d2e284c7b5638b23deaa3b8834..83dee04dfd548345978b9d9cae6f845b42408450 100644 (file)
@@ -1,3 +1,51 @@
+2005-11-16  Alan Modra  <amodra@bigpond.net.au>
+
+       * ppc-opc.c (powerpc_opcodes): Add frin,friz,frip,frim.  Correct
+       frsqrtes.
+
+2005-11-14  David Ung  <davidu@mips.com>
+
+       * mips16-opc.c: Add MIPS16e save/restore opcodes.
+       * mips-dis.c (print_mips16_insn_arg): Handle printing of 'm'/'M'
+       codes for save/restore.
+
+2005-11-10  Andreas Schwab  <schwab@suse.de>
+
+       * m68k-dis.c (print_insn_m68k): Only match FPU insns with
+       coprocessor ID 1.
+
+2005-11-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * m32c-desc.c: Regenerated.
+
+2005-11-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Add ms2.
+       * ms1-asm.c, ms1-desc.c, ms1-desc.h, ms1-dis.c, ms1-ibld.c,
+       ms1-opc.c, ms1-opc.h: Regenerated.
+
+2005-11-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * configure: Regenerate after modifying bfd/warning.m4.
+
+2005-11-07  Alan Modra  <amodra@bigpond.net.au>
+
+       * i386-dis.c (ckprefix): Handle rex on fwait.  Don't print
+       ignored rex prefixes here.
+       (print_insn): Instead, handle them similarly to fwait followed
+       by non-fp insns.
+
+2005-11-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * iq2000-desc.c: Regenerated.
+       * iq2000-desc.h: Likewise.
+       * iq2000-dis.c: Likewise.
+       * iq2000-opc.c: Likewise.
+
+2005-11-02  Paul Brook  <paul@codesourcery.com>
+
+       * arm-dis.c (print_insn_thumb32): Word align blx target address.
+
 2005-10-31  Alan Modra  <amodra@bigpond.net.au>
 
        * arm-dis.c (print_insn): Warning fix.
 
        * configure.in: Add target architecture bfd_arch_z80.
        * configure: Regenerated.
-       * disassemble.c (disassembler)<ARCH_z80>: Add case  
+       * disassemble.c (disassembler)<ARCH_z80>: Add case
        bfd_arch_z80.
        * z80-dis.c: New file.
 
 2005-08-23  David Ung  <davidu@mips.com>
 
        * mips16-opc.c (mips16_opcodes): Add the MIPS16e jalrc/jrc
-       instructions to the table. 
+       instructions to the table.
 
 2005-08-18  Alan Modra  <amodra@bigpond.net.au>
 
        * cgen-ops.h, cgen-types.h: New files.
        * Makefile.am (HFILES): List them.
        * Makefile.in: Regenerated.
-       
+
 2005-07-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * arc-dis.c, arm-dis.c, cris-dis.c, crx-dis.c, d10v-dis.c,
        * vax-dis.c: Likewise.
        * w65-dis.c: Likewise.
        * z8kgen.c: Likewise.
-       
+
        * fr30-*: Regenerate.
        * frv-*: Regenerate.
        * ip2k-*: Regenerate.
 
 2005-06-16  David Ung  <davidu@mips.com>
 
-        * mips16-opc.c (mips16_opcodes): Add the following MIPS16e
-        instructions to the table; seb/seh/sew/zeb/zeh/zew.
+       * mips16-opc.c (mips16_opcodes): Add the following MIPS16e
+       instructions to the table; seb/seh/sew/zeb/zeh/zew.
 
 2005-06-15  Dave Brolley  <brolley@redhat.com>
 
        Contribute Morpho ms1 on behalf of Red Hat
-       * ms1-asm.c, ms1-desc.c, ms1-dis.c, ms1-ibld.c, ms1-opc.c, 
+       * ms1-asm.c, ms1-desc.c, ms1-dis.c, ms1-ibld.c, ms1-opc.c,
        ms1-opc.h: New files, Morpho ms1 target.
 
        2004-05-14  Stan Cox  <scox@redhat.com>
index a19c077c067ae2748c9b3dde8a94905a6d02e00d..fb3cb77bc4a1ee080edb4a28d1375bd067448b08 100644 (file)
@@ -2607,8 +2607,13 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
                  offset |= (given & 0x03ff0000u) >> 4;
                  offset |= (given & 0x000007ffu) << 1;
                  offset -= (1 << 24);
+                 offset += pc + 4;
 
-                 info->print_address_func (pc + 4 + offset, info);
+                 /* BLX target addresses are always word aligned.  */
+                 if ((given & 0x00001000u) == 0)
+                     offset &= ~2u;
+
+                 info->print_address_func (offset, info);
                }
                break;
 
index 34c9ced1d03e0e68cabc906d6dc6968a1a693fb3..52e2b6766adb418dc834312950ca456fb82020cf 100755 (executable)
@@ -4243,7 +4243,7 @@ echo "$as_me: error: bad value ${enableval} for opcodes commonbfdlib option" >&2
 esac
 fi;
 
-WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
 
 # Check whether --enable-werror or --disable-werror was given.
 if test "${enable_werror+set}" = set; then
@@ -4264,20 +4264,26 @@ fi
 
 NO_WERROR=
 if test "${ERROR_ON_WARNING}" = yes ; then
-    WARN_CFLAGS="$WARN_CFLAGS -Werror"
+    GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror"
     NO_WERROR="-Wno-error"
 fi
 
+if test "${GCC}" = yes ; then
+  WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+fi
+
 # Check whether --enable-build-warnings or --disable-build-warnings was given.
 if test "${enable_build_warnings+set}" = set; then
   enableval="$enable_build_warnings"
   case "${enableval}" in
-  yes) ;;
-  no)  WARN_CFLAGS="-w";;
+  yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+  no)  if test "${GCC}" = yes ; then
+         WARN_CFLAGS="-w"
+       fi;;
   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${WARN_CFLAGS} ${t}";;
+        WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";;
   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        WARN_CFLAGS="${t} ${WARN_CFLAGS}";;
+        WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
   *)    WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
 esac
 fi;
index a3b205a49d8a77726561cc0ef44cc02e852bf941..47455e37e4461ccb731b090e97ca1c15f3b864ce 100644 (file)
@@ -1814,7 +1814,7 @@ ckprefix (void)
          /* fwait is really an instruction.  If there are prefixes
             before the fwait, they belong to the fwait, *not* to the
             following instruction.  */
-         if (prefixes)
+         if (prefixes || rex)
            {
              prefixes |= PREFIX_FWAIT;
              codep++;
@@ -1828,8 +1828,8 @@ ckprefix (void)
       /* Rex is ignored when followed by another prefix.  */
       if (rex)
        {
-         oappend (prefix_name (rex, 0));
-         oappend (" ");
+         rex_used = rex;
+         return;
        }
       rex = newrex;
       codep++;
@@ -2117,13 +2117,14 @@ print_insn (bfd_vma pc, disassemble_info *info)
   FETCH_DATA (info, codep + 1);
   two_source_ops = (*codep == 0x62) || (*codep == 0xc8);
 
-  if ((prefixes & PREFIX_FWAIT)
-      && ((*codep < 0xd8) || (*codep > 0xdf)))
+  if (((prefixes & PREFIX_FWAIT)
+       && ((*codep < 0xd8) || (*codep > 0xdf)))
+      || (rex && rex_used))
     {
       const char *name;
 
-      /* fwait not followed by floating point instruction.  Print the
-        first prefix, which is probably fwait itself.  */
+      /* fwait not followed by floating point instruction, or rex followed
+        by other prefixes.  Print the first prefix.  */
       name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
       if (name == NULL)
        name = INTERNAL_DISASSEMBLER_ERROR;
index 39bda648e4a2500e6a1f57c16b268e566c068360..5f47e4c8e7b1f42a19ec6cc75aebb3d05c1da554 100644 (file)
@@ -136,70 +136,70 @@ static const CGEN_MACH iq2000_cgen_mach_table[] = {
 
 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 }
+  { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
+  { "%0", 0, {0, {{{0, 0}}}}, 0, 0 },
+  { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
+  { "%1", 1, {0, {{{0, 0}}}}, 0, 0 },
+  { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
+  { "%2", 2, {0, {{{0, 0}}}}, 0, 0 },
+  { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
+  { "%3", 3, {0, {{{0, 0}}}}, 0, 0 },
+  { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
+  { "%4", 4, {0, {{{0, 0}}}}, 0, 0 },
+  { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
+  { "%5", 5, {0, {{{0, 0}}}}, 0, 0 },
+  { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
+  { "%6", 6, {0, {{{0, 0}}}}, 0, 0 },
+  { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
+  { "%7", 7, {0, {{{0, 0}}}}, 0, 0 },
+  { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
+  { "%8", 8, {0, {{{0, 0}}}}, 0, 0 },
+  { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
+  { "%9", 9, {0, {{{0, 0}}}}, 0, 0 },
+  { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
+  { "%10", 10, {0, {{{0, 0}}}}, 0, 0 },
+  { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
+  { "%11", 11, {0, {{{0, 0}}}}, 0, 0 },
+  { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
+  { "%12", 12, {0, {{{0, 0}}}}, 0, 0 },
+  { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
+  { "%13", 13, {0, {{{0, 0}}}}, 0, 0 },
+  { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
+  { "%14", 14, {0, {{{0, 0}}}}, 0, 0 },
+  { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
+  { "%15", 15, {0, {{{0, 0}}}}, 0, 0 },
+  { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
+  { "%16", 16, {0, {{{0, 0}}}}, 0, 0 },
+  { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
+  { "%17", 17, {0, {{{0, 0}}}}, 0, 0 },
+  { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
+  { "%18", 18, {0, {{{0, 0}}}}, 0, 0 },
+  { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
+  { "%19", 19, {0, {{{0, 0}}}}, 0, 0 },
+  { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
+  { "%20", 20, {0, {{{0, 0}}}}, 0, 0 },
+  { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
+  { "%21", 21, {0, {{{0, 0}}}}, 0, 0 },
+  { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
+  { "%22", 22, {0, {{{0, 0}}}}, 0, 0 },
+  { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
+  { "%23", 23, {0, {{{0, 0}}}}, 0, 0 },
+  { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
+  { "%24", 24, {0, {{{0, 0}}}}, 0, 0 },
+  { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
+  { "%25", 25, {0, {{{0, 0}}}}, 0, 0 },
+  { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
+  { "%26", 26, {0, {{{0, 0}}}}, 0, 0 },
+  { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
+  { "%27", 27, {0, {{{0, 0}}}}, 0, 0 },
+  { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
+  { "%28", 28, {0, {{{0, 0}}}}, 0, 0 },
+  { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
+  { "%29", 29, {0, {{{0, 0}}}}, 0, 0 },
+  { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
+  { "%30", 30, {0, {{{0, 0}}}}, 0, 0 },
+  { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
+  { "%31", 31, {0, {{{0, 0}}}}, 0, 0 }
 };
 
 CGEN_KEYWORD iq2000_cgen_opval_gr_names =
@@ -220,14 +220,14 @@ CGEN_KEYWORD iq2000_cgen_opval_gr_names =
 
 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}} }
+  { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
+  { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & iq2000_cgen_opval_gr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+  { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
 };
 
 #undef A
@@ -243,44 +243,44 @@ const CGEN_HW_ENTRY iq2000_cgen_hw_table[] =
 
 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_RD_RS, "f-rd-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { (1<<MACH_BASE) } }  },
-  { IQ2000_F_RD_RT, "f-rd-rt", 0, 0, 0, 0,{ 0|A(VIRTUAL), { (1<<MACH_BASE) } }  },
-  { IQ2000_F_RT_RS, "f-rt-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { (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}} }
+  { IQ2000_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_OPCODE, "f-opcode", 0, 32, 31, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RS, "f-rs", 0, 32, 25, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RT, "f-rt", 0, 32, 20, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RD, "f-rd", 0, 32, 15, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_SHAMT, "f-shamt", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CP_OP, "f-cp-op", 0, 32, 10, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CP_OP_10, "f-cp-op-10", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CP_GRP, "f-cp-grp", 0, 32, 7, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_FUNC, "f-func", 0, 32, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_IMM, "f-imm", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RD_RS, "f-rd-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RD_RT, "f-rd-rt", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RT_RS, "f-rt-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_JTARG, "f-jtarg", 0, 32, 15, 16, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_JTARGQ10, "f-jtargq10", 0, 32, 20, 21, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_OFFSET, "f-offset", 0, 32, 15, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_COUNT, "f-count", 0, 32, 15, 7, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_BYTECOUNT, "f-bytecount", 0, 32, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_INDEX, "f-index", 0, 32, 8, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_MASK, "f-mask", 0, 32, 9, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_MASKQ10, "f-maskq10", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_MASKL, "f-maskl", 0, 32, 4, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_EXCODE, "f-excode", 0, 32, 25, 20, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_RSRVD, "f-rsrvd", 0, 32, 25, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_10_11, "f-10-11", 0, 32, 10, 11, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_24_19, "f-24-19", 0, 32, 24, 19, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_5, "f-5", 0, 32, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_10, "f-10", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_25, "f-25", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CAM_Z, "f-cam-z", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CAM_Y, "f-cam-y", 0, 32, 2, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CM_3FUNC, "f-cm-3func", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CM_4FUNC, "f-cm-4func", 0, 32, 5, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CM_3Z, "f-cm-3z", 0, 32, 1, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { IQ2000_F_CM_4Z, "f-cm-4z", 0, 32, 2, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
 };
 
 #undef A
@@ -333,135 +333,135 @@ const CGEN_OPERAND iq2000_cgen_operand_table[] =
 /* pc: program counter */
   { "pc", IQ2000_OPERAND_PC, HW_H_PC, 0, 0,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_NIL] } }, 
-    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },
+    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
 /* rs: register Rs */
   { "rs", IQ2000_OPERAND_RS, HW_H_GR, 25, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* rt: register Rt */
   { "rt", IQ2000_OPERAND_RT, HW_H_GR, 20, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* rd: register Rd */
   { "rd", IQ2000_OPERAND_RD, HW_H_GR, 15, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RD] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* rd-rs: register Rd from Rs */
   { "rd-rs", IQ2000_OPERAND_RD_RS, HW_H_GR, 15, 10,
     { 2, { (const PTR) &IQ2000_F_RD_RS_MULTI_IFIELD[0] } }, 
-    { 0|A(VIRTUAL), { (1<<MACH_BASE) } }  },
+    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
 /* rd-rt: register Rd from Rt */
   { "rd-rt", IQ2000_OPERAND_RD_RT, HW_H_GR, 15, 10,
     { 2, { (const PTR) &IQ2000_F_RD_RT_MULTI_IFIELD[0] } }, 
-    { 0|A(VIRTUAL), { (1<<MACH_BASE) } }  },
+    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
 /* rt-rs: register Rt from Rs */
   { "rt-rs", IQ2000_OPERAND_RT_RS, HW_H_GR, 20, 10,
     { 2, { (const PTR) &IQ2000_F_RT_RS_MULTI_IFIELD[0] } }, 
-    { 0|A(VIRTUAL), { (1<<MACH_BASE) } }  },
+    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
 /* shamt: shift amount */
   { "shamt", IQ2000_OPERAND_SHAMT, HW_H_UINT, 10, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_SHAMT] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* imm: immediate */
   { "imm", IQ2000_OPERAND_IMM, HW_H_UINT, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* offset: pc-relative offset */
   { "offset", IQ2000_OPERAND_OFFSET, HW_H_IADDR, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_OFFSET] } }, 
-    { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },
+    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
 /* baseoff: base register offset */
   { "baseoff", IQ2000_OPERAND_BASEOFF, HW_H_IADDR, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* jmptarg: jump target */
   { "jmptarg", IQ2000_OPERAND_JMPTARG, HW_H_IADDR, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_JTARG] } }, 
-    { 0|A(ABS_ADDR), { (1<<MACH_BASE) } }  },
+    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
 /* mask: mask */
   { "mask", IQ2000_OPERAND_MASK, HW_H_UINT, 9, 4,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASK] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* maskq10: iq10 mask */
   { "maskq10", IQ2000_OPERAND_MASKQ10, HW_H_UINT, 10, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASKQ10] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* maskl: mask left */
   { "maskl", IQ2000_OPERAND_MASKL, HW_H_UINT, 4, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASKL] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* count: count */
   { "count", IQ2000_OPERAND_COUNT, HW_H_UINT, 15, 7,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_COUNT] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* _index: index */
   { "_index", IQ2000_OPERAND__INDEX, HW_H_UINT, 8, 9,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_INDEX] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* execode: execcode */
   { "execode", IQ2000_OPERAND_EXECODE, HW_H_UINT, 25, 20,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_EXCODE] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* bytecount: byte count */
   { "bytecount", IQ2000_OPERAND_BYTECOUNT, HW_H_UINT, 7, 8,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_BYTECOUNT] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cam-y: cam global opn y */
   { "cam-y", IQ2000_OPERAND_CAM_Y, HW_H_UINT, 2, 3,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CAM_Y] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cam-z: cam global mask z */
   { "cam-z", IQ2000_OPERAND_CAM_Z, HW_H_UINT, 5, 3,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CAM_Z] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cm-3func: CM 3 bit fn field */
   { "cm-3func", IQ2000_OPERAND_CM_3FUNC, HW_H_UINT, 5, 3,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_3FUNC] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cm-4func: CM 4 bit fn field */
   { "cm-4func", IQ2000_OPERAND_CM_4FUNC, HW_H_UINT, 5, 4,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_4FUNC] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cm-3z: CM 3 bit Z field */
   { "cm-3z", IQ2000_OPERAND_CM_3Z, HW_H_UINT, 1, 2,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_3Z] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* cm-4z: CM 4 bit Z field */
   { "cm-4z", IQ2000_OPERAND_CM_4Z, HW_H_UINT, 2, 3,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_4Z] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* base: base register */
   { "base", IQ2000_OPERAND_BASE, HW_H_GR, 25, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* maskr: mask right */
   { "maskr", IQ2000_OPERAND_MASKR, HW_H_UINT, 25, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* bitnum: bit number */
   { "bitnum", IQ2000_OPERAND_BITNUM, HW_H_UINT, 20, 5,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* hi16: high 16 bit immediate */
   { "hi16", IQ2000_OPERAND_HI16, HW_H_UINT, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* lo16: 16 bit signed immediate, for low */
   { "lo16", IQ2000_OPERAND_LO16, HW_H_UINT, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* mlo16: negated 16 bit signed immediate */
   { "mlo16", IQ2000_OPERAND_MLO16, HW_H_UINT, 15, 16,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } }, 
-    { 0, { (1<<MACH_BASE) } }  },
+    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
 /* jmptargq10: iq10 21-bit jump offset */
   { "jmptargq10", IQ2000_OPERAND_JMPTARGQ10, HW_H_IADDR, 20, 21,
     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_JTARGQ10] } }, 
-    { 0|A(ABS_ADDR), { (1<<MACH_BASE) } }  },
+    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
 /* sentinel */
   { 0, 0, 0, 0, 0,
     { 0, { (const PTR) 0 } },
-    { 0, { 0 } } }
+    { 0, { { { (1<<MACH_BASE), 0 } } } } }
 };
 
 #undef A
@@ -481,1381 +481,1381 @@ 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}} },
+  { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* add $rd,$rs,$rt */
   {
     IQ2000_INSN_ADD, "add", "add", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addi ${rt-rs},$lo16 */
   {
     -1, "addi2", "addi", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addi $rt,$rs,$lo16 */
   {
     IQ2000_INSN_ADDI, "addi", "addi", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addiu ${rt-rs},$lo16 */
   {
     -1, "addiu2", "addiu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addiu $rt,$rs,$lo16 */
   {
     IQ2000_INSN_ADDIU, "addiu", "addiu", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addu $rd,$rs,$rt */
   {
     IQ2000_INSN_ADDU, "addu", "addu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* ado16 $rd,$rs,$rt */
   {
     IQ2000_INSN_ADO16, "ado16", "ado16", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* and $rd,$rs,$rt */
   {
     IQ2000_INSN_AND, "and", "and", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* andi ${rt-rs},$lo16 */
   {
     -1, "andi2", "andi", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* andi $rt,$rs,$lo16 */
   {
     IQ2000_INSN_ANDI, "andi", "andi", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* andoi ${rt-rs},$lo16 */
   {
     -1, "andoi2", "andoi", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* andoi $rt,$rs,$lo16 */
   {
     IQ2000_INSN_ANDOI, "andoi", "andoi", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* nor $rd,$rs,$rt */
   {
     IQ2000_INSN_NOR, "nor", "nor", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* or $rd,$rs,$rt */
   {
     IQ2000_INSN_OR, "or", "or", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* ori ${rt-rs},$lo16 */
   {
     -1, "ori2", "ori", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* ori $rt,$rs,$lo16 */
   {
     IQ2000_INSN_ORI, "ori", "ori", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* ram $rd,$rt,$shamt,$maskl,$maskr */
   {
     IQ2000_INSN_RAM, "ram", "ram", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sll $rd,$rt,$shamt */
   {
     IQ2000_INSN_SLL, "sll", "sll", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sllv $rd,$rt,$rs */
   {
     IQ2000_INSN_SLLV, "sllv", "sllv", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* slmv $rd,$rt,$rs,$shamt */
   {
     IQ2000_INSN_SLMV, "slmv", "slmv", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* slt $rd,$rs,$rt */
   {
     IQ2000_INSN_SLT, "slt", "slt", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* slti ${rt-rs},$imm */
   {
     -1, "slti2", "slti", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* slti $rt,$rs,$imm */
   {
     IQ2000_INSN_SLTI, "slti", "slti", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sltiu ${rt-rs},$imm */
   {
     -1, "sltiu2", "sltiu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sltiu $rt,$rs,$imm */
   {
     IQ2000_INSN_SLTIU, "sltiu", "sltiu", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sltu $rd,$rs,$rt */
   {
     IQ2000_INSN_SLTU, "sltu", "sltu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sra ${rd-rt},$shamt */
   {
     -1, "sra2", "sra", 32,
-    { 0|A(USES_RT)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sra $rd,$rt,$shamt */
   {
     IQ2000_INSN_SRA, "sra", "sra", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* srav $rd,$rt,$rs */
   {
     IQ2000_INSN_SRAV, "srav", "srav", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* srl $rd,$rt,$shamt */
   {
     IQ2000_INSN_SRL, "srl", "srl", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* srlv $rd,$rt,$rs */
   {
     IQ2000_INSN_SRLV, "srlv", "srlv", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* srmv $rd,$rt,$rs,$shamt */
   {
     IQ2000_INSN_SRMV, "srmv", "srmv", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sub $rd,$rs,$rt */
   {
     IQ2000_INSN_SUB, "sub", "sub", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* subu $rd,$rs,$rt */
   {
     IQ2000_INSN_SUBU, "subu", "subu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* xor $rd,$rs,$rt */
   {
     IQ2000_INSN_XOR, "xor", "xor", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* xori ${rt-rs},$lo16 */
   {
     -1, "xori2", "xori", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* xori $rt,$rs,$lo16 */
   {
     IQ2000_INSN_XORI, "xori", "xori", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* bbi $rs($bitnum),$offset */
   {
     IQ2000_INSN_BBI, "bbi", "bbi", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* bbin $rs($bitnum),$offset */
   {
     IQ2000_INSN_BBIN, "bbin", "bbin", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* bgez $rs,$offset */
   {
     IQ2000_INSN_BGEZ, "bgez", "bgez", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* bltz $rs,$offset */
   {
     IQ2000_INSN_BLTZ, "bltz", "bltz", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(USES_RD)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* jr $rs */
   {
     IQ2000_INSN_JR, "jr", "jr", 32,
-    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lb $rt,$lo16($base) */
   {
     IQ2000_INSN_LB, "lb", "lb", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lbu $rt,$lo16($base) */
   {
     IQ2000_INSN_LBU, "lbu", "lbu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lh $rt,$lo16($base) */
   {
     IQ2000_INSN_LH, "lh", "lh", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lhu $rt,$lo16($base) */
   {
     IQ2000_INSN_LHU, "lhu", "lhu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lui $rt,$hi16 */
   {
     IQ2000_INSN_LUI, "lui", "lui", 32,
-    { 0|A(USES_RT), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lw $rt,$lo16($base) */
   {
     IQ2000_INSN_LW, "lw", "lw", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sb $rt,$lo16($base) */
   {
     IQ2000_INSN_SB, "sb", "sb", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sh $rt,$lo16($base) */
   {
     IQ2000_INSN_SH, "sh", "sh", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sw $rt,$lo16($base) */
   {
     IQ2000_INSN_SW, "sw", "sw", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_BASE) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* break */
   {
     IQ2000_INSN_BREAK, "break", "break", 32,
-    { 0, { (1<<MACH_BASE) } }
+    { 0, { { { (1<<MACH_BASE), 0 } } } }
   },
 /* syscall */
   {
     IQ2000_INSN_SYSCALL, "syscall", "syscall", 32,
-    { 0|A(YIELD_INSN), { (1<<MACH_BASE) } }
+    { 0|A(YIELD_INSN), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* andoui $rt,$rs,$hi16 */
   {
     IQ2000_INSN_ANDOUI, "andoui", "andoui", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* andoui ${rt-rs},$hi16 */
   {
     -1, "andoui2", "andoui", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* orui ${rt-rs},$hi16 */
   {
     -1, "orui2", "orui", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* orui $rt,$rs,$hi16 */
   {
     IQ2000_INSN_ORUI, "orui", "orui", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bgtz $rs,$offset */
   {
     IQ2000_INSN_BGTZ, "bgtz", "bgtz", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* blez $rs,$offset */
   {
     IQ2000_INSN_BLEZ, "blez", "blez", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mrgb $rd,$rs,$rt,$mask */
   {
     IQ2000_INSN_MRGB, "mrgb", "mrgb", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bctxt $rs,$offset */
   {
     IQ2000_INSN_BCTXT, "bctxt", "bctxt", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc0f $offset */
   {
     IQ2000_INSN_BC0F, "bc0f", "bc0f", 32,
-    { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc0fl $offset */
   {
     IQ2000_INSN_BC0FL, "bc0fl", "bc0fl", 32,
-    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc3f $offset */
   {
     IQ2000_INSN_BC3F, "bc3f", "bc3f", 32,
-    { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc3fl $offset */
   {
     IQ2000_INSN_BC3FL, "bc3fl", "bc3fl", 32,
-    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc0t $offset */
   {
     IQ2000_INSN_BC0T, "bc0t", "bc0t", 32,
-    { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc0tl $offset */
   {
     IQ2000_INSN_BC0TL, "bc0tl", "bc0tl", 32,
-    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc3t $offset */
   {
     IQ2000_INSN_BC3T, "bc3t", "bc3t", 32,
-    { 0|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* bc3tl $offset */
   {
     IQ2000_INSN_BC3TL, "bc3tl", "bc3tl", 32,
-    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* cfc0 $rt,$rd */
   {
     IQ2000_INSN_CFC0, "cfc0", "cfc0", 32,
-    { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* cfc1 $rt,$rd */
   {
     IQ2000_INSN_CFC1, "cfc1", "cfc1", 32,
-    { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* cfc2 $rt,$rd */
   {
     IQ2000_INSN_CFC2, "cfc2", "cfc2", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* cfc3 $rt,$rd */
   {
     IQ2000_INSN_CFC3, "cfc3", "cfc3", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* chkhdr $rd,$rt */
   {
     IQ2000_INSN_CHKHDR, "chkhdr", "chkhdr", 32,
-    { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* ctc0 $rt,$rd */
   {
     IQ2000_INSN_CTC0, "ctc0", "ctc0", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* ctc1 $rt,$rd */
   {
     IQ2000_INSN_CTC1, "ctc1", "ctc1", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* ctc2 $rt,$rd */
   {
     IQ2000_INSN_CTC2, "ctc2", "ctc2", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* ctc3 $rt,$rd */
   {
     IQ2000_INSN_CTC3, "ctc3", "ctc3", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* jcr $rs */
   {
     IQ2000_INSN_JCR, "jcr", "jcr", 32,
-    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luc32 $rt,$rd */
   {
     IQ2000_INSN_LUC32, "luc32", "luc32", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luc32l $rt,$rd */
   {
     IQ2000_INSN_LUC32L, "luc32l", "luc32l", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luc64 $rt,$rd */
   {
     IQ2000_INSN_LUC64, "luc64", "luc64", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luc64l $rt,$rd */
   {
     IQ2000_INSN_LUC64L, "luc64l", "luc64l", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luk $rt,$rd */
   {
     IQ2000_INSN_LUK, "luk", "luk", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lulck $rt */
   {
     IQ2000_INSN_LULCK, "lulck", "lulck", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lum32 $rt,$rd */
   {
     IQ2000_INSN_LUM32, "lum32", "lum32", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lum32l $rt,$rd */
   {
     IQ2000_INSN_LUM32L, "lum32l", "lum32l", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lum64 $rt,$rd */
   {
     IQ2000_INSN_LUM64, "lum64", "lum64", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lum64l $rt,$rd */
   {
     IQ2000_INSN_LUM64L, "lum64l", "lum64l", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lur $rt,$rd */
   {
     IQ2000_INSN_LUR, "lur", "lur", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* lurl $rt,$rd */
   {
     IQ2000_INSN_LURL, "lurl", "lurl", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* luulck $rt */
   {
     IQ2000_INSN_LUULCK, "luulck", "luulck", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mfc0 $rt,$rd */
   {
     IQ2000_INSN_MFC0, "mfc0", "mfc0", 32,
-    { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mfc1 $rt,$rd */
   {
     IQ2000_INSN_MFC1, "mfc1", "mfc1", 32,
-    { 0|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mfc2 $rt,$rd */
   {
     IQ2000_INSN_MFC2, "mfc2", "mfc2", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mfc3 $rt,$rd */
   {
     IQ2000_INSN_MFC3, "mfc3", "mfc3", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mtc0 $rt,$rd */
   {
     IQ2000_INSN_MTC0, "mtc0", "mtc0", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mtc1 $rt,$rd */
   {
     IQ2000_INSN_MTC1, "mtc1", "mtc1", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mtc2 $rt,$rd */
   {
     IQ2000_INSN_MTC2, "mtc2", "mtc2", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* mtc3 $rt,$rd */
   {
     IQ2000_INSN_MTC3, "mtc3", "mtc3", 32,
-    { 0|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* pkrl $rd,$rt */
   {
     IQ2000_INSN_PKRL, "pkrl", "pkrl", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* pkrlr1 $rt,$_index,$count */
   {
     IQ2000_INSN_PKRLR1, "pkrlr1", "pkrlr1", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* pkrlr30 $rt,$_index,$count */
   {
     IQ2000_INSN_PKRLR30, "pkrlr30", "pkrlr30", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rb $rd,$rt */
   {
     IQ2000_INSN_RB, "rb", "rb", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rbr1 $rt,$_index,$count */
   {
     IQ2000_INSN_RBR1, "rbr1", "rbr1", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rbr30 $rt,$_index,$count */
   {
     IQ2000_INSN_RBR30, "rbr30", "rbr30", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rfe */
   {
     IQ2000_INSN_RFE, "rfe", "rfe", 32,
-    { 0, { (1<<MACH_IQ2000) } }
+    { 0, { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rx $rd,$rt */
   {
     IQ2000_INSN_RX, "rx", "rx", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rxr1 $rt,$_index,$count */
   {
     IQ2000_INSN_RXR1, "rxr1", "rxr1", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* rxr30 $rt,$_index,$count */
   {
     IQ2000_INSN_RXR30, "rxr30", "rxr30", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* sleep */
   {
     IQ2000_INSN_SLEEP, "sleep", "sleep", 32,
-    { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* srrd $rt */
   {
     IQ2000_INSN_SRRD, "srrd", "srrd", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* srrdl $rt */
   {
     IQ2000_INSN_SRRDL, "srrdl", "srrdl", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* srulck $rt */
   {
     IQ2000_INSN_SRULCK, "srulck", "srulck", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* srwr $rt,$rd */
   {
     IQ2000_INSN_SRWR, "srwr", "srwr", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* srwru $rt,$rd */
   {
     IQ2000_INSN_SRWRU, "srwru", "srwru", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* trapqfl */
   {
     IQ2000_INSN_TRAPQFL, "trapqfl", "trapqfl", 32,
-    { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* trapqne */
   {
     IQ2000_INSN_TRAPQNE, "trapqne", "trapqne", 32,
-    { 0|A(YIELD_INSN), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* traprel $rt */
   {
     IQ2000_INSN_TRAPREL, "traprel", "traprel", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wb $rd,$rt */
   {
     IQ2000_INSN_WB, "wb", "wb", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wbu $rd,$rt */
   {
     IQ2000_INSN_WBU, "wbu", "wbu", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wbr1 $rt,$_index,$count */
   {
     IQ2000_INSN_WBR1, "wbr1", "wbr1", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wbr1u $rt,$_index,$count */
   {
     IQ2000_INSN_WBR1U, "wbr1u", "wbr1u", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wbr30 $rt,$_index,$count */
   {
     IQ2000_INSN_WBR30, "wbr30", "wbr30", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wbr30u $rt,$_index,$count */
   {
     IQ2000_INSN_WBR30U, "wbr30u", "wbr30u", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wx $rd,$rt */
   {
     IQ2000_INSN_WX, "wx", "wx", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wxu $rd,$rt */
   {
     IQ2000_INSN_WXU, "wxu", "wxu", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wxr1 $rt,$_index,$count */
   {
     IQ2000_INSN_WXR1, "wxr1", "wxr1", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wxr1u $rt,$_index,$count */
   {
     IQ2000_INSN_WXR1U, "wxr1u", "wxr1u", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wxr30 $rt,$_index,$count */
   {
     IQ2000_INSN_WXR30, "wxr30", "wxr30", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* wxr30u $rt,$_index,$count */
   {
     IQ2000_INSN_WXR30U, "wxr30u", "wxr30u", 32,
-    { 0|A(YIELD_INSN)|A(USES_RT), { (1<<MACH_IQ2000) } }
+    { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* ldw $rt,$lo16($base) */
   {
     IQ2000_INSN_LDW, "ldw", "ldw", 32,
-    { 0|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* sdw $rt,$lo16($base) */
   {
     IQ2000_INSN_SDW, "sdw", "sdw", 32,
-    { 0|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* j $jmptarg */
   {
     IQ2000_INSN_J, "j", "j", 32,
-    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* jal $jmptarg */
   {
     IQ2000_INSN_JAL, "jal", "jal", 32,
-    { 0|A(USES_R31)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ2000) } }
+    { 0|A(USES_R31)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* andoui $rt,$rs,$hi16 */
   {
     IQ2000_INSN_ANDOUI_Q10, "andoui-q10", "andoui", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* andoui ${rt-rs},$hi16 */
   {
     -1, "andoui2-q10", "andoui", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* orui $rt,$rs,$hi16 */
   {
     IQ2000_INSN_ORUI_Q10, "orui-q10", "orui", 32,
-    { 0|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* orui ${rt-rs},$hi16 */
   {
     -1, "orui2-q10", "orui", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* mrgb $rd,$rs,$rt,$maskq10 */
   {
     IQ2000_INSN_MRGBQ10, "mrgbq10", "mrgb", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* j $jmptarg */
   {
     IQ2000_INSN_JQ10, "jq10", "j", 32,
-    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* jal $rt,$jmptarg */
   {
     IQ2000_INSN_JALQ10, "jalq10", "jal", 32,
-    { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* jal $jmptarg */
   {
     IQ2000_INSN_JALQ10_2, "jalq10-2", "jal", 32,
-    { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* bgtz $rs,$offset */
   {
     IQ2000_INSN_BGTZ_Q10, "bgtz-q10", "bgtz", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* blez $rs,$offset */
   {
     IQ2000_INSN_BLEZ_Q10, "blez-q10", "blez", 32,
-    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* bctx $rs,$offset */
   {
     IQ2000_INSN_BCTX, "bctx", "bctx", 32,
-    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* yield */
   {
     IQ2000_INSN_YIELD, "yield", "yield", 32,
-    { 0, { (1<<MACH_IQ10) } }
+    { 0, { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* crc32 $rd,$rs,$rt */
   {
     IQ2000_INSN_CRC32, "crc32", "crc32", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* crc32b $rd,$rs,$rt */
   {
     IQ2000_INSN_CRC32B, "crc32b", "crc32b", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cnt1s $rd,$rs */
   {
     IQ2000_INSN_CNT1S, "cnt1s", "cnt1s", 32,
-    { 0|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* avail $rd */
   {
     IQ2000_INSN_AVAIL, "avail", "avail", 32,
-    { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* free $rd,$rs */
   {
     IQ2000_INSN_FREE, "free", "free", 32,
-    { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* tstod $rd,$rs */
   {
     IQ2000_INSN_TSTOD, "tstod", "tstod", 32,
-    { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cmphdr $rd */
   {
     IQ2000_INSN_CMPHDR, "cmphdr", "cmphdr", 32,
-    { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* mcid $rd,$rt */
   {
     IQ2000_INSN_MCID, "mcid", "mcid", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dba $rd */
   {
     IQ2000_INSN_DBA, "dba", "dba", 32,
-    { 0|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dbd $rd,$rs,$rt */
   {
     IQ2000_INSN_DBD, "dbd", "dbd", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dpwt $rd,$rs */
   {
     IQ2000_INSN_DPWT, "dpwt", "dpwt", 32,
-    { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* chkhdr $rd,$rs */
   {
     IQ2000_INSN_CHKHDRQ10, "chkhdrq10", "chkhdr", 32,
-    { 0|A(USES_RD)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rba $rd,$rs,$rt */
   {
     IQ2000_INSN_RBA, "rba", "rba", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbal $rd,$rs,$rt */
   {
     IQ2000_INSN_RBAL, "rbal", "rbal", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbar $rd,$rs,$rt */
   {
     IQ2000_INSN_RBAR, "rbar", "rbar", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wba $rd,$rs,$rt */
   {
     IQ2000_INSN_WBA, "wba", "wba", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wbau $rd,$rs,$rt */
   {
     IQ2000_INSN_WBAU, "wbau", "wbau", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wbac $rd,$rs,$rt */
   {
     IQ2000_INSN_WBAC, "wbac", "wbac", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbi $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_RBI, "rbi", "rbi", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbil $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_RBIL, "rbil", "rbil", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbir $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_RBIR, "rbir", "rbir", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wbi $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_WBI, "wbi", "wbi", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wbic $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_WBIC, "wbic", "wbic", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* wbiu $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_WBIU, "wbiu", "wbiu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrli $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_PKRLI, "pkrli", "pkrli", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlih $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_PKRLIH, "pkrlih", "pkrlih", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrliu $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_PKRLIU, "pkrliu", "pkrliu", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlic $rd,$rs,$rt,$bytecount */
   {
     IQ2000_INSN_PKRLIC, "pkrlic", "pkrlic", 32,
-    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrla $rd,$rs,$rt */
   {
     IQ2000_INSN_PKRLA, "pkrla", "pkrla", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlau $rd,$rs,$rt */
   {
     IQ2000_INSN_PKRLAU, "pkrlau", "pkrlau", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlah $rd,$rs,$rt */
   {
     IQ2000_INSN_PKRLAH, "pkrlah", "pkrlah", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlac $rd,$rs,$rt */
   {
     IQ2000_INSN_PKRLAC, "pkrlac", "pkrlac", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* lock $rd,$rt */
   {
     IQ2000_INSN_LOCK, "lock", "lock", 32,
-    { 0|A(USES_RT)|A(USES_RD), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* unlk $rd,$rt */
   {
     IQ2000_INSN_UNLK, "unlk", "unlk", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* swrd $rd,$rt */
   {
     IQ2000_INSN_SWRD, "swrd", "swrd", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* swrdl $rd,$rt */
   {
     IQ2000_INSN_SWRDL, "swrdl", "swrdl", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* swwr $rd,$rs,$rt */
   {
     IQ2000_INSN_SWWR, "swwr", "swwr", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* swwru $rd,$rs,$rt */
   {
     IQ2000_INSN_SWWRU, "swwru", "swwru", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dwrd $rd,$rt */
   {
     IQ2000_INSN_DWRD, "dwrd", "dwrd", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dwrdl $rd,$rt */
   {
     IQ2000_INSN_DWRDL, "dwrdl", "dwrdl", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cam36 $rd,$rt,${cam-z},${cam-y} */
   {
     IQ2000_INSN_CAM36, "cam36", "cam36", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cam72 $rd,$rt,${cam-y},${cam-z} */
   {
     IQ2000_INSN_CAM72, "cam72", "cam72", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cam144 $rd,$rt,${cam-y},${cam-z} */
   {
     IQ2000_INSN_CAM144, "cam144", "cam144", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cam288 $rd,$rt,${cam-y},${cam-z} */
   {
     IQ2000_INSN_CAM288, "cam288", "cam288", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32and $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32AND, "cm32and", "cm32and", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32andn $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32ANDN, "cm32andn", "cm32andn", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32or $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32OR, "cm32or", "cm32or", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32ra $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32RA, "cm32ra", "cm32ra", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32rd $rd,$rt */
   {
     IQ2000_INSN_CM32RD, "cm32rd", "cm32rd", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32ri $rd,$rt */
   {
     IQ2000_INSN_CM32RI, "cm32ri", "cm32ri", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32rs $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32RS, "cm32rs", "cm32rs", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32sa $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32SA, "cm32sa", "cm32sa", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32sd $rd,$rt */
   {
     IQ2000_INSN_CM32SD, "cm32sd", "cm32sd", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32si $rd,$rt */
   {
     IQ2000_INSN_CM32SI, "cm32si", "cm32si", 32,
-    { 0|A(USES_RD)|A(USES_RT), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32ss $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32SS, "cm32ss", "cm32ss", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32xor $rd,$rs,$rt */
   {
     IQ2000_INSN_CM32XOR, "cm32xor", "cm32xor", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64clr $rd,$rt */
   {
     IQ2000_INSN_CM64CLR, "cm64clr", "cm64clr", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64rd $rd,$rt */
   {
     IQ2000_INSN_CM64RD, "cm64rd", "cm64rd", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64ri $rd,$rt */
   {
     IQ2000_INSN_CM64RI, "cm64ri", "cm64ri", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64sd $rd,$rt */
   {
     IQ2000_INSN_CM64SD, "cm64sd", "cm64sd", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64si $rd,$rt */
   {
     IQ2000_INSN_CM64SI, "cm64si", "cm64si", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm128vsa $rd,$rs,$rt */
   {
     IQ2000_INSN_CM128VSA, "cm128vsa", "cm128vsa", 32,
-    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cfc $rd,$rt */
   {
     IQ2000_INSN_CFC, "cfc", "cfc", 32,
-    { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { (1<<MACH_IQ10) } }
+    { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* ctc $rs,$rt */
   {
     IQ2000_INSN_CTC, "ctc", "ctc", 32,
-    { 0|A(USES_RS), { (1<<MACH_IQ10) } }
+    { 0|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 };
 
@@ -1978,7 +1978,7 @@ static void
 iq2000_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
 {
   int i;
-  unsigned int isas = cd->isas;
+  CGEN_BITSET *isas = cd->isas;
   unsigned int machs = cd->machs;
 
   cd->int_insn_p = CGEN_INT_INSN_P;
@@ -1990,7 +1990,7 @@ iq2000_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
   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)
+    if (cgen_bitset_contains (isas, i))
       {
        const CGEN_ISA *isa = & iq2000_cgen_isa_table[i];
 
@@ -2075,7 +2075,7 @@ 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" */
+  CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
   unsigned int machs = 0; /* 0 = "unspecified" */
   enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
   va_list ap;
@@ -2094,7 +2094,7 @@ iq2000_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
       switch (arg_type)
        {
        case CGEN_CPU_OPEN_ISAS :
-         isas = va_arg (ap, unsigned int);
+         isas = va_arg (ap, CGEN_BITSET *);
          break;
        case CGEN_CPU_OPEN_MACHS :
          machs = va_arg (ap, unsigned int);
@@ -2125,9 +2125,6 @@ iq2000_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
     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.  */
@@ -2135,7 +2132,7 @@ iq2000_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
       abort ();
     }
 
-  cd->isas = isas;
+  cd->isas = cgen_bitset_copy (isas);
   cd->machs = machs;
   cd->endian = endian;
   /* FIXME: for the sparc case we can determine insn-endianness statically.
index cd644a8eb6c00136b58e7f3d9c842b239df32081..9efdca9952c5a29cf40c2871cc697e2ae59bbdfb 100644 (file)
@@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef IQ2000_CPU_H
 #define IQ2000_CPU_H
 
+#include "opcode/cgen-bitset.h"
+
 #define CGEN_ARCH iq2000
 
 /* Given symbol S, return iq2000_cgen_<S>.  */
@@ -200,6 +202,15 @@ typedef enum 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)
 
+/* cgen_ifld attribute accessor macros.  */
+#define CGEN_ATTR_CGEN_IFLD_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_IFLD_MACH-CGEN_IFLD_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_IFLD_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_PCREL_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_PCREL_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_ABS_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_ABS_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_RESERVED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_RESERVED)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_SIGN_OPT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_SIGN_OPT)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_SIGNED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_SIGNED)) != 0)
+
 /* Enum declaration for iq2000 ifield types.  */
 typedef enum ifield_type {
   IQ2000_F_NIL, IQ2000_F_ANYOF, IQ2000_F_OPCODE, IQ2000_F_RS
@@ -227,6 +238,13 @@ typedef enum 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)
 
+/* cgen_hw attribute accessor macros.  */
+#define CGEN_ATTR_CGEN_HW_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_HW_MACH-CGEN_HW_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_HW_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_HW_CACHE_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_CACHE_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_HW_PC_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_PC)) != 0)
+#define CGEN_ATTR_CGEN_HW_PROFILE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_PROFILE)) != 0)
+
 /* Enum declaration for iq2000 hardware types.  */
 typedef enum cgen_hw_type {
   HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR
@@ -247,6 +265,17 @@ typedef enum 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)
 
+/* cgen_operand attribute accessor macros.  */
+#define CGEN_ATTR_CGEN_OPERAND_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_OPERAND_MACH-CGEN_OPERAND_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_OPERAND_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_PCREL_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_PCREL_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_ABS_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_ABS_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SIGN_OPT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SIGN_OPT)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SIGNED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SIGNED)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_NEGATIVE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_NEGATIVE)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_RELAX_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_RELAX)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SEM_ONLY_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SEM_ONLY)) != 0)
+
 /* Enum declaration for iq2000 operand types.  */
 typedef enum cgen_operand_type {
   IQ2000_OPERAND_PC, IQ2000_OPERAND_RS, IQ2000_OPERAND_RT, IQ2000_OPERAND_RD
@@ -281,6 +310,27 @@ typedef enum 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_insn attribute accessor macros.  */
+#define CGEN_ATTR_CGEN_INSN_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_MACH-CGEN_INSN_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_INSN_ALIAS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_ALIAS)) != 0)
+#define CGEN_ATTR_CGEN_INSN_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_INSN_UNCOND_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_UNCOND_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_COND_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_COND_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_SKIP_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_SKIP_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_DELAY_SLOT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_DELAY_SLOT)) != 0)
+#define CGEN_ATTR_CGEN_INSN_RELAXABLE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_RELAXABLE)) != 0)
+#define CGEN_ATTR_CGEN_INSN_RELAXED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_RELAXED)) != 0)
+#define CGEN_ATTR_CGEN_INSN_NO_DIS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_NO_DIS)) != 0)
+#define CGEN_ATTR_CGEN_INSN_PBB_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_PBB)) != 0)
+#define CGEN_ATTR_CGEN_INSN_YIELD_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_YIELD_INSN)) != 0)
+#define CGEN_ATTR_CGEN_INSN_LOAD_DELAY_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_LOAD_DELAY)) != 0)
+#define CGEN_ATTR_CGEN_INSN_EVEN_REG_NUM_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_EVEN_REG_NUM)) != 0)
+#define CGEN_ATTR_CGEN_INSN_UNSUPPORTED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_UNSUPPORTED)) != 0)
+#define CGEN_ATTR_CGEN_INSN_USES_RD_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_RD)) != 0)
+#define CGEN_ATTR_CGEN_INSN_USES_RS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_RS)) != 0)
+#define CGEN_ATTR_CGEN_INSN_USES_RT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_RT)) != 0)
+#define CGEN_ATTR_CGEN_INSN_USES_R31_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_R31)) != 0)
+
 /* cgen.h uses things we just defined.  */
 #include "opcode/cgen.h"
 
index 02f535e6d7972bda70c2a162e0b23ae3a89d393e..b8a7c2edff578ebbd5d4f75a9bb7b35864da4519 100644 (file)
@@ -4,7 +4,7 @@
    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, 2002, 2005
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
    Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils and GDB, the GNU debugger.
@@ -497,7 +497,7 @@ default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
 typedef struct cpu_desc_list
 {
   struct cpu_desc_list *next;
-  int isa;
+  CGEN_BITSET *isa;
   int mach;
   int endian;
   CGEN_CPU_DESC cd;
@@ -509,11 +509,12 @@ print_insn_iq2000 (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 CGEN_BITSET *prev_isa;
   static int prev_mach;
   static int prev_endian;
   int length;
-  int isa,mach;
+  CGEN_BITSET *isa;
+  int mach;
   int endian = (info->endian == BFD_ENDIAN_BIG
                ? CGEN_ENDIAN_BIG
                : CGEN_ENDIAN_LITTLE);
@@ -536,25 +537,34 @@ print_insn_iq2000 (bfd_vma pc, disassemble_info *info)
 #endif
 
 #ifdef CGEN_COMPUTE_ISA
-  isa = CGEN_COMPUTE_ISA (info);
+  {
+    static CGEN_BITSET *permanent_isa;
+
+    if (!permanent_isa)
+      permanent_isa = cgen_bitset_create (MAX_ISAS);
+    isa = permanent_isa;
+    cgen_bitset_clear (isa);
+    cgen_bitset_add (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
+      && (cgen_bitset_compare (isa, prev_isa) != 0
          || mach != prev_mach
          || endian != prev_endian))
     {
       cd = 0;
       for (cl = cd_list; cl; cl = cl->next)
        {
-         if (cl->isa == isa &&
+         if (cgen_bitset_compare (cl->isa, isa) == 0 &&
              cl->mach == mach &&
              cl->endian == endian)
            {
              cd = cl->cd;
+             prev_isa = cd->isas;
              break;
            }
        }
@@ -570,7 +580,7 @@ print_insn_iq2000 (bfd_vma pc, disassemble_info *info)
        abort ();
       mach_name = arch_type->printable_name;
 
-      prev_isa = isa;
+      prev_isa = cgen_bitset_copy (isa);
       prev_mach = mach;
       prev_endian = endian;
       cd = iq2000_cgen_cpu_open (CGEN_CPU_OPEN_ISAS, prev_isa,
@@ -583,7 +593,7 @@ print_insn_iq2000 (bfd_vma pc, disassemble_info *info)
       /* Save this away for future reference.  */
       cl = xmalloc (sizeof (struct cpu_desc_list));
       cl->cd = cd;
-      cl->isa = isa;
+      cl->isa = prev_isa;
       cl->mach = mach;
       cl->endian = endian;
       cl->next = cd_list;
index 2ea3bf8c323bddb810d3a6c07aa3228e0dfc29be..6f2f257e13d30d525e768a36bbb00c0f9164acad 100644 (file)
@@ -2312,472 +2312,472 @@ static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
 /* nop */
   {
     -1, "nop", "nop", 32,
-    { 0|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* li $rs,$imm */
   {
     -1, "li", "li", 32,
-    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* move $rd,$rt */
   {
     -1, "move", "move", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lb $rt,$lo16 */
   {
     -1, "lb-base-0", "lb", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lbu $rt,$lo16 */
   {
     -1, "lbu-base-0", "lbu", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lh $rt,$lo16 */
   {
     -1, "lh-base-0", "lh", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* lw $rt,$lo16 */
   {
     -1, "lw-base-0", "lw", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* add $rt,$rs,$lo16 */
   {
     -1, "m-add", "add", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* addu $rt,$rs,$lo16 */
   {
     -1, "m-addu", "addu", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* and $rt,$rs,$lo16 */
   {
     -1, "m-and", "and", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* j $rs */
   {
     -1, "m-j", "j", 32,
-    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* or $rt,$rs,$lo16 */
   {
     -1, "m-or", "or", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* slt $rt,$rs,$imm */
   {
     -1, "m-slt", "slt", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sltu $rt,$rs,$imm */
   {
     -1, "m-sltu", "sltu", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* not $rd,$rt */
   {
     -1, "not", "not", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* subi $rt,$rs,$mlo16 */
   {
     -1, "subi", "subi", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sub $rt,$rs,$mlo16 */
   {
     -1, "m-sub", "sub", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* subu $rt,$rs,$mlo16 */
   {
     -1, "m-subu", "subu", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sb $rt,$lo16 */
   {
     -1, "sb-base-0", "sb", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sh $rt,$lo16 */
   {
     -1, "sh-base-0", "sh", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* sw $rt,$lo16 */
   {
     -1, "sw-base-0", "sw", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* xor $rt,$rs,$lo16 */
   {
     -1, "m-xor", "xor", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   },
 /* avail */
   {
     -1, "m-avail", "avail", 32,
-    { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32read $rd,$rt */
   {
     -1, "m-cm32read", "cm32read", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64read $rd,$rt */
   {
     -1, "m-cm64read", "cm64read", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32mlog $rs,$rt */
   {
     -1, "m-cm32mlog", "cm32mlog", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32rd $rt */
   {
     -1, "m-cm32rd", "cm32rd", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32ri $rt */
   {
     -1, "m-cm32ri", "cm32ri", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32sd $rt */
   {
     -1, "m-cm32sd", "cm32sd", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm32si $rt */
   {
     -1, "m-cm32si", "cm32si", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64clr $rt */
   {
     -1, "m-cm64clr", "cm64clr", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64rd $rt */
   {
     -1, "m-cm64rd", "cm64rd", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64ri $rt */
   {
     -1, "m-cm64ri", "cm64ri", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64sd $rt */
   {
     -1, "m-cm64sd", "cm64sd", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cm64si $rt */
   {
     -1, "m-cm64si", "cm64si", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* cmphdr */
   {
     -1, "m-cmphdr", "cmphdr", 32,
-    { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dbd $rd,$rt */
   {
     -1, "m-dbd", "dbd", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dbd $rt */
   {
     -1, "m2-dbd", "dbd", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* dpwt $rs */
   {
     -1, "m-dpwt", "dpwt", 32,
-    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* free $rs */
   {
     -1, "m-free", "free", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* lock $rt */
   {
     -1, "m-lock", "lock", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* pkrlic $rs,$rt,$bytecount */
   {
     -1, "m-pkrlic", "pkrlic", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbi $rs,$rt,$bytecount */
   {
     -1, "m-rbi", "rbi", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbil $rs,$rt,$bytecount */
   {
     -1, "m-rbil", "rbil", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* rbir $rs,$rt,$bytecount */
   {
     -1, "m-rbir", "rbir", 32,
-    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* tstod $rs */
   {
     -1, "m-tstod", "tstod", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* unlk $rt */
   {
     -1, "m-unlk", "unlk", 32,
-    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 /* 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) } }
+    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   },
 };
 
index 12b9a1b385ad5b35c91a2bc741f43656e21e4902..5485965cbf36691387b72f122ae764e2f408419d 100644 (file)
@@ -19263,27 +19263,27 @@ static const CGEN_IBASE m32c_cgen_insn_table[MAX_INSNS] =
 /* not.b:s r0l */
   {
     M32C_INSN_NOT16_B_S_DST16_3_S_R0L_DIRECT_QI, "not16.b.s-dst16-3-S-R0l-direct-QI", "not.b:s", 8,
-    { 0, { (1<<MACH_BASE), (1<<ISA_M16C) } }
+    { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }
   },
 /* not.b:s r0h */
   {
     M32C_INSN_NOT16_B_S_DST16_3_S_R0H_DIRECT_QI, "not16.b.s-dst16-3-S-R0h-direct-QI", "not.b:s", 8,
-    { 0, { (1<<MACH_BASE), (1<<ISA_M16C) } }
+    { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }
   },
 /* not.b:s ${Dsp-8-u8}[sb] */
   {
     M32C_INSN_NOT16_B_S_DST16_3_S_8_8_SB_RELATIVE_QI, "not16.b.s-dst16-3-S-8-8-SB-relative-QI", "not.b:s", 16,
-    { 0, { (1<<MACH_BASE), (1<<ISA_M16C) } }
+    { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }
   },
 /* not.b:s ${Dsp-8-s8}[fb] */
   {
     M32C_INSN_NOT16_B_S_DST16_3_S_8_8_FB_RELATIVE_QI, "not16.b.s-dst16-3-S-8-8-FB-relative-QI", "not.b:s", 16,
-    { 0, { (1<<MACH_BASE), (1<<ISA_M16C) } }
+    { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }
   },
 /* not.b:s ${Dsp-8-u16} */
   {
     M32C_INSN_NOT16_B_S_DST16_3_S_8_16_ABSOLUTE_QI, "not16.b.s-dst16-3-S-8-16-absolute-QI", "not.b:s", 24,
-    { 0, { (1<<MACH_BASE), (1<<ISA_M16C) } }
+    { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }
   },
 /* not.w${G} $Dst32RnUnprefixedHI */
   {
index 3504467f7d0b3e03be46f1585ef8f3d77a7b1b6c..5e4150d05ed8e59d7cb1f05c67c5326a63bf04a9 100644 (file)
@@ -1499,6 +1499,20 @@ print_insn_m68k (bfd_vma memaddr, disassemble_info *info)
                }
            }
 
+         /* Don't match FPU insns with non-default coprocessor ID.  */
+         if (*d == '\0')
+           {
+             for (d = opc->args; *d; d += 2)
+               {
+                 if (d[0] == 'I')
+                   {
+                     val = fetch_arg (buffer, 'd', 3, info);
+                     if (val != 1)
+                       break;
+                   }
+               }
+           }
+
          if (*d == '\0')
            if ((val = match_insn_m68k (memaddr, info, opc, & priv)))
              return val;
index 21f20fb50358a1f1f95ebfbd5c74c618ec621c8f..9a48d86d2d10888362b6615f02f96d252b6914e1 100644 (file)
@@ -1656,6 +1656,92 @@ print_mips16_insn_arg (char type,
       }
       break;
 
+    case 'm':
+    case 'M':
+      /* MIPS16e save/restore.  */
+      {
+      int need_comma = 0;
+      int amask, args, statics;
+      int nsreg, smask;
+      int framesz;
+      int i, j;
+
+      l = l & 0x7f;
+      if (use_extend)
+        l |= extend << 16;
+
+      amask = (l >> 16) & 0xf;
+      if (amask == MIPS16_ALL_ARGS)
+        {
+          args = 4;
+          statics = 0;
+        }
+      else if (amask == MIPS16_ALL_STATICS)
+        {
+          args = 0;
+          statics = 4;
+        }
+      else
+        {
+          args = amask >> 2;
+          statics = amask & 3;
+        }
+
+      if (args > 0) {
+          (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]);
+          if (args > 1)
+            (*info->fprintf_func) (info->stream, "-%s",
+                                   mips_gpr_names[4 + args - 1]);
+          need_comma = 1;
+      }
+
+      framesz = (((l >> 16) & 0xf0) | (l & 0x0f)) * 8;
+      if (framesz == 0 && !use_extend)
+        framesz = 128;
+
+      (*info->fprintf_func) (info->stream, "%s%d", 
+                             need_comma ? "," : "",
+                             framesz);
+
+      if (l & 0x40)                   /* $ra */
+        (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[31]);
+
+      nsreg = (l >> 24) & 0x7;
+      smask = 0;
+      if (l & 0x20)                   /* $s0 */
+        smask |= 1 << 0;
+      if (l & 0x10)                   /* $s1 */
+        smask |= 1 << 1;
+      if (nsreg > 0)                  /* $s2-$s8 */
+        smask |= ((1 << nsreg) - 1) << 2;
+
+      /* Find first set static reg bit.  */
+      for (i = 0; i < 9; i++)
+        {
+          if (smask & (1 << i))
+            {
+              (*info->fprintf_func) (info->stream, ",%s",
+                                     mips_gpr_names[i == 8 ? 30 : (16 + i)]);
+              /* Skip over string of set bits.  */
+              for (j = i; smask & (2 << j); j++)
+                continue;
+              if (j > i)
+                (*info->fprintf_func) (info->stream, "-%s",
+                                       mips_gpr_names[j == 8 ? 30 : (16 + j)]);
+              i = j + 1;
+            }
+        }
+
+      /* Statics $ax - $a3.  */
+      if (statics == 1)
+        (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[7]);
+      else if (statics > 0) 
+        (*info->fprintf_func) (info->stream, ",%s-%s", 
+                               mips_gpr_names[7 - statics + 1],
+                               mips_gpr_names[7]);
+      }
+      break;
+
     default:
       /* xgettext:c-format */
       (*info->fprintf_func)
index 0459582e20fdf6e35ab80912854216feee49ec07..4e5ae44752f3e7b6c153e7b562c78a881799066e 100644 (file)
@@ -226,6 +226,8 @@ const struct mips_opcode mips16_opcodes[] =
 {"jalrc",   "R,x",     0xe8c0, 0xf8ff, WR_31|RD_x|TRAP, 0,     0 },
 {"jrc",     "x",       0xe880, 0xf8ff, RD_x|TRAP,      0,      0 },
 {"jrc",     "R",       0xe8a0, 0xffff, RD_31|TRAP,     0,      0 },
+{"restore", "M",       0x6400, 0xff80, WR_31|RD_SP|WR_SP|TRAP, 0,      0 },
+{"save",    "m",       0x6480, 0xff80, RD_31|RD_SP|WR_SP|TRAP, 0,      0 },
 {"seb",            "x",        0xe891, 0xf8ff, WR_x|RD_x,      0,      0 },
 {"seh",            "x",        0xe8b1, 0xf8ff, WR_x|RD_x,      0,      0 },
 {"sew",            "x",        0xe8d1, 0xf8ff, WR_x|RD_x,      0,      I3 },
index 528a0d5eebe6185727e60a32013a7ebc3ef12645..177198e4991fb8b6542dd0e84d227b8c0622b518 100644 (file)
@@ -60,6 +60,31 @@ signed_out_of_bounds (long val)
   return 0;
 }
 
+static const char *
+parse_loopsize (CGEN_CPU_DESC cd,
+               const char **strp,
+               int opindex,
+               void *arg)
+{
+  signed long * valuep = (signed long *) arg;
+  const char *errmsg;
+  bfd_reloc_code_real_type code = BFD_RELOC_NONE;
+  enum cgen_parse_operand_result result_type;
+  bfd_vma value;
+
+  /* Is it a control transfer instructions?  */ 
+  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_LOOPSIZE)
+    {
+      code = BFD_RELOC_MS1_PCINSN8;
+      errmsg = cgen_parse_address (cd, strp, opindex, code,
+                                   & result_type, & value);
+      *valuep = value;
+      return errmsg;
+    }
+
+  abort ();
+}
+
 static const char *
 parse_imm16 (CGEN_CPU_DESC cd,
             const char **strp,
@@ -89,7 +114,9 @@ parse_imm16 (CGEN_CPU_DESC cd,
 
   /* If it's not a control transfer instruction, then
      we have to check for %OP relocating operators.  */
-  if (strncmp (*strp, "%hi16", 5) == 0)
+  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_IMM16L)
+    ;
+  else if (strncmp (*strp, "%hi16", 5) == 0)
     {
       *strp += 5;
       code = BFD_RELOC_HI16;
@@ -417,6 +444,18 @@ ms1_cgen_parse_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_BRC2 :
       errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_BRC2, (unsigned long *) (& fields->f_brc2));
       break;
+    case MS1_OPERAND_CB1INCR :
+      errmsg = cgen_parse_signed_integer (cd, strp, MS1_OPERAND_CB1INCR, (long *) (& fields->f_cb1incr));
+      break;
+    case MS1_OPERAND_CB1SEL :
+      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CB1SEL, (unsigned long *) (& fields->f_cb1sel));
+      break;
+    case MS1_OPERAND_CB2INCR :
+      errmsg = cgen_parse_signed_integer (cd, strp, MS1_OPERAND_CB2INCR, (long *) (& fields->f_cb2incr));
+      break;
+    case MS1_OPERAND_CB2SEL :
+      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CB2SEL, (unsigned long *) (& fields->f_cb2sel));
+      break;
     case MS1_OPERAND_CBRB :
       errmsg = parse_cbrb (cd, strp, MS1_OPERAND_CBRB, (unsigned long *) (& fields->f_cbrb));
       break;
@@ -474,6 +513,9 @@ ms1_cgen_parse_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_IMM16 :
       errmsg = parse_imm16 (cd, strp, MS1_OPERAND_IMM16, (long *) (& fields->f_imm16s));
       break;
+    case MS1_OPERAND_IMM16L :
+      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_IMM16L, (unsigned long *) (& fields->f_imm16l));
+      break;
     case MS1_OPERAND_IMM16O :
       errmsg = parse_imm16 (cd, strp, MS1_OPERAND_IMM16O, (unsigned long *) (& fields->f_imm16s));
       break;
@@ -489,6 +531,9 @@ ms1_cgen_parse_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_LENGTH :
       errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_LENGTH, (unsigned long *) (& fields->f_length));
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      errmsg = parse_loopsize (cd, strp, MS1_OPERAND_LOOPSIZE, (unsigned long *) (& fields->f_loopo));
+      break;
     case MS1_OPERAND_MASK :
       errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_MASK, (unsigned long *) (& fields->f_mask));
       break;
@@ -513,6 +558,9 @@ ms1_cgen_parse_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_RC2 :
       errmsg = parse_rc (cd, strp, MS1_OPERAND_RC2, (unsigned long *) (& fields->f_rc2));
       break;
+    case MS1_OPERAND_RC3 :
+      errmsg = parse_rc (cd, strp, MS1_OPERAND_RC3, (unsigned long *) (& fields->f_rc3));
+      break;
     case MS1_OPERAND_RCNUM :
       errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_RCNUM, (unsigned long *) (& fields->f_rcnum));
       break;
index c48a8a89c85dc04a6d0aed98c1123823eecc5dfe..6dbff2e557a838a5072de1ee23c9e9a1e7c04e93 100644 (file)
@@ -48,6 +48,7 @@ static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
   { "base", MACH_BASE },
   { "ms1", MACH_MS1 },
   { "ms1_003", MACH_MS1_003 },
+  { "ms2", MACH_MS2 },
   { "max", MACH_MAX },
   { 0, 0 }
 };
@@ -113,6 +114,7 @@ const CGEN_ATTR_TABLE ms1_cgen_insn_attr_table[] =
   { "AL-INSN", &bool_attr[0], &bool_attr[0] },
   { "IO-INSN", &bool_attr[0], &bool_attr[0] },
   { "BR-INSN", &bool_attr[0], &bool_attr[0] },
+  { "JAL-HAZARD", &bool_attr[0], &bool_attr[0] },
   { "USES-FRDR", &bool_attr[0], &bool_attr[0] },
   { "USES-FRDRRR", &bool_attr[0], &bool_attr[0] },
   { "USES-FRSR1", &bool_attr[0], &bool_attr[0] },
@@ -133,6 +135,7 @@ static const CGEN_ISA ms1_cgen_isa_table[] = {
 static const CGEN_MACH ms1_cgen_mach_table[] = {
   { "ms1", "ms1", MACH_MS1, 0 },
   { "ms1-003", "ms1-003", MACH_MS1_003, 0 },
+  { "ms2", "ms2", MACH_MS2, 0 },
   { 0, 0, 0, 0 }
 };
 
@@ -230,7 +233,9 @@ const CGEN_IFLD ms1_cgen_ifld_table[] =
   { MS1_F_UU4A, "f-uu4a", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_UU4B, "f-uu4b", 0, 32, 23, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_UU12, "f-uu12", 0, 32, 11, 12, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_UU8, "f-uu8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_UU16, "f-uu16", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_UU1, "f-uu1", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_MSOPC, "f-msopc", 0, 32, 30, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_UU_26_25, "f-uu-26-25", 0, 32, 25, 26, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_MASK, "f-mask", 0, 32, 25, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
@@ -280,6 +285,13 @@ const CGEN_IFLD ms1_cgen_ifld_table[] =
   { MS1_F_DUP, "f-dup", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_RC2, "f-rc2", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_CTXDISP, "f-ctxdisp", 0, 32, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_IMM16L, "f-imm16l", 0, 32, 23, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_LOOPO, "f-loopo", 0, 32, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_CB1SEL, "f-cb1sel", 0, 32, 25, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_CB2SEL, "f-cb2sel", 0, 32, 22, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_CB1INCR, "f-cb1incr", 0, 32, 19, 6, { 0|A(SIGNED), { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_CB2INCR, "f-cb2incr", 0, 32, 13, 6, { 0|A(SIGNED), { { { (1<<MACH_BASE), 0 } } } }  },
+  { MS1_F_RC3, "f-rc3", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_MSYSFRSR2, "f-msysfrsr2", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_BRC2, "f-brc2", 0, 32, 14, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
   { MS1_F_BALL2, "f-ball2", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
@@ -343,7 +355,7 @@ const CGEN_OPERAND ms1_cgen_operand_table[] =
 /* imm16o: immediate value */
   { "imm16o", MS1_OPERAND_IMM16O, HW_H_UINT, 15, 16,
     { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16S] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
 /* rc: rc */
   { "rc", MS1_OPERAND_RC, HW_H_UINT, 15, 1,
     { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC] } }, 
@@ -504,6 +516,34 @@ const CGEN_OPERAND ms1_cgen_operand_table[] =
   { "fbincr", MS1_OPERAND_FBINCR, HW_H_UINT, 23, 4,
     { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_FBINCR] } }, 
     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
+/* loopsize: immediate value */
+  { "loopsize", MS1_OPERAND_LOOPSIZE, HW_H_UINT, 7, 8,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_LOOPO] } }, 
+    { 0|A(PCREL_ADDR), { { { (1<<MACH_MS2), 0 } } } }  },
+/* imm16l: immediate value */
+  { "imm16l", MS1_OPERAND_IMM16L, HW_H_UINT, 23, 16,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16L] } }, 
+    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
+/* rc3: rc3 */
+  { "rc3", MS1_OPERAND_RC3, HW_H_UINT, 7, 1,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC3] } }, 
+    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
+/* cb1sel: cb1sel */
+  { "cb1sel", MS1_OPERAND_CB1SEL, HW_H_UINT, 25, 3,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB1SEL] } }, 
+    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
+/* cb2sel: cb2sel */
+  { "cb2sel", MS1_OPERAND_CB2SEL, HW_H_UINT, 22, 3,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB2SEL] } }, 
+    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
+/* cb1incr: cb1incr */
+  { "cb1incr", MS1_OPERAND_CB1INCR, HW_H_SINT, 19, 6,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB1INCR] } }, 
+    { 0|A(SIGNED), { { { (1<<MACH_MS2), 0 } } } }  },
+/* cb2incr: cb2incr */
+  { "cb2incr", MS1_OPERAND_CB2INCR, HW_H_SINT, 13, 6,
+    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB2INCR] } }, 
+    { 0|A(SIGNED), { { { (1<<MACH_MS2), 0 } } } }  },
 /* sentinel */
   { 0, 0, 0, 0, 0,
     { 0, { (const PTR) 0 } },
@@ -571,12 +611,12 @@ static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
 /* mul $frdrrr,$frsr1,$frsr2 */
   {
     MS1_INSN_MUL, "mul", "mul", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* muli $frdr,$frsr1,#$imm16 */
   {
     MS1_INSN_MULI, "muli", "muli", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* and $frdrrr,$frsr1,$frsr2 */
   {
@@ -706,12 +746,12 @@ static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
 /* jal $frdrrr,$frsr1 */
   {
     MS1_INSN_JAL, "jal", "jal", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
+    { 0|A(JAL_HAZARD)|A(USES_FRSR1)|A(USES_FRDR)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* dbnz $frsr1,$imm16o */
   {
     MS1_INSN_DBNZ, "dbnz", "dbnz", 32,
-    { 0|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* ei */
   {
@@ -731,7 +771,7 @@ static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
 /* reti $frsr1 */
   {
     MS1_INSN_RETI, "reti", "reti", 32,
-    { 0|A(USES_FRSR1)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
+    { 0|A(JAL_HAZARD)|A(USES_FRSR1)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
   },
 /* ldw $frdr,$frsr1,#$imm16 */
   {
@@ -751,27 +791,27 @@ static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
 /* iflush */
   {
     MS1_INSN_IFLUSH, "iflush", "iflush", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* ldctxt $frsr1,$frsr2,#$rc,#$rcnum,#$contnum */
   {
     MS1_INSN_LDCTXT, "ldctxt", "ldctxt", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
+    { 0, { { { (1<<MACH_MS1), 0 } } } }
   },
 /* ldfb $frsr1,$frsr2,#$imm16z */
   {
     MS1_INSN_LDFB, "ldfb", "ldfb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
+    { 0, { { { (1<<MACH_MS1), 0 } } } }
   },
 /* stfb $frsr1,$frsr2,#$imm16z */
   {
     MS1_INSN_STFB, "stfb", "stfb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
+    { 0, { { { (1<<MACH_MS1), 0 } } } }
   },
 /* fbcb $frsr1,#$rbbc,#$ball,#$brc,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
   {
     MS1_INSN_FBCB, "fbcb", "fbcb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
+    { 0, { { { (1<<MACH_MS1)|(1<<MACH_MS1_003), 0 } } } }
   },
 /* mfbcb $frsr1,#$rbbc,$frsr2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
   {
@@ -876,42 +916,72 @@ static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
 /* wfbinc #$rda,#$wr,#$fbincr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_WFBINC, "wfbinc", "wfbinc", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* mwfbinc $frsr2,#$rda,#$wr,#$fbincr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_MWFBINC, "mwfbinc", "mwfbinc", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* wfbincr $frsr1,#$rda,#$wr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_WFBINCR, "wfbincr", "wfbincr", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* mwfbincr $frsr1,$frsr2,#$rda,#$wr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_MWFBINCR, "mwfbincr", "mwfbincr", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* fbcbincs #$perm,#$a23,#$cr,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_FBCBINCS, "fbcbincs", "fbcbincs", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* mfbcbincs $frsr1,#$perm,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_MFBCBINCS, "mfbcbincs", "mfbcbincs", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* fbcbincrs $frsr1,#$perm,#$ball,#$colnum,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_FBCBINCRS, "fbcbincrs", "fbcbincrs", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
   },
 /* mfbcbincrs $frsr1,$frsr2,#$perm,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
   {
     MS1_INSN_MFBCBINCRS, "mfbcbincrs", "mfbcbincrs", 32,
-    { 0, { { { (1<<MACH_MS1_003), 0 } } } }
+    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
+  },
+/* loop $frsr1,$loopsize */
+  {
+    MS1_INSN_LOOP, "loop", "loop", 32,
+    { 0|A(USES_FRSR1)|A(DELAY_SLOT), { { { (1<<MACH_MS2), 0 } } } }
+  },
+/* loopi #$imm16l,$loopsize */
+  {
+    MS1_INSN_LOOPI, "loopi", "loopi", 32,
+    { 0|A(DELAY_SLOT), { { { (1<<MACH_MS2), 0 } } } }
+  },
+/* dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
+  {
+    MS1_INSN_DFBC, "dfbc", "dfbc", 32,
+    { 0, { { { (1<<MACH_MS2), 0 } } } }
+  },
+/* dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp */
+  {
+    MS1_INSN_DWFB, "dwfb", "dwfb", 32,
+    { 0, { { { (1<<MACH_MS2), 0 } } } }
+  },
+/* fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
+  {
+    MS1_INSN_FBWFB, "fbwfb", "fbwfb", 32,
+    { 0, { { { (1<<MACH_MS2), 0 } } } }
+  },
+/* dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp */
+  {
+    MS1_INSN_DFBR, "dfbr", "dfbr", 32,
+    { 0|A(USES_FRSR2), { { { (1<<MACH_MS2), 0 } } } }
   },
 };
 
index 4a3dd2f5e21105364e46a58293347912e5516ed8..909b32388af91eaecaaab2e9673c5bdcf564442c 100644 (file)
@@ -40,6 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 /* Selected cpu families.  */
 #define HAVE_CPU_MS1BF
 #define HAVE_CPU_MS1_003BF
+#define HAVE_CPU_MS2BF
 
 #define CGEN_INSN_LSB0_P 1
 
@@ -76,9 +77,9 @@ typedef enum insn_opc {
  , OPC_NAND = 11, OPC_NOR = 12, OPC_XNOR = 13, OPC_LDUI = 14
  , OPC_LSL = 16, OPC_LSR = 17, OPC_ASR = 18, OPC_BRLT = 24
  , OPC_BRLE = 25, OPC_BREQ = 26, OPC_JMP = 27, OPC_JAL = 28
- , OPC_BRNEQ = 29, OPC_DBNZ = 30, OPC_LDW = 32, OPC_STW = 33
- , OPC_EI = 48, OPC_DI = 49, OPC_SI = 50, OPC_RETI = 51
- , OPC_BREAK = 52, OPC_IFLUSH = 53
+ , OPC_BRNEQ = 29, OPC_DBNZ = 30, OPC_LOOP = 31, OPC_LDW = 32
+ , OPC_STW = 33, OPC_EI = 48, OPC_DI = 49, OPC_SI = 50
+ , OPC_RETI = 51, OPC_BREAK = 52, OPC_IFLUSH = 53
 } INSN_OPC;
 
 /* Enum declaration for msopc enums.  */
@@ -107,7 +108,8 @@ typedef enum msys_syms {
 
 /* Enum declaration for machine type selection.  */
 typedef enum mach_attr {
-  MACH_BASE, MACH_MS1, MACH_MS1_003, MACH_MAX
+  MACH_BASE, MACH_MS1, MACH_MS1_003, MACH_MS2
+ , MACH_MAX
 } MACH_ATTR;
 
 /* Enum declaration for instruction set selection.  */
@@ -148,20 +150,22 @@ typedef enum ifield_type {
  , MS1_F_IMM, MS1_F_UU24, MS1_F_SR1, MS1_F_SR2
  , MS1_F_DR, MS1_F_DRRR, MS1_F_IMM16U, MS1_F_IMM16S
  , MS1_F_IMM16A, MS1_F_UU4A, MS1_F_UU4B, MS1_F_UU12
- , MS1_F_UU16, MS1_F_MSOPC, MS1_F_UU_26_25, MS1_F_MASK
- , MS1_F_BANKADDR, MS1_F_RDA, MS1_F_UU_2_25, MS1_F_RBBC
- , MS1_F_PERM, MS1_F_MODE, MS1_F_UU_1_24, MS1_F_WR
- , MS1_F_FBINCR, MS1_F_UU_2_23, MS1_F_XMODE, MS1_F_A23
- , MS1_F_MASK1, MS1_F_CR, MS1_F_TYPE, MS1_F_INCAMT
- , MS1_F_CBS, MS1_F_UU_1_19, MS1_F_BALL, MS1_F_COLNUM
- , MS1_F_BRC, MS1_F_INCR, MS1_F_FBDISP, MS1_F_UU_4_15
- , MS1_F_LENGTH, MS1_F_UU_1_15, MS1_F_RC, MS1_F_RCNUM
- , MS1_F_ROWNUM, MS1_F_CBX, MS1_F_ID, MS1_F_SIZE
- , MS1_F_ROWNUM1, MS1_F_UU_3_11, MS1_F_RC1, MS1_F_CCB
- , MS1_F_CBRB, MS1_F_CDB, MS1_F_ROWNUM2, MS1_F_CELL
- , MS1_F_UU_3_9, MS1_F_CONTNUM, MS1_F_UU_1_6, MS1_F_DUP
- , MS1_F_RC2, MS1_F_CTXDISP, MS1_F_MSYSFRSR2, MS1_F_BRC2
- , MS1_F_BALL2, MS1_F_MAX
+ , MS1_F_UU8, MS1_F_UU16, MS1_F_UU1, MS1_F_MSOPC
+ , MS1_F_UU_26_25, MS1_F_MASK, MS1_F_BANKADDR, MS1_F_RDA
+ , MS1_F_UU_2_25, MS1_F_RBBC, MS1_F_PERM, MS1_F_MODE
+ , MS1_F_UU_1_24, MS1_F_WR, MS1_F_FBINCR, MS1_F_UU_2_23
+ , MS1_F_XMODE, MS1_F_A23, MS1_F_MASK1, MS1_F_CR
+ , MS1_F_TYPE, MS1_F_INCAMT, MS1_F_CBS, MS1_F_UU_1_19
+ , MS1_F_BALL, MS1_F_COLNUM, MS1_F_BRC, MS1_F_INCR
+ , MS1_F_FBDISP, MS1_F_UU_4_15, MS1_F_LENGTH, MS1_F_UU_1_15
+ , MS1_F_RC, MS1_F_RCNUM, MS1_F_ROWNUM, MS1_F_CBX
+ , MS1_F_ID, MS1_F_SIZE, MS1_F_ROWNUM1, MS1_F_UU_3_11
+ , MS1_F_RC1, MS1_F_CCB, MS1_F_CBRB, MS1_F_CDB
+ , MS1_F_ROWNUM2, MS1_F_CELL, MS1_F_UU_3_9, MS1_F_CONTNUM
+ , MS1_F_UU_1_6, MS1_F_DUP, MS1_F_RC2, MS1_F_CTXDISP
+ , MS1_F_IMM16L, MS1_F_LOOPO, MS1_F_CB1SEL, MS1_F_CB2SEL
+ , MS1_F_CB1INCR, MS1_F_CB2INCR, MS1_F_RC3, MS1_F_MSYSFRSR2
+ , MS1_F_BRC2, MS1_F_BALL2, MS1_F_MAX
 } IFIELD_TYPE;
 
 #define MAX_IFLD ((int) MS1_F_MAX)
@@ -229,11 +233,12 @@ typedef enum cgen_operand_type {
  , MS1_OPERAND_A23, MS1_OPERAND_CR, MS1_OPERAND_CBS, MS1_OPERAND_INCR
  , MS1_OPERAND_LENGTH, MS1_OPERAND_CBX, MS1_OPERAND_CCB, MS1_OPERAND_CDB
  , MS1_OPERAND_MODE, MS1_OPERAND_ID, MS1_OPERAND_SIZE, MS1_OPERAND_FBINCR
- , MS1_OPERAND_MAX
+ , MS1_OPERAND_LOOPSIZE, MS1_OPERAND_IMM16L, MS1_OPERAND_RC3, MS1_OPERAND_CB1SEL
+ , MS1_OPERAND_CB2SEL, MS1_OPERAND_CB1INCR, MS1_OPERAND_CB2INCR, MS1_OPERAND_MAX
 } CGEN_OPERAND_TYPE;
 
 /* Number of operands types.  */
-#define MAX_OPERANDS 48
+#define MAX_OPERANDS 55
 
 /* Maximum number of operands referenced by any insn.  */
 #define MAX_OPERAND_INSTANCES 8
@@ -245,9 +250,10 @@ 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_RELAXED
  , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_LOAD_DELAY, CGEN_INSN_MEMORY_ACCESS
- , CGEN_INSN_AL_INSN, CGEN_INSN_IO_INSN, CGEN_INSN_BR_INSN, CGEN_INSN_USES_FRDR
- , CGEN_INSN_USES_FRDRRR, CGEN_INSN_USES_FRSR1, CGEN_INSN_USES_FRSR2, CGEN_INSN_SKIPA
- , CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31, CGEN_INSN_MACH, CGEN_INSN_END_NBOOLS
+ , CGEN_INSN_AL_INSN, CGEN_INSN_IO_INSN, CGEN_INSN_BR_INSN, CGEN_INSN_JAL_HAZARD
+ , CGEN_INSN_USES_FRDR, CGEN_INSN_USES_FRDRRR, CGEN_INSN_USES_FRSR1, CGEN_INSN_USES_FRSR2
+ , CGEN_INSN_SKIPA, 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.  */
@@ -270,6 +276,7 @@ typedef enum cgen_insn_attr {
 #define CGEN_ATTR_CGEN_INSN_AL_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_AL_INSN)) != 0)
 #define CGEN_ATTR_CGEN_INSN_IO_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_IO_INSN)) != 0)
 #define CGEN_ATTR_CGEN_INSN_BR_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_BR_INSN)) != 0)
+#define CGEN_ATTR_CGEN_INSN_JAL_HAZARD_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_JAL_HAZARD)) != 0)
 #define CGEN_ATTR_CGEN_INSN_USES_FRDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRDR)) != 0)
 #define CGEN_ATTR_CGEN_INSN_USES_FRDRRR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRDRRR)) != 0)
 #define CGEN_ATTR_CGEN_INSN_USES_FRSR1_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRSR1)) != 0)
index 0026124f7db2d13a777052ea3e3546e223236f4f..bc020de16f523cfa9304d1af2fcfde8f0687c638 100644 (file)
@@ -60,6 +60,7 @@ static int read_insn
 
 /* -- dis.c */
 static void print_dollarhex (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
+static void print_pcrel (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
 
 static void
 print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
@@ -77,6 +78,16 @@ print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     print_normal (cd, dis_info, value, attrs, pc, length);
 }
 
+static void
+print_pcrel (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+            void * dis_info,
+            long value,
+            unsigned int attrs ATTRIBUTE_UNUSED,
+            bfd_vma pc ATTRIBUTE_UNUSED,
+            int length ATTRIBUTE_UNUSED)
+{
+  print_address (cd, dis_info, value + pc, attrs, pc, length);
+}
 
 /* -- */
 
@@ -129,6 +140,18 @@ ms1_cgen_print_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_BRC2 :
       print_dollarhex (cd, info, fields->f_brc2, 0, pc, length);
       break;
+    case MS1_OPERAND_CB1INCR :
+      print_dollarhex (cd, info, fields->f_cb1incr, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
+      break;
+    case MS1_OPERAND_CB1SEL :
+      print_dollarhex (cd, info, fields->f_cb1sel, 0, pc, length);
+      break;
+    case MS1_OPERAND_CB2INCR :
+      print_dollarhex (cd, info, fields->f_cb2incr, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
+      break;
+    case MS1_OPERAND_CB2SEL :
+      print_dollarhex (cd, info, fields->f_cb2sel, 0, pc, length);
+      break;
     case MS1_OPERAND_CBRB :
       print_dollarhex (cd, info, fields->f_cbrb, 0, pc, length);
       break;
@@ -186,8 +209,11 @@ ms1_cgen_print_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_IMM16 :
       print_dollarhex (cd, info, fields->f_imm16s, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
       break;
+    case MS1_OPERAND_IMM16L :
+      print_dollarhex (cd, info, fields->f_imm16l, 0, pc, length);
+      break;
     case MS1_OPERAND_IMM16O :
-      print_dollarhex (cd, info, fields->f_imm16s, 0, pc, length);
+      print_pcrel (cd, info, fields->f_imm16s, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
       break;
     case MS1_OPERAND_IMM16Z :
       print_dollarhex (cd, info, fields->f_imm16u, 0, pc, length);
@@ -201,6 +227,9 @@ ms1_cgen_print_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_LENGTH :
       print_dollarhex (cd, info, fields->f_length, 0, pc, length);
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      print_pcrel (cd, info, fields->f_loopo, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
+      break;
     case MS1_OPERAND_MASK :
       print_dollarhex (cd, info, fields->f_mask, 0, pc, length);
       break;
@@ -225,6 +254,9 @@ ms1_cgen_print_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_RC2 :
       print_dollarhex (cd, info, fields->f_rc2, 0, pc, length);
       break;
+    case MS1_OPERAND_RC3 :
+      print_dollarhex (cd, info, fields->f_rc3, 0, pc, length);
+      break;
     case MS1_OPERAND_RCNUM :
       print_dollarhex (cd, info, fields->f_rcnum, 0, pc, length);
       break;
index 3ffbd84f54b80a1d7b21739675c64ab0aae53e25..4640211ffce5a756f0251384804157df96b1831f 100644 (file)
@@ -576,6 +576,18 @@ ms1_cgen_insert_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_BRC2 :
       errmsg = insert_normal (cd, fields->f_brc2, 0, 0, 14, 3, 32, total_length, buffer);
       break;
+    case MS1_OPERAND_CB1INCR :
+      errmsg = insert_normal (cd, fields->f_cb1incr, 0|(1<<CGEN_IFLD_SIGNED), 0, 19, 6, 32, total_length, buffer);
+      break;
+    case MS1_OPERAND_CB1SEL :
+      errmsg = insert_normal (cd, fields->f_cb1sel, 0, 0, 25, 3, 32, total_length, buffer);
+      break;
+    case MS1_OPERAND_CB2INCR :
+      errmsg = insert_normal (cd, fields->f_cb2incr, 0|(1<<CGEN_IFLD_SIGNED), 0, 13, 6, 32, total_length, buffer);
+      break;
+    case MS1_OPERAND_CB2SEL :
+      errmsg = insert_normal (cd, fields->f_cb2sel, 0, 0, 22, 3, 32, total_length, buffer);
+      break;
     case MS1_OPERAND_CBRB :
       errmsg = insert_normal (cd, fields->f_cbrb, 0, 0, 10, 1, 32, total_length, buffer);
       break;
@@ -637,6 +649,9 @@ ms1_cgen_insert_operand (CGEN_CPU_DESC cd,
         errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, buffer);
       }
       break;
+    case MS1_OPERAND_IMM16L :
+      errmsg = insert_normal (cd, fields->f_imm16l, 0, 0, 23, 16, 32, total_length, buffer);
+      break;
     case MS1_OPERAND_IMM16O :
       {
         long value = fields->f_imm16s;
@@ -656,6 +671,13 @@ ms1_cgen_insert_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_LENGTH :
       errmsg = insert_normal (cd, fields->f_length, 0, 0, 15, 3, 32, total_length, buffer);
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      {
+        long value = fields->f_loopo;
+        value = ((unsigned int) (value) >> (2));
+        errmsg = insert_normal (cd, value, 0, 0, 7, 8, 32, total_length, buffer);
+      }
+      break;
     case MS1_OPERAND_MASK :
       errmsg = insert_normal (cd, fields->f_mask, 0, 0, 25, 16, 32, total_length, buffer);
       break;
@@ -680,6 +702,9 @@ ms1_cgen_insert_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_RC2 :
       errmsg = insert_normal (cd, fields->f_rc2, 0, 0, 6, 1, 32, total_length, buffer);
       break;
+    case MS1_OPERAND_RC3 :
+      errmsg = insert_normal (cd, fields->f_rc3, 0, 0, 7, 1, 32, total_length, buffer);
+      break;
     case MS1_OPERAND_RCNUM :
       errmsg = insert_normal (cd, fields->f_rcnum, 0, 0, 14, 3, 32, total_length, buffer);
       break;
@@ -768,6 +793,18 @@ ms1_cgen_extract_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_BRC2 :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_brc2);
       break;
+    case MS1_OPERAND_CB1INCR :
+      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 19, 6, 32, total_length, pc, & fields->f_cb1incr);
+      break;
+    case MS1_OPERAND_CB1SEL :
+      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 3, 32, total_length, pc, & fields->f_cb1sel);
+      break;
+    case MS1_OPERAND_CB2INCR :
+      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 13, 6, 32, total_length, pc, & fields->f_cb2incr);
+      break;
+    case MS1_OPERAND_CB2SEL :
+      length = extract_normal (cd, ex_info, insn_value, 0, 0, 22, 3, 32, total_length, pc, & fields->f_cb2sel);
+      break;
     case MS1_OPERAND_CBRB :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 1, 32, total_length, pc, & fields->f_cbrb);
       break;
@@ -830,6 +867,9 @@ ms1_cgen_extract_operand (CGEN_CPU_DESC cd,
         fields->f_imm16s = value;
       }
       break;
+    case MS1_OPERAND_IMM16L :
+      length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 16, 32, total_length, pc, & fields->f_imm16l);
+      break;
     case MS1_OPERAND_IMM16O :
       {
         long value;
@@ -850,6 +890,14 @@ ms1_cgen_extract_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_LENGTH :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_length);
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      {
+        long value;
+        length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 8, 32, total_length, pc, & value);
+        value = ((((value) << (2))) + (8));
+        fields->f_loopo = value;
+      }
+      break;
     case MS1_OPERAND_MASK :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 16, 32, total_length, pc, & fields->f_mask);
       break;
@@ -874,6 +922,9 @@ ms1_cgen_extract_operand (CGEN_CPU_DESC cd,
     case MS1_OPERAND_RC2 :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 6, 1, 32, total_length, pc, & fields->f_rc2);
       break;
+    case MS1_OPERAND_RC3 :
+      length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 1, 32, total_length, pc, & fields->f_rc3);
+      break;
     case MS1_OPERAND_RCNUM :
       length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_rcnum);
       break;
@@ -957,6 +1008,18 @@ ms1_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_BRC2 :
       value = fields->f_brc2;
       break;
+    case MS1_OPERAND_CB1INCR :
+      value = fields->f_cb1incr;
+      break;
+    case MS1_OPERAND_CB1SEL :
+      value = fields->f_cb1sel;
+      break;
+    case MS1_OPERAND_CB2INCR :
+      value = fields->f_cb2incr;
+      break;
+    case MS1_OPERAND_CB2SEL :
+      value = fields->f_cb2sel;
+      break;
     case MS1_OPERAND_CBRB :
       value = fields->f_cbrb;
       break;
@@ -1014,6 +1077,9 @@ ms1_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_IMM16 :
       value = fields->f_imm16s;
       break;
+    case MS1_OPERAND_IMM16L :
+      value = fields->f_imm16l;
+      break;
     case MS1_OPERAND_IMM16O :
       value = fields->f_imm16s;
       break;
@@ -1029,6 +1095,9 @@ ms1_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_LENGTH :
       value = fields->f_length;
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      value = fields->f_loopo;
+      break;
     case MS1_OPERAND_MASK :
       value = fields->f_mask;
       break;
@@ -1053,6 +1122,9 @@ ms1_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_RC2 :
       value = fields->f_rc2;
       break;
+    case MS1_OPERAND_RC3 :
+      value = fields->f_rc3;
+      break;
     case MS1_OPERAND_RCNUM :
       value = fields->f_rcnum;
       break;
@@ -1118,6 +1190,18 @@ ms1_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_BRC2 :
       value = fields->f_brc2;
       break;
+    case MS1_OPERAND_CB1INCR :
+      value = fields->f_cb1incr;
+      break;
+    case MS1_OPERAND_CB1SEL :
+      value = fields->f_cb1sel;
+      break;
+    case MS1_OPERAND_CB2INCR :
+      value = fields->f_cb2incr;
+      break;
+    case MS1_OPERAND_CB2SEL :
+      value = fields->f_cb2sel;
+      break;
     case MS1_OPERAND_CBRB :
       value = fields->f_cbrb;
       break;
@@ -1175,6 +1259,9 @@ ms1_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_IMM16 :
       value = fields->f_imm16s;
       break;
+    case MS1_OPERAND_IMM16L :
+      value = fields->f_imm16l;
+      break;
     case MS1_OPERAND_IMM16O :
       value = fields->f_imm16s;
       break;
@@ -1190,6 +1277,9 @@ ms1_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_LENGTH :
       value = fields->f_length;
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      value = fields->f_loopo;
+      break;
     case MS1_OPERAND_MASK :
       value = fields->f_mask;
       break;
@@ -1214,6 +1304,9 @@ ms1_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_RC2 :
       value = fields->f_rc2;
       break;
+    case MS1_OPERAND_RC3 :
+      value = fields->f_rc3;
+      break;
     case MS1_OPERAND_RCNUM :
       value = fields->f_rcnum;
       break;
@@ -1286,6 +1379,18 @@ ms1_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_BRC2 :
       fields->f_brc2 = value;
       break;
+    case MS1_OPERAND_CB1INCR :
+      fields->f_cb1incr = value;
+      break;
+    case MS1_OPERAND_CB1SEL :
+      fields->f_cb1sel = value;
+      break;
+    case MS1_OPERAND_CB2INCR :
+      fields->f_cb2incr = value;
+      break;
+    case MS1_OPERAND_CB2SEL :
+      fields->f_cb2sel = value;
+      break;
     case MS1_OPERAND_CBRB :
       fields->f_cbrb = value;
       break;
@@ -1343,6 +1448,9 @@ ms1_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_IMM16 :
       fields->f_imm16s = value;
       break;
+    case MS1_OPERAND_IMM16L :
+      fields->f_imm16l = value;
+      break;
     case MS1_OPERAND_IMM16O :
       fields->f_imm16s = value;
       break;
@@ -1358,6 +1466,9 @@ ms1_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_LENGTH :
       fields->f_length = value;
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      fields->f_loopo = value;
+      break;
     case MS1_OPERAND_MASK :
       fields->f_mask = value;
       break;
@@ -1382,6 +1493,9 @@ ms1_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_RC2 :
       fields->f_rc2 = value;
       break;
+    case MS1_OPERAND_RC3 :
+      fields->f_rc3 = value;
+      break;
     case MS1_OPERAND_RCNUM :
       fields->f_rcnum = value;
       break;
@@ -1444,6 +1558,18 @@ ms1_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_BRC2 :
       fields->f_brc2 = value;
       break;
+    case MS1_OPERAND_CB1INCR :
+      fields->f_cb1incr = value;
+      break;
+    case MS1_OPERAND_CB1SEL :
+      fields->f_cb1sel = value;
+      break;
+    case MS1_OPERAND_CB2INCR :
+      fields->f_cb2incr = value;
+      break;
+    case MS1_OPERAND_CB2SEL :
+      fields->f_cb2sel = value;
+      break;
     case MS1_OPERAND_CBRB :
       fields->f_cbrb = value;
       break;
@@ -1501,6 +1627,9 @@ ms1_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_IMM16 :
       fields->f_imm16s = value;
       break;
+    case MS1_OPERAND_IMM16L :
+      fields->f_imm16l = value;
+      break;
     case MS1_OPERAND_IMM16O :
       fields->f_imm16s = value;
       break;
@@ -1516,6 +1645,9 @@ ms1_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_LENGTH :
       fields->f_length = value;
       break;
+    case MS1_OPERAND_LOOPSIZE :
+      fields->f_loopo = value;
+      break;
     case MS1_OPERAND_MASK :
       fields->f_mask = value;
       break;
@@ -1540,6 +1672,9 @@ ms1_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
     case MS1_OPERAND_RC2 :
       fields->f_rc2 = value;
       break;
+    case MS1_OPERAND_RC3 :
+      fields->f_rc3 = value;
+      break;
     case MS1_OPERAND_RCNUM :
       fields->f_rcnum = value;
       break;
index 4b9a05ccec7f876c6840ead2f5c2141aec65c841..b30db01822d01207c74f92533d1af0965dc40db1 100644 (file)
@@ -237,6 +237,26 @@ static const CGEN_IFMT ifmt_mfbcbincrs ATTRIBUTE_UNUSED = {
   32, 32, 0xfc008000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_PERM) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_UU_1_15) }, { F (F_CBX) }, { F (F_CCB) }, { F (F_CDB) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
 };
 
+static const CGEN_IFMT ifmt_loop ATTRIBUTE_UNUSED = {
+  32, 32, 0xff0fff00, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_UU4A) }, { F (F_UU8) }, { F (F_LOOPO) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_loopi ATTRIBUTE_UNUSED = {
+  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_IMM16L) }, { F (F_LOOPO) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_dfbc ATTRIBUTE_UNUSED = {
+  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_CB1INCR) }, { F (F_CB2INCR) }, { F (F_RC3) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_dwfb ATTRIBUTE_UNUSED = {
+  32, 32, 0xfc000080, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_CB1INCR) }, { F (F_CB2INCR) }, { F (F_UU1) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_dfbr ATTRIBUTE_UNUSED = {
+  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_SR2) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
+};
+
 #undef F
 
 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
@@ -722,6 +742,42 @@ static const CGEN_OPCODE ms1_cgen_insn_opcode_table[MAX_INSNS] =
     { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (PERM), ',', '#', OP (CBX), ',', '#', OP (CCB), ',', '#', OP (CDB), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
     & ifmt_mfbcbincrs, { 0xfc000000 }
   },
+/* loop $frsr1,$loopsize */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', OP (FRSR1), ',', OP (LOOPSIZE), 0 } },
+    & ifmt_loop, { 0x3e000000 }
+  },
+/* loopi #$imm16l,$loopsize */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', '#', OP (IMM16L), ',', OP (LOOPSIZE), 0 } },
+    & ifmt_loopi, { 0x3f000000 }
+  },
+/* dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC3), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
+    & ifmt_dfbc, { 0x80000000 }
+  },
+/* dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
+    & ifmt_dwfb, { 0x84000000 }
+  },
+/* fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC3), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
+    & ifmt_dfbc, { 0x88000000 }
+  },
+/* dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp */
+  {
+    { 0, 0, 0, 0 },
+    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', OP (FRSR2), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
+    & ifmt_dfbr, { 0x8c000000 }
+  },
 };
 
 #undef A
index 5ac13577beffce2d52fff3e9a1604265b5e7039a..dc575845d461d0cd592e23c479b6ebbc079cfed4 100644 (file)
@@ -68,14 +68,15 @@ typedef enum cgen_insn_type {
  , MS1_INSN_WFBI, MS1_INSN_WFB, MS1_INSN_RCRISC, MS1_INSN_FBCBINC
  , MS1_INSN_RCXMODE, MS1_INSN_INTERLEAVER, MS1_INSN_WFBINC, MS1_INSN_MWFBINC
  , MS1_INSN_WFBINCR, MS1_INSN_MWFBINCR, MS1_INSN_FBCBINCS, MS1_INSN_MFBCBINCS
- , MS1_INSN_FBCBINCRS, MS1_INSN_MFBCBINCRS
+ , MS1_INSN_FBCBINCRS, MS1_INSN_MFBCBINCRS, MS1_INSN_LOOP, MS1_INSN_LOOPI
+ , MS1_INSN_DFBC, MS1_INSN_DWFB, MS1_INSN_FBWFB, MS1_INSN_DFBR
 } CGEN_INSN_TYPE;
 
 /* Index of `invalid' insn place holder.  */
 #define CGEN_INSN_INVALID MS1_INSN_INVALID
 
 /* Total number of insns in table.  */
-#define MAX_INSNS ((int) MS1_INSN_MFBCBINCRS + 1)
+#define MAX_INSNS ((int) MS1_INSN_DFBR + 1)
 
 /* This struct records data prior to insertion or after extraction.  */
 struct cgen_fields
@@ -97,7 +98,9 @@ struct cgen_fields
   long f_uu4a;
   long f_uu4b;
   long f_uu12;
+  long f_uu8;
   long f_uu16;
+  long f_uu1;
   long f_msopc;
   long f_uu_26_25;
   long f_mask;
@@ -147,6 +150,13 @@ struct cgen_fields
   long f_dup;
   long f_rc2;
   long f_ctxdisp;
+  long f_imm16l;
+  long f_loopo;
+  long f_cb1sel;
+  long f_cb2sel;
+  long f_cb1incr;
+  long f_cb2incr;
+  long f_rc3;
   long f_msysfrsr2;
   long f_brc2;
   long f_ball2;
index 8e7c1347046d36eb969f7819bdd088aa9e8de5a8..84e6d6a04e9de87322ea5d34f7c72209aa80c472 100644 (file)
@@ -4522,8 +4522,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 { "fmuls",   A(59,25,0), AFRB_MASK,    PPC,            { FRT, FRA, FRC } },
 { "fmuls.",  A(59,25,1), AFRB_MASK,    PPC,            { FRT, FRA, FRC } },
 
-{ "fsqrtes",  A(59,26,0), AFRAFRC_MASK,        POWER5,         { FRT, FRB } },
-{ "fsqrtes.", A(59,26,1), AFRAFRC_MASK,        POWER5,         { FRT, FRB } },
+{ "frsqrtes", A(59,26,0), AFRAFRC_MASK,        POWER5,         { FRT, FRB } },
+{ "frsqrtes.",A(59,26,1), AFRAFRC_MASK,        POWER5,         { FRT, FRB } },
 
 { "fmsubs",  A(59,28,0), A_MASK,       PPC,            { FRT,FRA,FRC,FRB } },
 { "fmsubs.", A(59,28,1), A_MASK,       PPC,            { FRT,FRA,FRC,FRB } },
@@ -4652,6 +4652,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 { "fabs",    XRC(63,264,0), XRA_MASK,  COM,            { FRT, FRB } },
 { "fabs.",   XRC(63,264,1), XRA_MASK,  COM,            { FRT, FRB } },
 
+{ "frin",    XRC(63,392,0), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "frin.",   XRC(63,392,1), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "friz",    XRC(63,424,0), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "friz.",   XRC(63,424,1), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "frip",    XRC(63,456,0), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "frip.",   XRC(63,456,1), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "frim",    XRC(63,488,0), XRA_MASK,  POWER5,         { FRT, FRB } },
+{ "frim.",   XRC(63,488,1), XRA_MASK,  POWER5,         { FRT, FRB } },
+
 { "mffs",    XRC(63,583,0), XRARB_MASK,        COM,            { FRT } },
 { "mffs.",   XRC(63,583,1), XRARB_MASK,        COM,            { FRT } },
 
index e7ef6a5a3807147117ba38ab1985ea064599c63d..3fa2416c3b8542b332c91f89f64879ddd2d640c4 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-16  Hans-Peter Nilsson  <hp@axis.com>
+
+       * cris/cris-tmpl.c (MY (f_model_insn_before)): Make sure only the
+       low 32 bits are used after an unsigned long cast.
+
 2005-05-28  Hans-Peter Nilsson  <hp@axis.com>
 
        * cris/Makefile.in (stamp-v32fmloop): Depend on stamp-v10fmloop.
index 3a24cf3333bdd1ab233c975372c50692d6090cdb..678ac01d38c74c58cb8aedbb33bfe78215aa7855 100644 (file)
@@ -121,13 +121,15 @@ MY (f_model_insn_before) (SIM_CPU *current_cpu, int first_p ATTRIBUTE_UNUSED)
     char flags[7];
     SIM_DESC sd = CPU_STATE (current_cpu);
 
-    cris_trace_printf (sd, current_cpu, "%lx ", (unsigned long) (CPU (h_pc)));
+    cris_trace_printf (sd, current_cpu, "%lx ",
+                      0xffffffffUL & (unsigned long) (CPU (h_pc)));
 
     for (i = 0; i < 15; i++)
       cris_trace_printf (sd, current_cpu, "%lx ",
-                        (unsigned long) (XCONCAT3(crisv,BASENUM,
-                                                  f_h_gr_get) (current_cpu,
-                                                               i)));
+                        0xffffffffUL
+                        & (unsigned long) (XCONCAT3(crisv,BASENUM,
+                                                    f_h_gr_get) (current_cpu,
+                                                                 i)));
     flags[0] = GET_H_IBIT () != 0 ? 'I' : 'i';
     flags[1] = GET_H_XBIT () != 0 ? 'X' : 'x';
     flags[2] = GET_H_NBIT () != 0 ? 'N' : 'n';
@@ -148,9 +150,10 @@ MY (f_model_insn_before) (SIM_CPU *current_cpu, int first_p ATTRIBUTE_UNUSED)
                             ->unaligned_mem_dword_count
                             - CPU_CRIS_PREV_MISC_PROFILE (current_cpu)
                             ->unaligned_mem_dword_count)),
-                        (unsigned long) (XCONCAT3(crisv,BASENUM,
-                                                  f_h_gr_get) (current_cpu,
-                                                               15)));
+                        0xffffffffUL
+                        & (unsigned long) (XCONCAT3(crisv,BASENUM,
+                                                    f_h_gr_get) (current_cpu,
+                                                                 15)));
     else
       cris_trace_printf (sd, current_cpu, "%s %d\n", flags,
                         (int)
index ee6bfe14b8649b62ea7b505da1c516ea36381914..586af7b0b994f9acdc8e48531d3cfeef6be30db0 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-10  Andrew Stubbs  <andrew.stubbs@st.com>
+
+       * interp.c (sim_memory_size): Use same amount of memory on Windows as
+       elsewhere.
+
 2005-09-19  J"orn Rennecke <joern.rennecke@st.com>
 
        * interp.c (<sys/mman.h>): Include.
index 235d6bb30672281efc05792710ec3334fd3d0d32..d89b0dce2805a2505e43e857ca0d494d7bf4077e 100644 (file)
@@ -853,7 +853,7 @@ do { \
 
 #endif
 
-#if defined(__GO32__) || defined(_WIN32)
+#if defined(__GO32__)
 int sim_memory_size = 19;
 #else
 int sim_memory_size = 24;