This commit was manufactured by cvs2svn to create tag
'carlton_dictionary-20030805-merge'.

Sprout from cagney_x86i386-20030821-branch 2003-08-21 14:03:24 UTC nobody 'This commit was manufactured by cvs2svn to create branch'
Cherrypick from master 2003-08-05 09:39:31 UTC Nick Clifton <nickc@redhat.com> 'Add new Dutch translation.':
    ChangeLog
    MAINTAINERS
    bfd/ChangeLog
    bfd/Makefile.am
    bfd/Makefile.in
    bfd/archures.c
    bfd/bfd-in2.h
    bfd/cpu-msp430.c
    bfd/dep-in.sed
    bfd/elf-bfd.h
    bfd/elf-eh-frame.c
    bfd/elf-hppa.h
    bfd/elf-m10300.c
    bfd/elf-strtab.c
    bfd/elf.c
    bfd/elf32-arm.h
    bfd/elf32-cris.c
    bfd/elf32-hppa.c
    bfd/elf32-hppa.h
    bfd/elf32-i386.c
    bfd/elf32-ip2k.c
    bfd/elf32-iq2000.c
    bfd/elf32-m68hc1x.c
    bfd/elf32-m68k.c
    bfd/elf32-msp430.c
    bfd/elf32-ppc.c
    bfd/elf32-s390.c
    bfd/elf32-sh.c
    bfd/elf32-sh64.c
    bfd/elf32-sparc.c
    bfd/elf32-vax.c
    bfd/elf32-xtensa.c
    bfd/elf64-alpha.c
    bfd/elf64-hppa.c
    bfd/elf64-mips.c
    bfd/elf64-ppc.c
    bfd/elf64-s390.c
    bfd/elf64-sh64.c
    bfd/elf64-sparc.c
    bfd/elf64-x86-64.c
    bfd/elfcode.h
    bfd/elfcore.h
    bfd/elflink.c
    bfd/elflink.h
    bfd/elfxx-ia64.c
    bfd/elfxx-mips.c
    bfd/elfxx-mips.h
    bfd/elfxx-target.h
    bfd/libhppa.h
    bfd/libpei.h
    bfd/po/fr.po
    bfd/po/sv.po
    bfd/simple.c
    bfd/targets.c
    bfd/version.h
    config-ml.in
    config.sub
    configure
    configure.in
    cpu/ChangeLog
    cpu/frv.cpu
    gdb/ChangeLog
    gdb/MAINTAINERS
    gdb/Makefile.in
    gdb/NEWS
    gdb/amd64fbsd-nat.c
    gdb/blockframe.c
    gdb/breakpoint.c
    gdb/cli/cli-decode.c
    gdb/command.h
    gdb/config/alpha/nm-fbsd.h
    gdb/config/frv/tm-frv.h
    gdb/config/i386/nm-i386sol2.h
    gdb/config/i386/nm-linux.h
    gdb/config/i386/nm-x86-64linux.h
    gdb/config/nm-linux.h
    gdb/config/pa/tm-hppa64.h
    gdb/config/pa/tm-hppah.h
    gdb/configure.host
    gdb/defs.h
    gdb/disasm.c
    gdb/doc/ChangeLog
    gdb/doc/Makefile.in
    gdb/doc/gdb.texinfo
    gdb/doc/gdbint.texinfo
    gdb/dsrec.c
    gdb/frame.c
    gdb/frv-tdep.c
    gdb/gdbarch.c
    gdb/gdbarch.h
    gdb/gdbarch.sh
    gdb/gdbserver/ChangeLog
    gdb/gdbserver/Makefile.in
    gdb/gdbserver/configure.srv
    gdb/gdbtypes.h
    gdb/hppa-hpux-tdep.c
    gdb/hppa-tdep.c
    gdb/i386-linux-nat.c
    gdb/i386-nat.c
    gdb/i386-tdep.c
    gdb/i386-tdep.h
    gdb/i386bsd-nat.c
    gdb/i386fbsd-nat.c
    gdb/i386obsd-nat.c
    gdb/i387-tdep.c
    gdb/infcall.c
    gdb/inferior.h
    gdb/infptrace.c
    gdb/interps.c
    gdb/interps.h
    gdb/language.c
    gdb/language.h
    gdb/lin-lwp.c
    gdb/linux-nat.c
    gdb/linux-nat.h
    gdb/m68hc11-tdep.c
    gdb/mi/ChangeLog
    gdb/mi/mi-cmd-env.c
    gdb/mi/mi-interp.c
    gdb/mi/mi-main.c
    gdb/mips-tdep.c
    gdb/reggroups.c
    gdb/rs6000-tdep.c
    gdb/sh-tdep.c
    gdb/sh-tdep.h
    gdb/sol-thread.c
    gdb/symfile.c
    gdb/symtab.c
    gdb/symtab.h
    gdb/testsuite/ChangeLog
    gdb/testsuite/config.hin
    gdb/testsuite/configure
    gdb/testsuite/configure.in
    gdb/testsuite/gdb.asm/asm-source.exp
    gdb/testsuite/gdb.asm/m32r.inc
    gdb/testsuite/gdb.base/annota3.exp
    gdb/testsuite/gdb.base/attach.exp
    gdb/testsuite/gdb.base/completion.exp
    gdb/testsuite/gdb.base/detach.exp
    gdb/testsuite/gdb.base/float.exp
    gdb/testsuite/gdb.base/gcore.exp
    gdb/testsuite/gdb.disasm/h8300s.exp
    gdb/testsuite/gdb.disasm/h8300s.s
    gdb/testsuite/gdb.java/jmisc1.exp
    gdb/testsuite/gdb.mi/ChangeLog
    gdb/testsuite/gdb.mi/mi-basics.exp
    gdb/testsuite/gdb.mi/mi-var-display.exp
    gdb/testsuite/gdb.mi/mi1-var-display.exp
    gdb/testsuite/gdb.mi/pthreads.c
    gdb/testsuite/gdb.threads/gcore-thread.exp
    gdb/testsuite/gdb.threads/pthreads.c
    gdb/testsuite/gdb.trace/save-trace.exp
    gdb/top.c
    gdb/trad-frame.c
    gdb/utils.c
    gdb/version.in
    gdb/x86-64-linux-nat.c
    gdb/x86-64-tdep.c
    gdb/x86-64-tdep.h
    include/ChangeLog
    include/bfdlink.h
    include/coff/ChangeLog
    include/coff/ti.h
    include/dis-asm.h
    include/elf/ChangeLog
    include/elf/dwarf2.h
    include/elf/msp430.h
    include/elf/reloc-macros.h
    include/nlm/ChangeLog
    include/nlm/internal.h
    include/opcode/ChangeLog
    include/opcode/alpha.h
    include/opcode/arc.h
    include/opcode/cgen.h
    include/opcode/d10v.h
    include/opcode/d30v.h
    include/opcode/i370.h
    include/opcode/i860.h
    include/opcode/or32.h
    include/opcode/pj.h
    include/opcode/ppc.h
    include/opcode/sparc.h
    include/opcode/tic80.h
    include/opcode/v850.h
    libiberty/ChangeLog
    libiberty/cp-demangle.c
    mmalloc/ChangeLog
    mmalloc/Makefile.in
    opcodes/ChangeLog
    opcodes/Makefile.am
    opcodes/Makefile.in
    opcodes/arm-dis.c
    opcodes/cgen-asm.c
    opcodes/cgen-asm.in
    opcodes/cgen-dis.c
    opcodes/cgen-dis.in
    opcodes/cgen-ibld.in
    opcodes/cgen-opc.c
    opcodes/dep-in.sed
    opcodes/fr30-asm.c
    opcodes/fr30-dis.c
    opcodes/fr30-ibld.c
    opcodes/frv-asm.c
    opcodes/frv-dis.c
    opcodes/frv-ibld.c
    opcodes/ip2k-asm.c
    opcodes/ip2k-dis.c
    opcodes/ip2k-ibld.c
    opcodes/iq2000-asm.c
    opcodes/iq2000-dis.c
    opcodes/iq2000-ibld.c
    opcodes/m32r-asm.c
    opcodes/m32r-dis.c
    opcodes/m32r-ibld.c
    opcodes/openrisc-asm.c
    opcodes/openrisc-dis.c
    opcodes/openrisc-ibld.c
    opcodes/po/fr.po
    opcodes/ppc-opc.c
    opcodes/xstormy16-asm.c
    opcodes/xstormy16-dis.c
    opcodes/xstormy16-ibld.c
    sim/ChangeLog
    sim/MAINTAINERS
    sim/m68hc11/ChangeLog
    sim/m68hc11/dv-m68hc11.c
    sim/m68hc11/dv-m68hc11sio.c
    sim/m68hc11/dv-m68hc11spi.c
    sim/m68hc11/dv-m68hc11tim.c
    sim/m68hc11/interp.c
    sim/m68hc11/interrupts.c
    sim/m68hc11/m68hc11_sim.c
    sim/m68hc11/sim-main.h
    sim/sh/ChangeLog
    sim/sh/gencode.c
    sim/sh/interp.c
    sim/testsuite/sim/sh/ChangeLog
    sim/testsuite/sim/sh/allinsn.exp
    src-release
    symlink-tree
Delete:
    gdb/hppa-tdep.h
    gdb/testsuite/gdb.arch/i386-prologue.c
    gdb/testsuite/gdb.arch/i386-prologue.exp
    gdb/testsuite/gdb.mi/mi2-basics.exp
    gdb/testsuite/gdb.mi/mi2-break.exp
    gdb/testsuite/gdb.mi/mi2-cli.exp
    gdb/testsuite/gdb.mi/mi2-console.exp
    gdb/testsuite/gdb.mi/mi2-disassemble.exp
    gdb/testsuite/gdb.mi/mi2-eval.exp
    gdb/testsuite/gdb.mi/mi2-file.exp
    gdb/testsuite/gdb.mi/mi2-hack-cli.exp
    gdb/testsuite/gdb.mi/mi2-pthreads.exp
    gdb/testsuite/gdb.mi/mi2-read-memory.exp
    gdb/testsuite/gdb.mi/mi2-regs.exp
    gdb/testsuite/gdb.mi/mi2-return.exp
    gdb/testsuite/gdb.mi/mi2-simplerun.exp
    gdb/testsuite/gdb.mi/mi2-stack.exp
    gdb/testsuite/gdb.mi/mi2-stepi.exp
    gdb/testsuite/gdb.mi/mi2-syn-frame.exp
    gdb/testsuite/gdb.mi/mi2-until.exp
    gdb/testsuite/gdb.mi/mi2-var-block.exp
    gdb/testsuite/gdb.mi/mi2-var-child.exp
    gdb/testsuite/gdb.mi/mi2-var-cmd.exp
    gdb/testsuite/gdb.mi/mi2-var-display.exp
    gdb/testsuite/gdb.mi/mi2-watch.exp
    sim/testsuite/sim/sh/macl.s
    sim/testsuite/sim/sh/macw.s
diff --git a/ChangeLog b/ChangeLog
index a949d4d..4883212 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,30 +1,3 @@
-2003-08-20  Geoffrey Keating  <geoffk@apple.com>
-
-	PR 8180
-	* configure.in: When testing with_libs and with_headers, treat
-	'no' as unset.  Based on a patch by Dan Kegel <dank@kegel.com>.
-	* configure: Regenerate.
-	
-	* configure.in (TOPLEVEL_CONFIGURE_ARGUMENTS): Quote properly for
-	make, shell, etc.
-	(baseargs): Likewise.
-	* configure: Regenerate.
-
-2003-08-19  Geoffrey Keating  <geoffk@apple.com>
-
-	* configure.in: Disable libgcj for darwin not on powerpc.
-	* configure: Rebuild.
-
-2003-08-15  Michael Chastain  <mec@shout.net>
-
-	* src-release (do-proto-toplev): Remove junk files
-	dejagnu/example/calc/config.status,
-	dejagnu/example/calc/config.log.
-
-2003-08-14  Alexandre Duret-Lutz  <adl@gnu.org>
-
-	* config-ml.in, symlink-tree: Add license.
-
 2003-08-01  Nathanael Nerode  <neroden@gcc.gnu.org>
 
 	Merge from gcc:
diff --git a/MAINTAINERS b/MAINTAINERS
index eda6845..718d374 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4,7 +4,7 @@
 COPYING, COPYING.LIB, README
 	http://gnu.org.
 
-Makefile.in; configure; configure.in; src-release
+Makefile.in; configure; configure.in
 	Please notify the following of any committed patches.
 		binutils@sources.redhat.com
 		gdb-patches@sources.redhat.com
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 58b1aee..e4c4f92 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,194 +1,6 @@
-2003-08-21  Randolph Chung  <tausq@debian.org>
-
-	* elf32-hppa.c (elf32_hppa_object_p): For elf32-hppa-linux, objects
-	can have OSABI=Linux or OSABI=SysV.  Check for both.
-	* elf64-hppa.c (elf64_hppa_object_p): Likewise.
-
-2003-08-21  Nick Clifton  <nickc@redhat.com>
-
-	* po/sv.po: Updated Swedish translation.
-
-2003-08-20  Richard Sandiford  <rsandifo@redhat.com>
-
-	* elf64-mips.c (elf_backend_copy_indirect_symbol): Define.
-
-2003-08-20  Nick Clifton  <nickc@redhat.com>
-
-	* elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): New macro used to
-	replace some duplicated code in most elfxx-xxxx.c files.  This
-	version uses the new fields in bfd_link_info.
-
-        * elf-m10300.c (mn10300_elf_relocate_section): Use new macro.
-        * elf32-arm.h (elf32_arm_relocate_section): Likewise.
-        * elf32-cris.c (cris_elf_relocate_section): Likewise.
-	* elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
-	* elf32-i386.c (elf_i386_relocate_section): Likewise.
-	* elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
-	* elf32-iq2000.c (iq2000_elf_relocate_section): Likewise.
-	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
-	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
-	* elf32-s390.c (elf_s390_relocate_section): Likewise.
-	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
-	* elf32-vax.c (elf_vax_relocate_section): Likewise.
-	* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
-	* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
-	* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
-	* elf64-s390.c (elf_s390_relocate_section): Likewise.
-	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
-	* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-	* elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
-        
-        * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols,
-	elf_hppa_remark_useless_dynamic_symbols,
-	elf_hppa_relocate_section): Use the new fields in
-	bfd_link_info structure.
-	* elf32-sh.c (sh_elf_relocate_section): Likewise.
-	* elf64-alpha.c (elf64_alpha_check_relocs): Likewise.
-	* elf64-hppa.c (elf64_hppa_check_relocs): Likewise.
-	* elf64-sh64.c (sh_elf64_relocate_section): Likewise.
-	* elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise.
-	* elfxx-mips.c (mips_elf_calculate_relocation): Likewise.
-
-	* elflink.h (elf_link_output_extsym): Fix test for reporting
-        undefined symbols in shared libraries.  Remove redundant test
-        of shlib_undefined when reporting references to forced local
-        symbols.
-
-2003-08-18  Andreas Schwab  <schwab@suse.de>
-
-	* libpei.h (bfd_pe_executable_p): Also recognize efi-app
-	executables.
-
-2003-08-17  Hans-Peter Nilsson  <hp@bitrange.com>
-
-	* simple.c (bfd_simple_get_relocated_section_contents): Move
-	reloc_done hack to before first bfd_section_size call.  Change all
-	returns to use new wrapper macro RETURN, restoring sec->reloc_done.
-
-2003-08-16  Alan Modra  <amodra@bigpond.net.au>
-
-	* elf64-ppc.c: Don't include elf/ppc.h.
-
-2003-08-14  Richard Sandiford  <rsandifo@redhat.com>
-
-	* elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Fix PT_DYNAMIC
-	code to work with 64-bit bfds.
-
-2003-08-14  Alan Modra  <amodra@bigpond.net.au>
-
-	* dep-in.sed: Remove libintl.h.
-	* Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Unset LC_COLLATE.
-	(POTFILES.in): Remove target.
-	* Makefile.in: Regenerate.
-
-2003-08-12  Alan Modra  <amodra@bigpond.net.au>
-
-	* elf64-ppc.c (ppc64_elf_next_input_section): Update comment.
-	(ppc64_elf_relocate_section): For zero sym R_PPC64_TOC relocs,
-	use the function sym from the previous reloc.
-
-2003-08-11  Jakub Jelinek  <jakub@redhat.com>
-
-	* elf32-i386.c (elf_i386_relocate_section): Make undefined symbols
-	fatal if -pie.
-	* elf32-s390.c (elf_s390_relocate_section): Likewise.
-	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
-	* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
-	* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
-	* elf64-s390.c (elf_s390_relocate_section): Likewise.
-	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
-	* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-	* elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
-	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
-	(ppc_elf_relocate_section) <case R_PPC_RELAX32>: Issue fatal error
-	on undefined symbols if -pie.
-	* elf32-sh.c (sh_elf_relocate_section): Likewise.
-
-2003-08-11  Alan Modra  <amodra@bigpond.net.au>
-
-	* elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o
-	branch to __libc_start_main.
-
-2003-08-08 Dmitry Diky <diwil@mail.ru>
-
-	* archures.c: Add xW42 and xE42 parts. Sort MPU list according to
-	gcc order.
-	* cpu-msp430.c: Likewise.
-	* elf32-msp430.c: Likewise.
-	* bfd-in2.h: Regenerate.
-
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* elfxx-target.h: Remove PTR cast.
-	* targets.c (bfd_target): Make backend_data const void *.
-	* elf-bfd.h: Constify all occurrences of struct elf_backend_data.
-	* elf-m10300.c: Likewise.
-	* elf.c: Likewise.
-	* elf32-hppa.c: Likewise.
-	* elf32-i386.c: Likewise.
-	* elf32-m68hc1x.c: Likewise.
-	* elf32-ppc.c: Likewise.
-	* elf32-s390.c: Likewise.
-	* elf32-sh.c: Likewise.
-	* elf32-sh64.c: Likewise.
-	* elf32-sparc.c: Likewise.
-	* elf32-xtensa.c: Likewise.
-	* elf64-mips.c: Likewise.
-	* elf64-ppc.c: Likewise.
-	* elf64-s390.c: Likewise.
-	* elf64-sh64.c: Likewise.
-	* elf64-sparc.c: Likewise.
-	* elf64-x86-64.c: Likewise.
-	* elfcode.h: Likewise.
-	* elfcore.h: Likewise.
-	* elflink.c: Likewise.
-	* elflink.h: Likewise.
-	* elfxx-ia64.c: Likewise.
-	* elfxx-mips.c: Likewise.
-	* elfxx-mips.h: Likewise.
-	* elf.c (prep_headers): Remove useless check for null backend_data.
-	* bfd-in2.h: Regenerate.
-
-	* elf-bfd.h: Remove PARAMS macro.  Replace PTR with void *.
-	(NAME): Use ## rather than CONCAT4 macro.
-	* elfcode.h: Remove one remaining PARAMS macro.
-	* elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes.
-	* elf-strtab.c: Likewise.
-	* elf-hppa.h: Likewise.
-	* elf32-hppa.h: Likewise.
-	* elf32-hppa.c: Likewise.
-	(elf32_hppa_add_symbol_hook): Delete.
-	(elf_backend_add_symbol_hook): Don't define.
-	* libhppa.h: Convert to C90.  Replace INLINE with inline.
-
-2003-08-06  Alan Modra  <amodra@bigpond.net.au>
-
-	* elf64-ppc.c (ppc_stub_name): Tweak names for better readability.
-	(ppc64_elf_adjust_dynamic_symbol): Allow copy relocs against
-	function descriptors, but warn.
-	(ppc_build_one_stub): Remove a couple of vars.  Move code creating
-	stub syms so that we can avoid a stub sym if we already have a
-	plt sym.  Do not redefine an existing symbol.
-	(ppc64_elf_build_stubs): When --emit-stub-syms, print a symbol for
-	glink.
-
-2003-08-06  Nick Clifton  <nickc@redhat.com>
-
-	* po/fr.po: Updated French translation.
-
-2003-08-06  Alan Modra  <amodra@bigpond.net.au>
-
-	* elflink.c (_bfd_elf_create_dynamic_sections): Mark .dynbss with
-	SEC_LINKER_CREATED.
-
-2003-08-05  Daniel Jacobowitz  <drow@mvista.com>
-
-	* elf32-arm.h (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
-	(elf32_arm_final_link_relocate, elf32_arm_relocate_section): Use it.
-
 2003-08-03  Jeff Muizelaar  <muizelaar@rogers.com>
 
-	* coffcode.h (coff_slurp_line_table): Return with a warning
+	* coffcode.h: (coff_slurp_line_table) Return with a warning
 	message if the line number table could not be read.
 
 2003-08-04  Nick Clifton  <nickc@redhat.com>
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index d27c873..eaec975 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -606,15 +606,23 @@
 BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
 
 po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
-	for file in $(SRC_POTFILES); do echo $$file; done \
-	  | LC_COLLATE= sort > tmp.src \
+	for file in $(SRC_POTFILES); do echo $$file; done | sort > tmp.src \
 	  && mv tmp.src $(srcdir)/po/SRC-POTFILES.in
 
 po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
-	for file in $(BLD_POTFILES); do echo $$file; done \
-	  | LC_COLLATE= sort > tmp.bld \
+	for file in $(BLD_POTFILES); do echo $$file; done | sort > tmp.bld \
 	  && mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
 
+# The following target is retained for upgrade purposes.
+# This target used to exist in older versions of this makefile, and was
+# referenced by <builddir>/po/Makefile (which is created from <srcdir>/po/Make-in)
+# So old versions of <builddir>/po/Makefile will try to regenerate themselves
+# when make is next run, but that dependency cannot be completed without a build
+# of po/POTFILES.in.  Hence the presence of this rule.  This rule will be deleted
+# once it is no longer needed - probably in the fall of 2001.
+po/POTFILES.in:
+
+
 diststuff: info
 
 # Various kinds of .o files to put in libbfd.a:
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 58ba21d..38ecfab3 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
 # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
@@ -811,7 +811,7 @@
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES)
 OBJECTS = $(libbfd_a_OBJECTS) $(libbfd_la_OBJECTS)
@@ -1177,15 +1177,22 @@
 
 
 po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
-	for file in $(SRC_POTFILES); do echo $$file; done \
-	  | LC_COLLATE= sort > tmp.src \
+	for file in $(SRC_POTFILES); do echo $$file; done | sort > tmp.src \
 	  && mv tmp.src $(srcdir)/po/SRC-POTFILES.in
 
 po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
-	for file in $(BLD_POTFILES); do echo $$file; done \
-	  | LC_COLLATE= sort > tmp.bld \
+	for file in $(BLD_POTFILES); do echo $$file; done | sort > tmp.bld \
 	  && mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
 
+# The following target is retained for upgrade purposes.
+# This target used to exist in older versions of this makefile, and was
+# referenced by <builddir>/po/Makefile (which is created from <srcdir>/po/Make-in)
+# So old versions of <builddir>/po/Makefile will try to regenerate themselves
+# when make is next run, but that dependency cannot be completed without a build
+# of po/POTFILES.in.  Hence the presence of this rule.  This rule will be deleted
+# once it is no longer needed - probably in the fall of 2001.
+po/POTFILES.in:
+
 diststuff: info
 
 stamp-ofiles: Makefile
diff --git a/bfd/archures.c b/bfd/archures.c
index 407cd26..77f6a9e 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -301,20 +301,19 @@
 .  bfd_arch_xstormy16,
 .#define bfd_mach_xstormy16	1
 .  bfd_arch_msp430,    {* Texas Instruments MSP430 architecture.  *}
-.#define bfd_mach_msp11          11
 .#define bfd_mach_msp110         110
+.#define bfd_mach_msp11          11
 .#define bfd_mach_msp12          12
 .#define bfd_mach_msp13          13
 .#define bfd_mach_msp14          14
-.#define bfd_mach_msp15          15
-.#define bfd_mach_msp16          16  
+.#define bfd_mach_msp41          41
 .#define bfd_mach_msp31          31
 .#define bfd_mach_msp32          32
 .#define bfd_mach_msp33          33
-.#define bfd_mach_msp41          41
-.#define bfd_mach_msp42          42
 .#define bfd_mach_msp43          43
 .#define bfd_mach_msp44          44
+.#define bfd_mach_msp15          15
+.#define bfd_mach_msp16          16  
 .  bfd_arch_xtensa,    {* Tensilica's Xtensa cores.  *}
 .#define bfd_mach_xtensa	1
 .  bfd_arch_last
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index bab0809..11d4e90 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1731,20 +1731,19 @@
   bfd_arch_xstormy16,
 #define bfd_mach_xstormy16     1
   bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
-#define bfd_mach_msp11          11
 #define bfd_mach_msp110         110
+#define bfd_mach_msp11          11
 #define bfd_mach_msp12          12
 #define bfd_mach_msp13          13
 #define bfd_mach_msp14          14
-#define bfd_mach_msp15          15
-#define bfd_mach_msp16          16  
+#define bfd_mach_msp41          41
 #define bfd_mach_msp31          31
 #define bfd_mach_msp32          32
 #define bfd_mach_msp33          33
-#define bfd_mach_msp41          41
-#define bfd_mach_msp42          42
 #define bfd_mach_msp43          43
 #define bfd_mach_msp44          44
+#define bfd_mach_msp15          15
+#define bfd_mach_msp16          16  
   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
 #define bfd_mach_xtensa        1
   bfd_arch_last
@@ -4340,7 +4339,7 @@
 
   /* Data for use by back-end routines, which isn't
      generic enough to belong in this structure.  */
-  const void *backend_data;
+  void *backend_data;
 
 } bfd_target;
 
diff --git a/bfd/cpu-msp430.c b/bfd/cpu-msp430.c
index 54ed649..c7d283b 100644
--- a/bfd/cpu-msp430.c
+++ b/bfd/cpu-msp430.c
@@ -46,44 +46,42 @@
   /* msp430x11x.  */
   N (16, bfd_mach_msp11, "msp:11", FALSE, & arch_info_struct[1]),
 
-  /* msp430x11x1.  */
-  N (16, bfd_mach_msp110, "msp:110", FALSE, & arch_info_struct[2]),
-
   /* msp430x12x.  */
-  N (16, bfd_mach_msp12, "msp:12", FALSE, & arch_info_struct[3]),
+  N (16, bfd_mach_msp12, "msp:12", FALSE, & arch_info_struct[2]),
 
   /* msp430x13x.  */
-  N (16, bfd_mach_msp13, "msp:13", FALSE, & arch_info_struct[4]),
+  N (16, bfd_mach_msp13, "msp:13", FALSE, & arch_info_struct[3]),
 
   /* msp430x14x.  */
-  N (16, bfd_mach_msp14, "msp:14", FALSE, & arch_info_struct[5]),
-
-  /* msp430x15x.  */
-  N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[6]),
-  
-  /* msp430x16x.  */
-  N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[7]),
+  N (16, bfd_mach_msp14, "msp:14", FALSE, & arch_info_struct[4]),
 
   /* msp430x31x.  */
-  N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[8]), 
+  N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[5]), 
 
   /* msp430x32x.  */
-  N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[9]), 
+  N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[6]), 
 
   /* msp430x33x.  */
-  N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[10]),
+  N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[7]),
   
   /* msp430x41x.  */
-  N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[11]),
-
-  /* msp430x42x.  */
-  N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[12]),
+  N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[8]),
 
   /* msp430x43x.  */
-  N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[13]),
+  N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[9]),
 
   /* msp430x44x.  */
-  N (16, bfd_mach_msp43, "msp:44", FALSE, NULL)
+  N (16, bfd_mach_msp43, "msp:44", FALSE, & arch_info_struct[10]),
+  
+  /* msp430x15x.  */
+  N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[11]),
+  
+  /* msp430x16x.  */
+  N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[12]),
+
+  /* msp430x11x1.  */
+  N (16, bfd_mach_msp110, "msp:110", FALSE, NULL)
+
 };
 
 const bfd_arch_info_type bfd_msp430_arch =
diff --git a/bfd/dep-in.sed b/bfd/dep-in.sed
index 90a2e6a..ce8b79b 100644
--- a/bfd/dep-in.sed
+++ b/bfd/dep-in.sed
@@ -18,7 +18,6 @@
 s! \$(INCDIR)/fopen-[^ ]*\.h!!g
 s! \$(INCDIR)/ansidecl\.h!!g
 s! \$(INCDIR)/symcat\.h!!g
-s! \.\./intl/libintl\.h!!g
 
 s/\\\n */ /g
 
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index abbe377..d297a77 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -33,17 +33,20 @@
 #define NUM_SHDR_ENTRIES(shdr) ((shdr)->sh_size / (shdr)->sh_entsize)
 
 /* If size isn't specified as 64 or 32, NAME macro should fail.  */
+/* Do not "beautify" the CONCAT* macro args.  Traditional C will not
+   remove whitespace added here, and thus will fail to concatenate
+   the tokens.  */
 #ifndef NAME
-#if ARCH_SIZE == 64
-#define NAME(x, y) x ## 64 ## _ ## y
+#if ARCH_SIZE==64
+#define NAME(x,y) CONCAT4 (x,64,_,y)
 #endif
-#if ARCH_SIZE == 32
-#define NAME(x, y) x ## 32 ## _ ## y
+#if ARCH_SIZE==32
+#define NAME(x,y) CONCAT4 (x,32,_,y)
 #endif
 #endif
 
 #ifndef NAME
-#define NAME(x, y) x ## NOSIZE ## _ ## y
+#define NAME(x,y) CONCAT4 (x,NOSIZE,_,y)
 #endif
 
 #define ElfNAME(X)	NAME(Elf,X)
@@ -64,8 +67,8 @@
   union
     {
       unsigned int hppa_arg_reloc;
-      void *mips_extr;
-      void *any;
+      PTR mips_extr;
+      PTR any;
     }
   tc_data;
 
@@ -362,10 +365,10 @@
   struct elf_link_hash_entry *hgot;
 
   /* A pointer to information used to link stabs in sections.  */
-  void *stab_info;
+  PTR stab_info;
 
   /* A pointer to information used to merge SEC_MERGE sections.  */
-  void *merge_info;
+  PTR merge_info;
 
   /* Used by eh_frame code when editing .eh_frame.  */
   struct eh_frame_hdr_info eh_info;
@@ -396,7 +399,7 @@
 #define elf_link_hash_traverse(table, func, info)			\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func),	\
+    (bfd_boolean (*) PARAMS ((struct bfd_link_hash_entry *, PTR))) (func), \
     (info)))
 
 /* Get the ELF linker hash table from a link_info structure.  */
@@ -436,43 +439,43 @@
   unsigned char arch_size, log_file_align;
   unsigned char elfclass, ev_current;
   int (*write_out_phdrs)
-    (bfd *, const Elf_Internal_Phdr *, unsigned int);
-  bfd_boolean
-    (*write_shdrs_and_ehdr) (bfd *);
+    PARAMS ((bfd *, const Elf_Internal_Phdr *, unsigned int));
+  bfd_boolean (*write_shdrs_and_ehdr)
+    PARAMS ((bfd *));
   void (*write_relocs)
-    (bfd *, asection *, void *);
+    PARAMS ((bfd *, asection *, PTR));
   void (*swap_symbol_in)
-    (bfd *, const void *, const void *, Elf_Internal_Sym *);
+    PARAMS ((bfd *, const PTR, const PTR, Elf_Internal_Sym *));
   void (*swap_symbol_out)
-    (bfd *, const Elf_Internal_Sym *, void *, void *);
+    PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR));
   bfd_boolean (*slurp_reloc_table)
-    (bfd *, asection *, asymbol **, bfd_boolean);
+    PARAMS ((bfd *, asection *, asymbol **, bfd_boolean));
   long (*slurp_symbol_table)
-    (bfd *, asymbol **, bfd_boolean);
+    PARAMS ((bfd *, asymbol **, bfd_boolean));
   void (*swap_dyn_in)
-    (bfd *, const void *, Elf_Internal_Dyn *);
+    PARAMS ((bfd *, const PTR, Elf_Internal_Dyn *));
   void (*swap_dyn_out)
-    (bfd *, const Elf_Internal_Dyn *, void *);
+    PARAMS ((bfd *, const Elf_Internal_Dyn *, PTR));
 
   /* This function is called to swap in a REL relocation.  If an
      external relocation corresponds to more than one internal
      relocation, then all relocations are swapped in at once.  */
   void (*swap_reloc_in)
-    (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+    PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 
   /* This function is called to swap out a REL relocation.  */
   void (*swap_reloc_out)
-    (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+    PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 
   /* This function is called to swap in a RELA relocation.  If an
      external relocation corresponds to more than one internal
      relocation, then all relocations are swapped in at once.  */
   void (*swap_reloca_in)
-    (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+    PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 
   /* This function is called to swap out a RELA relocation.  */
   void (*swap_reloca_out)
-    (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+    PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 };
 
 #define elf_symbol_from(ABFD,S) \
@@ -532,12 +535,12 @@
   /* A function to translate an ELF RELA relocation to a BFD arelent
      structure.  */
   void (*elf_info_to_howto)
-    (bfd *, arelent *, Elf_Internal_Rela *);
+    PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
 
   /* A function to translate an ELF REL relocation to a BFD arelent
      structure.  */
   void (*elf_info_to_howto_rel)
-    (bfd *, arelent *, Elf_Internal_Rela *);
+    PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
 
   /* A function to determine whether a symbol is global when
      partitioning the symbol table into local and global symbols.
@@ -545,7 +548,7 @@
      thing will be done.  MIPS ELF, at least on the Irix 5, has
      special requirements.  */
   bfd_boolean (*elf_backend_sym_is_global)
-    (bfd *, asymbol *);
+    PARAMS ((bfd *, asymbol *));
 
   /* The remaining functions are hooks which are called only if they
      are not NULL.  */
@@ -557,58 +560,58 @@
      used with caution.  If this returns FALSE, the check_format
      routine will return a bfd_error_wrong_format error.  */
   bfd_boolean (*elf_backend_object_p)
-    (bfd *);
+    PARAMS ((bfd *));
 
   /* A function to do additional symbol processing when reading the
      ELF symbol table.  This is where any processor-specific special
      section indices are handled.  */
   void (*elf_backend_symbol_processing)
-    (bfd *, asymbol *);
+    PARAMS ((bfd *, asymbol *));
 
   /* A function to do additional symbol processing after reading the
      entire ELF symbol table.  */
   bfd_boolean (*elf_backend_symbol_table_processing)
-    (bfd *, elf_symbol_type *, unsigned int);
+    PARAMS ((bfd *, elf_symbol_type *, unsigned int));
 
    /* A function to set the type of the info field.  Processor-specific
      types should be handled here.  */
   int (*elf_backend_get_symbol_type)
-    (Elf_Internal_Sym *, int);
+    PARAMS (( Elf_Internal_Sym *, int));
 
   /* A function to do additional processing on the ELF section header
      just before writing it out.  This is used to set the flags and
      type fields for some sections, or to actually write out data for
      unusual sections.  */
   bfd_boolean (*elf_backend_section_processing)
-    (bfd *, Elf_Internal_Shdr *);
+    PARAMS ((bfd *, Elf_Internal_Shdr *));
 
   /* A function to handle unusual section types when creating BFD
      sections from ELF sections.  */
   bfd_boolean (*elf_backend_section_from_shdr)
-    (bfd *, Elf_Internal_Shdr *, const char *);
+    PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
 
   /* A function to convert machine dependent section header flags to
      BFD internal section header flags.  */
   bfd_boolean (*elf_backend_section_flags)
-    (flagword *, Elf_Internal_Shdr *);
+    PARAMS ((flagword *, Elf_Internal_Shdr *));
 
   /* A function to handle unusual program segment types when creating BFD
      sections from ELF program segments.  */
   bfd_boolean (*elf_backend_section_from_phdr)
-    (bfd *, Elf_Internal_Phdr *, int);
+    PARAMS ((bfd *, Elf_Internal_Phdr *, int));
 
   /* A function to set up the ELF section header for a BFD section in
      preparation for writing it out.  This is where the flags and type
      fields are set for unusual sections.  */
   bfd_boolean (*elf_backend_fake_sections)
-    (bfd *, Elf_Internal_Shdr *, asection *);
+    PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
 
   /* A function to get the ELF section index for a BFD section.  If
      this returns TRUE, the section was found.  If it is a normal ELF
      section, *RETVAL should be left unchanged.  If it is not a normal
      ELF section *RETVAL should be set to the SHN_xxxx index.  */
   bfd_boolean (*elf_backend_section_from_bfd_section)
-    (bfd *, asection *, int *retval);
+    PARAMS ((bfd *, asection *, int *retval));
 
   /* If this field is not NULL, it is called by the add_symbols phase
      of a link just before adding a symbol to the global linker hash
@@ -619,14 +622,15 @@
      indices, and must set at least *FLAGS and *SEC for each processor
      dependent case; failure to do so will cause a link error.  */
   bfd_boolean (*elf_add_symbol_hook)
-    (bfd *abfd, struct bfd_link_info *info, const Elf_Internal_Sym *,
-     const char **name, flagword *flags, asection **sec, bfd_vma *value);
+    PARAMS ((bfd *abfd, struct bfd_link_info *info,
+	     const Elf_Internal_Sym *, const char **name,
+	     flagword *flags, asection **sec, bfd_vma *value));
 
   /* If this field is not NULL, it is called by the elf_link_output_sym
      phase of a link for each symbol which will appear in the object file.  */
   bfd_boolean (*elf_backend_link_output_symbol_hook)
-    (bfd *, struct bfd_link_info *info, const char *, Elf_Internal_Sym *,
-     asection *);
+    PARAMS ((bfd *, struct bfd_link_info *info, const char *,
+	     Elf_Internal_Sym *, asection *));
 
   /* The CREATE_DYNAMIC_SECTIONS function is called by the ELF backend
      linker the first time it encounters a dynamic object in the link.
@@ -637,7 +641,7 @@
      desired.  This function will normally create the .got and .plt
      sections, but different backends have different requirements.  */
   bfd_boolean (*elf_backend_create_dynamic_sections)
-    (bfd *abfd, struct bfd_link_info *info);
+    PARAMS ((bfd *abfd, struct bfd_link_info *info));
 
   /* The CHECK_RELOCS function is called by the add_symbols phase of
      the ELF backend linker.  It is called once for each section with
@@ -650,8 +654,8 @@
      actually uses Rel structures, the r_addend field will always be
      zero.  */
   bfd_boolean (*check_relocs)
-    (bfd *abfd, struct bfd_link_info *info, asection *o,
-     const Elf_Internal_Rela *relocs);
+    PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *o,
+	     const Elf_Internal_Rela *relocs));
 
   /* The ADJUST_DYNAMIC_SYMBOL function is called by the ELF backend
      linker for every symbol which is defined by a dynamic object and
@@ -666,14 +670,14 @@
      entry to the .plt or .got or some such section, and setting the
      symbol to point to that.  */
   bfd_boolean (*elf_backend_adjust_dynamic_symbol)
-    (struct bfd_link_info *info, struct elf_link_hash_entry *h);
+    PARAMS ((struct bfd_link_info *info, struct elf_link_hash_entry *h));
 
   /* The ALWAYS_SIZE_SECTIONS function is called by the backend linker
      after all the linker input files have been seen but before the
      section sizes have been set.  This is called after
      ADJUST_DYNAMIC_SYMBOL, but before SIZE_DYNAMIC_SECTIONS.  */
   bfd_boolean (*elf_backend_always_size_sections)
-    (bfd *output_bfd, struct bfd_link_info *info);
+    PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
 
   /* The SIZE_DYNAMIC_SECTIONS function is called by the ELF backend
      linker after all the linker input files have been seen but before
@@ -686,7 +690,7 @@
      .interp section and any sections created by the
      CREATE_DYNAMIC_SECTIONS entry point.  */
   bfd_boolean (*elf_backend_size_dynamic_sections)
-    (bfd *output_bfd, struct bfd_link_info *info);
+    PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
 
   /* The RELOCATE_SECTION function is called by the ELF backend linker
      to handle the relocations for a section.
@@ -717,9 +721,10 @@
      section, which means that the addend must be adjusted
      accordingly.  */
   bfd_boolean (*elf_backend_relocate_section)
-    (bfd *output_bfd, struct bfd_link_info *info, bfd *input_bfd,
-     asection *input_section, bfd_byte *contents, Elf_Internal_Rela *relocs,
-     Elf_Internal_Sym *local_syms, asection **local_sections);
+    PARAMS ((bfd *output_bfd, struct bfd_link_info *info,
+	     bfd *input_bfd, asection *input_section, bfd_byte *contents,
+	     Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms,
+	     asection **local_sections));
 
   /* The FINISH_DYNAMIC_SYMBOL function is called by the ELF backend
      linker just before it writes a symbol out to the .dynsym section.
@@ -729,70 +734,70 @@
      all .dynsym symbols, while ADJUST_DYNAMIC_SYMBOL is only called
      on those symbols which are defined by a dynamic object.  */
   bfd_boolean (*elf_backend_finish_dynamic_symbol)
-    (bfd *output_bfd, struct bfd_link_info *info,
-     struct elf_link_hash_entry *h, Elf_Internal_Sym *sym);
+    PARAMS ((bfd *output_bfd, struct bfd_link_info *info,
+	     struct elf_link_hash_entry *h, Elf_Internal_Sym *sym));
 
   /* The FINISH_DYNAMIC_SECTIONS function is called by the ELF backend
      linker just before it writes all the dynamic sections out to the
      output file.  The FINISH_DYNAMIC_SYMBOL will have been called on
      all dynamic symbols.  */
   bfd_boolean (*elf_backend_finish_dynamic_sections)
-    (bfd *output_bfd, struct bfd_link_info *info);
+    PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
 
   /* A function to do any beginning processing needed for the ELF file
      before building the ELF headers and computing file positions.  */
   void (*elf_backend_begin_write_processing)
-    (bfd *, struct bfd_link_info *);
+    PARAMS ((bfd *, struct bfd_link_info *));
 
   /* A function to do any final processing needed for the ELF file
      before writing it out.  The LINKER argument is TRUE if this BFD
      was created by the ELF backend linker.  */
   void (*elf_backend_final_write_processing)
-    (bfd *, bfd_boolean linker);
+    PARAMS ((bfd *, bfd_boolean linker));
 
   /* This function is called by get_program_header_size.  It should
      return the number of additional program segments which this BFD
      will need.  It should return -1 on error.  */
   int (*elf_backend_additional_program_headers)
-    (bfd *);
+    PARAMS ((bfd *));
 
   /* This function is called to modify an existing segment map in a
      backend specific fashion.  */
   bfd_boolean (*elf_backend_modify_segment_map)
-    (bfd *);
+    PARAMS ((bfd *));
 
   /* This function is called during section gc to discover the section a
      particular relocation refers to.  */
   asection * (*gc_mark_hook)
-    (asection *sec, struct bfd_link_info *, Elf_Internal_Rela *,
-     struct elf_link_hash_entry *h, Elf_Internal_Sym *);
+    PARAMS ((asection *sec, struct bfd_link_info *, Elf_Internal_Rela *,
+	     struct elf_link_hash_entry *h, Elf_Internal_Sym *));
 
   /* This function, if defined, is called during the sweep phase of gc
      in order that a backend might update any data structures it might
      be maintaining.  */
   bfd_boolean (*gc_sweep_hook)
-    (bfd *abfd, struct bfd_link_info *info, asection *o,
-     const Elf_Internal_Rela *relocs);
+    PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *o,
+	     const Elf_Internal_Rela *relocs));
 
   /* This function, if defined, is called after the ELF headers have
      been created.  This allows for things like the OS and ABI versions
      to be changed.  */
   void (*elf_backend_post_process_headers)
-    (bfd *, struct bfd_link_info *);
+    PARAMS ((bfd *, struct bfd_link_info *));
 
   /* This function, if defined, prints a symbol to file and returns the
      name of the symbol to be printed.  It should return NULL to fall
      back to default symbol printing.  */
   const char *(*elf_backend_print_symbol_all)
-    (bfd *, void *, asymbol *);
+    PARAMS ((bfd *, PTR, asymbol *));
 
   /* This function, if defined, is called after all local symbols and
      global symbols converted to locals are emited into the symtab
      section.  It allows the backend to emit special global symbols
      not handled in the hash table.  */
   bfd_boolean (*elf_backend_output_arch_syms)
-    (bfd *, struct bfd_link_info *, void *,
-     bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *));
+    PARAMS ((bfd *, struct bfd_link_info *, PTR,
+	    bfd_boolean (*) (PTR, const char *, Elf_Internal_Sym *, asection *)));
 
   /* Copy any information related to dynamic linking from a pre-existing
      symbol to a newly created symbol.  Also called to copy flags and
@@ -800,66 +805,66 @@
      newly created and plt/got refcounts and dynamic indices should not
      be copied.  */
   void (*elf_backend_copy_indirect_symbol)
-    (const struct elf_backend_data *, struct elf_link_hash_entry *,
-     struct elf_link_hash_entry *);
+    PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
+	     struct elf_link_hash_entry *));
 
   /* Modify any information related to dynamic linking such that the
      symbol is not exported.  */
   void (*elf_backend_hide_symbol)
-    (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
+    PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
 
   /* Emit relocations.  Overrides default routine for emitting relocs,
      except during a relocatable link, or if all relocs are being emitted.  */
   bfd_boolean (*elf_backend_emit_relocs)
-    (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *);
+    PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *));
 
   /* Count relocations.  Not called for relocatable links
      or if all relocs are being preserved in the output.  */
   unsigned int (*elf_backend_count_relocs)
-    (asection *, Elf_Internal_Rela *);
+    PARAMS ((asection *, Elf_Internal_Rela *));
 
   /* This function, if defined, is called when an NT_PRSTATUS note is found
      in a core file. */
   bfd_boolean (*elf_backend_grok_prstatus)
-    (bfd *, Elf_Internal_Note *);
+    PARAMS ((bfd *, Elf_Internal_Note *));
 
   /* This function, if defined, is called when an NT_PSINFO or NT_PRPSINFO
      note is found in a core file. */
   bfd_boolean (*elf_backend_grok_psinfo)
-    (bfd *, Elf_Internal_Note *);
+    PARAMS ((bfd *, Elf_Internal_Note *));
 
   /* Functions to print VMAs.  Special code to handle 64 bit ELF files.  */
   void (* elf_backend_sprintf_vma)
-    (bfd *, char *, bfd_vma);
+    PARAMS ((bfd *, char *, bfd_vma));
   void (* elf_backend_fprintf_vma)
-    (bfd *, void *, bfd_vma);
+    PARAMS ((bfd *, PTR, bfd_vma));
 
   /* This function returns class of a reloc type.  */
   enum elf_reloc_type_class (*elf_backend_reloc_type_class)
-    (const Elf_Internal_Rela *);
+    PARAMS ((const Elf_Internal_Rela *));
 
   /* This function, if defined, removes information about discarded functions
      from other sections which mention them.  */
   bfd_boolean (*elf_backend_discard_info)
-    (bfd *, struct elf_reloc_cookie *, struct bfd_link_info *);
+    PARAMS ((bfd *, struct elf_reloc_cookie *, struct bfd_link_info *));
 
   /* This function, if defined, signals that the function above has removed
      the discarded relocations for this section.  */
   bfd_boolean (*elf_backend_ignore_discarded_relocs)
-    (asection *);
+    PARAMS ((asection *));
 
   /* This function, if defined, may write out the given section.
      Returns TRUE if it did so and FALSE if the caller should.  */
   bfd_boolean (*elf_backend_write_section)
-    (bfd *, asection *, bfd_byte *);
+    PARAMS ((bfd *, asection *, bfd_byte *));
 
   /* The level of IRIX compatibility we're striving for.
      MIPS ELF specific function.  */
   irix_compat_t (*elf_backend_mips_irix_compat)
-    (bfd *);
+    PARAMS ((bfd *));
 
   reloc_howto_type *(*elf_backend_mips_rtype_to_howto)
-    (unsigned int, bfd_boolean);
+    PARAMS ((unsigned int, bfd_boolean));
 
   /* The swapping table to use when dealing with ECOFF information.
      Used for the MIPS ELF .mdebug section.  */
@@ -868,8 +873,8 @@
   /* This function implements `bfd_elf_bfd_from_remote_memory';
      see elf.c, elfcode.h.  */
   bfd *(*elf_backend_bfd_from_remote_memory)
-     (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
-      int (*target_read_memory) (bfd_vma vma, char *myaddr, int len));
+     PARAMS ((bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+	      int (*target_read_memory) (bfd_vma vma, char *myaddr, int len)));
 
   /* Alternate EM_xxxx machine codes for this backend.  */
   int elf_machine_alt1;
@@ -993,7 +998,7 @@
 
   /* A pointer to a linked list tracking dynamic relocs copied for
      local symbols.  */
-  void *local_dynrel;
+  PTR local_dynrel;
 
   /* A pointer to the bfd section used for dynamic relocs.  */
   asection *sreloc;
@@ -1011,7 +1016,7 @@
   asection *next_in_group;
 
   /* A pointer used for various section optimizations.  */
-  void *sec_info;
+  PTR sec_info;
 };
 
 #define elf_section_data(sec)  ((struct bfd_elf_section_data*)sec->used_by_bfd)
@@ -1029,7 +1034,7 @@
    && sec->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
 
 #define get_elf_backend_data(abfd) \
-  ((const struct elf_backend_data *) (abfd)->xvec->backend_data)
+  ((struct elf_backend_data *) (abfd)->xvec->backend_data)
 
 /* This struct is used to pass information to routines called via
    elf_link_hash_traverse which must return failure.  */
@@ -1161,7 +1166,7 @@
   bfd_size_type program_header_size;
 
   /* Used by find_nearest_line entry point.  */
-  void *line_info;
+  PTR line_info;
 
   /* Used by MIPS ELF find_nearest_line entry point.  The structure
      could be included directly in this one, but there's no point to
@@ -1173,7 +1178,7 @@
   struct dwarf1_debug *dwarf1_find_line_info;
 
   /* A place to stash dwarf2 info for this bfd.  */
-  void *dwarf2_find_line_info;
+  PTR dwarf2_find_line_info;
 
   /* An array of stub sections indexed by symbol number, used by the
      MIPS ELF linker.  FIXME: We should figure out some way to only
@@ -1239,375 +1244,377 @@
 #define elf_flags_init(bfd)	(elf_tdata(bfd) -> flags_init)
 
 extern void _bfd_elf_swap_verdef_in
-  (bfd *, const Elf_External_Verdef *, Elf_Internal_Verdef *);
+  PARAMS ((bfd *, const Elf_External_Verdef *, Elf_Internal_Verdef *));
 extern void _bfd_elf_swap_verdef_out
-  (bfd *, const Elf_Internal_Verdef *, Elf_External_Verdef *);
+  PARAMS ((bfd *, const Elf_Internal_Verdef *, Elf_External_Verdef *));
 extern void _bfd_elf_swap_verdaux_in
-  (bfd *, const Elf_External_Verdaux *, Elf_Internal_Verdaux *);
+  PARAMS ((bfd *, const Elf_External_Verdaux *, Elf_Internal_Verdaux *));
 extern void _bfd_elf_swap_verdaux_out
-  (bfd *, const Elf_Internal_Verdaux *, Elf_External_Verdaux *);
+  PARAMS ((bfd *, const Elf_Internal_Verdaux *, Elf_External_Verdaux *));
 extern void _bfd_elf_swap_verneed_in
-  (bfd *, const Elf_External_Verneed *, Elf_Internal_Verneed *);
+  PARAMS ((bfd *, const Elf_External_Verneed *, Elf_Internal_Verneed *));
 extern void _bfd_elf_swap_verneed_out
-  (bfd *, const Elf_Internal_Verneed *, Elf_External_Verneed *);
+  PARAMS ((bfd *, const Elf_Internal_Verneed *, Elf_External_Verneed *));
 extern void _bfd_elf_swap_vernaux_in
-  (bfd *, const Elf_External_Vernaux *, Elf_Internal_Vernaux *);
+  PARAMS ((bfd *, const Elf_External_Vernaux *, Elf_Internal_Vernaux *));
 extern void _bfd_elf_swap_vernaux_out
-  (bfd *, const Elf_Internal_Vernaux *, Elf_External_Vernaux *);
+  PARAMS ((bfd *, const Elf_Internal_Vernaux *, Elf_External_Vernaux *));
 extern void _bfd_elf_swap_versym_in
-  (bfd *, const Elf_External_Versym *, Elf_Internal_Versym *);
+  PARAMS ((bfd *, const Elf_External_Versym *, Elf_Internal_Versym *));
 extern void _bfd_elf_swap_versym_out
-  (bfd *, const Elf_Internal_Versym *, Elf_External_Versym *);
+  PARAMS ((bfd *, const Elf_Internal_Versym *, Elf_External_Versym *));
 
 extern int _bfd_elf_section_from_bfd_section
-  (bfd *, asection *);
+  PARAMS ((bfd *, asection *));
 extern char *bfd_elf_string_from_elf_section
-  (bfd *, unsigned, unsigned);
+  PARAMS ((bfd *, unsigned, unsigned));
 extern char *bfd_elf_get_str_section
-  (bfd *, unsigned);
+  PARAMS ((bfd *, unsigned));
 extern Elf_Internal_Sym *bfd_elf_get_elf_syms
-  (bfd *, Elf_Internal_Shdr *, size_t, size_t, Elf_Internal_Sym *, void *,
-   Elf_External_Sym_Shndx *);
+  PARAMS ((bfd *, Elf_Internal_Shdr *, size_t, size_t,
+	   Elf_Internal_Sym *, PTR, Elf_External_Sym_Shndx *));
 extern const char *bfd_elf_local_sym_name
-  (bfd *, Elf_Internal_Sym *);
+  PARAMS ((bfd *, Elf_Internal_Sym *));
 
 extern bfd_boolean _bfd_elf_copy_private_bfd_data
-  (bfd *, bfd *);
+  PARAMS ((bfd *, bfd *));
 extern bfd_boolean _bfd_elf_print_private_bfd_data
-  (bfd *, void *);
+  PARAMS ((bfd *, PTR));
 extern void bfd_elf_print_symbol
-  (bfd *, void *, asymbol *, bfd_print_symbol_type);
+  PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type));
 
 #define elf_string_from_elf_strtab(abfd, strindex) \
-  bfd_elf_string_from_elf_section (abfd, elf_elfheader(abfd)->e_shstrndx, \
-				   strindex)
+  bfd_elf_string_from_elf_section(abfd, elf_elfheader(abfd)->e_shstrndx, \
+				  strindex)
 
 #define bfd_elf32_print_symbol	bfd_elf_print_symbol
 #define bfd_elf64_print_symbol	bfd_elf_print_symbol
 
 extern void _bfd_elf_sprintf_vma
-  (bfd *, char *, bfd_vma);
+  PARAMS ((bfd *, char *, bfd_vma));
 extern void _bfd_elf_fprintf_vma
-  (bfd *, void *, bfd_vma);
+  PARAMS ((bfd *, PTR, bfd_vma));
 
 extern enum elf_reloc_type_class _bfd_elf_reloc_type_class
-  (const Elf_Internal_Rela *);
+  PARAMS ((const Elf_Internal_Rela *));
 extern bfd_vma _bfd_elf_rela_local_sym
-  (bfd *, Elf_Internal_Sym *, asection *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, Elf_Internal_Sym *, asection *, Elf_Internal_Rela *));
 extern bfd_vma _bfd_elf_rel_local_sym
-  (bfd *, Elf_Internal_Sym *, asection **, bfd_vma);
+  PARAMS ((bfd *, Elf_Internal_Sym *, asection **, bfd_vma));
 extern bfd_vma _bfd_elf_section_offset
-  (bfd *, struct bfd_link_info *, asection *, bfd_vma);
+  PARAMS ((bfd *, struct bfd_link_info *, asection *, bfd_vma));
 
 extern unsigned long bfd_elf_hash
-  (const char *);
+  PARAMS ((const char *));
 
 extern bfd_reloc_status_type bfd_elf_generic_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
 extern bfd_boolean bfd_elf_mkobject
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean bfd_elf_mkcorefile
-  (bfd *);
+  PARAMS ((bfd *));
 extern Elf_Internal_Shdr *bfd_elf_find_section
-  (bfd *, char *);
+  PARAMS ((bfd *, char *));
 extern bfd_boolean _bfd_elf_make_section_from_shdr
-  (bfd *, Elf_Internal_Shdr *, const char *);
+  PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
 extern bfd_boolean _bfd_elf_make_section_from_phdr
-  (bfd *, Elf_Internal_Phdr *, int, const char *);
+  PARAMS ((bfd *, Elf_Internal_Phdr *, int, const char *));
 extern struct bfd_hash_entry *_bfd_elf_link_hash_newfunc
-  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
 extern struct bfd_link_hash_table *_bfd_elf_link_hash_table_create
-  (bfd *);
+  PARAMS ((bfd *));
 extern void _bfd_elf_link_hash_copy_indirect
-  (const struct elf_backend_data *, struct elf_link_hash_entry *,
-   struct elf_link_hash_entry *);
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
+	   struct elf_link_hash_entry *));
 extern void _bfd_elf_link_hash_hide_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
+  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
 extern bfd_boolean _bfd_elf_link_hash_table_init
-  (struct elf_link_hash_table *, bfd *,
-   struct bfd_hash_entry *(*)
-     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+  PARAMS ((struct elf_link_hash_table *, bfd *,
+	   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
+				       struct bfd_hash_table *,
+				       const char *)));
 extern bfd_boolean _bfd_elf_slurp_version_tables
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean _bfd_elf_merge_sections
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean bfd_elf_discard_group
-  (bfd *, struct sec *);
+  PARAMS ((bfd *, struct sec *));
 extern void bfd_elf_set_group_contents
-  (bfd *, asection *, void *);
+  PARAMS ((bfd *, asection *, PTR));
 extern void _bfd_elf_link_just_syms
-  (asection *, struct bfd_link_info *);
+  PARAMS ((asection *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf_copy_private_symbol_data
-  (bfd *, asymbol *, bfd *, asymbol *);
+  PARAMS ((bfd *, asymbol *, bfd *, asymbol *));
 extern bfd_boolean _bfd_elf_copy_private_section_data
-  (bfd *, asection *, bfd *, asection *);
+  PARAMS ((bfd *, asection *, bfd *, asection *));
 extern bfd_boolean _bfd_elf_write_object_contents
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean _bfd_elf_write_corefile_contents
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean _bfd_elf_set_section_contents
-  (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
+  PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
 extern long _bfd_elf_get_symtab_upper_bound
-  (bfd *);
+  PARAMS ((bfd *));
 extern long _bfd_elf_get_symtab
-  (bfd *, asymbol **);
+  PARAMS ((bfd *, asymbol **));
 extern long _bfd_elf_get_dynamic_symtab_upper_bound
-  (bfd *);
+  PARAMS ((bfd *));
 extern long _bfd_elf_canonicalize_dynamic_symtab
-  (bfd *, asymbol **);
+  PARAMS ((bfd *, asymbol **));
 extern long _bfd_elf_get_reloc_upper_bound
-  (bfd *, sec_ptr);
+  PARAMS ((bfd *, sec_ptr));
 extern long _bfd_elf_canonicalize_reloc
-  (bfd *, sec_ptr, arelent **, asymbol **);
+  PARAMS ((bfd *, sec_ptr, arelent **, asymbol **));
 extern long _bfd_elf_get_dynamic_reloc_upper_bound
-  (bfd *);
+  PARAMS ((bfd *));
 extern long _bfd_elf_canonicalize_dynamic_reloc
-  (bfd *, arelent **, asymbol **);
+  PARAMS ((bfd *, arelent **, asymbol **));
 extern asymbol *_bfd_elf_make_empty_symbol
-  (bfd *);
+  PARAMS ((bfd *));
 extern void _bfd_elf_get_symbol_info
-  (bfd *, asymbol *, symbol_info *);
+  PARAMS ((bfd *, asymbol *, symbol_info *));
 extern bfd_boolean _bfd_elf_is_local_label_name
-  (bfd *, const char *);
+  PARAMS ((bfd *, const char *));
 extern alent *_bfd_elf_get_lineno
-  (bfd *, asymbol *);
+  PARAMS ((bfd *, asymbol *));
 extern bfd_boolean _bfd_elf_set_arch_mach
-  (bfd *, enum bfd_architecture, unsigned long);
+  PARAMS ((bfd *, enum bfd_architecture, unsigned long));
 extern bfd_boolean _bfd_elf_find_nearest_line
-  (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
-   unsigned int *);
+  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
+	   const char **, unsigned int *));
 #define _bfd_elf_read_minisymbols _bfd_generic_read_minisymbols
 #define _bfd_elf_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
 extern int _bfd_elf_sizeof_headers
-  (bfd *, bfd_boolean);
+  PARAMS ((bfd *, bfd_boolean));
 extern bfd_boolean _bfd_elf_new_section_hook
-  (bfd *, asection *);
+  PARAMS ((bfd *, asection *));
 extern bfd_boolean _bfd_elf_init_reloc_shdr
-  (bfd *, Elf_Internal_Shdr *, asection *, bfd_boolean);
-extern bfd_boolean _bfd_elf_get_sec_type_attr
-  (bfd *, const char *, int *, int *);
+  PARAMS ((bfd *, Elf_Internal_Shdr *, asection *, bfd_boolean));
+extern bfd_boolean _bfd_elf_get_sec_type_attr (bfd *, const char *,
+					       int *, int *);
 
 /* If the target doesn't have reloc handling written yet:  */
 extern void _bfd_elf_no_info_to_howto
-  (bfd *, arelent *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
 
 extern bfd_boolean bfd_section_from_shdr
-  (bfd *, unsigned int shindex);
+  PARAMS ((bfd *, unsigned int shindex));
 extern bfd_boolean bfd_section_from_phdr
-  (bfd *, Elf_Internal_Phdr *, int);
+  PARAMS ((bfd *, Elf_Internal_Phdr *, int));
 
 extern int _bfd_elf_symbol_from_bfd_symbol
-  (bfd *, asymbol **);
+  PARAMS ((bfd *, asymbol **));
 
 extern asection *bfd_section_from_r_symndx
-  (bfd *, struct sym_sec_cache *, asection *, unsigned long);
+  PARAMS ((bfd *, struct sym_sec_cache *, asection *, unsigned long));
 extern asection *bfd_section_from_elf_index
-  (bfd *, unsigned int);
+  PARAMS ((bfd *, unsigned int));
 extern struct bfd_strtab_hash *_bfd_elf_stringtab_init
-  (void);
+  PARAMS ((void));
 
 extern struct elf_strtab_hash * _bfd_elf_strtab_init
-  (void);
+  PARAMS ((void));
 extern void _bfd_elf_strtab_free
-  (struct elf_strtab_hash *);
+  PARAMS ((struct elf_strtab_hash *));
 extern bfd_size_type _bfd_elf_strtab_add
-  (struct elf_strtab_hash *, const char *, bfd_boolean);
+  PARAMS ((struct elf_strtab_hash *, const char *, bfd_boolean));
 extern void _bfd_elf_strtab_addref
-  (struct elf_strtab_hash *, bfd_size_type);
+  PARAMS ((struct elf_strtab_hash *, bfd_size_type));
 extern void _bfd_elf_strtab_delref
-  (struct elf_strtab_hash *, bfd_size_type);
+  PARAMS ((struct elf_strtab_hash *, bfd_size_type));
 extern void _bfd_elf_strtab_clear_all_refs
-  (struct elf_strtab_hash *);
+  PARAMS ((struct elf_strtab_hash *));
 extern bfd_size_type _bfd_elf_strtab_size
-  (struct elf_strtab_hash *);
+  PARAMS ((struct elf_strtab_hash *));
 extern bfd_size_type _bfd_elf_strtab_offset
-  (struct elf_strtab_hash *, bfd_size_type);
+  PARAMS ((struct elf_strtab_hash *, bfd_size_type));
 extern bfd_boolean _bfd_elf_strtab_emit
-  (bfd *, struct elf_strtab_hash *);
+  PARAMS ((bfd *, struct elf_strtab_hash *));
 extern void _bfd_elf_strtab_finalize
-  (struct elf_strtab_hash *);
+  PARAMS ((struct elf_strtab_hash *));
 
 extern bfd_boolean _bfd_elf_discard_section_eh_frame
-  (bfd *, struct bfd_link_info *, asection *,
-   bfd_boolean (*) (bfd_vma, void *), struct elf_reloc_cookie *);
+  PARAMS ((bfd *, struct bfd_link_info *, asection *,
+	   bfd_boolean (*) (bfd_vma, PTR), struct elf_reloc_cookie *));
 extern bfd_boolean _bfd_elf_discard_section_eh_frame_hdr
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_vma _bfd_elf_eh_frame_section_offset
-  (bfd *, asection *, bfd_vma);
+  PARAMS ((bfd *, asection *, bfd_vma));
 extern bfd_boolean _bfd_elf_write_section_eh_frame
-  (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
+  PARAMS ((bfd *, struct bfd_link_info *, asection *, bfd_byte *));
 extern bfd_boolean _bfd_elf_write_section_eh_frame_hdr
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf_maybe_strip_eh_frame_hdr
-  (struct bfd_link_info *);
+  PARAMS ((struct bfd_link_info *));
 
 extern bfd_boolean _bfd_elf_merge_symbol
-  (bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *,
-   asection **, bfd_vma *, struct elf_link_hash_entry **, bfd_boolean *,
-   bfd_boolean *, bfd_boolean *, bfd_boolean *, bfd_boolean);
+  PARAMS ((bfd *, struct bfd_link_info *, const char *,
+	   Elf_Internal_Sym *, asection **, bfd_vma *,
+	   struct elf_link_hash_entry **, bfd_boolean *, bfd_boolean *,
+	   bfd_boolean *, bfd_boolean *, bfd_boolean));
 
 extern bfd_boolean _bfd_elf_add_default_symbol
-  (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
-   const char *, Elf_Internal_Sym *, asection **, bfd_vma *,
-   bfd_boolean *, bfd_boolean, bfd_boolean);
+  PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
+	   const char *, Elf_Internal_Sym *, asection **, bfd_vma *,
+	   bfd_boolean *, bfd_boolean, bfd_boolean));
 
 extern bfd_boolean _bfd_elf_export_symbol
-  (struct elf_link_hash_entry *, void *);
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 extern bfd_boolean _bfd_elf_link_find_version_dependencies
-  (struct elf_link_hash_entry *, void *);
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 extern bfd_boolean _bfd_elf_link_assign_sym_version
-  (struct elf_link_hash_entry *, void *);
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 extern bfd_boolean _bfd_elf_link_record_dynamic_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *);
+  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
 extern long _bfd_elf_link_lookup_local_dynindx
-  (struct bfd_link_info *, bfd *, long);
+  PARAMS ((struct bfd_link_info *, bfd *, long));
 extern bfd_boolean _bfd_elf_compute_section_file_positions
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern void _bfd_elf_assign_file_positions_for_relocs
-  (bfd *);
+  PARAMS ((bfd *));
 extern file_ptr _bfd_elf_assign_file_position_for_section
-  (Elf_Internal_Shdr *, file_ptr, bfd_boolean);
+  PARAMS ((Elf_Internal_Shdr *, file_ptr, bfd_boolean));
 
 extern bfd_boolean _bfd_elf_validate_reloc
-  (bfd *, arelent *);
+  PARAMS ((bfd *, arelent *));
 
 extern bfd_boolean _bfd_elf_link_create_dynamic_sections
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf_create_dynamic_sections
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf_create_got_section
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern unsigned long _bfd_elf_link_renumber_dynsyms
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 
 extern bfd_boolean _bfd_elfcore_make_pseudosection
-  (bfd *, char *, size_t, ufile_ptr);
+  PARAMS ((bfd *, char *, size_t, ufile_ptr));
 extern char *_bfd_elfcore_strndup
-  (bfd *, char *, size_t);
+  PARAMS ((bfd *, char *, size_t));
 
 extern Elf_Internal_Rela *_bfd_elf_link_read_relocs
-  (bfd *, asection *, void *, Elf_Internal_Rela *, bfd_boolean);
+  PARAMS ((bfd *, asection *, PTR, Elf_Internal_Rela *, bfd_boolean));
 
 extern bfd_boolean _bfd_elf_link_size_reloc_section
-  (bfd *, Elf_Internal_Shdr *, asection *);
+  PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
 
 extern bfd_boolean _bfd_elf_link_output_relocs
-  (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *));
 
 extern bfd_boolean _bfd_elf_fix_symbol_flags
-  (struct elf_link_hash_entry *, struct elf_info_failed *);
+  PARAMS ((struct elf_link_hash_entry *, struct elf_info_failed *));
 
 extern bfd_boolean _bfd_elf_adjust_dynamic_symbol
-  (struct elf_link_hash_entry *, void *);
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 extern bfd_boolean _bfd_elf_link_sec_merge_syms
-  (struct elf_link_hash_entry *, void *);
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 extern bfd_boolean _bfd_elf_dynamic_symbol_p
-  (struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean);
+  PARAMS ((struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean));
 
 extern bfd_boolean _bfd_elf_symbol_refs_local_p
-  (struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean);
+  PARAMS ((struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean));
 
 extern const bfd_target *bfd_elf32_object_p
-  (bfd *);
+  PARAMS ((bfd *));
 extern const bfd_target *bfd_elf32_core_file_p
-  (bfd *);
+  PARAMS ((bfd *));
 extern char *bfd_elf32_core_file_failing_command
-  (bfd *);
+  PARAMS ((bfd *));
 extern int bfd_elf32_core_file_failing_signal
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean bfd_elf32_core_file_matches_executable_p
-  (bfd *, bfd *);
+  PARAMS ((bfd *, bfd *));
 
 extern bfd_boolean bfd_elf32_bfd_link_add_symbols
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean bfd_elf32_bfd_final_link
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 
 extern void bfd_elf32_swap_symbol_in
-  (bfd *, const void *, const void *, Elf_Internal_Sym *);
+  PARAMS ((bfd *, const PTR, const PTR, Elf_Internal_Sym *));
 extern void bfd_elf32_swap_symbol_out
-  (bfd *, const Elf_Internal_Sym *, void *, void *);
+  PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR));
 extern void bfd_elf32_swap_reloc_in
-  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 extern void bfd_elf32_swap_reloc_out
-  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 extern void bfd_elf32_swap_reloca_in
-  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 extern void bfd_elf32_swap_reloca_out
-  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 extern void bfd_elf32_swap_phdr_in
-  (bfd *, const Elf32_External_Phdr *, Elf_Internal_Phdr *);
+  PARAMS ((bfd *, const Elf32_External_Phdr *, Elf_Internal_Phdr *));
 extern void bfd_elf32_swap_phdr_out
-  (bfd *, const Elf_Internal_Phdr *, Elf32_External_Phdr *);
+  PARAMS ((bfd *, const Elf_Internal_Phdr *, Elf32_External_Phdr *));
 extern void bfd_elf32_swap_dyn_in
-  (bfd *, const void *, Elf_Internal_Dyn *);
+  PARAMS ((bfd *, const PTR, Elf_Internal_Dyn *));
 extern void bfd_elf32_swap_dyn_out
-  (bfd *, const Elf_Internal_Dyn *, void *);
+  PARAMS ((bfd *, const Elf_Internal_Dyn *, PTR));
 extern long bfd_elf32_slurp_symbol_table
-  (bfd *, asymbol **, bfd_boolean);
+  PARAMS ((bfd *, asymbol **, bfd_boolean));
 extern bfd_boolean bfd_elf32_write_shdrs_and_ehdr
-  (bfd *);
+  PARAMS ((bfd *));
 extern int bfd_elf32_write_out_phdrs
-  (bfd *, const Elf_Internal_Phdr *, unsigned int);
+  PARAMS ((bfd *, const Elf_Internal_Phdr *, unsigned int));
 extern void bfd_elf32_write_relocs
-  (bfd *, asection *, void *);
+  PARAMS ((bfd *, asection *, PTR));
 extern bfd_boolean bfd_elf32_slurp_reloc_table
-  (bfd *, asection *, asymbol **, bfd_boolean);
+  PARAMS ((bfd *, asection *, asymbol **, bfd_boolean));
 extern bfd_boolean bfd_elf32_add_dynamic_entry
-  (struct bfd_link_info *, bfd_vma, bfd_vma);
+  PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
 
 extern const bfd_target *bfd_elf64_object_p
-  (bfd *);
+  PARAMS ((bfd *));
 extern const bfd_target *bfd_elf64_core_file_p
-  (bfd *);
+  PARAMS ((bfd *));
 extern char *bfd_elf64_core_file_failing_command
-  (bfd *);
+  PARAMS ((bfd *));
 extern int bfd_elf64_core_file_failing_signal
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_boolean bfd_elf64_core_file_matches_executable_p
-  (bfd *, bfd *);
+  PARAMS ((bfd *, bfd *));
 extern bfd_boolean bfd_elf64_bfd_link_add_symbols
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean bfd_elf64_bfd_final_link
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 
 extern void bfd_elf64_swap_symbol_in
-  (bfd *, const void *, const void *, Elf_Internal_Sym *);
+  PARAMS ((bfd *, const PTR, const PTR, Elf_Internal_Sym *));
 extern void bfd_elf64_swap_symbol_out
-  (bfd *, const Elf_Internal_Sym *, void *, void *);
+  PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR));
 extern void bfd_elf64_swap_reloc_in
-  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 extern void bfd_elf64_swap_reloc_out
-  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 extern void bfd_elf64_swap_reloca_in
-  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
+  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
 extern void bfd_elf64_swap_reloca_out
-  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
 extern void bfd_elf64_swap_phdr_in
-  (bfd *, const Elf64_External_Phdr *, Elf_Internal_Phdr *);
+  PARAMS ((bfd *, const Elf64_External_Phdr *, Elf_Internal_Phdr *));
 extern void bfd_elf64_swap_phdr_out
-  (bfd *, const Elf_Internal_Phdr *, Elf64_External_Phdr *);
+  PARAMS ((bfd *, const Elf_Internal_Phdr *, Elf64_External_Phdr *));
 extern void bfd_elf64_swap_dyn_in
-  (bfd *, const void *, Elf_Internal_Dyn *);
+  PARAMS ((bfd *, const PTR, Elf_Internal_Dyn *));
 extern void bfd_elf64_swap_dyn_out
-  (bfd *, const Elf_Internal_Dyn *, void *);
+  PARAMS ((bfd *, const Elf_Internal_Dyn *, PTR));
 extern long bfd_elf64_slurp_symbol_table
-  (bfd *, asymbol **, bfd_boolean);
+  PARAMS ((bfd *, asymbol **, bfd_boolean));
 extern bfd_boolean bfd_elf64_write_shdrs_and_ehdr
-  (bfd *);
+  PARAMS ((bfd *));
 extern int bfd_elf64_write_out_phdrs
-  (bfd *, const Elf_Internal_Phdr *, unsigned int);
+  PARAMS ((bfd *, const Elf_Internal_Phdr *, unsigned int));
 extern void bfd_elf64_write_relocs
-  (bfd *, asection *, void *);
+  PARAMS ((bfd *, asection *, PTR));
 extern bfd_boolean bfd_elf64_slurp_reloc_table
-  (bfd *, asection *, asymbol **, bfd_boolean);
+  PARAMS ((bfd *, asection *, asymbol **, bfd_boolean));
 extern bfd_boolean bfd_elf64_add_dynamic_entry
-  (struct bfd_link_info *, bfd_vma, bfd_vma);
+  PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
 
 #define bfd_elf32_link_record_dynamic_symbol \
   _bfd_elf_link_record_dynamic_symbol
@@ -1615,127 +1622,71 @@
   _bfd_elf_link_record_dynamic_symbol
 
 extern int elf_link_record_local_dynamic_symbol
-  (struct bfd_link_info *, bfd *, long);
+  PARAMS ((struct bfd_link_info *, bfd *, long));
 #define _bfd_elf32_link_record_local_dynamic_symbol \
   elf_link_record_local_dynamic_symbol
 #define _bfd_elf64_link_record_local_dynamic_symbol \
   elf_link_record_local_dynamic_symbol
 
 extern bfd_boolean _bfd_elf_close_and_cleanup
-  (bfd *);
+  PARAMS ((bfd *));
 extern bfd_reloc_status_type _bfd_elf_rel_vtable_reloc_fn
-  (bfd *, arelent *, struct symbol_cache_entry *, void *,
-   asection *, bfd *, char **);
+  PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR,
+           asection *, bfd *, char **));
 
 extern bfd_boolean _bfd_elf32_gc_sections
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf32_gc_common_finalize_got_offsets
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf32_gc_common_final_link
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf32_gc_record_vtinherit
-  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
+  PARAMS ((bfd *, asection *, struct elf_link_hash_entry *, bfd_vma));
 extern bfd_boolean _bfd_elf32_gc_record_vtentry
-  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
+  PARAMS ((bfd *, asection *, struct elf_link_hash_entry *, bfd_vma));
 
 extern bfd_boolean _bfd_elf64_gc_sections
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf64_gc_common_finalize_got_offsets
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf64_gc_common_final_link
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 extern bfd_boolean _bfd_elf64_gc_record_vtinherit
-  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
+  PARAMS ((bfd *, asection *, struct elf_link_hash_entry *, bfd_vma));
 extern bfd_boolean _bfd_elf64_gc_record_vtentry
-  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
+  PARAMS ((bfd *, asection *, struct elf_link_hash_entry *, bfd_vma));
 
 extern bfd_boolean _bfd_elf32_reloc_symbol_deleted_p
-  (bfd_vma, void *);
+  PARAMS ((bfd_vma, PTR));
 extern bfd_boolean _bfd_elf64_reloc_symbol_deleted_p
-  (bfd_vma, void *);
+  PARAMS ((bfd_vma, PTR));
 
 /* Exported interface for writing elf corefile notes. */
 extern char *elfcore_write_note
-  (bfd *, char *, int *, const char *, int, const void *, int);
+  PARAMS ((bfd *, char *, int *, const char *, int, const PTR, int));
 extern char *elfcore_write_prpsinfo
-  (bfd *, char *, int *, const char *, const char *);
+  PARAMS ((bfd *, char *, int *, const char *, const char *));
 extern char *elfcore_write_prstatus
-  (bfd *, char *, int *, long, int, const void *);
+  PARAMS ((bfd *, char *, int *, long, int, const PTR));
 extern char * elfcore_write_pstatus
-  (bfd *, char *, int *, long, int, const void *);
+  PARAMS ((bfd *, char *, int *, long, int, const PTR));
 extern char *elfcore_write_prfpreg
-  (bfd *, char *, int *, const void *, int);
+  PARAMS ((bfd *, char *, int *, const PTR, int));
 extern char *elfcore_write_prxfpreg
-  (bfd *, char *, int *, const void *, int);
+  PARAMS ((bfd *, char *, int *, const PTR, int));
 extern char *elfcore_write_lwpstatus
-  (bfd *, char *, int *, long, int, const void *);
+  PARAMS ((bfd *, char *, int *, long, int, const PTR));
 
 extern bfd *_bfd_elf32_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma, char *, int));
+  PARAMS ((bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+	   int (*target_read_memory) (bfd_vma, char *, int)));
 extern bfd *_bfd_elf64_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma, char *, int));
+  PARAMS ((bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+	   int (*target_read_memory) (bfd_vma, char *, int)));
 
 /* SH ELF specific routine.  */
 
 extern bfd_boolean _sh_elf_set_mach_from_flags
-  (bfd *);
-
-/* This macro is to avoid lots of duplicated code in the body
-   of xxx_relocate_section() in the various elfxx-xxxx.c files.  */
-#define RELOC_FOR_GLOBAL_SYMBOL(h, sym_hashes, r_symndx, symtab_hdr, relocation, sec, unresolved_reloc, info, warned)	\
-  do															\
-    {															\
-      /* It seems this can happen with erroneous or unsupported								\
-	 input (mixing a.out and elf in an archive, for example.)  */							\
-      if (sym_hashes == NULL)												\
-	return FALSE;													\
-															\
-      h = sym_hashes[r_symndx - symtab_hdr->sh_info];									\
-															\
-      while (h->root.type == bfd_link_hash_indirect									\
-	     || h->root.type == bfd_link_hash_warning)									\
-	h = (struct elf_link_hash_entry *) h->root.u.i.link;								\
-															\
-      warned = FALSE;													\
-      unresolved_reloc = FALSE;												\
-      relocation = 0;													\
-      if (h->root.type == bfd_link_hash_defined										\
-	  || h->root.type == bfd_link_hash_defweak)									\
-	{														\
-	  sec = h->root.u.def.section;											\
-	  if (sec == NULL												\
-	      || sec->output_section == NULL)										\
-	    /* Set a flag that will be cleared later if we find a							\
-	       relocation value for this symbol.  output_section							\
-	       is typically NULL for symbols satisfied by a shared							\
-	       library.  */												\
-	    unresolved_reloc = TRUE;											\
-	  else														\
-	    relocation = (h->root.u.def.value										\
-			  + sec->output_section->vma									\
-			  + sec->output_offset);									\
-	}														\
-      else if (h->root.type == bfd_link_hash_undefweak)									\
-	;														\
-      else if (!info->executable											\
-	       && info->unresolved_syms_in_objects == RM_IGNORE								\
-	       && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)								\
-	;														\
-      else														\
-	{														\
-	  if (! info->callbacks->undefined_symbol									\
-	      (info, h->root.root.string, input_bfd,									\
-	       input_section, rel->r_offset,										\
-	       ((info->shared && info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)				\
-		|| (!info->shared && info->unresolved_syms_in_objects == RM_GENERATE_ERROR)				\
-		|| ELF_ST_VISIBILITY (h->other))									\
-	       ))													\
-	    return FALSE;												\
-	  warned = TRUE;												\
-	}														\
-    }															\
-  while (0)
+  PARAMS ((bfd *));
 
 #endif /* _LIBELF_H_ */
diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c
index c71129e..e422aa9 100644
--- a/bfd/elf-eh-frame.c
+++ b/bfd/elf-eh-frame.c
@@ -26,44 +26,61 @@
 
 #define EH_FRAME_HDR_SIZE 8
 
+static bfd_vma read_unsigned_leb128
+  PARAMS ((bfd *, char *, unsigned int *));
+static bfd_signed_vma read_signed_leb128
+  PARAMS ((bfd *, char *, unsigned int *));
+static int get_DW_EH_PE_width
+  PARAMS ((int, int));
+static bfd_vma read_value
+  PARAMS ((bfd *, bfd_byte *, int, int));
+static void write_value
+  PARAMS ((bfd *, bfd_byte *, bfd_vma, int));
+static int cie_compare
+  PARAMS ((struct cie *, struct cie *));
+static int vma_compare
+  PARAMS ((const PTR, const PTR));
+
 /* Helper function for reading uleb128 encoded data.  */
 
 static bfd_vma
-read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-		      char *buf,
-		      unsigned int *bytes_read_ptr)
+read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     char *buf;
+     unsigned int *bytes_read_ptr;
 {
-  bfd_vma result;
-  unsigned int num_read;
-  int shift;
+  bfd_vma  result;
+  unsigned int  num_read;
+  int           shift;
   unsigned char byte;
 
-  result = 0;
-  shift = 0;
+  result   = 0;
+  shift    = 0;
   num_read = 0;
   do
     {
       byte = bfd_get_8 (abfd, (bfd_byte *) buf);
-      buf++;
-      num_read++;
+      buf ++;
+      num_read ++;
       result |= (((bfd_vma) byte & 0x7f) << shift);
       shift += 7;
     }
   while (byte & 0x80);
-  *bytes_read_ptr = num_read;
+  * bytes_read_ptr = num_read;
   return result;
 }
 
 /* Helper function for reading sleb128 encoded data.  */
 
 static bfd_signed_vma
-read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-		    char *buf,
-		    unsigned int * bytes_read_ptr)
+read_signed_leb128 (abfd, buf, bytes_read_ptr)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     char *buf;
+     unsigned int * bytes_read_ptr;
 {
-  bfd_vma result;
-  int shift;
-  int num_read;
+  bfd_vma	result;
+  int           shift;
+  int           num_read;
   unsigned char byte;
 
   result = 0;
@@ -80,7 +97,7 @@
   while (byte & 0x80);
   if (byte & 0x40)
     result |= (((bfd_vma) -1) << (shift - 7)) << 7;
-  *bytes_read_ptr = num_read;
+  * bytes_read_ptr = num_read;
   return result;
 }
 
@@ -103,7 +120,8 @@
 /* Return 0 if either encoding is variable width, or not yet known to bfd.  */
 
 static
-int get_DW_EH_PE_width (int encoding, int ptr_size)
+int get_DW_EH_PE_width (encoding, ptr_size)
+     int encoding, ptr_size;
 {
   /* DW_EH_PE_ values of 0x60 and 0x70 weren't defined at the time .eh_frame
      was added to bfd.  */
@@ -128,7 +146,11 @@
 /* Read a width sized value from memory.  */
 
 static bfd_vma
-read_value (bfd *abfd, bfd_byte *buf, int width, int is_signed)
+read_value (abfd, buf, width, is_signed)
+     bfd *abfd;
+     bfd_byte *buf;
+     int width;
+     int is_signed;
 {
   bfd_vma value;
 
@@ -163,7 +185,11 @@
 /* Store a width sized value to memory.  */
 
 static void
-write_value (bfd *abfd, bfd_byte *buf, bfd_vma value, int width)
+write_value (abfd, buf, value, width)
+     bfd *abfd;
+     bfd_byte *buf;
+     bfd_vma value;
+     int width;
 {
   switch (width)
     {
@@ -177,7 +203,8 @@
 /* Return zero if C1 and C2 CIEs can be merged.  */
 
 static
-int cie_compare (struct cie *c1, struct cie *c2)
+int cie_compare (c1, c2)
+     struct cie *c1, *c2;
 {
   if (c1->hdr.length == c2->hdr.length
       && c1->version == c2->version
@@ -191,7 +218,8 @@
       && c1->per_encoding == c2->per_encoding
       && c1->lsda_encoding == c2->lsda_encoding
       && c1->fde_encoding == c2->fde_encoding
-      && c1->initial_insn_length == c2->initial_insn_length
+      && (c1->initial_insn_length
+	  == c2->initial_insn_length)
       && memcmp (c1->initial_instructions,
 		 c2->initial_instructions,
 		 c1->initial_insn_length) == 0)
@@ -206,10 +234,13 @@
    deleted.  */
 
 bfd_boolean
-_bfd_elf_discard_section_eh_frame
-   (bfd *abfd, struct bfd_link_info *info, asection *sec,
-    bfd_boolean (*reloc_symbol_deleted_p) (bfd_vma, void *),
-    struct elf_reloc_cookie *cookie)
+_bfd_elf_discard_section_eh_frame (abfd, info, sec,
+				   reloc_symbol_deleted_p, cookie)
+     bfd *abfd;
+     struct bfd_link_info *info;
+     asection *sec;
+     bfd_boolean (*reloc_symbol_deleted_p) PARAMS ((bfd_vma, PTR));
+     struct elf_reloc_cookie *cookie;
 {
   bfd_byte *ehbuf = NULL, *buf;
   bfd_byte *last_cie, *last_fde;
@@ -243,11 +274,12 @@
 
   /* Read the frame unwind information from abfd.  */
 
-  ehbuf = bfd_malloc (sec->_raw_size);
+  ehbuf = (bfd_byte *) bfd_malloc (sec->_raw_size);
   if (ehbuf == NULL)
     goto free_no_table;
 
-  if (! bfd_get_section_contents (abfd, sec, ehbuf, 0, sec->_raw_size))
+  if (! bfd_get_section_contents (abfd, sec, ehbuf, (bfd_vma) 0,
+				  sec->_raw_size))
     goto free_no_table;
 
   if (sec->_raw_size >= 4
@@ -661,7 +693,9 @@
    input sections.  It finalizes the size of .eh_frame_hdr section.  */
 
 bfd_boolean
-_bfd_elf_discard_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
+_bfd_elf_discard_section_eh_frame_hdr (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   struct elf_link_hash_table *htab;
   struct eh_frame_hdr_info *hdr_info;
@@ -689,7 +723,8 @@
    since dynamic symbol table has been sized.  */
 
 bfd_boolean
-_bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info)
+_bfd_elf_maybe_strip_eh_frame_hdr (info)
+     struct bfd_link_info *info;
 {
   asection *o;
   bfd *abfd;
@@ -735,16 +770,18 @@
    or to offset with dynamic relocation which is no longer needed.  */
 
 bfd_vma
-_bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  asection *sec,
-				  bfd_vma offset)
+_bfd_elf_eh_frame_section_offset (output_bfd, sec, offset)
+     bfd *output_bfd ATTRIBUTE_UNUSED;
+     asection *sec;
+     bfd_vma offset;
 {
   struct eh_frame_sec_info *sec_info;
   unsigned int lo, hi, mid;
 
   if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
     return offset;
-  sec_info = elf_section_data (sec)->sec_info;
+  sec_info = (struct eh_frame_sec_info *)
+	     elf_section_data (sec)->sec_info;
 
   if (offset >= sec->_raw_size)
     return offset - (sec->_cooked_size - sec->_raw_size);
@@ -793,10 +830,11 @@
    contents.  */
 
 bfd_boolean
-_bfd_elf_write_section_eh_frame (bfd *abfd,
-				 struct bfd_link_info *info,
-				 asection *sec,
-				 bfd_byte *contents)
+_bfd_elf_write_section_eh_frame (abfd, info, sec, contents)
+     bfd *abfd;
+     struct bfd_link_info *info;
+     asection *sec;
+     bfd_byte *contents;
 {
   struct eh_frame_sec_info *sec_info;
   struct elf_link_hash_table *htab;
@@ -811,9 +849,12 @@
 	      == ELFCLASS64) ? 8 : 4;
 
   if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
-    return bfd_set_section_contents (abfd, sec->output_section, contents,
-				     sec->output_offset, sec->_raw_size);
-  sec_info = elf_section_data (sec)->sec_info;
+    return bfd_set_section_contents (abfd, sec->output_section,
+				     contents,
+				     (file_ptr) sec->output_offset,
+				     sec->_raw_size);
+  sec_info = (struct eh_frame_sec_info *)
+	     elf_section_data (sec)->sec_info;
   htab = elf_hash_table (info);
   hdr_info = &htab->eh_info;
   if (hdr_info->table && hdr_info->array == NULL)
@@ -1038,10 +1079,12 @@
    VMA of FDE initial location.  */
 
 static int
-vma_compare (const void *a, const void *b)
+vma_compare (a, b)
+     const PTR a;
+     const PTR b;
 {
-  const struct eh_frame_array_ent *p = a;
-  const struct eh_frame_array_ent *q = b;
+  struct eh_frame_array_ent *p = (struct eh_frame_array_ent *) a;
+  struct eh_frame_array_ent *q = (struct eh_frame_array_ent *) b;
   if (p->initial_loc > q->initial_loc)
     return 1;
   if (p->initial_loc < q->initial_loc)
@@ -1072,7 +1115,9 @@
 				 sorted by increasing initial_loc).  */
 
 bfd_boolean
-_bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
+_bfd_elf_write_section_eh_frame_hdr (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   struct elf_link_hash_table *htab;
   struct eh_frame_hdr_info *hdr_info;
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index bdd7a74..90f6482 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -44,14 +44,62 @@
 #define elf_hppa_final_link elf32_hppa_final_link
 #endif
 
+static void elf_hppa_info_to_howto
+  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+
+static void elf_hppa_info_to_howto_rel
+  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+
+static reloc_howto_type * elf_hppa_reloc_type_lookup
+  PARAMS ((bfd *, bfd_reloc_code_real_type));
+
+static bfd_boolean elf_hppa_is_local_label_name
+  PARAMS ((bfd *, const char *));
+
+static bfd_boolean elf_hppa_fake_sections
+  PARAMS ((bfd *abfd, Elf_Internal_Shdr *, asection *));
+
+static void elf_hppa_final_write_processing
+  PARAMS ((bfd *, bfd_boolean));
+
+static int hppa_unwind_entry_compare
+  PARAMS ((const PTR, const PTR));
+
+static bfd_boolean elf_hppa_sort_unwind
+  PARAMS ((bfd *));
+
 #if ARCH_SIZE == 64
+static bfd_boolean elf_hppa_add_symbol_hook
+  PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *,
+	   const char **, flagword *, asection **, bfd_vma *));
+
+static bfd_boolean elf_hppa_unmark_useless_dynamic_symbols
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean elf_hppa_remark_useless_dynamic_symbols
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean elf_hppa_is_dynamic_loader_symbol
+  PARAMS ((const char *));
+
+static void elf_hppa_record_segment_addrs
+  PARAMS ((bfd *, asection *, PTR));
+
+static bfd_boolean elf_hppa_final_link
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static bfd_boolean elf_hppa_relocate_section
+  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
+	   bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+
 static bfd_reloc_status_type elf_hppa_final_link_relocate
-  (Elf_Internal_Rela *, bfd *, bfd *, asection *, bfd_byte *, bfd_vma,
-   struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
-   struct elf64_hppa_dyn_hash_entry *);
+  PARAMS ((Elf_Internal_Rela *, bfd *, bfd *, asection *,
+	   bfd_byte *, bfd_vma, struct bfd_link_info *,
+	   asection *, struct elf_link_hash_entry *,
+	   struct elf64_hppa_dyn_hash_entry *));
 
 static int elf_hppa_relocate_insn
-  (int, int, unsigned int);
+  PARAMS ((int, int, unsigned int));
 #endif
 
 /* ELF/PA relocation howto entries.  */
@@ -567,10 +615,11 @@
    format, and field selector.  */
 
 elf_hppa_reloc_type
-elf_hppa_reloc_final_type (bfd *abfd,
-			   elf_hppa_reloc_type base_type,
-			   int format,
-			   unsigned int field)
+elf_hppa_reloc_final_type (abfd, base_type, format, field)
+     bfd *abfd;
+     elf_hppa_reloc_type base_type;
+     int format;
+     unsigned int field;
 {
   elf_hppa_reloc_type final_type = base_type;
 
@@ -835,25 +884,26 @@
    relocation with modifications based on format and field.  */
 
 elf_hppa_reloc_type **
-_bfd_elf_hppa_gen_reloc_type (bfd *abfd,
-			      elf_hppa_reloc_type base_type,
-			      int format,
-			      unsigned int field,
-			      int ignore ATTRIBUTE_UNUSED,
-			      asymbol *sym ATTRIBUTE_UNUSED)
+_bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym)
+     bfd *abfd;
+     elf_hppa_reloc_type base_type;
+     int format;
+     unsigned int field;
+     int ignore ATTRIBUTE_UNUSED;
+     asymbol *sym ATTRIBUTE_UNUSED;
 {
   elf_hppa_reloc_type *finaltype;
   elf_hppa_reloc_type **final_types;
   bfd_size_type amt = sizeof (elf_hppa_reloc_type *) * 2;
 
   /* Allocate slots for the BFD relocation.  */
-  final_types = bfd_alloc (abfd, amt);
+  final_types = (elf_hppa_reloc_type **) bfd_alloc (abfd, amt);
   if (final_types == NULL)
     return NULL;
 
   /* Allocate space for the relocation itself.  */
   amt = sizeof (elf_hppa_reloc_type);
-  finaltype = bfd_alloc (abfd, amt);
+  finaltype = (elf_hppa_reloc_type *) bfd_alloc (abfd, amt);
   if (finaltype == NULL)
     return NULL;
 
@@ -869,11 +919,12 @@
 /* Translate from an elf into field into a howto relocation pointer.  */
 
 static void
-elf_hppa_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
-			arelent *bfd_reloc,
-			Elf_Internal_Rela *elf_reloc)
+elf_hppa_info_to_howto (abfd, bfd_reloc, elf_reloc)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     arelent *bfd_reloc;
+     Elf_Internal_Rela *elf_reloc;
 {
-  BFD_ASSERT (ELF_R_TYPE (elf_reloc->r_info)
+  BFD_ASSERT (ELF_R_TYPE(elf_reloc->r_info)
 	      < (unsigned int) R_PARISC_UNIMPLEMENTED);
   bfd_reloc->howto = &elf_hppa_howto_table[ELF_R_TYPE (elf_reloc->r_info)];
 }
@@ -881,9 +932,10 @@
 /* Translate from an elf into field into a howto relocation pointer.  */
 
 static void
-elf_hppa_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
-			    arelent *bfd_reloc,
-			    Elf_Internal_Rela *elf_reloc)
+elf_hppa_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     arelent *bfd_reloc;
+     Elf_Internal_Rela *elf_reloc;
 {
   BFD_ASSERT (ELF_R_TYPE(elf_reloc->r_info)
 	      < (unsigned int) R_PARISC_UNIMPLEMENTED);
@@ -894,8 +946,9 @@
    relocation for an ARCH machine.  */
 
 static reloc_howto_type *
-elf_hppa_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			    bfd_reloc_code_real_type code)
+elf_hppa_reloc_type_lookup (abfd, code)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     bfd_reloc_code_real_type code;
 {
   if ((int) code < (int) R_PARISC_UNIMPLEMENTED)
     {
@@ -908,7 +961,9 @@
 /* Return TRUE if SYM represents a local label symbol.  */
 
 static bfd_boolean
-elf_hppa_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
+elf_hppa_is_local_label_name (abfd, name)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     const char *name;
 {
   if (name[0] == 'L' && name[1] == '$')
     return 1;
@@ -919,9 +974,12 @@
    section name, which is a hack, but ought to work.  */
 
 static bfd_boolean
-elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
+elf_hppa_fake_sections (abfd, hdr, sec)
+     bfd *abfd;
+     Elf_Internal_Shdr *hdr;
+     asection *sec;
 {
-  const char *name;
+  register const char *name;
 
   name = bfd_get_section_name (abfd, sec);
 
@@ -959,8 +1017,9 @@
 }
 
 static void
-elf_hppa_final_write_processing (bfd *abfd,
-				 bfd_boolean linker ATTRIBUTE_UNUSED)
+elf_hppa_final_write_processing (abfd, linker)
+     bfd *abfd;
+     bfd_boolean linker ATTRIBUTE_UNUSED;
 {
   int mach = bfd_get_mach (abfd);
 
@@ -989,18 +1048,20 @@
    final link.  */
 
 static int
-hppa_unwind_entry_compare (const void *a, const void *b)
+hppa_unwind_entry_compare (a, b)
+     const PTR a;
+     const PTR b;
 {
   const bfd_byte *ap, *bp;
   unsigned long av, bv;
 
-  ap = a;
+  ap = (const bfd_byte *) a;
   av = (unsigned long) ap[0] << 24;
   av |= (unsigned long) ap[1] << 16;
   av |= (unsigned long) ap[2] << 8;
   av |= (unsigned long) ap[3];
 
-  bp = b;
+  bp = (const bfd_byte *) b;
   bv = (unsigned long) bp[0] << 24;
   bv |= (unsigned long) bp[1] << 16;
   bv |= (unsigned long) bp[2] << 8;
@@ -1009,7 +1070,8 @@
   return av < bv ? -1 : av > bv ? 1 : 0;
 }
 
-static bfd_boolean elf_hppa_sort_unwind (bfd *abfd)
+static bfd_boolean elf_hppa_sort_unwind (abfd)
+     bfd *abfd;
 {
   asection *s;
 
@@ -1046,13 +1108,14 @@
    indices, which we have to handle.  */
 
 static bfd_boolean
-elf_hppa_add_symbol_hook (bfd *abfd,
-			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			  const Elf_Internal_Sym *sym,
-			  const char **namep ATTRIBUTE_UNUSED,
-			  flagword *flagsp ATTRIBUTE_UNUSED,
-			  asection **secp,
-			  bfd_vma *valp)
+elf_hppa_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
+     bfd *abfd;
+     struct bfd_link_info *info ATTRIBUTE_UNUSED;
+     const Elf_Internal_Sym *sym;
+     const char **namep ATTRIBUTE_UNUSED;
+     flagword *flagsp ATTRIBUTE_UNUSED;
+     asection **secp;
+     bfd_vma *valp;
 {
   int index = sym->st_shndx;
 
@@ -1075,10 +1138,11 @@
 }
 
 static bfd_boolean
-elf_hppa_unmark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
-					 void *data)
+elf_hppa_unmark_useless_dynamic_symbols (h, data)
+     struct elf_link_hash_entry *h;
+     PTR data;
 {
-  struct bfd_link_info *info = data;
+  struct bfd_link_info *info = (struct bfd_link_info *)data;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1097,7 +1161,7 @@
      linker code.  */
   if (! info->relocatable
       && ! (info->shared
-	    && info->unresolved_syms_in_shared_libs == RM_IGNORE)
+	    && !info->no_undefined)
       && h->root.type == bfd_link_hash_undefined
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0)
@@ -1110,10 +1174,11 @@
 }
 
 static bfd_boolean
-elf_hppa_remark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
-					 void *data)
+elf_hppa_remark_useless_dynamic_symbols (h, data)
+     struct elf_link_hash_entry *h;
+     PTR data;
 {
-  struct bfd_link_info *info = data;
+  struct bfd_link_info *info = (struct bfd_link_info *)data;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1132,7 +1197,7 @@
      linker code.  */
   if (! info->relocatable
       && ! (info->shared
-	    && info->unresolved_syms_in_shared_libs == RM_IGNORE)
+	    && !info->no_undefined)
       && h->root.type == bfd_link_hash_undefined
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0
@@ -1146,7 +1211,8 @@
 }
 
 static bfd_boolean
-elf_hppa_is_dynamic_loader_symbol (const char *name)
+elf_hppa_is_dynamic_loader_symbol (name)
+     const char * name;
 {
   return (! strcmp (name, "__CPU_REVISION")
 	  || ! strcmp (name, "__CPU_KEYBITS_1")
@@ -1163,14 +1229,15 @@
 
 /* Record the lowest address for the data and text segments.  */
 static void
-elf_hppa_record_segment_addrs (bfd *abfd ATTRIBUTE_UNUSED,
-			       asection *section,
-			       void *data)
+elf_hppa_record_segment_addrs (abfd, section, data)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     asection *section;
+     PTR data;
 {
   struct elf64_hppa_link_hash_table *hppa_info;
   bfd_vma value;
 
-  hppa_info = data;
+  hppa_info = (struct elf64_hppa_link_hash_table *)data;
 
   value = section->vma - section->filepos;
 
@@ -1191,7 +1258,9 @@
    fall back to the generic ELF final link routine.  */
 
 static bfd_boolean
-elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
+elf_hppa_final_link (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   bfd_boolean retval;
   struct elf64_hppa_link_hash_table *hppa_info = elf64_hppa_hash_table (info);
@@ -1291,14 +1360,16 @@
 /* Relocate an HPPA ELF section.  */
 
 static bfd_boolean
-elf_hppa_relocate_section (bfd *output_bfd,
-			   struct bfd_link_info *info,
-			   bfd *input_bfd,
-			   asection *input_section,
-			   bfd_byte *contents,
-			   Elf_Internal_Rela *relocs,
-			   Elf_Internal_Sym *local_syms,
-			   asection **local_sections)
+elf_hppa_relocate_section (output_bfd, info, input_bfd, input_section,
+			   contents, relocs, local_syms, local_sections)
+     bfd *output_bfd;
+     struct bfd_link_info *info;
+     bfd *input_bfd;
+     asection *input_section;
+     bfd_byte *contents;
+     Elf_Internal_Rela *relocs;
+     Elf_Internal_Sym *local_syms;
+     asection **local_sections;
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *rel;
@@ -1399,8 +1470,7 @@
 		relocation = 0;
 	    }
 	  /* Allow undefined symbols in shared libraries.  */
-	  else if (info->shared
-		   && info->unresolved_syms_in_shared_libs == RM_IGNORE
+	  else if (info->shared && !info->no_undefined
 		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
 	    {
 	      if (info->symbolic)
@@ -1508,16 +1578,19 @@
    function.  */
 
 static bfd_reloc_status_type
-elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
-			      bfd *input_bfd,
-			      bfd *output_bfd,
-			      asection *input_section,
-			      bfd_byte *contents,
-			      bfd_vma value,
-			      struct bfd_link_info *info,
-			      asection *sym_sec,
-			      struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
-			      struct elf64_hppa_dyn_hash_entry *dyn_h)
+elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
+			      input_section, contents, value,
+			      info, sym_sec, h, dyn_h)
+     Elf_Internal_Rela *rel;
+     bfd *input_bfd;
+     bfd *output_bfd;
+     asection *input_section;
+     bfd_byte *contents;
+     bfd_vma value;
+     struct bfd_link_info *info;
+     asection *sym_sec;
+     struct elf_link_hash_entry *h ATTRIBUTE_UNUSED;
+     struct elf64_hppa_dyn_hash_entry *dyn_h;
 {
   int insn;
   bfd_vma offset = rel->r_offset;
@@ -2063,7 +2136,10 @@
    to insert the relocation into the given instruction.  */
 
 static int
-elf_hppa_relocate_insn (int insn, int sym_value, unsigned int r_type)
+elf_hppa_relocate_insn (insn, sym_value, r_type)
+     int insn;
+     int sym_value;
+     unsigned int r_type;
 {
   switch (r_type)
     {
diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
index dc25c38..0d68fe5 100644
--- a/bfd/elf-m10300.c
+++ b/bfd/elf-m10300.c
@@ -562,7 +562,7 @@
   flagword   pltflags;
   asection * s;
   struct elf_link_hash_entry * h;
-  const struct elf_backend_data * bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *    bed = get_elf_backend_data (abfd);
   int ptralign;
 
   /* This function may be called more than once.  */
@@ -1158,8 +1158,9 @@
 	    }
 
 	  bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-				     (bfd_byte *) (((Elf32_External_Rela *) sreloc->contents)
-						   + sreloc->reloc_count));
+				     (((Elf32_External_Rela *)
+				       sreloc->contents)
+				      + sreloc->reloc_count));
 	  ++sreloc->reloc_count;
 
 	  /* If this reloc is against an external symbol, we do
@@ -1294,9 +1295,9 @@
 	    }
 
 	  bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-				     (bfd_byte *) (((Elf32_External_Rela *)
-						    sreloc->contents)
-						   + sreloc->reloc_count));
+				     (((Elf32_External_Rela *)
+				       sreloc->contents)
+				      + sreloc->reloc_count));
 	  ++sreloc->reloc_count;
 
 	  return bfd_reloc_ok;
@@ -1479,9 +1480,9 @@
 		  outrel.r_info = ELF32_R_INFO (0, R_MN10300_RELATIVE);
 		  outrel.r_addend = value;
 		  bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-					     (bfd_byte *) (((Elf32_External_Rela *)
-							    srelgot->contents)
-							   + srelgot->reloc_count));
+					     (((Elf32_External_Rela *)
+					       srelgot->contents)
+					      + srelgot->reloc_count));
 		  ++ srelgot->reloc_count;
 		}
 
@@ -1578,20 +1579,15 @@
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned;
-	  struct elf_link_hash_entry *hh;
-
-	  RELOC_FOR_GLOBAL_SYMBOL (hh, (struct elf_link_hash_entry *) sym_hashes,
-				   r_symndx, symtab_hdr, relocation,
-				   sec, unresolved_reloc, info,
-				   warned);
-
-	  h = (struct elf32_mn10300_link_hash_entry *) hh;
-
-	  if ((h->root.root.type == bfd_link_hash_defined
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.root.type == bfd_link_hash_indirect
+		 || h->root.root.type == bfd_link_hash_warning)
+	    h = (struct elf32_mn10300_link_hash_entry *) h->root.root.u.i.link;
+	  if (h->root.root.type == bfd_link_hash_defined
 	      || h->root.root.type == bfd_link_hash_defweak)
-	      && (   r_type == R_MN10300_GOTPC32
+	    {
+	      sec = h->root.root.u.def.section;
+	      if (   r_type == R_MN10300_GOTPC32
 		  || r_type == R_MN10300_GOTPC16
 		  || ((   r_type == R_MN10300_PLT32
 		       || r_type == R_MN10300_PLT16)
@@ -1619,17 +1615,41 @@
 			     do anything with them here.  */
 			  || ((input_section->flags & SEC_DEBUGGING) != 0
 			      && (h->root.elf_link_hash_flags
-				  & ELF_LINK_HASH_DEF_DYNAMIC) != 0)))))
-	    /* In these cases, we don't need the relocation
-	       value.  We check specially because in some
-	       obscure cases sec->output_section will be NULL.  */
+				  & ELF_LINK_HASH_DEF_DYNAMIC) != 0))))
+		{
+		  /* In these cases, we don't need the relocation
+                     value.  We check specially because in some
+                     obscure cases sec->output_section will be NULL.  */
+		  relocation = 0;
+		}
+	      else if (sec->output_section == NULL)
+		{
+		  (*_bfd_error_handler)
+		    (_("%s: warning: unresolvable relocation against symbol `%s' from %s section"),
+		     bfd_get_filename (input_bfd), h->root.root.root.string,
+		     bfd_get_section_name (input_bfd, input_section));
+		  relocation = 0;
+		}
+	      else	      
+		relocation = (h->root.root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.root.type == bfd_link_hash_undefweak)
 	    relocation = 0;
-
-	  else if (unresolved_reloc)
-	    (*_bfd_error_handler)
-	      (_("%s: warning: unresolvable relocation against symbol `%s' from %s section"),
-	       bfd_get_filename (input_bfd), h->root.root.root.string,
-	       bfd_get_section_name (input_bfd, input_section));
+	  else if (info->shared && !info->symbolic && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->root.other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       r = mn10300_elf_final_link_relocate (howto, input_bfd, output_bfd,
@@ -4029,7 +4049,7 @@
 {
   flagword   flags;
   asection * s;
-  const struct elf_backend_data * bed = get_elf_backend_data (abfd);
+  struct elf_backend_data * bed = get_elf_backend_data (abfd);
   int ptralign = 0;
 
   switch (bed->s->arch_size)
@@ -4606,8 +4626,8 @@
       rel.r_info = ELF32_R_INFO (h->dynindx, R_MN10300_JMP_SLOT);
       rel.r_addend = 0;
       bfd_elf32_swap_reloca_out (output_bfd, &rel,
-				 (bfd_byte *) ((Elf32_External_Rela *) srel->contents
-					       + plt_index));
+				((Elf32_External_Rela *) srel->contents
+				 + plt_index));
 
       if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
 	/* Mark the symbol as undefined, rather than as defined in
@@ -4653,8 +4673,8 @@
 	}
 
       bfd_elf32_swap_reloca_out (output_bfd, &rel,
-				 (bfd_byte *) ((Elf32_External_Rela *) srel->contents
-					       + srel->reloc_count));
+				 ((Elf32_External_Rela *) srel->contents
+				  + srel->reloc_count));
       ++ srel->reloc_count;
     }
 
@@ -4678,8 +4698,8 @@
       rel.r_info = ELF32_R_INFO (h->dynindx, R_MN10300_COPY);
       rel.r_addend = 0;
       bfd_elf32_swap_reloca_out (output_bfd, &rel,
-				 (bfd_byte *) ((Elf32_External_Rela *) s->contents
-					       + s->reloc_count));
+				 ((Elf32_External_Rela *) s->contents
+				  + s->reloc_count));
       ++ s->reloc_count;
     }
 
diff --git a/bfd/elf-strtab.c b/bfd/elf-strtab.c
index 764ab54..3bd5531 100644
--- a/bfd/elf-strtab.c
+++ b/bfd/elf-strtab.c
@@ -57,46 +57,53 @@
   struct elf_strtab_hash_entry **array;
 };
 
+static struct bfd_hash_entry *elf_strtab_hash_newfunc
+  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+static int cmplengthentry PARAMS ((const PTR, const PTR));
+static int last4_eq PARAMS ((const PTR, const PTR));
+
 /* Routine to create an entry in a section merge hashtab.  */
 
 static struct bfd_hash_entry *
-elf_strtab_hash_newfunc (struct bfd_hash_entry *entry,
-			 struct bfd_hash_table *table,
-			 const char *string)
+elf_strtab_hash_newfunc (entry, table, string)
+     struct bfd_hash_entry *entry;
+     struct bfd_hash_table *table;
+     const char *string;
 {
+  struct elf_strtab_hash_entry *ret = (struct elf_strtab_hash_entry *) entry;
+
   /* Allocate the structure if it has not already been allocated by a
      subclass.  */
-  if (entry == NULL)
-    entry = bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry));
-  if (entry == NULL)
+  if (ret == (struct elf_strtab_hash_entry *) NULL)
+    ret = ((struct elf_strtab_hash_entry *)
+	   bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry)));
+  if (ret == (struct elf_strtab_hash_entry *) NULL)
     return NULL;
 
   /* Call the allocation method of the superclass.  */
-  entry = bfd_hash_newfunc (entry, table, string);
+  ret = ((struct elf_strtab_hash_entry *)
+	 bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
 
-  if (entry)
+  if (ret)
     {
       /* Initialize the local fields.  */
-      struct elf_strtab_hash_entry *ret;
-
-      ret = (struct elf_strtab_hash_entry *) entry;
       ret->u.index = -1;
       ret->refcount = 0;
       ret->len = 0;
     }
 
-  return entry;
+  return (struct bfd_hash_entry *)ret;
 }
 
 /* Create a new hash table.  */
 
 struct elf_strtab_hash *
-_bfd_elf_strtab_init (void)
+_bfd_elf_strtab_init ()
 {
   struct elf_strtab_hash *table;
   bfd_size_type amt = sizeof (struct elf_strtab_hash);
 
-  table = bfd_malloc (amt);
+  table = (struct elf_strtab_hash *) bfd_malloc (amt);
   if (table == NULL)
     return NULL;
 
@@ -110,7 +117,8 @@
   table->size = 1;
   table->alloced = 64;
   amt = sizeof (struct elf_strtab_hasn_entry *);
-  table->array = bfd_malloc (table->alloced * amt);
+  table->array = (struct elf_strtab_hash_entry **)
+		 bfd_malloc (table->alloced * amt);
   if (table->array == NULL)
     {
       free (table);
@@ -125,7 +133,8 @@
 /* Free a strtab.  */
 
 void
-_bfd_elf_strtab_free (struct elf_strtab_hash *tab)
+_bfd_elf_strtab_free (tab)
+     struct elf_strtab_hash *tab;
 {
   bfd_hash_table_free (&tab->table);
   free (tab->array);
@@ -136,9 +145,10 @@
    already present.  */
 
 bfd_size_type
-_bfd_elf_strtab_add (struct elf_strtab_hash *tab,
-		     const char *str,
-		     bfd_boolean copy)
+_bfd_elf_strtab_add (tab, str, copy)
+     struct elf_strtab_hash *tab;
+     const char *str;
+     bfd_boolean copy;
 {
   register struct elf_strtab_hash_entry *entry;
 
@@ -162,7 +172,8 @@
 	{
 	  bfd_size_type amt = sizeof (struct elf_strtab_hash_entry *);
 	  tab->alloced *= 2;
-	  tab->array = bfd_realloc (tab->array, tab->alloced * amt);
+	  tab->array = (struct elf_strtab_hash_entry **)
+		       bfd_realloc (tab->array, tab->alloced * amt);
 	  if (tab->array == NULL)
 	    return (bfd_size_type) -1;
 	}
@@ -174,7 +185,9 @@
 }
 
 void
-_bfd_elf_strtab_addref (struct elf_strtab_hash *tab, bfd_size_type idx)
+_bfd_elf_strtab_addref (tab, idx)
+     struct elf_strtab_hash *tab;
+     bfd_size_type idx;
 {
   if (idx == 0 || idx == (bfd_size_type) -1)
     return;
@@ -184,7 +197,9 @@
 }
 
 void
-_bfd_elf_strtab_delref (struct elf_strtab_hash *tab, bfd_size_type idx)
+_bfd_elf_strtab_delref (tab, idx)
+     struct elf_strtab_hash *tab;
+     bfd_size_type idx;
 {
   if (idx == 0 || idx == (bfd_size_type) -1)
     return;
@@ -195,7 +210,8 @@
 }
 
 void
-_bfd_elf_strtab_clear_all_refs (struct elf_strtab_hash *tab)
+_bfd_elf_strtab_clear_all_refs (tab)
+     struct elf_strtab_hash *tab;
 {
   bfd_size_type idx;
 
@@ -204,13 +220,16 @@
 }
 
 bfd_size_type
-_bfd_elf_strtab_size (struct elf_strtab_hash *tab)
+_bfd_elf_strtab_size (tab)
+     struct elf_strtab_hash *tab;
 {
   return tab->sec_size ? tab->sec_size : tab->size;
 }
 
 bfd_size_type
-_bfd_elf_strtab_offset (struct elf_strtab_hash *tab, bfd_size_type idx)
+_bfd_elf_strtab_offset (tab, idx)
+     struct elf_strtab_hash *tab;
+     bfd_size_type idx;
 {
   struct elf_strtab_hash_entry *entry;
 
@@ -225,7 +244,9 @@
 }
 
 bfd_boolean
-_bfd_elf_strtab_emit (register bfd *abfd, struct elf_strtab_hash *tab)
+_bfd_elf_strtab_emit (abfd, tab)
+     register bfd *abfd;
+     struct elf_strtab_hash *tab;
 {
   bfd_size_type off = 1, i;
 
@@ -243,7 +264,7 @@
       if (len == 0)
 	continue;
 
-      if (bfd_bwrite (str, len, abfd) != len)
+      if (bfd_bwrite ((PTR) str, (bfd_size_type) len, abfd) != len)
 	return FALSE;
 
       off += len;
@@ -256,10 +277,12 @@
 /* Compare two elf_strtab_hash_entry structures.  This is called via qsort.  */
 
 static int
-cmplengthentry (const void *a, const void *b)
+cmplengthentry (a, b)
+     const PTR a;
+     const PTR b;
 {
-  struct elf_strtab_hash_entry *A = *(struct elf_strtab_hash_entry **) a;
-  struct elf_strtab_hash_entry *B = *(struct elf_strtab_hash_entry **) b;
+  struct elf_strtab_hash_entry * A = *(struct elf_strtab_hash_entry **) a;
+  struct elf_strtab_hash_entry * B = *(struct elf_strtab_hash_entry **) b;
 
   if (A->len < B->len)
     return 1;
@@ -270,10 +293,12 @@
 }
 
 static int
-last4_eq (const void *a, const void *b)
+last4_eq (a, b)
+     const PTR a;
+     const PTR b;
 {
-  const struct elf_strtab_hash_entry *A = a;
-  const struct elf_strtab_hash_entry *B = b;
+  struct elf_strtab_hash_entry * A = (struct elf_strtab_hash_entry *) a;
+  struct elf_strtab_hash_entry * B = (struct elf_strtab_hash_entry *) b;
 
   if (memcmp (A->root.string + A->len - 5, B->root.string + B->len - 5, 4)
       != 0)
@@ -293,7 +318,8 @@
    merging strings matching suffixes of longer strings if possible.  */
 
 void
-_bfd_elf_strtab_finalize (struct elf_strtab_hash *tab)
+_bfd_elf_strtab_finalize (tab)
+     struct elf_strtab_hash *tab;
 {
   struct elf_strtab_hash_entry **array, **a, **end, *e;
   htab_t last4tab = NULL;
@@ -309,7 +335,7 @@
   /* Now sort the strings by length, longest first.  */
   array = NULL;
   amt = tab->size * sizeof (struct elf_strtab_hash_entry *);
-  array = bfd_malloc (amt);
+  array = (struct elf_strtab_hash_entry **) bfd_malloc (amt);
   if (array == NULL)
     goto alloc_failure;
 
@@ -339,7 +365,7 @@
       unsigned int c;
       unsigned int j;
       const unsigned char *s;
-      void **p;
+      PTR *p;
 
       e = *a;
       if (e->len > 4)
@@ -359,13 +385,13 @@
 	    {
 	      struct elf_strtab_hash_entry *ent;
 
-	      ent = *p;
+	      ent = (struct elf_strtab_hash_entry *) *p;
 	      e->u.suffix = ent;
 	      e->len = 0;
 	      continue;
 	    }
 	  else
-	    *p = e;
+	    *p = (PTR) e;
 	}
       else
 	{
diff --git a/bfd/elf.c b/bfd/elf.c
index 3868cff..33848a2 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -325,7 +325,7 @@
   Elf_External_Sym_Shndx *shndx;
   Elf_Internal_Sym *isym;
   Elf_Internal_Sym *isymend;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   size_t extsym_size;
   bfd_size_type amt;
   file_ptr pos;
@@ -638,7 +638,7 @@
 {
   asection *newsect;
   flagword flags;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   if (hdr->bfd_section != NULL)
     {
@@ -1193,7 +1193,7 @@
       {
 	const char *section_name;
 	const char *name = NULL;
-	const struct elf_backend_data *bed;
+	struct elf_backend_data *bed;
 	unsigned char st_other;
 	bfd_vma val;
 
@@ -1344,7 +1344,7 @@
    old indirect symbol.  Also used for copying flags to a weakdef.  */
 
 void
-_bfd_elf_link_hash_copy_indirect (const struct elf_backend_data *bed,
+_bfd_elf_link_hash_copy_indirect (struct elf_backend_data *bed,
 				  struct elf_link_hash_entry *dir,
 				  struct elf_link_hash_entry *ind)
 {
@@ -1649,7 +1649,7 @@
 {
   Elf_Internal_Shdr *hdr = elf_elfsections (abfd)[shindex];
   Elf_Internal_Ehdr *ehdr = elf_elfheader (abfd);
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   const char *name;
 
   name = elf_string_from_elf_strtab (abfd, hdr->sh_name);
@@ -2123,13 +2123,13 @@
 _bfd_elf_get_sec_type_attr (bfd *abfd, const char *name, int *type, int *attr)
 {
   bfd_boolean found = FALSE;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   /* See if this is one of the special sections.  */
   if (name)
     {
       const struct bfd_elf_special_section *ssect = NULL;
-      unsigned int rela = bed->default_use_rela_p;
+      unsigned int rela = get_elf_backend_data (abfd)->default_use_rela_p;
 
       if (bed->special_sections)
 	ssect = get_special_section (name, bed->special_sections, rela);
@@ -2274,7 +2274,7 @@
 bfd_boolean
 bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index)
 {
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   switch (hdr->p_type)
     {
@@ -2332,7 +2332,7 @@
 			  bfd_boolean use_rela_p)
 {
   char *name;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   bfd_size_type amt = sizeof ".rela" + strlen (asect->name);
 
   name = bfd_alloc (abfd, amt);
@@ -2362,7 +2362,7 @@
 static void
 elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   bfd_boolean *failedptr = failedptrarg;
   Elf_Internal_Shdr *this_hdr;
 
@@ -2872,7 +2872,7 @@
 sym_is_global (bfd *abfd, asymbol *sym)
 {
   /* If the backend has a special mapping, use it.  */
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   if (bed->elf_backend_sym_is_global)
     return (*bed->elf_backend_sym_is_global) (abfd, sym);
 
@@ -3066,7 +3066,7 @@
 _bfd_elf_compute_section_file_positions (bfd *abfd,
 					 struct bfd_link_info *link_info)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   bfd_boolean failed;
   struct bfd_strtab_hash *strtab;
   Elf_Internal_Shdr *shstrtab_hdr;
@@ -4059,7 +4059,7 @@
 {
   size_t segs;
   asection *s;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   /* We can't return a different result each time we're called.  */
   if (elf_tdata (abfd)->program_header_size != 0)
@@ -4162,7 +4162,7 @@
   Elf_Internal_Shdr ** const i_shdrpp = elf_elfsections (abfd);
   unsigned int num_sec = elf_numsections (abfd);
   file_ptr off;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0
       && bfd_get_format (abfd) != bfd_core)
@@ -4269,7 +4269,7 @@
   Elf_Internal_Phdr *i_phdrp = 0; /* Program header table, internal form */
   Elf_Internal_Shdr **i_shdrp;	/* Section header table, internal form */
   struct elf_strtab_hash *shstrtab;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   i_ehdrp = elf_elfheader (abfd);
   i_shdrp = elf_elfsections (abfd);
@@ -4314,8 +4314,11 @@
 	 Such need can generally be supplied by replacing the tests for
 	 e_machine with the conditions used to determine it.  */
     default:
-      i_ehdrp->e_machine = bed->elf_machine_code;
-    }
+      if (get_elf_backend_data (abfd) != NULL)
+	i_ehdrp->e_machine = get_elf_backend_data (abfd)->elf_machine_code;
+      else
+	i_ehdrp->e_machine = EM_NONE;
+      }
 
   i_ehdrp->e_version = bed->s->ev_current;
   i_ehdrp->e_ehsize = bed->s->sizeof_ehdr;
@@ -4393,7 +4396,7 @@
 bfd_boolean
 _bfd_elf_write_object_contents (bfd *abfd)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   Elf_Internal_Ehdr *i_ehdrp;
   Elf_Internal_Shdr **i_shdrp;
   bfd_boolean failed;
@@ -4455,7 +4458,7 @@
 int
 _bfd_elf_section_from_bfd_section (bfd *abfd, struct sec *asect)
 {
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   int index;
 
   if (elf_section_data (asect) != NULL
@@ -4571,7 +4574,7 @@
   bfd_vma maxpagesize;
   struct elf_segment_map *phdr_adjust_seg = NULL;
   unsigned int phdr_adjust_num = 0;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -5266,7 +5269,7 @@
 	       struct bfd_strtab_hash **sttp,
 	       int relocatable_p)
 {
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   int symcount;
   asymbol **syms;
   struct bfd_strtab_hash *stt;
@@ -5598,7 +5601,7 @@
 {
   arelent *tblptr;
   unsigned int i;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   if (! bed->s->slurp_reloc_table (abfd, section, symbols, FALSE))
     return -1;
@@ -5615,7 +5618,7 @@
 long
 _bfd_elf_get_symtab (bfd *abfd, asymbol **allocation)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   long symcount = bed->s->slurp_symbol_table (abfd, allocation, FALSE);
 
   if (symcount >= 0)
@@ -5627,7 +5630,7 @@
 _bfd_elf_canonicalize_dynamic_symtab (bfd *abfd,
 				      asymbol **allocation)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   long symcount = bed->s->slurp_symbol_table (abfd, allocation, TRUE);
 
   if (symcount >= 0)
@@ -6755,7 +6758,7 @@
 static bfd_boolean
 elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   switch (note->type)
     {
@@ -7059,7 +7062,7 @@
   pad = 0;
   if (name != NULL)
     {
-      const struct elf_backend_data *bed;
+      struct elf_backend_data *bed;
 
       namesz = strlen (name) + 1;
       bed = get_elf_backend_data (abfd);
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index a28c558..f073e7a 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -1038,18 +1038,6 @@
   return TRUE;
 }
 
-/* This is the condition under which elf32_arm_finish_dynamic_symbol
-   will be called from elflink.h.  If elflink.h doesn't call our
-   finish_dynamic_symbol routine, we'll need to do something about
-   initializing any .plt and .got entries in elf32_arm_relocate_section
-   and elf32_arm_final_link_relocate.  */
-#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, SHARED, H)			\
-  ((DYN)								\
-   && ((SHARED)							 	\
-       || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)	\
-   && ((H)->dynindx != -1						\
-       || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
-
 /* Perform a relocation as part of a final link.  */
 
 static bfd_reloc_status_type
@@ -1617,16 +1605,13 @@
       if (h != NULL)
 	{
 	  bfd_vma off;
-	  bfd_boolean dyn = elf_hash_table (info)->dynamic_sections_created;
 
 	  off = h->got.offset;
 	  BFD_ASSERT (off != (bfd_vma) -1);
 
-	  if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
-	      || (info->shared
-		  && (info->symbolic || h->dynindx == -1
-		      || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
-		  && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
+	  if (!elf_hash_table (info)->dynamic_sections_created ||
+	      (info->shared && (info->symbolic || h->dynindx == -1)
+	       && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
 	    {
 	      /* This is actually a static link, or it is a -Bsymbolic link
 		 and the symbol is defined locally.  We must initialize this
@@ -1963,16 +1948,19 @@
 	}
       else
 	{
-	  bfd_boolean warned;
-	  bfd_boolean unresolved_reloc;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation,
-				   sec, unresolved_reloc, info,
-				   warned);
-	  
-	  if (unresolved_reloc || relocation != 0)
+	  while (   h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  if (   h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
 	    {
+	      int relocation_needed = 1;
+
+	      sec = h->root.u.def.section;
+
 	      /* In these cases, we don't need the relocation value.
 	         We check specially because in some obscure cases
 	         sec->output_section will be NULL.  */
@@ -1995,39 +1983,63 @@
 			      && (h->elf_link_hash_flags
 				  & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
 		      )
-	            relocation = 0;
+	            relocation_needed = 0;
 		  break;
 
 	        case R_ARM_GOTPC:
-	          relocation = 0;
+	          relocation_needed = 0;
 		  break;
 
 	        case R_ARM_GOT32:
-	          if ((WILL_CALL_FINISH_DYNAMIC_SYMBOL
-		       (elf_hash_table (info)->dynamic_sections_created,
-			info->shared, h))
-		      && (!info->shared
+	          if (elf_hash_table(info)->dynamic_sections_created
+	              && (!info->shared
 	                  || (!info->symbolic && h->dynindx != -1)
-	                  || (h->elf_link_hash_flags
-			      & ELF_LINK_HASH_DEF_REGULAR) == 0))
-	            relocation = 0;
+	                  || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0
+			  )
+		      )
+	            relocation_needed = 0;
 		  break;
 
 	        case R_ARM_PLT32:
 	          if (h->plt.offset != (bfd_vma)-1)
-	            relocation = 0;
+	            relocation_needed = 0;
 		  break;
 
 	        default:
-		  if (unresolved_reloc)
-		    _bfd_error_handler
-		      (_("%s: warning: unresolvable relocation %d against symbol `%s' from %s section"),
-		       bfd_archive_filename (input_bfd),
-		       r_type,
-		       h->root.root.string,
-		       bfd_get_section_name (input_bfd, input_section));
-		  break;
+		  if (sec->output_section == NULL)
+		    {
+		      (*_bfd_error_handler)
+			(_("%s: warning: unresolvable relocation %d against symbol `%s' from %s section"),
+			 bfd_archive_filename (input_bfd),
+			 r_type,
+			 h->root.root.string,
+			 bfd_get_section_name (input_bfd, input_section));
+		      relocation_needed = 0;
+		    }
 		}
+
+	      if (relocation_needed)
+		relocation = h->root.u.def.value
+		  + sec->output_section->vma
+		  + sec->output_offset;
+	      else
+		relocation = 0;
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+	  else if (info->shared && !info->symbolic
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (!((*info->callbacks->undefined_symbol)
+		    (info, h->root.root.string, input_bfd,
+		     input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined
+		      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
 	    }
 	}
 
diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c
index d630a2a..4618a8f 100644
--- a/bfd/elf32-cris.c
+++ b/bfd/elf32-cris.c
@@ -856,12 +856,24 @@
 	}
       else
 	{
-	  bfd_boolean warned;
-	  bfd_boolean unresolved_reloc;
+	  /* It seems this can happen with erroneous or unsupported input
+	     (mixing a.out and elf in an archive, for example.)  */
+	  if (sym_hashes == NULL)
+	    return FALSE;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx, symtab_hdr, relocation, sec, unresolved_reloc, info, warned);
+	  h = sym_hashes [r_symndx - symtab_hdr->sh_info];
 
-	  if (unresolved_reloc
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  symname = h->root.root.string;
+
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+
 	      /* Perhaps we should detect the cases that
 		 sec->output_section is expected to be NULL like i386 and
 		 m68k, but apparently (and according to elfxx-ia64.c) all
@@ -876,45 +888,46 @@
 		 is *not* dynamically linked against.  Thus this will
 		 automatically remind us so we can see if there are other
 		 valid cases we need to revisit.  */
-	      && (sec->owner->flags & DYNAMIC) != 0)
-	    relocation = 0;
+	      if ((sec->output_section == NULL
+		   && (sec->owner->flags & DYNAMIC) != 0)
 
-	  else if (h->root.type == bfd_link_hash_defined
-		   || h->root.type == bfd_link_hash_defweak)
-	    {
-	      /* Here follow the cases where the relocation value must
-		 be zero (or when further handling is simplified when
-		 zero).  I can't claim to understand the various
-		 conditions and they weren't described in the files
-		 where I copied them from (elf32-m68k.c and
-		 elf32-i386.c), but let's mention examples of where
-		 they happen.  FIXME: Perhaps define and use a
-		 dynamic_symbol_p function like ia64.
+		  /* Here follow the cases where the relocation value must
+		     be zero (or when further handling is simplified when
+		     zero).  I can't claim to understand the various
+		     conditions and they weren't described in the files
+		     where I copied them from (elf32-m68k.c and
+		     elf32-i386.c), but let's mention examples of where
+		     they happen.  FIXME: Perhaps define and use a
+		     dynamic_symbol_p function like ia64.
 
-		 - When creating a shared library, we can have an
-		 ordinary relocation for a symbol defined in a shared
-		 library (perhaps the one we create).  We then make
-		 the relocation value zero, as the value seen now will
-		 be added into the relocation addend in this shared
-		 library, but must be handled only at dynamic-link
-		 time.  FIXME: Not sure this example covers the
-		 h->elf_link_hash_flags test, though it's there in
-		 other targets.  */
-	      if (info->shared
-		  && ((! info->symbolic && h->dynindx != -1)
-		      || (h->elf_link_hash_flags
-			  & ELF_LINK_HASH_DEF_REGULAR) == 0)
-		  && (input_section->flags & SEC_ALLOC) != 0
-		  && (r_type == R_CRIS_8
-		      || r_type == R_CRIS_16
-		      || r_type == R_CRIS_32
-		      || r_type == R_CRIS_8_PCREL
-		      || r_type == R_CRIS_16_PCREL
-		      || r_type == R_CRIS_32_PCREL))
+		     - When creating a shared library, we can have an
+		     ordinary relocation for a symbol defined in a shared
+		     library (perhaps the one we create).  We then make
+		     the relocation value zero, as the value seen now will
+		     be added into the relocation addend in this shared
+		     library, but must be handled only at dynamic-link
+		     time.  FIXME: Not sure this example covers the
+		     h->elf_link_hash_flags test, though it's there in
+		     other targets.  */
+		  || (info->shared
+		      && ((! info->symbolic && h->dynindx != -1)
+			  || (h->elf_link_hash_flags
+			      & ELF_LINK_HASH_DEF_REGULAR) == 0)
+		      && (input_section->flags & SEC_ALLOC) != 0
+		      && (r_type == R_CRIS_8
+			  || r_type == R_CRIS_16
+			  || r_type == R_CRIS_32
+			  || r_type == R_CRIS_8_PCREL
+			  || r_type == R_CRIS_16_PCREL
+			  || r_type == R_CRIS_32_PCREL)))
 		relocation = 0;
-	      else if (unresolved_reloc)
+	      else if (sec->output_section != NULL)
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	      else
 		{
-		  _bfd_error_handler
+		  (*_bfd_error_handler)
 		    (_("%s: unresolvable relocation %s against symbol `%s' from %s section"),
 		     bfd_archive_filename (input_bfd),
 		     cris_elf_howto_table[r_type].name,
@@ -924,6 +937,22 @@
 		  return FALSE;
 		}
 	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+	  else if (info->shared
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (!(info->callbacks->undefined_symbol
+		    (info, symname, input_bfd,
+		     input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined
+		      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
index 924f7af..ca3e8e1 100644
--- a/bfd/elf32-hppa.c
+++ b/bfd/elf32-hppa.c
@@ -223,8 +223,8 @@
   bfd *stub_bfd;
 
   /* Linker call-backs.  */
-  asection * (*add_stub_section) (const char *, asection *);
-  void (*layout_sections_again) (void);
+  asection * (*add_stub_section) PARAMS ((const char *, asection *));
+  void (*layout_sections_again) PARAMS ((void));
 
   /* Array to keep track of which stub sections have been created, and
      information on stub grouping.  */
@@ -279,14 +279,139 @@
   ((struct elf32_hppa_stub_hash_entry *) \
    bfd_hash_lookup ((table), (string), (create), (copy)))
 
+static struct bfd_hash_entry *stub_hash_newfunc
+  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+
+static struct bfd_hash_entry *hppa_link_hash_newfunc
+  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+
+static struct bfd_link_hash_table *elf32_hppa_link_hash_table_create
+  PARAMS ((bfd *));
+
+static void elf32_hppa_link_hash_table_free
+  PARAMS ((struct bfd_link_hash_table *));
+
+/* Stub handling functions.  */
+static char *hppa_stub_name
+  PARAMS ((const asection *, const asection *,
+	   const struct elf32_hppa_link_hash_entry *,
+	   const Elf_Internal_Rela *));
+
+static struct elf32_hppa_stub_hash_entry *hppa_get_stub_entry
+  PARAMS ((const asection *, const asection *,
+	   struct elf32_hppa_link_hash_entry *,
+	   const Elf_Internal_Rela *,
+	   struct elf32_hppa_link_hash_table *));
+
+static struct elf32_hppa_stub_hash_entry *hppa_add_stub
+  PARAMS ((const char *, asection *, struct elf32_hppa_link_hash_table *));
+
+static enum elf32_hppa_stub_type hppa_type_of_stub
+  PARAMS ((asection *, const Elf_Internal_Rela *,
+	   struct elf32_hppa_link_hash_entry *, bfd_vma));
+
+static bfd_boolean hppa_build_one_stub
+  PARAMS ((struct bfd_hash_entry *, PTR));
+
+static bfd_boolean hppa_size_one_stub
+  PARAMS ((struct bfd_hash_entry *, PTR));
+
+/* BFD and elf backend functions.  */
+static bfd_boolean elf32_hppa_object_p PARAMS ((bfd *));
+
+static bfd_boolean elf32_hppa_add_symbol_hook
+  PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *,
+	   const char **, flagword *, asection **, bfd_vma *));
+
+static bfd_boolean elf32_hppa_create_dynamic_sections
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void elf32_hppa_copy_indirect_symbol
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
+	   struct elf_link_hash_entry *));
+
+static bfd_boolean elf32_hppa_check_relocs
+  PARAMS ((bfd *, struct bfd_link_info *,
+	   asection *, const Elf_Internal_Rela *));
+
+static asection *elf32_hppa_gc_mark_hook
+  PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
+	   struct elf_link_hash_entry *, Elf_Internal_Sym *));
+
+static bfd_boolean elf32_hppa_gc_sweep_hook
+  PARAMS ((bfd *, struct bfd_link_info *,
+	   asection *, const Elf_Internal_Rela *));
+
+static void elf32_hppa_hide_symbol
+  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
+
+static bfd_boolean elf32_hppa_adjust_dynamic_symbol
+  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
+
+static bfd_boolean mark_PIC_calls
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean allocate_plt_static
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean allocate_dynrelocs
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean readonly_dynrelocs
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static bfd_boolean clobber_millicode_symbols
+  PARAMS ((struct elf_link_hash_entry *, struct bfd_link_info *));
+
+static bfd_boolean elf32_hppa_size_dynamic_sections
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void group_sections
+  PARAMS ((struct elf32_hppa_link_hash_table *, bfd_size_type, bfd_boolean));
+
+static int get_local_syms
+  PARAMS ((bfd *, bfd *, struct bfd_link_info *));
+
+static bfd_boolean elf32_hppa_final_link
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void hppa_record_segment_addr
+  PARAMS ((bfd *, asection *, PTR));
+
+static bfd_reloc_status_type final_link_relocate
+  PARAMS ((asection *, bfd_byte *, const Elf_Internal_Rela *,
+	   bfd_vma, struct elf32_hppa_link_hash_table *, asection *,
+	   struct elf32_hppa_link_hash_entry *));
+
+static bfd_boolean elf32_hppa_relocate_section
+  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
+	   bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+
+static bfd_boolean elf32_hppa_finish_dynamic_symbol
+  PARAMS ((bfd *, struct bfd_link_info *,
+	   struct elf_link_hash_entry *, Elf_Internal_Sym *));
+
+static enum elf_reloc_type_class elf32_hppa_reloc_type_class
+  PARAMS ((const Elf_Internal_Rela *));
+
+static bfd_boolean elf32_hppa_finish_dynamic_sections
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void elf32_hppa_post_process_headers
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static int elf32_hppa_elf_get_symbol_type
+  PARAMS ((Elf_Internal_Sym *, int));
+
 /* Assorted hash table functions.  */
 
 /* Initialize an entry in the stub hash table.  */
 
 static struct bfd_hash_entry *
-stub_hash_newfunc (struct bfd_hash_entry *entry,
-		   struct bfd_hash_table *table,
-		   const char *string)
+stub_hash_newfunc (entry, table, string)
+     struct bfd_hash_entry *entry;
+     struct bfd_hash_table *table;
+     const char *string;
 {
   /* Allocate the structure if it has not already been allocated by a
      subclass.  */
@@ -321,9 +446,10 @@
 /* Initialize an entry in the link hash table.  */
 
 static struct bfd_hash_entry *
-hppa_link_hash_newfunc (struct bfd_hash_entry *entry,
-			struct bfd_hash_table *table,
-			const char *string)
+hppa_link_hash_newfunc (entry, table, string)
+     struct bfd_hash_entry *entry;
+     struct bfd_hash_table *table;
+     const char *string;
 {
   /* Allocate the structure if it has not already been allocated by a
      subclass.  */
@@ -357,12 +483,13 @@
    using static variables).  */
 
 static struct bfd_link_hash_table *
-elf32_hppa_link_hash_table_create (bfd *abfd)
+elf32_hppa_link_hash_table_create (abfd)
+     bfd *abfd;
 {
   struct elf32_hppa_link_hash_table *ret;
   bfd_size_type amt = sizeof (*ret);
 
-  ret = bfd_malloc (amt);
+  ret = (struct elf32_hppa_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
     return NULL;
 
@@ -401,7 +528,8 @@
 /* Free the derived linker hash table.  */
 
 static void
-elf32_hppa_link_hash_table_free (struct bfd_link_hash_table *hash)
+elf32_hppa_link_hash_table_free (hash)
+     struct bfd_link_hash_table *hash;
 {
   struct elf32_hppa_link_hash_table *ret
     = (struct elf32_hppa_link_hash_table *) hash;
@@ -413,10 +541,11 @@
 /* Build a name for an entry in the stub hash table.  */
 
 static char *
-hppa_stub_name (const asection *input_section,
-		const asection *sym_sec,
-		const struct elf32_hppa_link_hash_entry *hash,
-		const Elf_Internal_Rela *rel)
+hppa_stub_name (input_section, sym_sec, hash, rel)
+     const asection *input_section;
+     const asection *sym_sec;
+     const struct elf32_hppa_link_hash_entry *hash;
+     const Elf_Internal_Rela *rel;
 {
   char *stub_name;
   bfd_size_type len;
@@ -453,11 +582,12 @@
    creating the stub name takes a bit of time.  */
 
 static struct elf32_hppa_stub_hash_entry *
-hppa_get_stub_entry (const asection *input_section,
-		     const asection *sym_sec,
-		     struct elf32_hppa_link_hash_entry *hash,
-		     const Elf_Internal_Rela *rel,
-		     struct elf32_hppa_link_hash_table *htab)
+hppa_get_stub_entry (input_section, sym_sec, hash, rel, htab)
+     const asection *input_section;
+     const asection *sym_sec;
+     struct elf32_hppa_link_hash_entry *hash;
+     const Elf_Internal_Rela *rel;
+     struct elf32_hppa_link_hash_table *htab;
 {
   struct elf32_hppa_stub_hash_entry *stub_entry;
   const asection *id_sec;
@@ -498,9 +628,10 @@
    stub entry are initialised.  */
 
 static struct elf32_hppa_stub_hash_entry *
-hppa_add_stub (const char *stub_name,
-	       asection *section,
-	       struct elf32_hppa_link_hash_table *htab)
+hppa_add_stub (stub_name, section, htab)
+     const char *stub_name;
+     asection *section;
+     struct elf32_hppa_link_hash_table *htab;
 {
   asection *link_sec;
   asection *stub_sec;
@@ -553,10 +684,11 @@
 /* Determine the type of stub needed, if any, for a call.  */
 
 static enum elf32_hppa_stub_type
-hppa_type_of_stub (asection *input_sec,
-		   const Elf_Internal_Rela *rel,
-		   struct elf32_hppa_link_hash_entry *hash,
-		   bfd_vma destination)
+hppa_type_of_stub (input_sec, rel, hash, destination)
+     asection *input_sec;
+     const Elf_Internal_Rela *rel;
+     struct elf32_hppa_link_hash_entry *hash;
+     bfd_vma destination;
 {
   bfd_vma location;
   bfd_vma branch_offset;
@@ -645,7 +777,9 @@
 #endif
 
 static bfd_boolean
-hppa_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+hppa_build_one_stub (gen_entry, in_arg)
+     struct bfd_hash_entry *gen_entry;
+     PTR in_arg;
 {
   struct elf32_hppa_stub_hash_entry *stub_entry;
   struct bfd_link_info *info;
@@ -661,7 +795,7 @@
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf32_hppa_stub_hash_entry *) gen_entry;
-  info = in_arg;
+  info = (struct bfd_link_info *) in_arg;
 
   htab = hppa_link_hash_table (info);
   stub_sec = stub_entry->stub_sec;
@@ -683,11 +817,11 @@
 		   + stub_entry->target_section->output_offset
 		   + stub_entry->target_section->output_section->vma);
 
-      val = hppa_field_adjust (sym_value, 0, e_lrsel);
+      val = hppa_field_adjust (sym_value, (bfd_signed_vma) 0, e_lrsel);
       insn = hppa_rebuild_insn ((int) LDIL_R1, val, 21);
       bfd_put_32 (stub_bfd, insn, loc);
 
-      val = hppa_field_adjust (sym_value, 0, e_rrsel) >> 2;
+      val = hppa_field_adjust (sym_value, (bfd_signed_vma) 0, e_rrsel) >> 2;
       insn = hppa_rebuild_insn ((int) BE_SR4_R1, val, 17);
       bfd_put_32 (stub_bfd, insn, loc + 4);
 
@@ -733,7 +867,7 @@
       if (stub_entry->stub_type == hppa_stub_import_shared)
 	insn = ADDIL_R19;
 #endif
-      val = hppa_field_adjust (sym_value, 0, e_lrsel),
+      val = hppa_field_adjust (sym_value, (bfd_signed_vma) 0, e_lrsel),
       insn = hppa_rebuild_insn ((int) insn, val, 21);
       bfd_put_32 (stub_bfd, insn, loc);
 
@@ -742,7 +876,7 @@
 	 lsel/rsel then with unfortunate sym_values we will round
 	 sym_value+4 up to the next 2k block leading to a mis-match
 	 between the lsel and rsel value.  */
-      val = hppa_field_adjust (sym_value, 0, e_rrsel);
+      val = hppa_field_adjust (sym_value, (bfd_signed_vma) 0, e_rrsel);
       insn = hppa_rebuild_insn ((int) LDW_R1_R21, val, 14);
       bfd_put_32 (stub_bfd, insn, loc + 4);
 
@@ -884,7 +1018,9 @@
    we know stub section sizes.  */
 
 static bfd_boolean
-hppa_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+hppa_size_one_stub (gen_entry, in_arg)
+     struct bfd_hash_entry *gen_entry;
+     PTR in_arg;
 {
   struct elf32_hppa_stub_hash_entry *stub_entry;
   struct elf32_hppa_link_hash_table *htab;
@@ -892,7 +1028,7 @@
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf32_hppa_stub_hash_entry *) gen_entry;
-  htab = in_arg;
+  htab = (struct elf32_hppa_link_hash_table *) in_arg;
 
   if (stub_entry->stub_type == hppa_stub_long_branch)
     size = 8;
@@ -916,7 +1052,8 @@
    Additionally we set the default architecture and machine.  */
 
 static bfd_boolean
-elf32_hppa_object_p (bfd *abfd)
+elf32_hppa_object_p (abfd)
+     bfd *abfd;
 {
   Elf_Internal_Ehdr * i_ehdrp;
   unsigned int flags;
@@ -924,10 +1061,7 @@
   i_ehdrp = elf_elfheader (abfd);
   if (strcmp (bfd_get_target (abfd), "elf32-hppa-linux") == 0)
     {
-      /* GCC on hppa-linux produces binaries with OSABI=Linux,
-	 but the kernel produces corefiles with OSABI=SysV.  */
-      if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_LINUX &&
-	  i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
+      if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_LINUX)
 	return FALSE;
     }
   else
@@ -951,11 +1085,30 @@
   return TRUE;
 }
 
+/* Undo the generic ELF code's subtraction of section->vma from the
+   value of each external symbol.  */
+
+static bfd_boolean
+elf32_hppa_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     struct bfd_link_info *info ATTRIBUTE_UNUSED;
+     const Elf_Internal_Sym *sym ATTRIBUTE_UNUSED;
+     const char **namep ATTRIBUTE_UNUSED;
+     flagword *flagsp ATTRIBUTE_UNUSED;
+     asection **secp;
+     bfd_vma *valp;
+{
+  *valp += (*secp)->vma;
+  return TRUE;
+}
+
 /* Create the .plt and .got sections, and set up our hash table
    short-cuts to various dynamic sections.  */
 
 static bfd_boolean
-elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
+elf32_hppa_create_dynamic_sections (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   struct elf32_hppa_link_hash_table *htab;
 
@@ -993,9 +1146,9 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-elf32_hppa_copy_indirect_symbol (const struct elf_backend_data *bed,
-				 struct elf_link_hash_entry *dir,
-				 struct elf_link_hash_entry *ind)
+elf32_hppa_copy_indirect_symbol (bed, dir, ind)
+     struct elf_backend_data *bed;
+     struct elf_link_hash_entry *dir, *ind;
 {
   struct elf32_hppa_link_hash_entry *edir, *eind;
 
@@ -1047,10 +1200,11 @@
    necessarily read all the input files.  */
 
 static bfd_boolean
-elf32_hppa_check_relocs (bfd *abfd,
-			 struct bfd_link_info *info,
-			 asection *sec,
-			 const Elf_Internal_Rela *relocs)
+elf32_hppa_check_relocs (abfd, info, sec, relocs)
+     bfd *abfd;
+     struct bfd_link_info *info;
+     asection *sec;
+     const Elf_Internal_Rela *relocs;
 {
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
@@ -1268,7 +1422,8 @@
 		     pointer.  */
 		  size = symtab_hdr->sh_info;
 		  size *= 2 * sizeof (bfd_signed_vma);
-		  local_got_refcounts = bfd_zalloc (abfd, size);
+		  local_got_refcounts = ((bfd_signed_vma *)
+					 bfd_zalloc (abfd, size));
 		  if (local_got_refcounts == NULL)
 		    return FALSE;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
@@ -1314,7 +1469,8 @@
 			 plt offsets.  */
 		      size = symtab_hdr->sh_info;
 		      size *= 2 * sizeof (bfd_signed_vma);
-		      local_got_refcounts = bfd_zalloc (abfd, size);
+		      local_got_refcounts = ((bfd_signed_vma *)
+					     bfd_zalloc (abfd, size));
 		      if (local_got_refcounts == NULL)
 			return FALSE;
 		      elf_local_got_refcounts (abfd) = local_got_refcounts;
@@ -1448,7 +1604,9 @@
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  p = bfd_alloc (htab->elf.dynobj, sizeof *p);
+		  p = ((struct elf32_hppa_dyn_reloc_entry *)
+		       bfd_alloc (htab->elf.dynobj,
+				  (bfd_size_type) sizeof *p));
 		  if (p == NULL)
 		    return FALSE;
 		  p->next = *head;
@@ -1476,11 +1634,12 @@
    for a given relocation.  */
 
 static asection *
-elf32_hppa_gc_mark_hook (asection *sec,
-			 struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			 Elf_Internal_Rela *rel,
-			 struct elf_link_hash_entry *h,
-			 Elf_Internal_Sym *sym)
+elf32_hppa_gc_mark_hook (sec, info, rel, h, sym)
+     asection *sec;
+     struct bfd_link_info *info ATTRIBUTE_UNUSED;
+     Elf_Internal_Rela *rel;
+     struct elf_link_hash_entry *h;
+     Elf_Internal_Sym *sym;
 {
   if (h != NULL)
     {
@@ -1515,10 +1674,11 @@
    removed.  */
 
 static bfd_boolean
-elf32_hppa_gc_sweep_hook (bfd *abfd,
-			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			  asection *sec,
-			  const Elf_Internal_Rela *relocs)
+elf32_hppa_gc_sweep_hook (abfd, info, sec, relocs)
+     bfd *abfd;
+     struct bfd_link_info *info ATTRIBUTE_UNUSED;
+     asection *sec;
+     const Elf_Internal_Rela *relocs;
 {
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
@@ -1617,9 +1777,10 @@
    plabels.  */
 
 static void
-elf32_hppa_hide_symbol (struct bfd_link_info *info,
-			struct elf_link_hash_entry *h,
-			bfd_boolean force_local)
+elf32_hppa_hide_symbol (info, h, force_local)
+     struct bfd_link_info *info;
+     struct elf_link_hash_entry *h;
+     bfd_boolean force_local;
 {
   if (force_local)
     {
@@ -1657,8 +1818,9 @@
    understand.  */
 
 static bfd_boolean
-elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
-				  struct elf_link_hash_entry *h)
+elf32_hppa_adjust_dynamic_symbol (info, h)
+     struct bfd_link_info *info;
+     struct elf_link_hash_entry *h;
 {
   struct elf32_hppa_link_hash_table *htab;
   struct elf32_hppa_link_hash_entry *eh;
@@ -1801,7 +1963,9 @@
    the first part of elf32_hppa_adjust_dynamic_symbol.  */
 
 static bfd_boolean
-mark_PIC_calls (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
+mark_PIC_calls (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf ATTRIBUTE_UNUSED;
 {
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1826,7 +1990,9 @@
    ie. pic_call and plabel entries.  */
 
 static bfd_boolean
-allocate_plt_static (struct elf_link_hash_entry *h, void *inf)
+allocate_plt_static (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf;
 {
   struct bfd_link_info *info;
   struct elf32_hppa_link_hash_table *htab;
@@ -1838,7 +2004,7 @@
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-  info = inf;
+  info = (struct bfd_link_info *) inf;
   htab = hppa_link_hash_table (info);
   if (((struct elf32_hppa_link_hash_entry *) h)->pic_call)
     {
@@ -1898,7 +2064,9 @@
    global syms.  */
 
 static bfd_boolean
-allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
+allocate_dynrelocs (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf;
 {
   struct bfd_link_info *info;
   struct elf32_hppa_link_hash_table *htab;
@@ -1912,7 +2080,7 @@
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-  info = inf;
+  info = (struct bfd_link_info *) inf;
   htab = hppa_link_hash_table (info);
   if (htab->elf.dynamic_sections_created
       && h->plt.offset != (bfd_vma) -1
@@ -2037,8 +2205,9 @@
    elf_adjust_dynamic_symbol.  */
 
 static bfd_boolean
-clobber_millicode_symbols (struct elf_link_hash_entry *h,
-			   struct bfd_link_info *info)
+clobber_millicode_symbols (h, info)
+     struct elf_link_hash_entry *h;
+     struct bfd_link_info *info;
 {
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -2054,7 +2223,9 @@
 /* Find any dynamic relocs that apply to read-only sections.  */
 
 static bfd_boolean
-readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf)
+readonly_dynrelocs (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf;
 {
   struct elf32_hppa_link_hash_entry *eh;
   struct elf32_hppa_dyn_reloc_entry *p;
@@ -2069,7 +2240,7 @@
 
       if (s != NULL && (s->flags & SEC_READONLY) != 0)
 	{
-	  struct bfd_link_info *info = inf;
+	  struct bfd_link_info *info = (struct bfd_link_info *) inf;
 
 	  info->flags |= DF_TEXTREL;
 
@@ -2083,8 +2254,9 @@
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
-elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+elf32_hppa_size_dynamic_sections (output_bfd, info)
+     bfd *output_bfd ATTRIBUTE_UNUSED;
+     struct bfd_link_info *info;
 {
   struct elf32_hppa_link_hash_table *htab;
   bfd *dynobj;
@@ -2120,7 +2292,7 @@
 	 PIC, and mark them as needing .plt entries so that %r19 will
 	 be set up.  */
       if (! info->shared)
-	elf_link_hash_traverse (&htab->elf, mark_PIC_calls, info);
+	elf_link_hash_traverse (&htab->elf, mark_PIC_calls, (PTR) info);
     }
 
   /* Set up .got and .plt offsets for local syms, and space for local
@@ -2217,11 +2389,11 @@
   /* Do all the .plt entries without relocs first.  The dynamic linker
      uses the last .plt reloc to find the end of the .plt (and hence
      the start of the .got) for lazy linking.  */
-  elf_link_hash_traverse (&htab->elf, allocate_plt_static, info);
+  elf_link_hash_traverse (&htab->elf, allocate_plt_static, (PTR) info);
 
   /* Allocate global sym .plt and .got entries, and space for global
      sym dynamic relocs.  */
-  elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
+  elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info);
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
@@ -2288,7 +2460,7 @@
 
       /* Allocate memory for the section contents.  Zero it, because
 	 we may not fill in all the reloc sections.  */
-      s->contents = bfd_zalloc (dynobj, s->_raw_size);
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
       if (s->contents == NULL && s->_raw_size != 0)
 	return FALSE;
     }
@@ -2334,7 +2506,8 @@
 	  /* If any dynamic relocs apply to a read-only section,
 	     then we need a DT_TEXTREL entry.  */
 	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, info);
+	    elf_link_hash_traverse (&htab->elf, readonly_dynrelocs,
+				    (PTR) info);
 
 	  if ((info->flags & DF_TEXTREL) != 0)
 	    {
@@ -2355,7 +2528,9 @@
    0 when no stubs will be needed, and 1 on success.  */
 
 int
-elf32_hppa_setup_section_lists (bfd *output_bfd, struct bfd_link_info *info)
+elf32_hppa_setup_section_lists (output_bfd, info)
+     bfd *output_bfd;
+     struct bfd_link_info *info;
 {
   bfd *input_bfd;
   unsigned int bfd_count;
@@ -2385,7 +2560,7 @@
   htab->bfd_count = bfd_count;
 
   amt = sizeof (struct map_stub) * (top_id + 1);
-  htab->stub_group = bfd_zmalloc (amt);
+  htab->stub_group = (struct map_stub *) bfd_zmalloc (amt);
   if (htab->stub_group == NULL)
     return -1;
 
@@ -2402,7 +2577,7 @@
 
   htab->top_index = top_index;
   amt = sizeof (asection *) * (top_index + 1);
-  input_list = bfd_malloc (amt);
+  input_list = (asection **) bfd_malloc (amt);
   htab->input_list = input_list;
   if (input_list == NULL)
     return -1;
@@ -2431,7 +2606,9 @@
    we may insert linker stubs.  */
 
 void
-elf32_hppa_next_input_section (struct bfd_link_info *info, asection *isec)
+elf32_hppa_next_input_section (info, isec)
+     struct bfd_link_info *info;
+     asection *isec;
 {
   struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info);
 
@@ -2458,9 +2635,10 @@
    the middle of a function is not a good idea.  */
 
 static void
-group_sections (struct elf32_hppa_link_hash_table *htab,
-		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_before_branch)
+group_sections (htab, stub_group_size, stubs_always_before_branch)
+     struct elf32_hppa_link_hash_table *htab;
+     bfd_size_type stub_group_size;
+     bfd_boolean stubs_always_before_branch;
 {
   asection **list = htab->input_list + htab->top_index;
   do
@@ -2538,7 +2716,10 @@
    Returns -1 on error, 1 if export stubs created, 0 otherwise.  */
 
 static int
-get_local_syms (bfd *output_bfd, bfd *input_bfd, struct bfd_link_info *info)
+get_local_syms (output_bfd, input_bfd, info)
+     bfd *output_bfd;
+     bfd *input_bfd;
+     struct bfd_link_info *info;
 {
   unsigned int bfd_indx;
   Elf_Internal_Sym *local_syms, **all_local_syms;
@@ -2549,7 +2730,7 @@
      we need to read in the local symbols in parallel and save them for
      later use; so hold pointers to the local symbols in an array.  */
   bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
-  all_local_syms = bfd_zmalloc (amt);
+  all_local_syms = (Elf_Internal_Sym **) bfd_zmalloc (amt);
   htab->all_local_syms = all_local_syms;
   if (all_local_syms == NULL)
     return -1;
@@ -2663,11 +2844,15 @@
    instruction.  */
 
 bfd_boolean
-elf32_hppa_size_stubs
-  (bfd *output_bfd, bfd *stub_bfd, struct bfd_link_info *info,
-   bfd_boolean multi_subspace, bfd_signed_vma group_size,
-   asection * (*add_stub_section) (const char *, asection *),
-   void (*layout_sections_again) (void))
+elf32_hppa_size_stubs (output_bfd, stub_bfd, info, multi_subspace, group_size,
+		       add_stub_section, layout_sections_again)
+     bfd *output_bfd;
+     bfd *stub_bfd;
+     struct bfd_link_info *info;
+     bfd_boolean multi_subspace;
+     bfd_signed_vma group_size;
+     asection * (*add_stub_section) PARAMS ((const char *, asection *));
+     void (*layout_sections_again) PARAMS ((void));
 {
   bfd_size_type stub_group_size;
   bfd_boolean stubs_always_before_branch;
@@ -2765,7 +2950,8 @@
 
 	      /* Get the relocs.  */
 	      internal_relocs
-		= _bfd_elf_link_read_relocs (input_bfd, section, NULL, NULL,
+		= _bfd_elf_link_read_relocs (input_bfd, section, NULL,
+					     (Elf_Internal_Rela *) NULL,
 					     info->keep_memory);
 	      if (internal_relocs == NULL)
 		goto error_ret_free_local;
@@ -2856,7 +3042,7 @@
 		      else if (hash->elf.root.type == bfd_link_hash_undefined)
 			{
 			  if (! (info->shared
-				 && info->unresolved_syms_in_objects == RM_IGNORE
+				 && !info->no_undefined
 				 && (ELF_ST_VISIBILITY (hash->elf.other)
 				     == STV_DEFAULT)
 				 && hash->elf.type != STT_PARISC_MILLI))
@@ -2952,7 +3138,9 @@
    stubs to provide a value for __gp.  */
 
 bfd_boolean
-elf32_hppa_set_gp (bfd *abfd, struct bfd_link_info *info)
+elf32_hppa_set_gp (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   struct bfd_link_hash_entry *h;
   asection *sec = NULL;
@@ -3046,7 +3234,8 @@
    linker.  */
 
 bfd_boolean
-elf32_hppa_build_stubs (struct bfd_link_info *info)
+elf32_hppa_build_stubs (info)
+     struct bfd_link_info *info;
 {
   asection *stub_sec;
   struct bfd_hash_table *table;
@@ -3062,7 +3251,7 @@
 
       /* Allocate memory to hold the linker stubs.  */
       size = stub_sec->_raw_size;
-      stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
+      stub_sec->contents = (unsigned char *) bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
 	return FALSE;
       stub_sec->_raw_size = 0;
@@ -3078,7 +3267,9 @@
 /* Perform a final link.  */
 
 static bfd_boolean
-elf32_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
+elf32_hppa_final_link (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
 {
   /* Invoke the regular ELF linker to do all the work.  */
   if (!bfd_elf32_bfd_final_link (abfd, info))
@@ -3092,9 +3283,10 @@
 /* Record the lowest address for the data and text segments.  */
 
 static void
-hppa_record_segment_addr (bfd *abfd ATTRIBUTE_UNUSED,
-			  asection *section,
-			  void *data)
+hppa_record_segment_addr (abfd, section, data)
+     bfd *abfd ATTRIBUTE_UNUSED;
+     asection *section;
+     PTR data;
 {
   struct elf32_hppa_link_hash_table *htab;
 
@@ -3120,13 +3312,14 @@
 /* Perform a relocation as part of a final link.  */
 
 static bfd_reloc_status_type
-final_link_relocate (asection *input_section,
-		     bfd_byte *contents,
-		     const Elf_Internal_Rela *rel,
-		     bfd_vma value,
-		     struct elf32_hppa_link_hash_table *htab,
-		     asection *sym_sec,
-		     struct elf32_hppa_link_hash_entry *h)
+final_link_relocate (input_section, contents, rel, value, htab, sym_sec, h)
+     asection *input_section;
+     bfd_byte *contents;
+     const Elf_Internal_Rela *rel;
+     bfd_vma value;
+     struct elf32_hppa_link_hash_table *htab;
+     asection *sym_sec;
+     struct elf32_hppa_link_hash_entry *h;
 {
   int insn;
   unsigned int r_type = ELF32_R_TYPE (rel->r_info);
@@ -3383,14 +3576,16 @@
 /* Relocate an HPPA ELF section.  */
 
 static bfd_boolean
-elf32_hppa_relocate_section (bfd *output_bfd,
-			     struct bfd_link_info *info,
-			     bfd *input_bfd,
-			     asection *input_section,
-			     bfd_byte *contents,
-			     Elf_Internal_Rela *relocs,
-			     Elf_Internal_Sym *local_syms,
-			     asection **local_sections)
+elf32_hppa_relocate_section (output_bfd, info, input_bfd, input_section,
+			     contents, relocs, local_syms, local_sections)
+     bfd *output_bfd;
+     struct bfd_link_info *info;
+     bfd *input_bfd;
+     asection *input_section;
+     bfd_byte *contents;
+     Elf_Internal_Rela *relocs;
+     Elf_Internal_Sym *local_syms;
+     asection **local_sections;
 {
   bfd_vma *local_got_offsets;
   struct elf32_hppa_link_hash_table *htab;
@@ -3447,33 +3642,43 @@
 	}
       else
 	{
-	  struct elf_link_hash_entry *hh;
-	  bfd_boolean unresolved_reloc;
+	  int indx;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (hh, elf_sym_hashes (input_bfd), r_symndx, symtab_hdr,
-				   relocation, sym_sec, unresolved_reloc, info,
-				   warned_undef);
+	  /* It's a global; Find its entry in the link hash.  */
+	  indx = r_symndx - symtab_hdr->sh_info;
+	  h = ((struct elf32_hppa_link_hash_entry *)
+	       elf_sym_hashes (input_bfd)[indx]);
+	  while (h->elf.root.type == bfd_link_hash_indirect
+		 || h->elf.root.type == bfd_link_hash_warning)
+	    h = (struct elf32_hppa_link_hash_entry *) h->elf.root.u.i.link;
 
-	  if (relocation == 0
-	      && hh->root.type != bfd_link_hash_defined
-	      && hh->root.type != bfd_link_hash_defweak
-	      && hh->root.type != bfd_link_hash_undefweak)
-	    {  
-	      if (!info->executable
-		  && info->unresolved_syms_in_objects == RM_IGNORE
-		  && ELF_ST_VISIBILITY (hh->other) == STV_DEFAULT
-		  && hh->type == STT_PARISC_MILLI)
-		{
-		  if (! info->callbacks->undefined_symbol
-		      (info, hh->root.root.string, input_bfd,
-		       input_section, rel->r_offset,
-		       ((info->shared && info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)
-			|| (!info->shared && info->unresolved_syms_in_objects == RM_GENERATE_ERROR))))
-		    return FALSE;
-		  warned_undef = TRUE;
-		}
+	  relocation = 0;
+	  if (h->elf.root.type == bfd_link_hash_defined
+	      || h->elf.root.type == bfd_link_hash_defweak)
+	    {
+	      sym_sec = h->elf.root.u.def.section;
+	      /* If sym_sec->output_section is NULL, then it's a
+		 symbol defined in a shared library.  */
+	      if (sym_sec->output_section != NULL)
+		relocation = (h->elf.root.u.def.value
+			      + sym_sec->output_offset
+			      + sym_sec->output_section->vma);
 	    }
-	  h = (struct elf32_hppa_link_hash_entry *) hh;
+	  else if (h->elf.root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (info->shared
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->elf.other) == STV_DEFAULT
+		   && h->elf.type != STT_PARISC_MILLI)
+	    ;
+	  else
+	    {
+	      if (!((*info->callbacks->undefined_symbol)
+		    (info, h->elf.root.root.string, input_bfd,
+		     input_section, rel->r_offset, TRUE)))
+		return FALSE;
+	      warned_undef = TRUE;
+	    }
 	}
 
       /* Do any required modifications to the relocation value, and
@@ -3844,8 +4049,8 @@
       else
 	{
 	  if (!((*info->callbacks->reloc_overflow)
-		(info, sym_name, howto->name, 0, input_bfd, input_section,
-		 rel->r_offset)))
+		(info, sym_name, howto->name, (bfd_vma) 0,
+		 input_bfd, input_section, rel->r_offset)))
 	    return FALSE;
 	}
     }
@@ -3857,10 +4062,11 @@
    dynamic sections here.  */
 
 static bfd_boolean
-elf32_hppa_finish_dynamic_symbol (bfd *output_bfd,
-				  struct bfd_link_info *info,
-				  struct elf_link_hash_entry *h,
-				  Elf_Internal_Sym *sym)
+elf32_hppa_finish_dynamic_symbol (output_bfd, info, h, sym)
+     bfd *output_bfd;
+     struct bfd_link_info *info;
+     struct elf_link_hash_entry *h;
+     Elf_Internal_Sym *sym;
 {
   struct elf32_hppa_link_hash_table *htab;
 
@@ -3965,7 +4171,8 @@
 	{
 	  if ((h->got.offset & 1) != 0)
 	    abort ();
-	  bfd_put_32 (output_bfd, 0, htab->sgot->contents + h->got.offset);
+	  bfd_put_32 (output_bfd, (bfd_vma) 0,
+		      htab->sgot->contents + h->got.offset);
 	  rel.r_info = ELF32_R_INFO (h->dynindx, R_PARISC_DIR32);
 	  rel.r_addend = 0;
 	}
@@ -4014,7 +4221,8 @@
    dynamic linker, before writing them out.  */
 
 static enum elf_reloc_type_class
-elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
+elf32_hppa_reloc_type_class (rela)
+     const Elf_Internal_Rela *rela;
 {
   if (ELF32_R_SYM (rela->r_info) == 0)
     return reloc_class_relative;
@@ -4033,8 +4241,9 @@
 /* Finish up the dynamic sections.  */
 
 static bfd_boolean
-elf32_hppa_finish_dynamic_sections (bfd *output_bfd,
-				    struct bfd_link_info *info)
+elf32_hppa_finish_dynamic_sections (output_bfd, info)
+     bfd *output_bfd;
+     struct bfd_link_info *info;
 {
   bfd *dynobj;
   struct elf32_hppa_link_hash_table *htab;
@@ -4112,7 +4321,9 @@
       /* Fill in the first entry in the global offset table.
 	 We use it to point to our dynamic section, if we have one.  */
       bfd_put_32 (output_bfd,
-		  sdyn ? sdyn->output_section->vma + sdyn->output_offset : 0,
+		  (sdyn != NULL
+		   ? sdyn->output_section->vma + sdyn->output_offset
+		   : (bfd_vma) 0),
 		  htab->sgot->contents);
 
       /* The second entry is reserved for use by the dynamic linker.  */
@@ -4155,8 +4366,9 @@
 /* Tweak the OSABI field of the elf header.  */
 
 static void
-elf32_hppa_post_process_headers (bfd *abfd,
-				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
+elf32_hppa_post_process_headers (abfd, link_info)
+     bfd *abfd;
+     struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
 {
   Elf_Internal_Ehdr * i_ehdrp;
 
@@ -4175,7 +4387,9 @@
 /* Called when writing out an object file to decide the type of a
    symbol.  */
 static int
-elf32_hppa_elf_get_symbol_type (Elf_Internal_Sym *elf_sym, int type)
+elf32_hppa_elf_get_symbol_type (elf_sym, type)
+     Elf_Internal_Sym *elf_sym;
+     int type;
 {
   if (ELF_ST_TYPE (elf_sym->st_info) == STT_PARISC_MILLI)
     return STT_PARISC_MILLI;
@@ -4193,6 +4407,7 @@
 #define bfd_elf32_bfd_final_link	     elf32_hppa_final_link
 #define bfd_elf32_bfd_link_hash_table_create elf32_hppa_link_hash_table_create
 #define bfd_elf32_bfd_link_hash_table_free   elf32_hppa_link_hash_table_free
+#define elf_backend_add_symbol_hook	     elf32_hppa_add_symbol_hook
 #define elf_backend_adjust_dynamic_symbol    elf32_hppa_adjust_dynamic_symbol
 #define elf_backend_copy_indirect_symbol     elf32_hppa_copy_indirect_symbol
 #define elf_backend_check_relocs	     elf32_hppa_check_relocs
diff --git a/bfd/elf32-hppa.h b/bfd/elf32-hppa.h
index 000602e..7c8c687 100644
--- a/bfd/elf32-hppa.h
+++ b/bfd/elf32-hppa.h
@@ -5,7 +5,7 @@
    February 1994.
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2002, 2003 Free Software Foundation, Inc.
+   2002 Free Software Foundation, Inc.
 
    Written by:
 
@@ -37,26 +37,27 @@
 #include "elf/hppa.h"
 
 int elf32_hppa_setup_section_lists
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 
 void elf32_hppa_next_input_section
-  (struct bfd_link_info *, asection *);
+  PARAMS ((struct bfd_link_info *, asection *));
 
 bfd_boolean elf32_hppa_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_boolean, bfd_signed_vma,
-   asection * (*) (const char *, asection *), void (*) (void));
+  PARAMS ((bfd *, bfd *, struct bfd_link_info *, bfd_boolean, bfd_signed_vma,
+	   asection * (*) PARAMS ((const char *, asection *)),
+	   void (*) PARAMS ((void))));
 
 bfd_boolean elf32_hppa_set_gp
-  (bfd *, struct bfd_link_info *);
+  PARAMS ((bfd *, struct bfd_link_info *));
 
 bfd_boolean elf32_hppa_build_stubs
-  (struct bfd_link_info *);
+  PARAMS ((struct bfd_link_info *));
 
 elf_hppa_reloc_type elf32_hppa_reloc_final_type
-  (bfd *, elf_hppa_reloc_type, int, unsigned int);
+  PARAMS ((bfd *, elf_hppa_reloc_type, int, unsigned int));
 
 extern elf_hppa_reloc_type ** _bfd_elf32_hppa_gen_reloc_type
-  (bfd *, elf_hppa_reloc_type, int, unsigned int, int, asymbol *);
+  PARAMS ((bfd *, elf_hppa_reloc_type, int, unsigned int, int, asymbol *));
 
 /* Define groups of basic relocations.  FIXME:  These should
    be the only basic relocations created by GAS.  The rest
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 11fadab..60bccb8 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -711,7 +711,7 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-elf_i386_copy_indirect_symbol (const struct elf_backend_data *bed,
+elf_i386_copy_indirect_symbol (struct elf_backend_data *bed,
 			       struct elf_link_hash_entry *dir,
 			       struct elf_link_hash_entry *ind)
 {
@@ -2154,9 +2154,42 @@
 	}
       else
 	{
-	  bfd_boolean warned;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx, symtab_hdr, relocation, sec, unresolved_reloc, info, warned);
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		/* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-ip2k.c b/bfd/elf32-ip2k.c
index e8cb177..4cb28bb 100644
--- a/bfd/elf32-ip2k.c
+++ b/bfd/elf32-ip2k.c
@@ -1532,12 +1532,33 @@
 	}
       else
 	{
-	  bfd_boolean warned;
-	  bfd_boolean unresolved_reloc;
+	  h = sym_hashes [r_symndx - symtab_hdr->sh_info];
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx, symtab_hdr, relocation, sec, unresolved_reloc, info, warned);
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
 	  name = h->root.root.string;
+
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      relocation = h->root.u.def.value + BASEADDR (sec);
+	    }
+
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		     (! info->shared || info->no_undefined))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       /* Finally, the sole IP2K-specific part.  */
diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c
index f85ffac..e2a3b17 100644
--- a/bfd/elf32-iq2000.c
+++ b/bfd/elf32-iq2000.c
@@ -618,14 +618,48 @@
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned;
-
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation,
-				   sec, unresolved_reloc, info, warned);
+	  h = sym_hashes [r_symndx];
+	  
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
 	  name = h->root.root.string;
+	  
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      relocation = (h->root.u.def.value
+			    + sec->output_section->vma
+			    + sec->output_offset);
+#ifdef DEBUG
+	      fprintf (stderr,
+		       "defined: sec: %s, name: %s, value: %x + %x + %x gives: %x\n",
+		       sec->name, name, h->root.u.def.value,
+		       sec->output_section->vma, sec->output_offset, relocation);
+#endif
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    {
+#ifdef DEBUG
+	      fprintf (stderr, "undefined: sec: %s, name: %s\n",
+		       sec->name, name);
+#endif
+	      relocation = 0;
+	    }
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined))))
+		return FALSE;
+#ifdef DEBUG
+	      fprintf (stderr, "unknown: name: %s\n", name);
+#endif
+	      relocation = 0;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-m68hc1x.c b/bfd/elf32-m68hc1x.c
index b31fc7b..7733f05 100644
--- a/bfd/elf32-m68hc1x.c
+++ b/bfd/elf32-m68hc1x.c
@@ -1119,7 +1119,7 @@
   Elf_Internal_Rela *rel, *relend;
   const char *name;
   struct m68hc11_page_info *pinfo;
-  const struct elf_backend_data * const ebd = get_elf_backend_data (input_bfd);
+  struct elf_backend_data * const ebd = get_elf_backend_data (input_bfd);
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 7688bfd..1320429 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -1398,7 +1398,6 @@
       sym = NULL;
       sec = NULL;
       unresolved_reloc = FALSE;
-
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -1407,9 +1406,42 @@
 	}
       else
 	{
-	  bfd_boolean warned;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx, symtab_hdr, relocation, sec, unresolved_reloc, info, warned);
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		/* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (info->shared
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (!(info->callbacks->undefined_symbol
+		    (info, h->root.root.string, input_bfd,
+		     input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined
+		      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c
index b09ef87..23f5069 100644
--- a/bfd/elf32-msp430.c
+++ b/bfd/elf32-msp430.c
@@ -550,6 +550,10 @@
   switch (bfd_get_mach (abfd))
     {
     default:
+    case bfd_mach_msp12:
+      val = E_MSP430_MACH_MSP430x12;
+      break;
+
     case bfd_mach_msp110:
       val = E_MSP430_MACH_MSP430x11x1;
       break;
@@ -558,10 +562,6 @@
       val = E_MSP430_MACH_MSP430x11;
       break;
 
-    case bfd_mach_msp12:
-      val = E_MSP430_MACH_MSP430x12;
-      break;
-
     case bfd_mach_msp13:
       val = E_MSP430_MACH_MSP430x13;
       break;
@@ -570,12 +570,16 @@
       val = E_MSP430_MACH_MSP430x14;
       break;
 
-    case bfd_mach_msp15:
-      val = E_MSP430_MACH_MSP430x15;
+    case bfd_mach_msp41:
+      val = E_MSP430_MACH_MSP430x41;
       break;
 
-    case bfd_mach_msp16:
-      val = E_MSP430_MACH_MSP430x16;
+    case bfd_mach_msp43:
+      val = E_MSP430_MACH_MSP430x43;
+      break;
+
+    case bfd_mach_msp44:
+      val = E_MSP430_MACH_MSP430x44;
       break;
 
     case bfd_mach_msp31:
@@ -590,20 +594,12 @@
       val = E_MSP430_MACH_MSP430x33;
       break;
 
-    case bfd_mach_msp41:
-      val = E_MSP430_MACH_MSP430x41;
+    case bfd_mach_msp15:
+      val = E_MSP430_MACH_MSP430x15;
       break;
 
-    case bfd_mach_msp42:
-      val = E_MSP430_MACH_MSP430x42;
-      break;
-
-    case bfd_mach_msp43:
-      val = E_MSP430_MACH_MSP430x43;
-      break;
-
-    case bfd_mach_msp44:
-      val = E_MSP430_MACH_MSP430x44;
+    case bfd_mach_msp16:
+      val = E_MSP430_MACH_MSP430x16;
       break;
     }
 
@@ -628,6 +624,10 @@
       switch (e_mach)
 	{
 	default:
+	case E_MSP430_MACH_MSP430x12:
+	  e_set = bfd_mach_msp12;
+	  break;
+
 	case E_MSP430_MACH_MSP430x11:
 	  e_set = bfd_mach_msp11;
 	  break;
@@ -636,10 +636,6 @@
 	  e_set = bfd_mach_msp110;
 	  break;
 
-	case E_MSP430_MACH_MSP430x12:
-	  e_set = bfd_mach_msp12;
-	  break;
-
 	case E_MSP430_MACH_MSP430x13:
 	  e_set = bfd_mach_msp13;
 	  break;
@@ -648,12 +644,8 @@
 	  e_set = bfd_mach_msp14;
 	  break;
 
-	case E_MSP430_MACH_MSP430x15:
-	  e_set = bfd_mach_msp15;
-	  break;
-
-	case E_MSP430_MACH_MSP430x16:
-	  e_set = bfd_mach_msp16;
+	case E_MSP430_MACH_MSP430x41:
+	  e_set = bfd_mach_msp41;
 	  break;
 
 	case E_MSP430_MACH_MSP430x31:
@@ -668,14 +660,6 @@
 	  e_set = bfd_mach_msp33;
 	  break;
 
-	case E_MSP430_MACH_MSP430x41:
-	  e_set = bfd_mach_msp41;
-	  break;
-
-	case E_MSP430_MACH_MSP430x42:
-	  e_set = bfd_mach_msp42;
-	  break;
-
 	case E_MSP430_MACH_MSP430x43:
 	  e_set = bfd_mach_msp43;
 	  break;
@@ -683,6 +667,14 @@
 	case E_MSP430_MACH_MSP430x44:
 	  e_set = bfd_mach_msp44;
 	  break;
+
+	case E_MSP430_MACH_MSP430x15:
+	  e_set = bfd_mach_msp15;
+	  break;
+
+	case E_MSP430_MACH_MSP430x16:
+	  e_set = bfd_mach_msp16;
+	  break;
 	}
     }
 
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 3bffc70..dff4126 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -285,7 +285,7 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-ppc_elf_copy_indirect_symbol (const struct elf_backend_data *bed,
+ppc_elf_copy_indirect_symbol (struct elf_backend_data *bed,
 			      struct elf_link_hash_entry *dir,
 			      struct elf_link_hash_entry *ind)
 {
@@ -2581,12 +2581,11 @@
 	      asection *srel = lsect->rel_section;
 	      Elf_Internal_Rela outrel[MAX_INT_RELS_PER_EXT_REL];
 	      bfd_byte *erel;
-	      const struct elf_backend_data *bed;
+	      struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
 	      unsigned int i;
 
 	      BFD_ASSERT (srel != NULL);
 
-	      bed = get_elf_backend_data (output_bfd);
 	      for (i = 0; i < bed->s->int_rels_per_ext_rel; i++)
 		{
 		  outrel[i].r_offset = (lsect->section->output_section->vma
@@ -4718,7 +4717,6 @@
       unresolved_reloc = FALSE;
       warned = FALSE;
       r_symndx = ELF32_R_SYM (rel->r_info);
-
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -4729,12 +4727,44 @@
 	}
       else
 	{
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
-	  
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 	  sym_name = h->root.root.string;
+
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      /* Set a flag that will be cleared later if we find a
+		 relocation value for this symbol.  output_section
+		 is typically NULL for symbols satisfied by a shared
+		 library.  */
+	      if (sec->output_section == NULL)
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd, input_section,
+		      rel->r_offset, (!info->shared
+				      || info->no_undefined
+				      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      warned = TRUE;
+	    }
 	}
 
       /* TLS optimizations.  Replace instruction sequences and relocs
@@ -5469,16 +5499,49 @@
 	      }
 	    else
 	      {
-		bfd_boolean warned;
-		bfd_boolean unresolved_reloc;
+		long indx;
 
-		RELOC_FOR_GLOBAL_SYMBOL (h, elf_sym_hashes (input_bfd),
-					 r_symndx, symtab_hdr,
-					 value, sym_sec,
-					 unresolved_reloc, info,
-					 warned);
-		if (warned)
-		  continue;
+		indx = r_symndx - symtab_hdr->sh_info;
+		h = elf_sym_hashes (input_bfd)[indx];
+		while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+		  h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+		value = 0;
+		if (h->root.type == bfd_link_hash_defined
+		    || h->root.type == bfd_link_hash_defweak)
+		  {
+		    sym_sec = h->root.u.def.section;
+
+		    /* Detect the cases that sym_sec->output_section is
+		       expected to be NULL -- all cases in which the symbol
+		       is defined in another shared module.  This includes
+		       PLT relocs for which we've created a PLT entry and
+		       other relocs for which we're prepared to create
+		       dynamic relocations.  */
+		    /* ??? Just accept it NULL and continue.  */
+
+		    if (sym_sec->output_section != NULL)
+		      {
+			value = (h->root.u.def.value
+				 + sym_sec->output_section->vma
+				 + sym_sec->output_offset);
+		      }
+		  }
+		else if (info->shared
+			 && !info->no_undefined
+			 && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+		  ;
+		else
+		  {
+		    if (! ((*info->callbacks->undefined_symbol)
+			   (info, h->root.root.string, input_bfd,
+			    input_section, rel->r_offset,
+			    (!info->shared || info->no_undefined
+			     || ELF_ST_VISIBILITY (h->other)))))
+		      return FALSE;
+		    continue;
+		  }
 	      }
 	    hit_addr = contents + rel->r_offset;
 	    value += rel->r_addend;
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 5b07ab0..1ce327f 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -40,7 +40,7 @@
 static bfd_boolean elf_s390_create_dynamic_sections
   PARAMS((bfd *, struct bfd_link_info *));
 static void elf_s390_copy_indirect_symbol
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	   struct elf_link_hash_entry *));
 static bfd_boolean elf_s390_check_relocs
   PARAMS ((bfd *, struct bfd_link_info *, asection *,
@@ -856,7 +856,7 @@
 
 static void
 elf_s390_copy_indirect_symbol (bed, dir, ind)
-     const struct elf_backend_data *bed;
+     struct elf_backend_data *bed;
      struct elf_link_hash_entry *dir, *ind;
 {
   struct elf_s390_link_hash_entry *edir, *eind;
@@ -2331,12 +2331,45 @@
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		{
+		  /* Set a flag that will be cleared later if we find a
+		     relocation value for this symbol.  output_section
+		     is typically NULL for symbols satisfied by a shared
+		     library.  */
+		  unresolved_reloc = TRUE;
+		  relocation = 0;
+		}
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 368bbca..5417865 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -57,7 +57,7 @@
   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
    bfd_boolean, asymbol **);
 static void sh_elf_copy_indirect_symbol
-  (const struct elf_backend_data *, struct elf_link_hash_entry *,
+  (struct elf_backend_data *, struct elf_link_hash_entry *,
    struct elf_link_hash_entry *);
 static int sh_elf_optimized_tls_reloc
   (struct bfd_link_info *, int, int);
@@ -3692,7 +3692,7 @@
   struct elf_sh_link_hash_table *htab;
   flagword flags, pltflags;
   register asection *s;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   int ptralign = 0;
 
   switch (bed->s->arch_size)
@@ -4663,8 +4663,6 @@
 	}
       else
 	{
-	  /* FIXME: Ought to make use of the RELOC_FOR_GLOBAL_SYMBOL macro.  */
-
 	  /* Section symbol are never (?) placed in the hash table, so
 	     we can just ignore hash relocations when creating a
 	     relocatable object file.  */
@@ -4766,18 +4764,17 @@
 	    }
 	  else if (h->root.type == bfd_link_hash_undefweak)
 	    relocation = 0;
-	  else if (! info->executable
-		   && info->unresolved_syms_in_objects == RM_IGNORE
+	  else if (info->shared
+		   && ! info->no_undefined
 		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
 	    relocation = 0;
 	  else
 	    {
-	      if (! info->callbacks->undefined_symbol
-		  (info, h->root.root.string, input_bfd,
-		   input_section, rel->r_offset,
-		   ((info->shared && info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)
-		    || (!info->shared && info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
-		    || ELF_ST_VISIBILITY (h->other))))
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
 		return FALSE;
 	      relocation = 0;
 	    }
@@ -6014,7 +6011,7 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-sh_elf_copy_indirect_symbol (const struct elf_backend_data *bed,
+sh_elf_copy_indirect_symbol (struct elf_backend_data *bed,
 			     struct elf_link_hash_entry *dir,
 			     struct elf_link_hash_entry *ind)
 {
diff --git a/bfd/elf32-sh64.c b/bfd/elf32-sh64.c
index 396fedf..2678548 100644
--- a/bfd/elf32-sh64.c
+++ b/bfd/elf32-sh64.c
@@ -410,7 +410,7 @@
 	{
 	  /* No previous datalabel symbol.  Make one.  */
 	  struct bfd_link_hash_entry *bh = NULL;
-	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+	  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
 	  if (! _bfd_generic_link_add_one_symbol (info, abfd, dl_name,
 						  flags, *secp, *valp,
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index 50d968e..c18edda 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -68,7 +68,7 @@
 static bfd_boolean elf32_sparc_create_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static void elf32_sparc_copy_indirect_symbol
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	  struct elf_link_hash_entry *));
 static int elf32_sparc_tls_transition
   PARAMS ((struct bfd_link_info *, bfd *, int, int));
@@ -750,7 +750,7 @@
 
 static void
 elf32_sparc_copy_indirect_symbol (bed, dir, ind)
-     const struct elf_backend_data *bed;
+     struct elf_backend_data *bed;
      struct elf_link_hash_entry *dir, *ind;
 {
   struct elf32_sparc_link_hash_entry *edir, *eind;
@@ -2186,12 +2186,42 @@
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		 /* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c
index 7d78e0f..3ad9747 100644
--- a/bfd/elf32-vax.c
+++ b/bfd/elf32-vax.c
@@ -1487,17 +1487,15 @@
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned;
-
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
-	   
-	  if ((h->root.type == bfd_link_hash_defined
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	  if (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak)
-	      && ((r_type == R_VAX_PLT32
+	    {
+	      sec = h->root.u.def.section;
+	      if ((r_type == R_VAX_PLT32
 		   && h->plt.offset != (bfd_vma) -1
 		   && elf_hash_table (info)->dynamic_sections_created)
 		  || (r_type == R_VAX_GOT32
@@ -1526,11 +1524,34 @@
 			  || r_type == R_VAX_32
 			  || r_type == R_VAX_PC8
 			  || r_type == R_VAX_PC16
-			  || r_type == R_VAX_PC32))))
-	    /* In these cases, we don't need the relocation
-	       value.  We check specially because in some
-	       obscure cases sec->output_section will be NULL.  */
+			  || r_type == R_VAX_PC32)))
+		{
+		  /* In these cases, we don't need the relocation
+		     value.  We check specially because in some
+		     obscure cases sec->output_section will be NULL.  */
+		  relocation = 0;
+		}
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
 	    relocation = 0;
+	  else if (info->shared
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (!(info->callbacks->undefined_symbol
+		    (info, h->root.root.string, input_bfd,
+		     input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined
+		      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index 251c332..3322c9e 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -48,7 +48,7 @@
 static void elf_xtensa_hide_symbol
   PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
 static void elf_xtensa_copy_indirect_symbol
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	   struct elf_link_hash_entry *));
 static asection *elf_xtensa_gc_mark_hook
   PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
@@ -799,7 +799,7 @@
 
 static void
 elf_xtensa_copy_indirect_symbol (bed, dir, ind)
-     const struct elf_backend_data *bed;
+     struct elf_backend_data *bed;
      struct elf_link_hash_entry *dir, *ind;
 {
   _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
@@ -2009,15 +2009,45 @@
 	}
       else
 	{
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
-	  if (relocation == 0
-	      && !unresolved_reloc
-	      && h->root.type == bfd_link_hash_undefweak)
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+
+	      if (sec->output_section == NULL)
+		/* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
 	    is_weak_undef = TRUE;
+	  else if (info->shared
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      warned = TRUE;
+	    }
 	}
 
       if (relaxing_section)
@@ -3545,7 +3575,6 @@
      const literal_value *src;
 {
   unsigned hash_val;
-
   if (r_reloc_is_const (&src->r_rel))
     return hash_bfd_vma (src->value);
 
@@ -3554,9 +3583,9 @@
   
   /* Now check for the same section and the same elf_hash.  */
   if (r_reloc_is_defined (&src->r_rel))
-    hash_val += hash_bfd_vma ((bfd_vma) (unsigned) r_reloc_get_section (&src->r_rel));
+    hash_val += hash_bfd_vma ((bfd_vma) r_reloc_get_section (&src->r_rel));
   else
-    hash_val += hash_bfd_vma ((bfd_vma) (unsigned) r_reloc_get_hash_entry (&src->r_rel));
+    hash_val += hash_bfd_vma ((bfd_vma) r_reloc_get_hash_entry (&src->r_rel));
 
   return hash_val;
 }
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 0b64bd3..1d35a6d 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -3074,7 +3074,7 @@
          this may help reduce memory usage and processing time later.  */
       maybe_dynamic = FALSE;
       if (h && ((info->shared
-		 && (!info->symbolic || info->unresolved_syms_in_shared_libs == RM_IGNORE))
+		 && (!info->symbolic || info->allow_shlib_undefined))
 		|| ! (h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
 		|| h->root.root.type == bfd_link_hash_defweak))
         maybe_dynamic = TRUE;
@@ -4445,25 +4445,48 @@
 	}
       else
 	{
-	  bfd_boolean warned;
-	  bfd_boolean unresolved_reloc;
-	  struct elf_link_hash_entry *hh;
-	  
-	  RELOC_FOR_GLOBAL_SYMBOL (hh,
-				   (struct elf_link_hash_entry *) alpha_elf_sym_hashes (input_bfd),
-				   r_symndx, symtab_hdr, value,
-				   sec, unresolved_reloc, info,
-				   warned);
+	  h = alpha_elf_sym_hashes (input_bfd)[r_symndx - symtab_hdr->sh_info];
 
-	  if (warned)
-	    continue;
+	  while (h->root.root.type == bfd_link_hash_indirect
+		 || h->root.root.type == bfd_link_hash_warning)
+	    h = (struct alpha_elf_link_hash_entry *)h->root.root.u.i.link;
 
-	  if (value == 0
-	      && ! unresolved_reloc
-	      && hh->root.type == bfd_link_hash_undefweak)
+	  value = 0;
+	  if (h->root.root.type == bfd_link_hash_defined
+	      || h->root.root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.root.u.def.section;
+
+	      /* Detect the cases that sym_sec->output_section is
+		 expected to be NULL -- all cases in which the symbol
+		 is defined in another shared module.  This includes
+		 PLT relocs for which we've created a PLT entry and
+		 other relocs for which we're prepared to create
+		 dynamic relocations.  */
+	      /* ??? Just accept it NULL and continue.  */
+
+	      if (sec->output_section != NULL)
+		value = (h->root.root.u.def.value
+			 + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.root.type == bfd_link_hash_undefweak)
 	    undef_weak_ref = TRUE;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (!((*info->callbacks->undefined_symbol)
+		    (info, h->root.root.root.string, input_bfd,
+		     input_section, rel->r_offset,
+		     (!info->shared || info->no_undefined
+		      || ELF_ST_VISIBILITY (h->root.other)))))
+		return FALSE;
+	      continue;
+	    }
 
-	  h = (struct alpha_elf_link_hash_entry *) hh;
           dynamic_symbol_p = alpha_elf_dynamic_symbol_p (&h->root, info);
 	  gotent = h->got_entries;
 	}
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
index 88403f5..f3398c1 100644
--- a/bfd/elf64-hppa.c
+++ b/bfd/elf64-hppa.c
@@ -380,10 +380,7 @@
   i_ehdrp = elf_elfheader (abfd);
   if (strcmp (bfd_get_target (abfd), "elf64-hppa-linux") == 0)
     {
-      /* GCC on hppa-linux produces binaries with OSABI=Linux,
-	 but the kernel produces corefiles with OSABI=SysV.  */
-      if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_LINUX &&
-	  i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
+      if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_LINUX)
 	return FALSE;
     }
   else
@@ -713,14 +710,13 @@
   relend = relocs + sec->reloc_count;
   for (rel = relocs; rel < relend; ++rel)
     {
-      enum
-	{
-	  NEED_DLT = 1,
-	  NEED_PLT = 2,
-	  NEED_STUB = 4,
-	  NEED_OPD = 8,
-	  NEED_DYNREL = 16,
-	};
+      enum {
+	NEED_DLT = 1,
+	NEED_PLT = 2,
+	NEED_STUB = 4,
+	NEED_OPD = 8,
+	NEED_DYNREL = 16,
+      };
 
       struct elf_link_hash_entry *h = NULL;
       unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
@@ -750,7 +746,7 @@
 	 this may help reduce memory usage and processing time later.  */
       maybe_dynamic = FALSE;
       if (h && ((info->shared
-		 && (!info->symbolic || info->unresolved_syms_in_shared_libs == RM_IGNORE))
+		    && (!info->symbolic || info->allow_shlib_undefined) )
 		|| ! (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
 		|| h->root.type == bfd_link_hash_defweak))
 	maybe_dynamic = TRUE;
diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c
index 3a874d8..bec1aca 100644
--- a/bfd/elf64-mips.c
+++ b/bfd/elf64-mips.c
@@ -2100,7 +2100,7 @@
 {
   arelent *tblptr;
   unsigned int i;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   if (! bed->s->slurp_reloc_table (abfd, section, symbols, FALSE))
     return -1;
@@ -2899,8 +2899,6 @@
 #define elf_backend_modify_segment_map	_bfd_mips_elf_modify_segment_map
 #define elf_backend_gc_mark_hook	_bfd_mips_elf_gc_mark_hook
 #define elf_backend_gc_sweep_hook	_bfd_mips_elf_gc_sweep_hook
-#define elf_backend_copy_indirect_symbol \
-					_bfd_mips_elf_copy_indirect_symbol
 #define elf_backend_hide_symbol		_bfd_mips_elf_hide_symbol
 #define elf_backend_ignore_discarded_relocs \
 					_bfd_mips_elf_ignore_discarded_relocs
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 2042e6a..50cb5d8 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -28,6 +28,7 @@
 #include "bfdlink.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
+#include "elf/ppc.h"
 #include "elf/ppc64.h"
 #include "elf64-ppc.h"
 
@@ -3035,7 +3036,7 @@
       stub_name = bfd_malloc (len);
       if (stub_name != NULL)
 	{
-	  sprintf (stub_name, "%08x.%s+%x",
+	  sprintf (stub_name, "%08x_%s+%x",
 		   input_section->id & 0xffffffff,
 		   h->elf.root.root.string,
 		   (int) rel->r_addend & 0xffffffff);
@@ -3047,7 +3048,7 @@
       stub_name = bfd_malloc (len);
       if (stub_name != NULL)
 	{
-	  sprintf (stub_name, "%08x.%x:%x+%x",
+	  sprintf (stub_name, "%08x_%x:%x+%x",
 		   input_section->id & 0xffffffff,
 		   sym_sec->id & 0xffffffff,
 		   (int) ELF64_R_SYM (rel->r_info) & 0xffffffff,
@@ -3276,10 +3277,9 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-ppc64_elf_copy_indirect_symbol
-  (const struct elf_backend_data *bed ATTRIBUTE_UNUSED,
-   struct elf_link_hash_entry *dir,
-   struct elf_link_hash_entry *ind)
+ppc64_elf_copy_indirect_symbol (struct elf_backend_data *bed ATTRIBUTE_UNUSED,
+				struct elf_link_hash_entry *dir,
+				struct elf_link_hash_entry *ind)
 {
   struct ppc_link_hash_entry *edir, *eind;
   flagword mask;
@@ -4583,17 +4583,7 @@
     }
 
   if (h->plt.plist != NULL)
-    {
-      /* We should never get here, but unfortunately there are versions
-	 of gcc out there that improperly (for this ABI) put initialized
-	 function pointers, vtable refs and suchlike in read-only
-	 sections.  Allow them to proceed, but warn that this might
-	 break at runtime.  */
-      (*_bfd_error_handler)
-	(_("copy reloc against `%s' requires lazy plt linking; "
-	   "avoid setting LD_BIND_NOW=1 or upgrade gcc"),
-	 h->root.root.string);
-    }
+    return TRUE;
 
   /* This is a reference to a symbol defined by a dynamic object which
      is not a function.  */
@@ -6106,6 +6096,8 @@
   struct ppc_branch_hash_entry *br_entry;
   struct bfd_link_info *info;
   struct ppc_link_hash_table *htab;
+  asection *stub_sec;
+  bfd *stub_bfd;
   bfd_byte *loc;
   bfd_byte *p;
   unsigned int indx;
@@ -6118,10 +6110,29 @@
   info = in_arg;
 
   htab = ppc_hash_table (info);
+  stub_sec = stub_entry->stub_sec;
 
   /* Make a note of the offset within the stubs for this entry.  */
-  stub_entry->stub_offset = stub_entry->stub_sec->_cooked_size;
-  loc = stub_entry->stub_sec->contents + stub_entry->stub_offset;
+  stub_entry->stub_offset = stub_sec->_cooked_size;
+  loc = stub_sec->contents + stub_entry->stub_offset;
+
+  if (htab->emit_stub_syms)
+    {
+      struct elf_link_hash_entry *h;
+      h = elf_link_hash_lookup (&htab->elf, stub_entry->root.string,
+				TRUE, FALSE, FALSE);
+      if (h == NULL)
+	return FALSE;
+      h->root.type = bfd_link_hash_defined;
+      h->root.u.def.section = stub_entry->stub_sec;
+      h->root.u.def.value = stub_entry->stub_offset;
+      h->elf_link_hash_flags = (ELF_LINK_HASH_REF_REGULAR
+				| ELF_LINK_HASH_DEF_REGULAR
+				| ELF_LINK_HASH_REF_REGULAR_NONWEAK
+				| ELF_LINK_FORCED_LOCAL);
+    }
+
+  stub_bfd = stub_sec->owner;
 
   htab->stub_count[stub_entry->stub_type - 1] += 1;
   switch (stub_entry->stub_type)
@@ -6135,8 +6146,8 @@
 
       /* And this is where we are coming from.  */
       off -= (stub_entry->stub_offset
-	      + stub_entry->stub_sec->output_offset
-	      + stub_entry->stub_sec->output_section->vma);
+	      + stub_sec->output_offset
+	      + stub_sec->output_section->vma);
 
       if (stub_entry->stub_type != ppc_stub_long_branch_r2off)
 	size = 4;
@@ -6146,16 +6157,16 @@
 
 	  r2off = (htab->stub_group[stub_entry->target_section->id].toc_off
 		   - htab->stub_group[stub_entry->id_sec->id].toc_off);
-	  bfd_put_32 (htab->stub_bfd, STD_R2_40R1, loc);
+	  bfd_put_32 (stub_bfd, STD_R2_40R1, loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, ADDIS_R2_R2 | PPC_HA (r2off), loc);
+	  bfd_put_32 (stub_bfd, ADDIS_R2_R2 | PPC_HA (r2off), loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc);
+	  bfd_put_32 (stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc);
 	  loc += 4;
 	  off -= 12;
 	  size = 16;
 	}
-      bfd_put_32 (htab->stub_bfd, B_DOT | (off & 0x3fffffc), loc);
+      bfd_put_32 (stub_bfd, B_DOT | (off & 0x3fffffc), loc);
 
       BFD_ASSERT (off + (1 << 25) < (bfd_vma) (1 << 26));
       break;
@@ -6216,9 +6227,9 @@
       indx = off;
       if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
 	{
-	  bfd_put_32 (htab->stub_bfd, ADDIS_R12_R2 | PPC_HA (indx), loc);
+	  bfd_put_32 (stub_bfd, ADDIS_R12_R2 | PPC_HA (indx), loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, LD_R11_0R12 | PPC_LO (indx), loc);
+	  bfd_put_32 (stub_bfd, LD_R11_0R12 | PPC_LO (indx), loc);
 	  size = 16;
 	}
       else
@@ -6227,21 +6238,21 @@
 
 	  r2off = (htab->stub_group[stub_entry->target_section->id].toc_off
 		   - htab->stub_group[stub_entry->id_sec->id].toc_off);
-	  bfd_put_32 (htab->stub_bfd, STD_R2_40R1, loc);
+	  bfd_put_32 (stub_bfd, STD_R2_40R1, loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, ADDIS_R12_R2 | PPC_HA (indx), loc);
+	  bfd_put_32 (stub_bfd, ADDIS_R12_R2 | PPC_HA (indx), loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, LD_R11_0R12 | PPC_LO (indx), loc);
+	  bfd_put_32 (stub_bfd, LD_R11_0R12 | PPC_LO (indx), loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, ADDIS_R2_R2 | PPC_HA (r2off), loc);
+	  bfd_put_32 (stub_bfd, ADDIS_R2_R2 | PPC_HA (r2off), loc);
 	  loc += 4;
-	  bfd_put_32 (htab->stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc);
+	  bfd_put_32 (stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc);
 	  size = 28;
 	}
       loc += 4;
-      bfd_put_32 (htab->stub_bfd, MTCTR_R11, loc);
+      bfd_put_32 (stub_bfd, MTCTR_R11, loc);
       loc += 4;
-      bfd_put_32 (htab->stub_bfd, BCTR, loc);
+      bfd_put_32 (stub_bfd, BCTR, loc);
       break;
 
     case ppc_stub_plt_call:
@@ -6288,7 +6299,7 @@
 	  return FALSE;
 	}
 
-      p = build_plt_stub (htab->stub_bfd, loc, off);
+      p = build_plt_stub (stub_bfd, loc, off);
       size = p - loc;
       break;
 
@@ -6297,31 +6308,7 @@
       return FALSE;
     }
 
-  stub_entry->stub_sec->_cooked_size += size;
-
-  if (htab->emit_stub_syms
-      && !(stub_entry->stub_type == ppc_stub_plt_call
-	   && stub_entry->h->oh->root.type == bfd_link_hash_defined
-	   && stub_entry->h->oh->root.u.def.section == stub_entry->stub_sec
-	   && stub_entry->h->oh->root.u.def.value == stub_entry->stub_offset))
-    {
-      struct elf_link_hash_entry *h;
-      h = elf_link_hash_lookup (&htab->elf, stub_entry->root.string,
-				TRUE, FALSE, FALSE);
-      if (h == NULL)
-	return FALSE;
-      if (h->root.type == bfd_link_hash_new)
-	{
-	  h->root.type = bfd_link_hash_defined;
-	  h->root.u.def.section = stub_entry->stub_sec;
-	  h->root.u.def.value = stub_entry->stub_offset;
-	  h->elf_link_hash_flags = (ELF_LINK_HASH_REF_REGULAR
-				    | ELF_LINK_HASH_DEF_REGULAR
-				    | ELF_LINK_HASH_REF_REGULAR_NONWEAK
-				    | ELF_LINK_FORCED_LOCAL);
-	}
-    }
-
+  stub_sec->_cooked_size += size;
   return TRUE;
 }
 
@@ -6607,8 +6594,7 @@
 
   /* If a code section has a function that uses the TOC then we need
      to use the right TOC (obviously).  Also, make sure that .opd gets
-     the correct TOC value for R_PPC64_TOC relocs that don't have or
-     can't find their function symbol (shouldn't ever happen now).  */
+     the correct TOC value.  */
   if (isec->has_gp_reloc || (isec->flags & SEC_CODE) == 0)
     {
       if (elf_gp (isec->owner) != 0)
@@ -7108,23 +7094,6 @@
 	  return FALSE;
 	}
 
-      if (htab->emit_stub_syms)
-	{
-	  struct elf_link_hash_entry *h;
-	  h = elf_link_hash_lookup (&htab->elf, "__glink", TRUE, FALSE, FALSE);
-	  if (h == NULL)
-	    return FALSE;
-	  if (h->root.type == bfd_link_hash_new)
-	    {
-	      h->root.type = bfd_link_hash_defined;
-	      h->root.u.def.section = htab->glink;
-	      h->root.u.def.value = 0;
-	      h->elf_link_hash_flags = (ELF_LINK_HASH_REF_REGULAR
-					| ELF_LINK_HASH_DEF_REGULAR
-					| ELF_LINK_HASH_REF_REGULAR_NONWEAK
-					| ELF_LINK_FORCED_LOCAL);
-	    }
-	}
       p = htab->glink->contents;
       bfd_put_32 (htab->glink->owner, MFCTR_R12, p);
       p += 4;
@@ -7327,16 +7296,6 @@
 
       r_type = ELF64_R_TYPE (rel->r_info);
       r_symndx = ELF64_R_SYM (rel->r_info);
-
-      /* For old style R_PPC64_TOC relocs with a zero symbol, use the
-	 symbol of the previous ADDR64 reloc.  The symbol gives us the
-	 proper TOC base to use.  */
-      if (rel->r_info == ELF64_R_INFO (0, R_PPC64_TOC)
-	  && rel != relocs
-	  && ELF64_R_TYPE (rel[-1].r_info) == R_PPC64_ADDR64
-	  && is_opd)
-	r_symndx = ELF64_R_SYM (rel[-1].r_info);
-
       sym = NULL;
       sec = NULL;
       h = NULL;
@@ -7362,11 +7321,44 @@
 	}
       else
 	{
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  /* It's a global symbol.  */
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 	  sym_name = h->root.root.string;
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		/* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd, input_section,
+		      rel->r_offset, (!info->shared
+				      || info->no_undefined
+				      || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      warned = TRUE;
+	    }
 	}
 
       /* TLS optimizations.  Replace instruction sequences and relocs
@@ -7765,13 +7757,6 @@
 		      if ((insn & 1) == 0)
 			can_plt_call = 1;
 		    }
-		  else if (h != NULL
-			   && strcmp (h->root.root.string,
-				      ".__libc_start_main") == 0)
-		    {
-		      /* Allow crt1 branch to go via a toc adjusting stub.  */
-		      can_plt_call = 1;
-		    }
 		  else
 		    {
 		      if (strcmp (input_section->output_section->name,
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index de712f7..62ef221 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -40,7 +40,7 @@
 static bfd_boolean elf_s390_create_dynamic_sections
   PARAMS((bfd *, struct bfd_link_info *));
 static void elf_s390_copy_indirect_symbol
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	   struct elf_link_hash_entry *));
 static bfd_boolean elf_s390_check_relocs
   PARAMS ((bfd *, struct bfd_link_info *, asection *,
@@ -809,7 +809,7 @@
 
 static void
 elf_s390_copy_indirect_symbol (bed, dir, ind)
-     const struct elf_backend_data *bed;
+     struct elf_backend_data *bed;
      struct elf_link_hash_entry *dir, *ind;
 {
   struct elf_s390_link_hash_entry *edir, *eind;
@@ -2301,12 +2301,45 @@
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		{
+		  /* Set a flag that will be cleared later if we find a
+		     relocation value for this symbol.  output_section
+		     is typically NULL for symbols satisfied by a shared
+		     library.  */
+		  unresolved_reloc = TRUE;
+		  relocation = 0;
+		}
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
 
       switch (r_type)
diff --git a/bfd/elf64-sh64.c b/bfd/elf64-sh64.c
index e0bc8df..905cadd 100644
--- a/bfd/elf64-sh64.c
+++ b/bfd/elf64-sh64.c
@@ -1610,8 +1610,6 @@
 	}
       else
 	{
-	  /* ??? Could we use the RELOC_FOR_GLOBAL_SYMBOL macro here ?  */
-
 	  /* Section symbols are never (?) placed in the hash table, so
 	     we can just ignore hash relocations when creating a
 	     relocatable object file.  */
@@ -1701,9 +1699,7 @@
 	    }
 	  else if (h->root.type == bfd_link_hash_undefweak)
 	    relocation = 0;
-	  else if (info->shared
-		   && !info->symbolic
-		   && info->unresolved_syms_in_objects == RM_IGNORE)
+	  else if (info->shared && !info->symbolic && !info->no_undefined)
 	    relocation = 0;
 	  else
 	    {
@@ -2921,7 +2917,7 @@
 	{
 	  /* No previous datalabel symbol.  Make one.  */
 	  struct bfd_link_hash_entry *bh = NULL;
-	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+	  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
 	  if (! _bfd_generic_link_add_one_symbol (info, abfd, dl_name,
 						  flags, *secp, *valp,
@@ -3242,7 +3238,7 @@
 {
   flagword flags, pltflags;
   register asection *s;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   int ptralign = 0;
 
   switch (bed->s->arch_size)
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index a74a7f3..13f6a55 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -518,7 +518,7 @@
 {
   arelent *tblptr;
   unsigned int i;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   if (! bed->s->slurp_reloc_table (abfd, section, symbols, FALSE))
     return -1;
@@ -2074,14 +2074,42 @@
 	}
       else
 	{
-	  bfd_boolean warned;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
-	  if (warned)
+	  relocation = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
 	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		/* Set a flag that will be cleared later if we find a
+		   relocation value for this symbol.  output_section
+		   is typically NULL for symbols satisfied by a shared
+		   library.  */
+		unresolved_reloc = TRUE;
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    ;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+
 	      /* To avoid generating warning messages about truncated
 		 relocations, set the relocation's address to be the same as
 		 the start of this section.  */
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 8aed498..09a072b 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -501,7 +501,7 @@
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
 
 static void
-elf64_x86_64_copy_indirect_symbol (const struct elf_backend_data *bed,
+elf64_x86_64_copy_indirect_symbol (struct elf_backend_data *bed,
 				   struct elf_link_hash_entry *dir,
 				   struct elf_link_hash_entry *ind)
 {
@@ -1827,12 +1827,45 @@
 	}
       else
 	{
-	  bfd_boolean warned;
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, sym_hashes, r_symndx,
-				   symtab_hdr, relocation, sec,
-				   unresolved_reloc, info,
-				   warned);
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sec = h->root.u.def.section;
+	      if (sec->output_section == NULL)
+		{
+		  /* Set a flag that will be cleared later if we find a
+		     relocation value for this symbol.  output_section
+		     is typically NULL for symbols satisfied by a shared
+		     library.  */
+		  unresolved_reloc = TRUE;
+		  relocation = 0;
+		}
+	      else
+		relocation = (h->root.u.def.value
+			      + sec->output_section->vma
+			      + sec->output_offset);
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
+	    relocation = 0;
+	  else if (!info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    relocation = 0;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      relocation = 0;
+	    }
 	}
       /* When generating a shared object, the relocations handled here are
 	 copied into the output file to be resolved at run time.  */
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index a627e48..601d208 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -492,7 +492,7 @@
   Elf_Internal_Shdr *i_shdrp;	/* Section header table, internal form */
   unsigned int shindex;
   char *shstrtab;		/* Internal copy of section header stringtab */
-  const struct elf_backend_data *ebd;
+  struct elf_backend_data *ebd;
   struct bfd_preserve preserve;
   asection *s;
   bfd_size_type amt;
@@ -591,11 +591,11 @@
 	 for which we do not have a specific backend.  */
       for (target_ptr = bfd_target_vector; *target_ptr != NULL; target_ptr++)
 	{
-	  const struct elf_backend_data *back;
+	  struct elf_backend_data *back;
 
 	  if ((*target_ptr)->flavour != bfd_target_elf_flavour)
 	    continue;
-	  back = (const struct elf_backend_data *) (*target_ptr)->backend_data;
+	  back = (struct elf_backend_data *) (*target_ptr)->backend_data;
 	  if (back->elf_machine_code == i_ehdrp->e_machine
 	      || (back->elf_machine_alt1 != 0
 		  && back->elf_machine_alt1 == i_ehdrp->e_machine)
@@ -818,7 +818,7 @@
   bfd_boolean *failedp = data;
   Elf_Internal_Shdr *rela_hdr;
   bfd_vma addr_offset;
-  void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
+  void (*swap_out) PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
   size_t extsize;
   bfd_byte *dst_rela;
   unsigned int idx;
@@ -1008,7 +1008,7 @@
   Elf_Internal_Sym *isymbuf = NULL;
   Elf_External_Versym *xver;
   Elf_External_Versym *xverbuf = NULL;
-  const struct elf_backend_data *ebd;
+  struct elf_backend_data *ebd;
   bfd_size_type amt;
 
   /* Read each raw ELF symbol, converting from external ELF form to
@@ -1238,7 +1238,7 @@
 				    asymbol **symbols,
 				    bfd_boolean dynamic)
 {
-  const struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
+  struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
   void *allocated = NULL;
   bfd_byte *native_relocs;
   arelent *relent;
diff --git a/bfd/elfcore.h b/bfd/elfcore.h
index 81c4cff..865edcd 100644
--- a/bfd/elfcore.h
+++ b/bfd/elfcore.h
@@ -76,7 +76,7 @@
   Elf_Internal_Ehdr *i_ehdrp;	/* Elf file header, internal form.  */
   Elf_Internal_Phdr *i_phdrp;	/* Elf program header, internal form.  */
   unsigned int phindex;
-  const struct elf_backend_data *ebd;
+  struct elf_backend_data *ebd;
   struct bfd_preserve preserve;
   bfd_size_type amt;
 
@@ -153,11 +153,11 @@
 
       for (target_ptr = bfd_target_vector; *target_ptr != NULL; target_ptr++)
 	{
-	  const struct elf_backend_data *back;
+	  struct elf_backend_data *back;
 
 	  if ((*target_ptr)->flavour != bfd_target_elf_flavour)
 	    continue;
-	  back = (const struct elf_backend_data *) (*target_ptr)->backend_data;
+	  back = (struct elf_backend_data *) (*target_ptr)->backend_data;
 	  if (back->elf_machine_code == i_ehdrp->e_machine
 	      || (back->elf_machine_alt1 != 0
 	          && i_ehdrp->e_machine == back->elf_machine_alt1)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index d53571d..cb6b0b2 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -32,7 +32,7 @@
   asection *s;
   struct elf_link_hash_entry *h;
   struct bfd_link_hash_entry *bh;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   int ptralign;
 
   /* This function may be called more than once.  */
@@ -115,7 +115,7 @@
   register asection *s;
   struct elf_link_hash_entry *h;
   struct bfd_link_hash_entry *bh;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   if (! is_elf_hash_table (info))
     return FALSE;
@@ -248,7 +248,7 @@
 {
   flagword flags, pltflags;
   asection *s;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
      .rel[a].bss sections.  */
@@ -309,7 +309,7 @@
 	 section into the .bss section of the final image.  */
       s = bfd_make_section (abfd, ".dynbss");
       if (s == NULL
-	  || ! bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED))
+	  || ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
 	return FALSE;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
@@ -1164,7 +1164,7 @@
       /* Handle the case where we had a versioned symbol in a dynamic
 	 library and now find a definition in a normal object.  In this
 	 case, we make the versioned symbol point to the normal one.  */
-      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      struct elf_backend_data *bed = get_elf_backend_data (abfd);
       flip->root.type = h->root.type;
       h->root.type = bfd_link_hash_indirect;
       h->root.u.i.link = (struct bfd_link_hash_entry *) flip;
@@ -1247,7 +1247,7 @@
   char *shortname;
   struct elf_link_hash_entry *hi;
   struct bfd_link_hash_entry *bh;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   bfd_boolean collect;
   bfd_boolean dynamic;
   char *p;
@@ -1621,7 +1621,7 @@
 {
   struct elf_assign_sym_version_info *sinfo;
   struct bfd_link_info *info;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   struct elf_info_failed eif;
   char *p;
   bfd_size_type amt;
@@ -1879,7 +1879,7 @@
 				   void *external_relocs,
 				   Elf_Internal_Rela *internal_relocs)
 {
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   void (*swap_in) (bfd *, const bfd_byte *, Elf_Internal_Rela *);
   const bfd_byte *erela;
   const bfd_byte *erelaend;
@@ -1943,7 +1943,7 @@
   Elf_Internal_Shdr *rel_hdr;
   void *alloc1 = NULL;
   Elf_Internal_Rela *alloc2 = NULL;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   if (elf_section_data (o)->relocs != NULL)
     return elf_section_data (o)->relocs;
@@ -2076,7 +2076,7 @@
   Elf_Internal_Shdr *output_rel_hdr;
   asection *output_section;
   unsigned int *rel_countp = NULL;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
 
   output_section = input_section->output_section;
@@ -2223,7 +2223,7 @@
 	  || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
       && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
     {
-      const struct elf_backend_data *bed;
+      struct elf_backend_data *bed;
       bfd_boolean force_local;
 
       bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
@@ -2238,7 +2238,7 @@
   if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
       && h->root.type == bfd_link_hash_undefweak)
     {
-      const struct elf_backend_data *bed;
+      struct elf_backend_data *bed;
       bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
       (*bed->elf_backend_hide_symbol) (eif->info, h, TRUE);
     }
@@ -2267,7 +2267,7 @@
 	h->weakdef = NULL;
       else
 	{
-	  const struct elf_backend_data *bed;
+	  struct elf_backend_data *bed;
 
 	  bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
 	  (*bed->elf_backend_copy_indirect_symbol) (bed, weakdef, h);
@@ -2286,7 +2286,7 @@
 {
   struct elf_info_failed *eif = data;
   bfd *dynobj;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   if (! is_elf_hash_table (eif->info))
     return FALSE;
diff --git a/bfd/elflink.h b/bfd/elflink.h
index d667993..c0b2468 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -415,7 +415,7 @@
   Elf_Internal_Sym *isymbuf = NULL;
   Elf_Internal_Sym *isym;
   Elf_Internal_Sym *isymend;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   bfd_boolean dt_needed;
   struct elf_link_hash_table * hash_table;
   bfd_size_type amt;
@@ -1888,7 +1888,7 @@
 {
   bfd_size_type soname_indx;
   bfd *dynobj;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   struct elf_assign_sym_version_info asvinfo;
 
   *sinterpptr = NULL;
@@ -2859,7 +2859,7 @@
 			struct elf_link_hash_entry **rel_hash)
 {
   unsigned int i;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   bfd_byte *erela;
   void (*swap_in) (bfd *, const bfd_byte *, Elf_Internal_Rela *);
   void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
@@ -2964,7 +2964,7 @@
   size_t i, ret, sort_elt, ext_size;
   bfd_byte *sort, *s_non_relative, *p;
   struct elf_link_sort_rela *sq;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   int i2e = bed->s->int_rels_per_ext_rel;
   void (*swap_in) (bfd *, const bfd_byte *, Elf_Internal_Rela *);
   void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
@@ -3096,7 +3096,7 @@
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Shdr *symtab_shndx_hdr;
   Elf_Internal_Shdr *symstrtab_hdr;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct elf_outext_info eoinfo;
   bfd_boolean merged;
   size_t relativecount = 0;
@@ -4363,19 +4363,24 @@
 	return TRUE;
     }
 
-  /* If we have an undefined symbol reference here then it must have
-     come from a shared library that is being linked in.  (Undefined
-     references in regular files have already been handled).  If we
-     are reporting errors for this situation then do so now.  */
-  if (h->root.type == bfd_link_hash_undefined
+  /* If we are not creating a shared library, and this symbol is
+     referenced by a shared library but is not defined anywhere, then
+     warn that it is undefined.  If we do not do this, the runtime
+     linker will complain that the symbol is undefined when the
+     program is run.  We don't have to worry about symbols that are
+     referenced by regular files, because we will already have issued
+     warnings for them.  */
+  if (! finfo->info->relocatable
+      && (finfo->info->executable
+	  || ! finfo->info->allow_shlib_undefined)
+      && h->root.type == bfd_link_hash_undefined
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0
       && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0
-      && ! elf_link_check_versioned_symbol (finfo->info, h)
-      && finfo->info->unresolved_syms_in_shared_libs != RM_IGNORE)
+      && ! elf_link_check_versioned_symbol (finfo->info, h))
     {
       if (! ((*finfo->info->callbacks->undefined_symbol)
 	     (finfo->info, h->root.root.string, h->root.u.undef.abfd,
-	      NULL, 0, finfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)))
+	      NULL, 0, TRUE)))
 	{
 	  eoinfo->failed = TRUE;
 	  return FALSE;
@@ -4385,9 +4390,10 @@
   /* We should also warn if a forced local symbol is referenced from
      shared libraries.  */
   if (! finfo->info->relocatable
-      && (! finfo->info->shared)
+      && (! finfo->info->shared || ! finfo->info->allow_shlib_undefined)
       && (h->elf_link_hash_flags
-	  & (ELF_LINK_FORCED_LOCAL | ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_DYNAMIC_DEF | ELF_LINK_DYNAMIC_WEAK))
+	  & (ELF_LINK_FORCED_LOCAL | ELF_LINK_HASH_REF_DYNAMIC
+	     | ELF_LINK_DYNAMIC_DEF | ELF_LINK_DYNAMIC_WEAK))
 	 == (ELF_LINK_FORCED_LOCAL | ELF_LINK_HASH_REF_DYNAMIC)
       && ! elf_link_check_versioned_symbol (finfo->info, h))
     {
@@ -4535,7 +4541,7 @@
 	  || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
       && elf_hash_table (finfo->info)->dynamic_sections_created)
     {
-      const struct elf_backend_data *bed;
+      struct elf_backend_data *bed;
 
       bed = get_elf_backend_data (finfo->output_bfd);
       if (! ((*bed->elf_backend_finish_dynamic_symbol)
@@ -4681,7 +4687,7 @@
   long *pindex;
   asection **ppsection;
   asection *o;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   bfd_boolean emit_relocs;
   struct elf_link_hash_entry **sym_hashes;
 
@@ -5315,7 +5321,7 @@
   bfd_vma addend;
   struct elf_link_hash_entry **rel_hash_ptr;
   Elf_Internal_Shdr *rel_hdr;
-  const struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
+  struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
   Elf_Internal_Rela irel[MAX_INT_RELS_PER_EXT_REL];
   bfd_byte *erel;
   unsigned int i;
@@ -5503,7 +5509,7 @@
       size_t nlocsyms;
       size_t extsymoff;
       bfd *input_bfd = sec->owner;
-      const struct elf_backend_data *bed = get_elf_backend_data (input_bfd);
+      struct elf_backend_data *bed = get_elf_backend_data (input_bfd);
       Elf_Internal_Sym *isym = NULL;
 
       symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -5721,11 +5727,10 @@
       pu = h->vtable_parent->vtable_entries_used;
       if (pu != NULL)
 	{
-	  const struct elf_backend_data *bed;
-	  unsigned int log_file_align;
+	  asection *sec = h->root.u.def.section;
+	  struct elf_backend_data *bed = get_elf_backend_data (sec->owner);
+	  unsigned int log_file_align = bed->s->log_file_align;
 
-	  bed = get_elf_backend_data (h->root.u.def.section->owner);
-	  log_file_align = bed->s->log_file_align;
 	  n = h->vtable_parent->vtable_entries_size >> log_file_align;
 	  while (n--)
 	    {
@@ -5746,7 +5751,7 @@
   asection *sec;
   bfd_vma hstart, hend;
   Elf_Internal_Rela *relstart, *relend, *rel;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   unsigned int log_file_align;
 
   if (h->root.type == bfd_link_hash_warning)
@@ -5909,7 +5914,7 @@
 		       struct elf_link_hash_entry *h,
 		       bfd_vma addend)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   unsigned int log_file_align = bed->s->log_file_align;
 
   if (addend >= h->vtable_entries_size)
@@ -5975,7 +5980,7 @@
 				    struct bfd_link_info *info)
 {
   bfd *i;
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_backend_data *bed = get_elf_backend_data (abfd);
   bfd_vma gotoff;
 
   /* The GOT offset is relative to the .got section, but the GOT header is
@@ -6178,7 +6183,7 @@
   struct elf_reloc_cookie cookie;
   asection *stab, *eh;
   Elf_Internal_Shdr *symtab_hdr;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
   bfd *abfd;
   unsigned int count;
   bfd_boolean ret = FALSE;
@@ -6311,7 +6316,7 @@
 static bfd_boolean
 elf_section_ignore_discarded_relocs (asection *sec)
 {
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   switch (sec->sec_info_type)
     {
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c
index 5cc3110..27ffddd 100644
--- a/bfd/elfxx-ia64.c
+++ b/bfd/elfxx-ia64.c
@@ -211,7 +211,7 @@
   PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
 	   const char *string));
 static void elfNN_ia64_hash_copy_indirect
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	   struct elf_link_hash_entry *));
 static void elfNN_ia64_hash_hide_symbol
   PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
@@ -1589,7 +1589,7 @@
 
 static void
 elfNN_ia64_hash_copy_indirect (bed, xdir, xind)
-     const struct elf_backend_data *bed ATTRIBUTE_UNUSED;
+     struct elf_backend_data *bed ATTRIBUTE_UNUSED;
      struct elf_link_hash_entry *xdir, *xind;
 {
   struct elfNN_ia64_link_hash_entry *dir, *ind;
@@ -2162,7 +2162,7 @@
 	 this may help reduce memory usage and processing time later.  */
       maybe_dynamic = FALSE;
       if (h && ((!info->executable
-		 && (!info->symbolic || info->unresolved_syms_in_shared_libs == RM_IGNORE))
+		      && (!info->symbolic || info->allow_shlib_undefined))
 		|| ! (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
 		|| h->root.type == bfd_link_hash_defweak))
 	maybe_dynamic = TRUE;
@@ -3852,19 +3852,52 @@
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned;
+	  long indx;
 
-	  RELOC_FOR_GLOBAL_SYMBOL (h, elf_sym_hashes (input_bfd),
-				   r_symndx,
-				   symtab_hdr, value, sym_sec,
-				   unresolved_reloc, info,
-				   warned);
+	  /* Reloc against global symbol.  */
+	  indx = r_symndx - symtab_hdr->sh_info;
+	  h = elf_sym_hashes (input_bfd)[indx];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  if (h->root.type == bfd_link_hash_undefweak)
+	  value = 0;
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      sym_sec = h->root.u.def.section;
+
+	      /* Detect the cases that sym_sec->output_section is
+		 expected to be NULL -- all cases in which the symbol
+		 is defined in another shared module.  This includes
+		 PLT relocs for which we've created a PLT entry and
+		 other relocs for which we're prepared to create
+		 dynamic relocations.  */
+	      /* ??? Just accept it NULL and continue.  */
+
+	      if (sym_sec->output_section != NULL)
+		{
+		  value = (h->root.u.def.value
+			   + sym_sec->output_section->vma
+			   + sym_sec->output_offset);
+		}
+	    }
+	  else if (h->root.type == bfd_link_hash_undefweak)
 	    undef_weak_ref = TRUE;
-	  else if (warned)
-	    continue;
+	  else if (! info->executable
+		   && !info->no_undefined
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    ;
+	  else
+	    {
+	      if (! ((*info->callbacks->undefined_symbol)
+		     (info, h->root.root.string, input_bfd,
+		      input_section, rel->r_offset,
+		      (!info->shared || info->no_undefined
+		       || ELF_ST_VISIBILITY (h->other)))))
+		return FALSE;
+	      continue;
+	    }
 	}
 
       hit_addr = contents + rel->r_offset;
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 919593d..4c54965 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -3008,8 +3008,6 @@
     }
   else
     {
-      /* ??? Could we use RELOC_FOR_GLOBAL_SYMBOL here ?  */
-
       /* For global symbols we look up the symbol in the hash-table.  */
       h = ((struct mips_elf_link_hash_entry *)
 	   elf_sym_hashes (input_bfd) [r_symndx - extsymoff]);
@@ -3023,7 +3021,7 @@
 
       /* See if this is the special _gp_disp symbol.  Note that such a
 	 symbol must always be a global symbol.  */
-      if (strcmp (*namep, "_gp_disp") == 0
+      if (strcmp (h->root.root.root.string, "_gp_disp") == 0
 	  && ! NEWABI_P (input_bfd))
 	{
 	  /* Relocations against _gp_disp are permitted only with
@@ -3056,11 +3054,11 @@
 	   addresses.  */
 	symbol = 0;
       else if (info->shared
-	       && info->unresolved_syms_in_objects == RM_IGNORE
+	       && !info->no_undefined
 	       && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
 	symbol = 0;
-      else if (strcmp (*namep, "_DYNAMIC_LINK") == 0 ||
-              strcmp (*namep, "_DYNAMIC_LINKING") == 0)
+      else if (strcmp (h->root.root.root.string, "_DYNAMIC_LINK") == 0 ||
+              strcmp (h->root.root.root.string, "_DYNAMIC_LINKING") == 0)
 	{
 	  /* If this is a dynamic link, we should have created a
 	     _DYNAMIC_LINK symbol or _DYNAMIC_LINKING(for normal mips) symbol
@@ -3077,8 +3075,7 @@
 	  if (! ((*info->callbacks->undefined_symbol)
 		 (info, h->root.root.root.string, input_bfd,
 		  input_section, relocation->r_offset,
-		  ((info->shared && info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)
-		   || (!info->shared && info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
+		  (!info->shared || info->no_undefined
 		   || ELF_ST_VISIBILITY (h->root.other)))))
 	    return bfd_reloc_undefined;
 	  symbol = 0;
@@ -4988,7 +4985,7 @@
   const Elf_Internal_Rela *rel_end;
   asection *sgot;
   asection *sreloc;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   if (info->relocatable)
     return TRUE;
@@ -6174,7 +6171,7 @@
   const Elf_Internal_Rela *relend;
   bfd_vma addend = 0;
   bfd_boolean use_saved_addend_p = FALSE;
-  const struct elf_backend_data *bed;
+  struct elf_backend_data *bed;
 
   bed = get_elf_backend_data (output_bfd);
   relend = relocs + input_section->reloc_count * bed->s->int_rels_per_ext_rel;
@@ -7477,7 +7474,7 @@
 	  unsigned int i, c;
 	  struct elf_segment_map *n;
 
-	  low = ~(bfd_vma) 0;
+	  low = 0xffffffff;
 	  high = 0;
 	  for (i = 0; i < sizeof sec_names / sizeof sec_names[0]; i++)
 	    {
@@ -7629,7 +7626,7 @@
 
 void
 _bfd_mips_elf_copy_indirect_symbol (bed, dir, ind)
-     const struct elf_backend_data *bed;
+     struct elf_backend_data *bed;
      struct elf_link_hash_entry *dir, *ind;
 {
   struct mips_elf_link_hash_entry *dirmips, *indmips;
diff --git a/bfd/elfxx-mips.h b/bfd/elfxx-mips.h
index 71cdc07..f6459a5 100644
--- a/bfd/elfxx-mips.h
+++ b/bfd/elfxx-mips.h
@@ -70,7 +70,7 @@
   PARAMS ((bfd *, struct bfd_link_info *, asection *,
 	   const Elf_Internal_Rela *));
 extern void _bfd_mips_elf_copy_indirect_symbol
-  PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *,
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
 	   struct elf_link_hash_entry *));
 extern void _bfd_mips_elf_hide_symbol
   PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean));
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 544f8f3..9329b2b 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -621,7 +621,7 @@
 #endif
 
   /* backend_data: */
-  &elfNN_bed
+  (PTR) &elfNN_bed
 };
 #endif
 
@@ -717,6 +717,6 @@
 #endif
 
   /* backend_data: */
-  &elfNN_bed
+  (PTR) &elfNN_bed
 };
 #endif
diff --git a/bfd/libhppa.h b/bfd/libhppa.h
index f6aa234..52ebf51 100644
--- a/bfd/libhppa.h
+++ b/bfd/libhppa.h
@@ -1,6 +1,6 @@
 /* HP PA-RISC SOM object file format:  definitions internal to BFD.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2003 Free Software Foundation, Inc.
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000
+   Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -27,6 +27,14 @@
 #define BYTES_IN_WORD 4
 #define PA_PAGESIZE 0x1000
 
+#ifndef INLINE
+#ifdef __GNUC__
+#define INLINE inline
+#else
+#define INLINE
+#endif /* GNU C? */
+#endif /* INLINE */
+
 /* The PA instruction set variants.  */
 enum pa_arch {pa10 = 10, pa11 = 11, pa20 = 20, pa20w = 25};
 
@@ -156,38 +164,40 @@
 /* Some functions to manipulate PA instructions.  */
 
 /* Declare the functions with the unused attribute to avoid warnings.  */
-static inline int sign_extend (int, int) ATTRIBUTE_UNUSED;
-static inline int low_sign_extend (int, int) ATTRIBUTE_UNUSED;
-static inline int sign_unext (int, int) ATTRIBUTE_UNUSED;
-static inline int low_sign_unext (int, int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_3 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_12 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_14 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_16 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_17 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_21 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_22 (int) ATTRIBUTE_UNUSED;
-static inline bfd_signed_vma hppa_field_adjust
-  (bfd_vma, bfd_signed_vma, enum hppa_reloc_field_selector_type_alt)
-  ATTRIBUTE_UNUSED;
-static inline int bfd_hppa_insn2fmt (bfd *, int) ATTRIBUTE_UNUSED;
-static inline int hppa_rebuild_insn (int, int, int) ATTRIBUTE_UNUSED;
+static INLINE int sign_extend PARAMS ((int, int)) ATTRIBUTE_UNUSED;
+static INLINE int low_sign_extend PARAMS ((int, int)) ATTRIBUTE_UNUSED;
+static INLINE int sign_unext PARAMS ((int, int)) ATTRIBUTE_UNUSED;
+static INLINE int low_sign_unext PARAMS ((int, int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_3 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_12 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_14 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_16 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_17 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_21 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE int re_assemble_22 PARAMS ((int)) ATTRIBUTE_UNUSED;
+static INLINE bfd_signed_vma hppa_field_adjust
+  PARAMS ((bfd_vma, bfd_signed_vma,
+	   enum hppa_reloc_field_selector_type_alt)) ATTRIBUTE_UNUSED;
+static INLINE int bfd_hppa_insn2fmt PARAMS ((bfd *, int)) ATTRIBUTE_UNUSED;
+static INLINE int hppa_rebuild_insn PARAMS ((int, int, int)) ATTRIBUTE_UNUSED;
 
 
 /* The *sign_extend functions are used to assemble various bitfields
    taken from an instruction and return the resulting immediate
    value.  */
 
-static inline int
-sign_extend (int x, int len)
+static INLINE int
+sign_extend (x, len)
+     int x, len;
 {
   int signbit = (1 << (len - 1));
   int mask = (signbit << 1) - 1;
   return ((x & mask) ^ signbit) - signbit;
 }
 
-static inline int
-low_sign_extend (int x, int len)
+static INLINE int
+low_sign_extend (x, len)
+     int x, len;
 {
   return (x >> 1) - ((x & 1) << (len - 1));
 }
@@ -197,8 +207,9 @@
    insertion into an opcode. pa-risc uses all sorts of weird bitfields
    in the instruction to hold the value.  */
 
-static inline int
-sign_unext (int x, int len)
+static INLINE int
+sign_unext (x, len)
+     int x, len;
 {
   int len_ones;
 
@@ -207,8 +218,9 @@
   return x & len_ones;
 }
 
-static inline int
-low_sign_unext (int x, int len)
+static INLINE int
+low_sign_unext (x, len)
+     int x, len;
 {
   int temp;
   int sign;
@@ -220,30 +232,34 @@
   return (temp << 1) | sign;
 }
 
-static inline int
-re_assemble_3 (int as3)
+static INLINE int
+re_assemble_3 (as3)
+     int as3;
 {
   return ((  (as3 & 4) << (13-2))
 	  | ((as3 & 3) << (13+1)));
 }
 
-static inline int
-re_assemble_12 (int as12)
+static INLINE int
+re_assemble_12 (as12)
+     int as12;
 {
   return ((  (as12 & 0x800) >> 11)
 	  | ((as12 & 0x400) >> (10 - 2))
 	  | ((as12 & 0x3ff) << (1 + 2)));
 }
 
-static inline int
-re_assemble_14 (int as14)
+static INLINE int
+re_assemble_14 (as14)
+     int as14;
 {
   return ((  (as14 & 0x1fff) << 1)
 	  | ((as14 & 0x2000) >> 13));
 }
 
-static inline int
-re_assemble_16 (int as16)
+static INLINE int
+re_assemble_16 (as16)
+     int as16;
 {
   int s, t;
 
@@ -253,8 +269,9 @@
   return (t ^ s ^ (s >> 1)) | (s >> 15);
 }
 
-static inline int
-re_assemble_17 (int as17)
+static INLINE int
+re_assemble_17 (as17)
+     int as17;
 {
   return ((  (as17 & 0x10000) >> 16)
 	  | ((as17 & 0x0f800) << (16 - 11))
@@ -262,8 +279,9 @@
 	  | ((as17 & 0x003ff) << (1 + 2)));
 }
 
-static inline int
-re_assemble_21 (int as21)
+static INLINE int
+re_assemble_21 (as21)
+     int as21;
 {
   return ((  (as21 & 0x100000) >> 20)
 	  | ((as21 & 0x0ffe00) >> 8)
@@ -272,8 +290,9 @@
 	  | ((as21 & 0x000003) << 12));
 }
 
-static inline int
-re_assemble_22 (int as22)
+static INLINE int
+re_assemble_22 (as22)
+     int as22;
 {
   return ((  (as22 & 0x200000) >> 21)
 	  | ((as22 & 0x1f0000) << (21 - 16))
@@ -293,10 +312,11 @@
    This function returns sign extended values in all cases.
 */
 
-static inline bfd_signed_vma
-hppa_field_adjust (bfd_vma sym_val,
-		   bfd_signed_vma addend,
-		   enum hppa_reloc_field_selector_type_alt r_field)
+static INLINE bfd_signed_vma
+hppa_field_adjust (sym_val, addend, r_field)
+     bfd_vma sym_val;
+     bfd_signed_vma addend;
+     enum hppa_reloc_field_selector_type_alt r_field;
 {
   bfd_signed_vma value;
 
@@ -459,8 +479,10 @@
 
 /* Given a machine instruction, return its format.  */
 
-static inline int
-bfd_hppa_insn2fmt (bfd *abfd, int insn)
+static INLINE int
+bfd_hppa_insn2fmt (abfd, insn)
+     bfd *abfd;
+     int insn;
 {
   enum hppa_opcode_type op = get_opcode (insn);
 
@@ -541,8 +563,11 @@
 /* Insert VALUE into INSN using R_FORMAT to determine exactly what
    bits to change.  */
 
-static inline int
-hppa_rebuild_insn (int insn, int value, int r_format)
+static INLINE int
+hppa_rebuild_insn (insn, value, r_format)
+     int insn;
+     int value;
+     int r_format;
 {
   switch (r_format)
     {
diff --git a/bfd/libpei.h b/bfd/libpei.h
index 9ed9c12..72fa7b5 100644
--- a/bfd/libpei.h
+++ b/bfd/libpei.h
@@ -332,6 +332,4 @@
   PARAMS ((bfd *, asection *, bfd *, asection *));
 
 /* Macro: Returns true if the bfd is a PE executable as opposed to a PE object file.  */
-#define bfd_pe_executable_p(abfd) \
-  (strncmp ((abfd)->xvec->name, "pei-", 4) == 0		\
-   || strncmp ((abfd)->xvec->name, "efi-app-", 8) == 0)
+#define bfd_pe_executable_p(abfd)  (strncmp ((abfd)->xvec->name, "pei-", 4) == 0)
diff --git a/bfd/po/fr.po b/bfd/po/fr.po
index 831daff..805904b 100644
--- a/bfd/po/fr.po
+++ b/bfd/po/fr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: GNU bfd 2.14rel030712\n"
 "POT-Creation-Date: 2003-07-11 13:53+0930\n"
-"PO-Revision-Date: 2003-08-05 08:00-0500\n"
+"PO-Revision-Date: 2003-07-22 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -598,7 +598,7 @@
 #: elf32-openrisc.c:436 elf32-v850.c:1777 elf32-xstormy16.c:976
 #: elf64-mmix.c:1332
 msgid "internal error: out of range error"
-msgstr "erreur interne: hors limite"
+msgstr "erreur interne: hors gamme"
 
 #: elf-m10200.c:446 elf-m10300.c:1699 elf32-arm.h:2092 elf32-avr.c:816
 #: elf32-cris.c:1394 elf32-d10v.c:574 elf32-fr30.c:638 elf32-frv.c:819
@@ -2059,7 +2059,7 @@
 #: ihex.c:872
 #, c-format
 msgid "%s: address 0x%s out of range for Intel Hex file"
-msgstr "%s: adresse 0x%s hors limite pour le fichier Intel hexadécimal"
+msgstr "%s: adresse 0x%s hors gamme pour le fichier Intel hexadécimal"
 
 #: libbfd.c:861
 #, c-format
diff --git a/bfd/po/sv.po b/bfd/po/sv.po
index e0b667c..f63790b 100644
--- a/bfd/po/sv.po
+++ b/bfd/po/sv.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: bfd 2.14rel030712\n"
 "POT-Creation-Date: 2003-07-11 13:53+0930\n"
-"PO-Revision-Date: 2003-08-14 22:40+0200\n"
+"PO-Revision-Date: 2003-07-17 22:55+0200\n"
 "Last-Translator: Christian Rose <menthos@menthos.com>\n"
 "Language-Team: Swedish <sv@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -1750,7 +1750,7 @@
 #: elflink.c:2142
 #, c-format
 msgid "%s: relocation size mismatch in %s section %s"
-msgstr "%s: omlokaliseringsstorleken stämmer inte överens i %s, sektion %s"
+msgstr "%s: omlokaliseringsstorleken stämmer inte överens i sektionen %s %s"
 
 #: elflink.c:2434
 #, c-format
@@ -1851,7 +1851,7 @@
 #: elfxx-mips.c:9025
 #, c-format
 msgid "%s: endianness incompatible with that of the selected emulation"
-msgstr "%s: endianness inkompatibel med den för den valda emuleringen"
+msgstr "%s: endianess inkompatibel med den för den valda emuleringen"
 
 #: elfxx-mips.c:9037
 #, c-format
diff --git a/bfd/simple.c b/bfd/simple.c
index c2a741c..256fd91 100644
--- a/bfd/simple.c
+++ b/bfd/simple.c
@@ -140,28 +140,6 @@
   bfd_byte *contents, *data;
   int storage_needed;
   void *saved_offsets;
-  bfd_boolean saved_reloc_done = sec->reloc_done;
-
-#undef RETURN
-#define RETURN(x)				\
-  do						\
-    {						\
-      sec->reloc_done = saved_reloc_done;	\
-      return (x);				\
-    }						\
-  while (0)
-
-  /* Foul hack to prevent bfd_section_size aborts.  The reloc_done flag
-     only controls that macro (and the related size macros), selecting
-     between _raw_size and _cooked_size.  We may be called with relocation
-     done or not, so we need to save the done-flag and mark the section as
-     not relocated.
-
-     Debug sections won't change size while we're only relocating.  There
-     may be trouble here someday if it tries to run relaxation
-     unexpectedly, so make sure.  */
-  BFD_ASSERT (sec->_raw_size == sec->_cooked_size);
-  sec->reloc_done = 0;
 
   if (! (sec->flags & SEC_RELOC))
     {
@@ -175,7 +153,7 @@
       if (contents)
 	bfd_get_section_contents (abfd, sec, contents, 0, size);
 
-      RETURN (contents);
+      return contents;
     }
 
   /* In order to use bfd_get_relocated_section_contents, we need
@@ -205,7 +183,7 @@
     {
       data = bfd_malloc (bfd_section_size (abfd, sec));
       if (data == NULL)
-	RETURN (NULL);
+	return NULL;
       outbuf = data;
     }
 
@@ -224,7 +202,7 @@
     {
       if (data)
 	free (data);
-      RETURN (NULL);
+      return NULL;
     }
   bfd_map_over_sections (abfd, simple_save_output_info, saved_offsets);
 
@@ -265,7 +243,15 @@
   bfd_map_over_sections (abfd, simple_restore_output_info, saved_offsets);
   free (saved_offsets);
 
+  /* Foul hack to prevent bfd_section_size aborts.  This flag only controls
+     that macro (and the related size macros), selecting between _raw_size
+     and _cooked_size.  Debug sections won't change size while we're only
+     relocating.  There may be trouble here someday if it tries to run
+     relaxation unexpectedly, so make sure.  */
+  BFD_ASSERT (sec->_raw_size == sec->_cooked_size);
+  sec->reloc_done = 0;
+
   bfd_link_hash_table_free (abfd, link_info.hash);
 
-  RETURN (contents);
+  return contents;
 }
diff --git a/bfd/targets.c b/bfd/targets.c
index c3212a9..0ce77a9 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -477,7 +477,7 @@
 
 .  {* Data for use by back-end routines, which isn't
 .     generic enough to belong in this structure.  *}
-.  const void *backend_data;
+.  void *backend_data;
 .
 .} bfd_target;
 .
diff --git a/bfd/version.h b/bfd/version.h
index a6f5486..20f1686 100644
--- a/bfd/version.h
+++ b/bfd/version.h
@@ -1,3 +1,3 @@
-#define BFD_VERSION_DATE 20030821
+#define BFD_VERSION_DATE 20030805
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING @bfd_version_string@
diff --git a/config-ml.in b/config-ml.in
index 865275c..0a2f103 100644
--- a/config-ml.in
+++ b/config-ml.in
@@ -1,32 +1,6 @@
 # Configure fragment invoked in the post-target section for subdirs
 # wanting multilib support.
 #
-# Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-#   Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-#
-# Please report bugs to <gcc-bugs@gnu.org>
-# and send patches to <gcc-patches@gnu.org>.
-
 # It is advisable to support a few --enable/--disable options to let the
 # user select which libraries s/he really wants.
 #
@@ -766,7 +740,7 @@
     fi
 
     # find compiler flag corresponding to ${ml_dir}
-    for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
+    for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do 
       dir=`echo $i | sed -e 's/;.*$//'`
       if [ "${dir}" = "${ml_dir}" ]; then
         flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
diff --git a/config.sub b/config.sub
index dfeed48..725707f 100755
--- a/config.sub
+++ b/config.sub
@@ -234,7 +234,7 @@
 	| fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
-	| iq2000 | ip2k \
+	| ip2k \
 	| m32r | m68000 | m68k | m88k | mcore \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
@@ -304,7 +304,7 @@
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
-	| iq2000-* | ip2k-* \
+	| ip2k-* \
 	| m32r-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
 	| m88110-* | m88k-* | mcore-* \
diff --git a/configure b/configure
index c63980c..55d562a 100755
--- a/configure
+++ b/configure
@@ -794,19 +794,8 @@
 # if PWD already has a value, it is probably wrong.
 if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
 
-# Export original configure arguments for use by sub-configures.  These
-# will be expanded once by make, and once by the shell, so they need to
-# have '$' quoted for make, and then each argument quoted for the shell.
-# What's more, the 'echo' below might expand backslashes.
-cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
-tmp="'$progname'"
-for ac_arg ; do
-  tmp="$tmp '"`echo "$ac_arg" | sed -fconftestsed`
-done
-rm -f conftestsed
-TOPLEVEL_CONFIGURE_ARGUMENTS="$tmp"
+# Export original configure arguments for use by sub-configures.
+TOPLEVEL_CONFIGURE_ARGUMENTS="$progname $@"
 
 
 moveifchange=${srcdir}/move-if-change
@@ -1079,13 +1068,9 @@
   *-*-chorusos)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
     ;;
-  powerpc-*-darwin*)
-    noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes gdb gprof"
-    noconfigdirs="$noconfigdirs target-libobjc"
-    ;;
   *-*-darwin*)
     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes gdb gprof"
-    noconfigdirs="$noconfigdirs target-libobjc ${libgcj}"
+    noconfigdirs="$noconfigdirs target-libobjc"
     ;;
   *-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
@@ -2515,24 +2500,20 @@
 # Base args.  Strip norecursion, cache-file, srcdir, host, build,
 # target and nonopt.  These are the ones we might not want to pass
 # down to subconfigures.
-cat <<\EOF_SED > conftestsed
-s/ --no[^ ]* / /
-s/ --c[a-z-]*[= ][^ ]* / /
-s/ --sr[a-z-]*[= ][^ ]* / /
-s/ --ho[a-z-]*[= ][^ ]* / /
-s/ --bu[a-z-]*[= ][^ ]* / /
-s/ --t[a-z-]*[= ][^ ]* / /
-s/ -cache-file[= ][^ ]* / /
-s/ -srcdir[= ][^ ]* / /
-s/ -host[= ][^ ]* / /
-s/ -build[= ][^ ]* / /
-s/ -target[= ][^ ]* / /
-s/ [^' -][^ ]* / /
-s/^ *//;s/ *$//
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
-baseargs=`echo " ${ac_configure_args} " | sed -fconftestsed`
-rm -f conftestsed
+baseargs=`echo " ${ac_configure_args} " | \
+	sed -e 's/ --no[^ ]* / /' \
+	    -e 's/ --c[a-z-]*[= ][^ ]* / /' \
+	    -e 's/ --sr[a-z-]*[= ][^ ]* / /' \
+	    -e 's/ --ho[a-z-]*[= ][^ ]* / /' \
+	    -e 's/ --bu[a-z-]*[= ][^ ]* / /' \
+	    -e 's/ --t[a-z-]*[= ][^ ]* / /' \
+	    -e 's/ -cache-file[= ][^ ]* / /' \
+	    -e 's/ -srcdir[= ][^ ]* / /' \
+	    -e 's/ -host[= ][^ ]* / /' \
+	    -e 's/ -build[= ][^ ]* / /' \
+	    -e 's/ -target[= ][^ ]* / /' \
+	    -e "s/ [^' -][^ ]* / /" \
+	    -e 's/^ *//;s/ *$//'`
 
 # For the build-side libraries, we just need to pretend we're native,
 # and not use the same cache file.  Multilibs are neither needed nor
@@ -2781,7 +2762,7 @@
   # Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2785: checking for $ac_word" >&5
+echo "configure:2766: 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
@@ -2814,7 +2795,7 @@
     # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2818: checking for $ac_word" >&5
+echo "configure:2799: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2853,7 +2834,7 @@
   # Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2857: checking for $ac_word" >&5
+echo "configure:2838: 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
@@ -2886,7 +2867,7 @@
     # Extract the first word of "as", so it can be a program name with args.
 set dummy as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2890: checking for $ac_word" >&5
+echo "configure:2871: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2925,7 +2906,7 @@
   # Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2929: checking for $ac_word" >&5
+echo "configure:2910: 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
@@ -2958,7 +2939,7 @@
     # Extract the first word of "dlltool", so it can be a program name with args.
 set dummy dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2962: checking for $ac_word" >&5
+echo "configure:2943: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2997,7 +2978,7 @@
   # Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}ld; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3001: checking for $ac_word" >&5
+echo "configure:2982: 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
@@ -3030,7 +3011,7 @@
     # Extract the first word of "ld", so it can be a program name with args.
 set dummy ld; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3034: checking for $ac_word" >&5
+echo "configure:3015: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3069,7 +3050,7 @@
   # Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}nm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3073: checking for $ac_word" >&5
+echo "configure:3054: 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
@@ -3102,7 +3083,7 @@
     # Extract the first word of "nm", so it can be a program name with args.
 set dummy nm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3106: checking for $ac_word" >&5
+echo "configure:3087: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3141,7 +3122,7 @@
   # Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3145: checking for $ac_word" >&5
+echo "configure:3126: 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
@@ -3174,7 +3155,7 @@
     # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3178: checking for $ac_word" >&5
+echo "configure:3159: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3213,7 +3194,7 @@
   # Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3217: checking for $ac_word" >&5
+echo "configure:3198: 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
@@ -3246,7 +3227,7 @@
     # Extract the first word of "windres", so it can be a program name with args.
 set dummy windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3250: checking for $ac_word" >&5
+echo "configure:3231: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3285,7 +3266,7 @@
   # Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}objcopy; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3289: checking for $ac_word" >&5
+echo "configure:3270: 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
@@ -3318,7 +3299,7 @@
     # Extract the first word of "objcopy", so it can be a program name with args.
 set dummy objcopy; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3322: checking for $ac_word" >&5
+echo "configure:3303: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3357,7 +3338,7 @@
   # Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ncn_tool_prefix}objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3361: checking for $ac_word" >&5
+echo "configure:3342: 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
@@ -3390,7 +3371,7 @@
     # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3394: checking for $ac_word" >&5
+echo "configure:3375: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3438,7 +3419,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3442: checking for $ac_word" >&5
+echo "configure:3423: 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
@@ -3471,7 +3452,7 @@
     # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3475: checking for $ac_word" >&5
+echo "configure:3456: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3510,7 +3491,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3514: checking for $ac_word" >&5
+echo "configure:3495: 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
@@ -3543,7 +3524,7 @@
     # Extract the first word of "as", so it can be a program name with args.
 set dummy as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3547: checking for $ac_word" >&5
+echo "configure:3528: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3582,7 +3563,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3586: checking for $ac_word" >&5
+echo "configure:3567: 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
@@ -3615,7 +3596,7 @@
     # Extract the first word of "dlltool", so it can be a program name with args.
 set dummy dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3619: checking for $ac_word" >&5
+echo "configure:3600: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3654,7 +3635,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}ld; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3658: checking for $ac_word" >&5
+echo "configure:3639: 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
@@ -3687,7 +3668,7 @@
     # Extract the first word of "ld", so it can be a program name with args.
 set dummy ld; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3691: checking for $ac_word" >&5
+echo "configure:3672: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3726,7 +3707,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}nm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3730: checking for $ac_word" >&5
+echo "configure:3711: 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
@@ -3759,7 +3740,7 @@
     # Extract the first word of "nm", so it can be a program name with args.
 set dummy nm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3763: checking for $ac_word" >&5
+echo "configure:3744: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3798,7 +3779,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3802: checking for $ac_word" >&5
+echo "configure:3783: 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
@@ -3831,7 +3812,7 @@
     # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3835: checking for $ac_word" >&5
+echo "configure:3816: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3870,7 +3851,7 @@
   # Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args.
 set dummy ${ncn_target_tool_prefix}windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3874: checking for $ac_word" >&5
+echo "configure:3855: 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
@@ -3903,7 +3884,7 @@
     # Extract the first word of "windres", so it can be a program name with args.
 set dummy windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3907: checking for $ac_word" >&5
+echo "configure:3888: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES_FOR_TARGET'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3970,7 +3951,7 @@
 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:3974: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:3955: checking whether to enable maintainer-specific portions of Makefiles" >&5
 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
diff --git a/configure.in b/configure.in
index 5c461fc..d1a2e1a 100644
--- a/configure.in
+++ b/configure.in
@@ -66,19 +66,8 @@
 # if PWD already has a value, it is probably wrong.
 if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
 
-# Export original configure arguments for use by sub-configures.  These
-# will be expanded once by make, and once by the shell, so they need to
-# have '$' quoted for make, and then each argument quoted for the shell.
-# What's more, the 'echo' below might expand backslashes.
-cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
-tmp="'$progname'"
-for ac_arg ; do
-  tmp="$tmp '"`echo "$ac_arg" | sed -fconftestsed`
-done
-rm -f conftestsed
-TOPLEVEL_CONFIGURE_ARGUMENTS="$tmp"
+# Export original configure arguments for use by sub-configures.
+TOPLEVEL_CONFIGURE_ARGUMENTS="$progname $@"
 AC_SUBST(TOPLEVEL_CONFIGURE_ARGUMENTS)
 
 moveifchange=${srcdir}/move-if-change
@@ -253,8 +242,7 @@
 
 # If both --with-headers and --with-libs are specified, default to
 # --without-newlib.
-if test x"${with_headers}" != x && test x"${with_headers} != xno \
-   && test x"${with_libs}" != x && test x"${with_libs} != xno ; then
+if test x"${with_headers}" != x && test x"${with_libs}" != x ; then
   if test x"${with_newlib}" = x ; then
     with_newlib=no
   fi
@@ -331,13 +319,9 @@
   *-*-chorusos)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
     ;;
-  powerpc-*-darwin*)
-    noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes gdb gprof"
-    noconfigdirs="$noconfigdirs target-libobjc"
-    ;;
   *-*-darwin*)
     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes gdb gprof"
-    noconfigdirs="$noconfigdirs target-libobjc ${libgcj}"
+    noconfigdirs="$noconfigdirs target-libobjc"
     ;;
   *-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
@@ -938,7 +922,7 @@
 
 # Handle --with-headers=XXX.  If the value is not "yes", the contents of
 # the named directory are copied to $(tooldir)/sys-include.
-if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
+if test x"${with_headers}" != x ; then
   if test x${is_cross_compiler} = xno ; then
     echo 1>&2 '***' --with-headers is only supported when cross compiling
     exit 1
@@ -955,7 +939,7 @@
 # Handle --with-libs=XXX.  If the value is not "yes", the contents of
 # the name directories are copied to $(tooldir)/lib.  Multiple directories
 # are permitted.
-if test x"${with_libs}" != x && test x"${with_libs}" != xno ; then
+if test x"${with_libs}" != x ; then
   if test x${is_cross_compiler} = xno ; then
     echo 1>&2 '***' --with-libs is only supported when cross compiling
     exit 1
@@ -1766,24 +1750,20 @@
 # Base args.  Strip norecursion, cache-file, srcdir, host, build,
 # target and nonopt.  These are the ones we might not want to pass
 # down to subconfigures.
-cat <<\EOF_SED > conftestsed
-s/ --no[[^ ]]* / /
-s/ --c[[a-z-]]*[[= ]][[^ ]]* / /
-s/ --sr[[a-z-]]*[[= ]][[^ ]]* / /
-s/ --ho[[a-z-]]*[[= ]][[^ ]]* / /
-s/ --bu[[a-z-]]*[[= ]][[^ ]]* / /
-s/ --t[[a-z-]]*[[= ]][[^ ]]* / /
-s/ -cache-file[[= ]][[^ ]]* / /
-s/ -srcdir[[= ]][[^ ]]* / /
-s/ -host[[= ]][[^ ]]* / /
-s/ -build[[= ]][[^ ]]* / /
-s/ -target[[= ]][[^ ]]* / /
-s/ [[^' -][^ ]*] / /
-s/^ *//;s/ *$//
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
-baseargs=`echo " ${ac_configure_args} " | sed -fconftestsed`
-rm -f conftestsed
+baseargs=`echo " ${ac_configure_args} " | \
+	sed -e 's/ --no[[^ ]]* / /' \
+	    -e 's/ --c[[a-z-]]*[[= ]][[^ ]]* / /' \
+	    -e 's/ --sr[[a-z-]]*[[= ]][[^ ]]* / /' \
+	    -e 's/ --ho[[a-z-]]*[[= ]][[^ ]]* / /' \
+	    -e 's/ --bu[[a-z-]]*[[= ]][[^ ]]* / /' \
+	    -e 's/ --t[[a-z-]]*[[= ]][[^ ]]* / /' \
+	    -e 's/ -cache-file[[= ]][[^ ]]* / /' \
+	    -e 's/ -srcdir[[= ]][[^ ]]* / /' \
+	    -e 's/ -host[[= ]][[^ ]]* / /' \
+	    -e 's/ -build[[= ]][[^ ]]* / /' \
+	    -e 's/ -target[[= ]][[^ ]]* / /' \
+	    -e "s/ [[^' -][^ ]*] / /" \
+	    -e 's/^ *//;s/ *$//'`
 
 # For the build-side libraries, we just need to pretend we're native,
 # and not use the same cache file.  Multilibs are neither needed nor
diff --git a/cpu/ChangeLog b/cpu/ChangeLog
index 14e5299..ddf23b5 100644
--- a/cpu/ChangeLog
+++ b/cpu/ChangeLog
@@ -1,13 +1,3 @@
-2003-08-21  Nick Clifton  <nickc@redhat.com>
-
-	* frv.cpu (mbtoh): Replace input parameter to u-media-dual-expand
-	and u-media-dual-btoh with output parameter.
-	(cmbtoh): Add profiling hack.
-
-2003-08-19  Michael Snyder  <msnyder@redhat.com>
-
-	* frv.cpu: Fix typo, Frintkeven -> FRintkeven
-
 2003-06-10  Doug Evans  <dje@sebabeach.org>
 
 	* frv.cpu: Add IDOC attribute.
diff --git a/cpu/frv.cpu b/cpu/frv.cpu
index 86eb067..efe3b98 100644
--- a/cpu/frv.cpu
+++ b/cpu/frv.cpu
@@ -6984,11 +6984,11 @@
        ((fr400 (unit u-media-1-quad
 		     (in  FRinti FRintieven)
 		     (in  FRintj FRintjeven)
-		     (out FRintk FRintkeven)))
+		     (out FRintk Frintkeven)))
 	(fr500 (unit u-media-quad-arith
 		     (in  FRinti FRintieven)
 		     (in  FRintj FRintjeven)
-		     (out FRintk FRintkeven))))
+		     (out FRintk Frintkeven))))
   )
 )
 
@@ -7010,11 +7010,11 @@
        ((fr400 (unit u-media-1-quad
 		     (in  FRinti FRintieven)
 		     (in  FRintj FRintjeven)
-		     (out FRintk FRintkeven)))
+		     (out FRintk Frintkeven)))
 	(fr500 (unit u-media-quad-arith
 		     (in  FRinti FRintieven)
 		     (in  FRintj FRintjeven)
-		     (out FRintk FRintkeven))))
+		     (out FRintk Frintkeven))))
   )
 )
 
@@ -7962,9 +7962,9 @@
 	       (set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
 	       (mbtoh-semantics 1))
      ((fr400 (unit u-media-dual-expand
-		   (out FRintk FRintkeven)))
+		   (in FRinti FRintieven)))
       (fr500 (unit u-media-dual-btoh
-		   (out FRintk FRintkeven))))
+		   (in FRinti FRintieven))))
 )
 
 (dni cmbtoh
@@ -7972,11 +7972,7 @@
      ((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2) CONDITIONAL)
      "cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond"
      (+ pack FRintkeven OP_77 (FRi-null) CCi cond OPE4_0 FRintj)
-     (sequence ()
-	       ; hack to get these referenced for profiling
-	       (set FRintj (c-raw-call SI "frv_ref_SI" FRintj))
-	       (set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
-	       (mbtoh-semantics (eq CCi (or cond 2))))
+     (mbtoh-semantics (eq CCi (or cond 2)))
      ((fr400 (unit u-media-dual-expand
 		   (out FRintk FRintkeven)))
       (fr500 (unit u-media-dual-btoh
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eedfad0..83ae7c4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,421 +1,3 @@
-2003-08-20  Michael Snyder  <msnyder@redhat.com>
-
-	* sh-tdep.h (struct gdbarch_tdep): New member FLOAT_ARGLAST_REG.
-	* sh-tdep.c (sh_gdbarch_init): For sh2e, sh3e, and sh4, set 
-	FLOAT_ARG0_REGNUM and FLOAT_ARGLAST_REGNUM, to be used for 
-	argument passing.
-	(sh_push_dummy_call_fpu, sh_push_dummy_call_nofpu): New 
-	functions, replace sh_push_dummy_call.
-	(sh_gdbarch_init): Set push_dummy_call to one of new methods.
-
-2003-08-20  Michael Chastain  <mec@shout.net>
-
-	* gdbtypes.h (struct main_type): Rearrange to save space.
-
-2003-08-20  Michael Snyder  <msnyder@redhat.com>
-
-	* trad-frame.c: Comment typo fix.
-
-2003-08-20  Michael Snyder  <msnyder@redhat.com>
-            Kevin Buettner  <kevinb@redhat.com>
-
-	* frv-tdep.c (gdb_string.h, frame.h, trad-frame.h): Include.
-	(frv_frame_init_saved_regs): Add declaration.
-	(frame_extra_info): Add new field ``saved_regs''.
-	(frv_frame_chain, frv_frame_saved_pc, frv_analyze_prologue)
-	(frv_skip_prologue, frv_init_extra_frame_info, frv_pop_frame_regular):
-	Update frame related code.
-	(frv_extract_struct_value_address): Adjust formatting.
-	* Makefile.in (frv-tdep.o): Update dependencies.
-	* config/frv/tm-frv.h (target_insert_watchpoint)
-	(target_remove_watchpoint, target_insert_hw_breakpoint)
-	(target_remove_hw_breakpoint): Delete these macros.
-	(remote_insert_watchpoint, remote_remove_watchpoint)
-	(remote_insert_hw_watchpoint, remote_remove_hw_watchpoint): Remove
-	these declarations.
-
-2003-08-20  Michael Chastain  <mec@shout.net>
-
-	* defs.h (ENUM_BITFIELD): New macro.
-	* symtab.h (ENUM_BITFIELD): Use it.
-	(BYTE_BITFIELD): Remove old macro, which was already disabled.
-
-2003-08-19  Shrinivas Atre <shrinivasa@kpitcummins.com>
-
-	* MAINTAINERS (write after approval): Add myself.
-	
-2003-08-18  Andrew Cagney  <cagney@redhat.com>
-
-	* gdbarch.sh (FRAME_RED_ZONE_SIZE): New architecture method.
-	* gdbarch.h, gdbarch.c: Re-generate.
-	* infcall.c (call_function_by_hand): Adjust the SP by
-	frame_red_zone_size before allocating any stack space.
-	* rs6000-tdep.c (rs6000_gdbarch_init): Set "frame_red_zone_size".
-	* x86-64-tdep.c (x86_64_frame_align): New function.
-	(x86_64_init_abi): Set "frame_red_zone_size" and "frame_align".
-
-	* x86-64-tdep.c (x86_64_push_arguments): Revert 2003-08-07 change.
-	Remove code adjusting SP so that it skips over the Red Zone.
-
-2003-08-18  Mark Kettenis  <kettenis@gnu.org>
-
-	* NEWS (New native configurations): Mention FreeBSD/amd64.
-
-2003-08-18  Andrew Cagney  <cagney@redhat.com>
-
-	* m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set
-	"dwarf2_build_frame_info".  Append "m68k_frame_sniffer" instead of
-	"m68k_frame_p".
-	(m68hc11_frame_sniffer): Replace "m68hc11_frame_p".
-
-2003-08-18  Mark Kettenis  <kettenis@gnu.org>
-
-	* x86-64-tdep.c (x86_64_dwarf_regmap): Remove trailing whitespace.
-
-2003-08-18  Michal Ludvig  <mludvig@suse.cz>
-
-	* config/i386/nm-x86-64linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
-	Define.
-	* i386-linux-nat.c: Include "linux-nat.h".
-	(child_post_startup_inferior): New function.
-	
-2003-08-18  Mark Kettenis  <kettenis@gnu.org>
-
-	* i386-tdep.c (i386_analyze_register_saves): Handle register saves
-	at the start of a frameless function.  This probably fixes PR
-	backtrace/1338.
-
-2003-08-17  Michael Chastain  <mec@shout.net>
-
-	* symfile.c (find_sym_fns): Remove special case for apollo target.
-
-2003-08-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-nat.c (PTRACE_O_TRACEVFORKDONE, PTRACE_O_TRACEEXIT): Define.
-	(PTRACE_EVENT_VFORKDONE, PTRACE_EVENT_EXIT): Define.
-	(linux_parent_pid, linux_supports_tracevforkdone_flag): New variable.
-	(linux_test_for_tracefork): Set linux_supports_tracevforkdone_flag.
-	(linux_supports_tracevforkdone): New function.
-	(linux_enable_event_reporting): Enable TRACEVFORK, TRACEEXEC, and
-	TRACEVFORKDONE.
-	(child_follow_fork): Handle vfork.
-	(linux_handle_extended_wait): Likewise.  Also handle exec.
-	(child_insert_vfork_catchpoint, child_insert_exec_catchpoint): Enable.
-	* NEWS: Mention fork tracing.
-
-2003-08-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* lin-lwp.c (child_wait): Call linux_record_stopped_pid.
-
-2003-08-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* Makefile.in (i386-linux-nat.o): Update dependencies.
-	* config/i386/nm-linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Define.
-	* config/nm-linux.h (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH)
-	(CHILD_FOLLOW_FORK, KILL_INFERIOR): Define.
-	* i386-linux-nat.c: Include "linux-nat.h".
-	(child_post_startup_inferior): New function.
-	* i386-nat.c (child_post_startup_inferior): Wrap in #ifdef.
-	* infptrace.c (kill_inferior): Wrap in #ifdef.
-	* lin-lwp.c (lin_lwp_attach_lwp): Call child_post_attach after
-	attaching to each LWP.
-	(child_wait, lin_lwp_wait): Call linux_handle_extended_wait.
-	(init_lin_lwp_ops): Fill in some more operations.
-	* linux-nat.h (linux_enable_event_reporting)
-	(linux_handle_extended_wait, linux_child_post_startup_inferior): New
-	prototypes.
-	* linux-nat.c (linux_enable_event_reporting): New function.
-	(child_post_attach, linux_child_post_startup_inferior)
-	(child_post_startup_inferior, child_follow_fork)
-	(linux_handle_extended_wait, kill_inferior): New functions.
-
-2003-08-16  Andrew Cagney  <cagney@redhat.com>
-
-	* gdbarch.sh: Delete all #if not GDB_MULTI_ARCH code.
-	* gdbarch.h, gdbarch.c: Re-generate.
-
-2003-08-16  Mark Kettenis  <kettenis@gnu.org>
-
-	* config/alpha/nm-fbsd.h (SVR4_SHARED_LIBS): Remove define.
-
-2003-08-16  Andrew Cagney  <cagney@redhat.com>
-
-	* NEWS: Mention that "set prompt-escape-char" was deleted.
-	* top.c (get_prompt_1): Delete function.
-	(gdb_prompt_escape):
-	(init_main): Do not clear "gdb_prompt_escape".  Delete "set
-	prompt-escape-char" command.
-	(MAX_PROMPT_SIZE): Delete macro.
-	(get_prompt): Simplify, do not call get_prompt_1.
-
-2003-08-16  Andrew Cagney  <cagney@redhat.com>
-
-	* Makefile.in (printcmd.o, valprint.o): Do not try to build with
-	-Werror.  -Wformat-nonliteral problems.
-
-2003-08-15  J. Brobecker  <brobecker@gnat.com>
-
-	Further multiarching work mostly for hppa64-*-hpux11:
-	* hppa-tdep.h: New file.
-	* hppa-tdep.c: #include hppa-tdep.c.
-	(hppa32_num_regs): Renamed from hppa_num_regs.
-	(hppa64_num_regs): New constant.
-	(hppa64_call_dummy_breakpoint_offset): New constant.
-	(hppa32_call_dummy_length): New constant.
-	(hppa64_call_dummy_length): New constant.
-	(hppa32_stack_align): Make name 32bit explicit.
-	(hppa32_register_virtual_type): Likewise.
-	(hppa32_extract_return_value): Likewise.
-	(hppa32_use_struct_convention): Likewise.
-	(hppa32_store_return_value): Likewise.
-	(hppa64_register_virtual_type): New function.
-	(hppa64_extract_return_value): New function.
-	(hppa64_use_struct_convention): New function.
-	(hppa64_store_return_value): New function.
-	(hppa_frame_locals_address): Remove declaration, function does
-	not exist anymore.
-	(hppa_register_byte): Add support for PA64 ABI.
-	(hppa_gdbarch_init): Add support for PA64 ABI.
-	* hppa-hpux-tdep.c (hppa32_hpux_frame_saved_pc_in_sigtramp):
-	Make name 32bit explicit.
-	(hppa32_hpux_frame_base_before_sigtramp): Likewise.
-	(hppa32_hpux_frame_find_saved_regs_in_sigtramp): Likewise.
-	(hppa64_hpux_frame_saved_pc_in_sigtramp): New function.
-	(hppa64_hpux_frame_base_before_sigtramp): New function.
-	(hppa64_hpux_frame_find_saved_regs_in_sigtramp): New function.
-	* config/pa/tm-hppa64.h: Remove macros that are no longer
-	necessary now that the gdbarch vector is properly setup.
-	Transform some macros into function calls. Some minor cleanup. 
-	* config/pa/tm-hppah.h: Update function calls in macros
-	following the function renaming in hppa-hpux-tdep.c.
-	* Makefile.in (hppa_tdep_h): New variable.
-	(hppa-tdep.o): Add dependency over hppa_tdep_h.
-
-2003-08-14  Michael Snyder  <msnyder@redhat.com>
-
-	* disasm.c (gdb_disassemble_info): Set info->insn_sets to zero.
-
-2003-08-13  J. Brobecker  <brobecker@gnat.com>
-
-	* hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Use the correct
-	bfd arch_info when registering the GDB_OSABI_HPUX_ELF initialization
-	routine.
-
-2003-08-13  Michael Snyder  <msnyder@redhat.com>
-
-	* frv-tdep.c (frv_push_arguments): Use deprecated ftype.
-	(frv_saved_pc_after_call): Use deprecated ftype.
-	(stupid_useless_init_extra_frame_info): Remove orphan prototype.
-	(frv_remote_translate_xfer_address): Remove.
-	(frv_gdbarch_init): Use generic_remote_translate_xfer_address.
-
-2003-08-13  J. Brobecker  <brobecker@gnat.com>
-
-	* hppa-tdep.c (hppa_gdbarch_init): Perform the ABI-specific gdbarch
-	initialization after the common gdbarch initialization, not before.
-
-2003-08-13  J. Brobecker  <brobecker@gnat.com>
-
-	* config/pa/tm-hppa64.h (HPUX_1100): Remove, not used.
-	(ADDR_BITS_REMOVE): Remove, redundant.
-
-2003-08-13  J. Brobecker  <brobecker@gnat.com>
-
-	* hppa-tdep.c (hppa_gdbarch_init): Set the addr_bits_remove
-	gdbarch method to clear the 2 low bits of text addresses.
-
-2003-08-12  Andrew Cagney  <cagney@redhat.com>
-
-	* Makefile.in (dsrec.o): Update dependencies.
-	* dsrec.c: Include "gdb_assert.h".
-	(make_srec): Use snprintf instead of sprintf, use a literal format
-	string.
-
-2003-08-12  Andrew Cagney  <cagney@redhat.com>
-
-	* frame.c (deprecated_frame_xmalloc): Use XMALLOC, instead of
-	FRAME_OBSTACK_ZALLOC.
-
-2003-08-12  Kevin Buettner  <kevinb@redhat.com>
-
-	* i386-tdep.c (i386_gdbarch_init): Enable default support for
-	SSE registers.
-
-2003-08-10  Mark Kettenis  <kettenis@gnu.org>
-
-	* x86-64-tdep.h (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end,
-	amd64fbsd_sc_reg_offset): Add extern declarations.
-	* amd64fbsd-nat.c (_initialize_am64fbsd_nat): Remove extern
-	declarations.
-
-2003-08-11  Ben Elliston  <bje@wasabisystems.com>
-
-	* MAINTAINERS (write after approval): Update my mail address.
-
-2003-08-10  Andrew Cagney  <cagney@redhat.com>
-
-	* Makefile.in (monitor.o): Do not build monitor.c with -Werror.
-
-2003-08-10  Mark Kettenis  <kettenis@gnu.org>
-
-	* i386-tdep.h (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
-	i386obsd_sigtramp_start, i386obsd_sigtramp_end,
-	i386fbsd4_sc_reg_offset, i386fbsd_sc_reg_offset,
-	i386nbsd_sc_reg_offset, i386obsd_sc_reg_offset,
-	i386bsd_sc_reg_offset): Add extern declarations.
-	* i386obsd-nat.c: Include "i386-tdep.h"
-	(_initialize_i386obsd_nat): Remove extern declarations.
-	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Remove extern
-	declarations.
-	* i386bsd-nat.c (_initialize_i386bsd_nat): Remove extern
-	declarations.
-
-	* i386-tdep.c (i386_register_to_value): Use get_frame_register
-	instead of frame_read_register.
-	(i386_fetch_pointer_argument): Use get_frame_register_unsigned
-	instead of frame_read_register.  Use I386_ESP_REGNUM instead of
-	SP_REGNUM.
-	(i386_frame_prev_register): Use frame_unwind_register_unsigned
-	instead of frame_unwind_unsigned_register.  Use
-	I386_EFLAGS_REGISTER instead of PS_REGNUM.
-	(i386_get_longjmp_target): Use regcache_read_unsigned_register
-	instead of read_register.  Use builtin_type_void_data_ptr instead
-	of builtin_type_void_func_ptr when extracting the address of the
-	jmp_buf.
-	(i386_extract_return_value, i386_store_return_value,
-	i386_pseudo_register_read, i386_pseudo_register_write): Use
-	register_size instead REGISTER_RAW_SIZE.
-
-2003-08-10  Andrew Cagney  <cagney@redhat.com>
-
-	* infcall.c (call_function_by_hand): Use xstrprintf instead of
-	sprintf.  Make "name" constant.
-
-2003-08-10  Mark Kettenis  <kettenis@gnu.org>
-
-	* i387-tdep.c (i387_register_to_value): Use get_frame_register
-	instead of frame_read_register.
-	(i387_print_float_info): Use get_frame_register and
-	get_frame_register_unsigned instead of frame_register_read.
-
-	* i386fbsd-nat.c: Include "i386-tdep.h".
-	(child_resume): Make `eflags' an ULONGEST.  Use
-	regcache_cooked_read_unsigned and regcache_cooked_write_unsigned
-	instead of register_read and register_write.
-
-	* i386bsd-nat.c (fetch_inferior_registers,
-	store_inferior_registers): Don't use && at the end of a line.
-	(_initialize_i386bsd_nat): Fix typo.
-
-	* frame.c (_initialize_frame): Add missing backslash.
-
-	From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de):
-	* sol-thread.c (sol_thread_store_registers): Use regcache_collect
-	and supply_register instead of manipulating the register buffer
-	directly.
-
-	From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de):
-	* config/i386/nm-i386sol2.h
-	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Define to one.
-
-	Based on a patch from Michael Elizabeth Chastain (mec@shout.net):
-	* i386-tdep.c (i386_analyze_frame_setup): Recognize more
-	instructions that GCC likes to mingle into the prologue.  Fixes
-	gdb/1253 and gdb/1255.
-
-2003-08-09  Andrew Cagney  <cagney@redhat.com>
-
-	Fix GDB PR cli/926.
-	* cli/cli-decode.c (add_setshow_uinteger_cmd): New function.
-	* command.h (add_setshow_uinteger_cmd): Declare.
-	* frame.c (set_backtrace_cmd): New function.
-	(show_backtrace_cmd): New function.
-	* frame.c (_initialize_frame): Replace "set/show
-	backtrace-below-main" with "set/show backtrace past-main".  Add
-	command "set/show backtrace limit".
-	(backtrace_past_main): Rename "backtrace_below_main".
-	(backtrace_limit): New variable.
-	(get_prev_frame): Update.  Check the backtrace_limit.
-
-2003-08-09  Andrew Cagney  <cagney@redhat.com>
-
-	* defs.h (xstrprintf): Declare.
-	* utils.c (xstrprintf): New function.
-	* breakpoint.c (insert_breakpoints): Replace sprintf and
-	non-literal format strings, with xstrprintf and cleanups.
-	(delete_breakpoint,breakpoint_re_set): Ditto.
-	(commands_command, insert_breakpoints): Ditto.
-	(bpstat_stop_status, break_at_finish_at_depth_command_1): Ditto.
-	(break_at_finish_command_1): Ditto.
-
-2003-08-09  Andrew Cagney  <cagney@redhat.com>
-
-	* MAINTAINERS (language support): List Adam Fedor as Objective C
-	maintainer.
-
-2003-08-08  J. Brobecker  <brobecker@gnat.com>
-
-	* NEWS (Multi-arched targets): Document that all hppa-hpux targets
-	are now multiarched.
-
-2003-08-08  J. Brobecker  <brobecker@gnat.com>
-
-	* config/pa/tm-hppa64.h: Remove lots of macros that are no
-	longer necessary now that hppa64 is partially multiarch'ed.
-
-2003-08-08  Andrew Cagney  <cagney@redhat.com>
-
-	* interps.c (interp_set): Check for a NULL "old_interp".
-
-2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (FLAGS_TO_PASS): Add DESTDIR.
-	(install-only): Support DESTDIR.
-	(uninstall): Likewise.
-	(install-gdbtk): Likewise.
-
-2003-08-08  Elena Zannoni  <ezannoni@redhat.com>
-
-	* symtab.c (lookup_symbol_aux): Make sure that is_a_field_of_this
-	contains something meaningful at all times.
-
-Fri Aug  8 00:28:46 UTC 2003  Brendan Conoboy  <blc@redhat.com>
-
-	* configure.host: Set gdb_host_cpu=arm when host_cpu=xscale.
-
-Fri Aug  8 00:28:38 UTC 2003  Brendan Conoboy  <blc@redhat.com>
-
-	* MAINTAINERS (write after approval): Added self.
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* inferior.h (AT_SYMBOL): Define.
-	* blockframe.c (inside_entry_file): Check for AT_SYMBOL.
-	* infcall.c (call_function_by_hand): Add code to handle AT_SYMBOL.
-	* mips-tdep.c (mips_call_dummy_address): Delete function.
-	(mips_gdbarch_init): Set call_dummy_location to AT_SYMBOL, do not
-	set call_dummy_address.
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* language.c (op_error): Delete function.
-	(binop_type_check): Delete function.
-	* language.h (type_op_error, range_op_error): Delete macros.
-	(op_error): Delete declaration.
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* interps.h (INTERP_MI2, INTERP_MI3): Define.
-
-2003-08-07  Michal Ludvig  <mludvig@suse.cz>
-
-	* x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers.
-	(x86_64_push_arguments): Skip the red zone.
-
-2003-08-05  Andrew Cagney  <cagney@redhat.com>
-
-	* reggroups.c (reggroup_next): Check for the final entry.
-
 2003-08-04  Andrew Cagney  <cagney@redhat.com>
 
 	* monitor.h (monitor_dump_reg_block): Remove ATTR_FORMAT.
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index 39acdc8..078038e 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -236,7 +236,7 @@
   C++			Daniel Jacobowitz	dan@debian.org
   Java support		(Global Maintainers)
   Pascal support	Pierre Muller		muller@sources.redhat.com
-  Objective C support   Adam Fedor		fedor@gnu.org
+
 shared libs (devolved)	Kevin Buettner		kevinb@redhat.com
   xcoffsolib		Peter Schauer		Peter.Schauer@regent.e-technik.tu-muenchen.de
 
@@ -307,7 +307,6 @@
 FSF assignment and have submitted one good patch.
 
 David Anderson					davea@sgi.com
-Shrinivas Atre					shrinivasa@kpitcummins.com
 Scott Bambrough					scottb@netwinder.org
 Jim Blandy					jimb@redhat.com
 Philip Blundell					philb@gnu.org
@@ -321,14 +320,13 @@
 Michael Chastain				mec@shout.net
 Eric Christopher				echristo@redhat.com
 Nick Clifton					nickc@redhat.com
-Brendan Conoboy					blc@redhat.com
 DJ Delorie					dj@redhat.com
 Chris G. Demetriou				cgd@broadcom.com
 Philippe De Muyter				phdm@macqel.be
 Klee Dienes					kdienes@apple.com
 Richard Earnshaw				rearnsha@arm.com
 Frank Ch. Eigler				fche@redhat.com
-Ben Elliston					bje@wasabisystems.com
+Ben Elliston					bje@redhat.com
 Raoul Gough					RaoulGough@yahoo.co.uk
 Anthony Green			 		green@redhat.com
 Matthew Green					mrg@eterna.com.au
@@ -375,7 +373,6 @@
 Theodore A. Roth				troth@openavr.org
 Ian Roxborough					irox@redhat.com
 Grace Sainsbury					graces@redhat.com
-Kei Sakamoto					sakamoto.kei@renesas.com
 Mark Salter					msalter@redhat.com
 Peter Schauer					Peter.Schauer@regent
 Andreas Schwab					schwab@suse.de
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 39dfab2..3299c97 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -430,7 +430,6 @@
 	"datadir=$(datadir)" \
 	"includedir=$(includedir)" \
 	"against=$(against)" \
-	"DESTDIR=$(DESTDIR)" \
 	"AR=$(AR)" \
 	"AR_FLAGS=$(AR_FLAGS)" \
 	"CC=$(CC)" \
@@ -687,7 +686,6 @@
 gdb_wait_h = gdb_wait.h
 gnu_nat_h = gnu-nat.h
 gregset_h = gregset.h
-hppa_tdep_h = hppa-tdep.h
 i386_linux_tdep_h = i386-linux-tdep.h
 i386_tdep_h = i386-tdep.h
 i387_tdep_h = i387-tdep.h
@@ -965,7 +963,7 @@
 		else \
 		  true ; \
 		fi ; \
-		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
+		$(SHELL) $(srcdir)/../mkinstalldirs $(bindir) ; \
 		$(INSTALL_PROGRAM) gdb$(EXEEXT) \
 			$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
 		$(SHELL) $(srcdir)/../mkinstalldirs \
@@ -982,8 +980,7 @@
 		else \
 		  true ; \
 		fi ; \
-		rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \
-		      $(DESTDIR)$(man1dir)/$$transformed_name.1
+		rm -f $(bindir)/$$transformed_name$(EXEEXT) $(man1dir)/$$transformed_name.1
 	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 
 
 # We do this by grepping through sources.  If that turns out to be too slow,
@@ -1322,22 +1319,6 @@
 	$(CC) -c $(INTERNAL_CFLAGS) $(TARGET_SYSTEM_ROOT_DEFINE) \
 		-DBINDIR=\"$(bindir)\" $(srcdir)/main.c
 
-# FIXME: cagney/2003-08-10: "monitor.c" gets -Wformat-nonliteral
-# errors.  It turns out that that is the least of monitor.c's
-# problems.  The function print_vsprintf appears to be using
-# va_arg(long) to extract CORE_ADDR parameters - something that
-# definitly will not work.  "monitor.c" needs to be rewritten so that
-# it doesn't use format strings and instead uses callbacks.
-monitor.o: $(srcdir)/monitor.c
-	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $(srcdir)/monitor.c
-
-# FIXME: cagney/2003-08-10: Do not try to build "printcmd.c" with
-# -Wformat-nonliteral.  It needs to be overhauled so that it doesn't
-# pass user input strings as the format parameter to host printf
-# function calls.
-printcmd.o: $(srcdir)/printcmd.c
-	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $(srcdir)/printcmd.c
-
 # FIXME: Procfs.o gets -Wformat errors because things like pid_t don't
 # match output format strings.
 procfs.o: $(srcdir)/procfs.c
@@ -1355,12 +1336,6 @@
 		$(GDBTK_CFLAGS) \
 		$(srcdir)/v850ice.c
 
-# FIXME: cagney/2003-08-10: Do not try to build "valprint.c" with
-# -Wformat-nonliteral.  It relies on local_hex_format et.al. and
-# that's a mess.  It needs a serious overhaul.
-valprint.o: $(srcdir)/valprint.c
-	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $(srcdir)/valprint.c
-
 # FIXME: z8k-tdep.c calls _initialize_gdbtypes().  Since that isn't
 # declared -Wimplicit fails. It should be using the GDBARCH framework.
 # cagney 1999-09-02.
@@ -1701,7 +1676,7 @@
 doublest.o: doublest.c $(defs_h) $(doublest_h) $(floatformat_h) \
 	$(gdb_assert_h) $(gdb_string_h) $(gdbtypes_h)
 dpx2-nat.o: dpx2-nat.c $(defs_h) $(gdbcore_h) $(gdb_string_h)
-dsrec.o: dsrec.c $(defs_h) $(serial_h) $(srec_h) $(gdb_assert_h)
+dsrec.o: dsrec.c $(defs_h) $(serial_h) $(srec_h)
 dummy-frame.o: dummy-frame.c $(defs_h) $(dummy_frame_h) $(regcache_h) \
 	$(frame_h) $(inferior_h) $(gdb_assert_h) $(frame_unwind_h) \
 	$(command_h) $(gdbcmd_h)
@@ -1763,8 +1738,8 @@
 	$(command_h) $(gdbcmd_h)
 frame-unwind.o: frame-unwind.c $(defs_h) $(frame_h) $(frame_unwind_h) \
 	$(gdb_assert_h) $(dummy_frame_h)
-frv-tdep.o: frv-tdep.c $(defs_h) $(gdb_string_h) $(inferior_h) $(symfile_h) \
-	$(gdbcore_h) $(arch_utils_h) $(regcache_h)
+frv-tdep.o: frv-tdep.c $(defs_h) $(inferior_h) $(symfile_h) $(gdbcore_h) \
+	$(arch_utils_h) $(regcache_h)
 f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
 	$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
 	$(f_lang_h) $(gdb_string_h)
@@ -1815,7 +1790,7 @@
 	$(value_h) $(regcache_h) $(completer_h) $(language_h) $(osabi_h) \
 	$(gdb_assert_h) $(infttrace_h) $(symtab_h) $(infcall_h) \
 	$(a_out_encap_h) $(gdb_stat_h) $(gdb_wait_h) $(gdbcore_h) \
-	$(gdbcmd_h) $(target_h) $(symfile_h) $(objfiles_h) $(hppa_tdep_h)
+	$(gdbcmd_h) $(target_h) $(symfile_h) $(objfiles_h)
 hpread.o: hpread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(hp_symtab_h) \
 	$(syms_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
 	$(complaints_h) $(gdb_stabs_h) $(gdbtypes_h) $(demangle_h) \
@@ -1843,7 +1818,7 @@
 i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
 	$(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(gregset_h) \
 	$(i387_tdep_h) $(i386_tdep_h) $(i386_linux_tdep_h) \
-	$(gdb_proc_service_h) $(linux_nat_h)
+	$(gdb_proc_service_h)
 i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
 	$(value_h) $(regcache_h) $(inferior_h) $(reggroups_h) $(symtab_h) \
 	$(symfile_h) $(objfiles_h) $(solib_svr4_h) $(osabi_h) $(i386_tdep_h) \
@@ -2496,7 +2471,7 @@
 	else \
 	  true ; \
 	fi ; \
-	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
+	$(SHELL) $(srcdir)/../mkinstalldirs $(bindir); \
 	$(INSTALL_PROGRAM) insight$(EXEEXT) \
 		$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
 	$(SHELL) $(srcdir)/../mkinstalldirs \
diff --git a/gdb/NEWS b/gdb/NEWS
index 5d7c941..77e6931 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,12 +3,6 @@
 
 *** Changes since GDB 6.0:
 
-* "set prompt-escape-char" command deleted.
-
-The command "set prompt-escape-char" has been deleted.  This command,
-and its very obscure effet on GDB's prompt, was never documented,
-tested, nor mentioned in the NEWS file.
-
 *** Changes in GDB 6.0:
 
 * GDB supports logging output to a file
@@ -49,13 +43,9 @@
 Fix for gdb/702: a -var-assign that updates the value now shows up
                  in a subsequent -var-update.
 
-* New native configurations.
-
-FreeBSD/amd64					x86_64-*-freebsd*
-
 * Multi-arched targets.
 
-HP/PA HPUX11                                    hppa*-*-hpux*
+HP/PA HPUX11, 32bit ABI (partial)	hppa*-*-hpux* except hppa*64*-*-hpux11*
 Mitsubishi M32R/D w/simulator			m32r-*-elf*
 
 * OBSOLETE configurations and files
diff --git a/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c
index 71861d9..7880e58 100644
--- a/gdb/amd64fbsd-nat.c
+++ b/gdb/amd64fbsd-nat.c
@@ -223,6 +223,7 @@
      system header files and sysctl(3) to get at the relevant
      information.  */
 
+  extern int amd64fbsd_sc_reg_offset[];
 #define SC_REG_OFFSET amd64fbsd_sc_reg_offset
 
   /* We only check the program counter, stack pointer and frame
@@ -284,6 +285,9 @@
     int ps_strings;
     size_t len;
 
+    extern CORE_ADDR amd64fbsd_sigtramp_start;
+    extern CORE_ADDR amd64fbsd_sigtramp_end;
+
     mib[0] = CTL_KERN;
     mib[1] = KERN_PS_STRINGS;
     len = sizeof (ps_strings);
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 4e689ac6..9a11c90 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -59,8 +59,7 @@
     return 1;
   if (symfile_objfile == 0)
     return 0;
-  if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT
-      || CALL_DUMMY_LOCATION == AT_SYMBOL)
+  if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
     {
       /* Do not stop backtracing if the pc is in the call dummy
          at the entry point.  */
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 8aa8a5c..e681e32 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -584,17 +584,17 @@
 
   ALL_BREAKPOINTS (b)
     if (b->number == bnum)
-      {
-	char *tmpbuf = xstrprintf ("Type commands for when breakpoint %d is hit, one per line.", 
-				 bnum);
-	struct cleanup *cleanups = make_cleanup (xfree, tmpbuf);
-	l = read_command_lines (tmpbuf, from_tty);
-	do_cleanups (cleanups);
-	free_command_lines (&b->commands);
-	b->commands = l;
-	breakpoints_changed ();
-	breakpoint_modify_event (b->number);
-	return;
+    {
+      char tmpbuf[128];
+      sprintf (tmpbuf, 
+	       "Type commands for when breakpoint %d is hit, one per line.", 
+	       bnum);
+      l = read_command_lines (tmpbuf, from_tty);
+      free_command_lines (&b->commands);
+      b->commands = l;
+      breakpoints_changed ();
+      breakpoint_modify_event (b->number);
+      return;
     }
   error ("No breakpoint number %d.", bnum);
 }
@@ -749,6 +749,9 @@
   int process_warning = 0;
 #endif
 
+  static char message1[] = "Error inserting catchpoint %d:\n";
+  static char message[sizeof (message1) + 30];
+
   struct ui_file *tmp_error_stream = mem_fileopen ();
   make_cleanup_ui_file_delete (tmp_error_stream);
 
@@ -909,6 +912,9 @@
 	/* If we get here, we must have a callback mechanism for exception
 	   events -- with g++ style embedded label support, we insert
 	   ordinary breakpoints and not catchpoints. */
+	/* Format possible error message */
+	sprintf (message, message1, b->number);
+
 	val = target_insert_breakpoint (b->address, b->shadow_contents);
 	if (val)
 	  {
@@ -926,18 +932,14 @@
 	else
 	  {
 	    /* Bp set, now make sure callbacks are enabled */
-	    /* Format possible error msg */
-	    char *message = xstrprintf ("Error inserting catchpoint %d:\n",
-					b->number);
-	    struct cleanup *cleanups = make_cleanup (xfree, message);
 	    int val;
 	    args_for_catchpoint_enable args;
 	    args.kind = b->type == bp_catch_catch ? 
 	      EX_EVENT_CATCH : EX_EVENT_THROW;
 	    args.enable_p = 1;
 	    val = catch_errors (cover_target_enable_exception_callback,
-				&args, message, RETURN_MASK_ALL);
-	    do_cleanups (cleanups);
+				&args,
+				message, RETURN_MASK_ALL);
 	    if (val != 0 && val != -1)
 	      {
 		b->inserted = 1;
@@ -1081,12 +1083,11 @@
 	     && !b->inserted
 	     && !b->duplicate)
       {
-	char *prefix = xstrprintf ("warning: inserting catchpoint %d: ",
-				   b->number);
-	struct cleanup *cleanups = make_cleanup (xfree, prefix);
+	char prefix[64];
+
+	sprintf (prefix, "warning: inserting catchpoint %d: ", b->number);
 	val = catch_exceptions (uiout, insert_catchpoint, b, prefix,
 				RETURN_MASK_ERROR);
-	do_cleanups (cleanups);
 	if (val < 0)
 	  b->enable_state = bp_disabled;
 	else
@@ -2507,6 +2508,9 @@
   struct bpstats root_bs[1];
   /* Pointer to the last thing in the chain currently.  */
   bpstat bs = root_bs;
+  static char message1[] =
+  "Error evaluating expression for watchpoint %d\n";
+  char message[sizeof (message1) + 30 /* slop */ ];
 
   /* Get the address where the breakpoint would have been.  The
      "not_a_sw_breakpoint" argument is meant to distinguish between a
@@ -2605,16 +2609,12 @@
     bs->stop = 1;
     bs->print = 1;
 
+    sprintf (message, message1, b->number);
     if (b->type == bp_watchpoint ||
 	b->type == bp_hardware_watchpoint)
       {
-	char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n",
-				    b->number);
-	struct cleanup *cleanups = make_cleanup (xfree, message);
-	int e = catch_errors (watchpoint_check, bs, message, 
-			      RETURN_MASK_ALL);
-	do_cleanups (cleanups);
-	switch (e)
+	switch (catch_errors (watchpoint_check, bs, message, 
+			      RETURN_MASK_ALL))
 	  {
 	  case WP_DELETED:
 	    /* We've already printed what needs to be printed.  */
@@ -2682,49 +2682,42 @@
 	      }
 	  }
 	if (found)
-	  {
-	    char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n",
-					b->number);
-	    struct cleanup *cleanups = make_cleanup (xfree, message);
-	    int e = catch_errors (watchpoint_check, bs, message,
-				  RETURN_MASK_ALL);
-	    do_cleanups (cleanups);
-	    switch (e)
-	      {
-	      case WP_DELETED:
-		/* We've already printed what needs to be printed.  */
-		bs->print_it = print_it_done;
-		/* Stop.  */
-		break;
-	      case WP_VALUE_CHANGED:
-		if (b->type == bp_read_watchpoint)
-		  {
-		    /* Don't stop: read watchpoints shouldn't fire if
-		       the value has changed.  This is for targets
-		       which cannot set read-only watchpoints.  */
-		    bs->print_it = print_it_noop;
-		    bs->stop = 0;
-		    continue;
-		  }
-		++(b->hit_count);
-		break;
-	      case WP_VALUE_NOT_CHANGED:
-		/* Stop.  */
-		++(b->hit_count);
-		break;
-	      default:
-		/* Can't happen.  */
-	      case 0:
-		/* Error from catch_errors.  */
-		printf_filtered ("Watchpoint %d deleted.\n", b->number);
-		if (b->related_breakpoint)
-		  b->related_breakpoint->disposition = disp_del_at_next_stop;
-		b->disposition = disp_del_at_next_stop;
-		/* We've already printed what needs to be printed.  */
-		bs->print_it = print_it_done;
-		break;
-	      }
-	  }
+	  switch (catch_errors (watchpoint_check, bs, message,
+				RETURN_MASK_ALL))
+	    {
+	    case WP_DELETED:
+	      /* We've already printed what needs to be printed.  */
+	      bs->print_it = print_it_done;
+	      /* Stop.  */
+	      break;
+	    case WP_VALUE_CHANGED:
+	      if (b->type == bp_read_watchpoint)
+		{
+		  /* Don't stop: read watchpoints shouldn't fire if
+		     the value has changed.  This is for targets which
+		     cannot set read-only watchpoints.  */
+		  bs->print_it = print_it_noop;
+		  bs->stop = 0;
+		  continue;
+		}
+	      ++(b->hit_count);
+	      break;
+	    case WP_VALUE_NOT_CHANGED:
+	      /* Stop.  */
+	      ++(b->hit_count);
+	      break;
+	    default:
+	      /* Can't happen.  */
+	    case 0:
+	      /* Error from catch_errors.  */
+	      printf_filtered ("Watchpoint %d deleted.\n", b->number);
+	      if (b->related_breakpoint)
+		b->related_breakpoint->disposition = disp_del_at_next_stop;
+	      b->disposition = disp_del_at_next_stop;
+	      /* We've already printed what needs to be printed.  */
+	      bs->print_it = print_it_done;
+	      break;
+	    }
 	else	/* found == 0 */
 	  {
 	    /* This is a case where some watchpoint(s) triggered,
@@ -4992,6 +4985,7 @@
   CORE_ADDR low, high, selected_pc = 0;
   char *extra_args = NULL;
   char *level_arg;
+  char *addr_string;
   int extra_args_len = 0, if_arg = 0;
 
   if (!arg ||
@@ -5045,11 +5039,11 @@
     {
       if (find_pc_partial_function (selected_pc, (char **) NULL, &low, &high))
 	{
-	  char *addr_string;
+	  addr_string = (char *) xmalloc (26 + extra_args_len);
 	  if (extra_args_len)
-	    addr_string = xstrprintf ("*0x%s %s", paddr_nz (high), extra_args);
+	    sprintf (addr_string, "*0x%s %s", paddr_nz (high), extra_args);
 	  else
-	    addr_string = xstrprintf ("*0x%s", paddr_nz (high));
+	    sprintf (addr_string, "*0x%s", paddr_nz (high));
 	  break_command_1 (addr_string, flag, from_tty);
 	  xfree (addr_string);
 	}
@@ -5080,8 +5074,9 @@
 	{
 	  if (deprecated_selected_frame)
 	    {
-	      addr_string = xstrprintf ("*0x%s",
-					paddr_nz (get_frame_pc (deprecated_selected_frame)));
+	      addr_string = (char *) xmalloc (15);
+	      sprintf (addr_string, "*0x%s",
+		       paddr_nz (get_frame_pc (deprecated_selected_frame)));
 	      if (arg)
 		if_arg = 1;
 	    }
@@ -5127,12 +5122,11 @@
       sal = sals.sals[i];
       if (find_pc_partial_function (sal.pc, (char **) NULL, &low, &high))
 	{
-	  break_string;
+	  break_string = (char *) xmalloc (extra_args_len + 26);
 	  if (extra_args_len)
-	    break_string = xstrprintf ("*0x%s %s", paddr_nz (high),
-				       extra_args);
+	    sprintf (break_string, "*0x%s %s", paddr_nz (high), extra_args);
 	  else
-	    break_string = xstrprintf ("*0x%s", paddr_nz (high));
+	    sprintf (break_string, "*0x%s", paddr_nz (high));
 	  break_command_1 (break_string, flag, from_tty);
 	  xfree (break_string);
 	}
@@ -6543,17 +6537,17 @@
      exceptions are supported in this way, it's OK for now. FIXME */
   if (ep_is_exception_catchpoint (bpt) && target_has_execution)
     {
-      /* Format possible error msg */
-      char *message = xstrprintf ("Error in deleting catchpoint %d:\n",
-				  bpt->number);
-      struct cleanup *cleanups = make_cleanup (xfree, message);
+      static char message1[] = "Error in deleting catchpoint %d:\n";
+      static char message[sizeof (message1) + 30];
       args_for_catchpoint_enable args;
+
+      /* Format possible error msg */
+      sprintf (message, message1, bpt->number);
       args.kind = bpt->type == bp_catch_catch ? 
 	EX_EVENT_CATCH : EX_EVENT_THROW;
       args.enable_p = 0;
       catch_errors (cover_target_enable_exception_callback, &args,
 		    message, RETURN_MASK_ALL);
-      do_cleanups (cleanups);
     }
 
 
@@ -6943,17 +6937,16 @@
   struct breakpoint *b, *temp;
   enum language save_language;
   int save_input_radix;
+  static char message1[] = "Error in re-setting breakpoint %d:\n";
+  char message[sizeof (message1) + 30 /* slop */ ];
 
   save_language = current_language->la_language;
   save_input_radix = input_radix;
   ALL_BREAKPOINTS_SAFE (b, temp)
   {
     /* Format possible error msg */
-    char *message = xstrprintf ("Error in re-setting breakpoint %d:\n",
-				b->number);
-    struct cleanup *cleanups = make_cleanup (xfree, message);
+    sprintf (message, message1, b->number);
     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
-    do_cleanups (cleanups);
   }
   set_language (save_language);
   input_radix = save_input_radix;
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 8a0d057..be516c9 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -448,26 +448,6 @@
   c->enums = boolean_enums;
 }
 
-/* Add element named NAME to both the set and show command LISTs (the
-   list for set/show or some sublist thereof).  CLASS is as in
-   add_cmd.  VAR is address of the variable which will contain the
-   value.  SET_DOC and SHOW_DOR are the documentation strings.  */
-void
-add_setshow_uinteger_cmd (char *name,
-			  enum command_class class,
-			  unsigned int *var, char *set_doc, char *show_doc,
-			  cmd_sfunc_ftype *set_func,
-			  cmd_sfunc_ftype *show_func,
-			  struct cmd_list_element **set_list,
-			  struct cmd_list_element **show_list)
-{
-  add_setshow_cmd_full (name, class, var_uinteger, var,
-			set_doc, show_doc,
-			set_func, show_func,
-			set_list, show_list,
-			NULL, NULL);
-}
-
 /* Where SETCMD has already been added, add the corresponding show
    command to LIST and return a pointer to the added command (not
    necessarily the head of LIST).  */
diff --git a/gdb/command.h b/gdb/command.h
index 9cadd63..96c99ab 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -262,16 +262,6 @@
 				     struct cmd_list_element **set_list,
 				     struct cmd_list_element **show_list);
 
-extern void add_setshow_uinteger_cmd (char *name,
-				      enum command_class class,
-				      unsigned int *var,
-				      char *set_doc,
-				      char *show_doc,
-				      cmd_sfunc_ftype *set_func,
-				      cmd_sfunc_ftype *show_func,
-				      struct cmd_list_element **set_list,
-				      struct cmd_list_element **show_list);
-
 extern struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
 						   struct cmd_list_element
 						   **);
diff --git a/gdb/config/alpha/nm-fbsd.h b/gdb/config/alpha/nm-fbsd.h
index 2b3975a..9e72709 100644
--- a/gdb/config/alpha/nm-fbsd.h
+++ b/gdb/config/alpha/nm-fbsd.h
@@ -37,6 +37,8 @@
 
 /* Shared library support.  */
 
+#define SVR4_SHARED_LIBS
+
 #include "solib.h"		/* Support for shared libraries. */
 #include "elf/common.h"		/* Additional ELF shared library info. */
 
diff --git a/gdb/config/frv/tm-frv.h b/gdb/config/frv/tm-frv.h
index 303d1d3..40a2480 100644
--- a/gdb/config/frv/tm-frv.h
+++ b/gdb/config/frv/tm-frv.h
@@ -45,4 +45,18 @@
 extern CORE_ADDR frv_stopped_data_address(void);
 
 /* Use these macros for watchpoint insertion/deletion.  */
+#define target_insert_watchpoint(addr, len, type) \
+		remote_insert_watchpoint (addr, len, type)
+#define target_remove_watchpoint(addr, len, type) \
+		remote_remove_watchpoint (addr, len, type)
+#define target_insert_hw_breakpoint(addr, shadow) \
+		remote_insert_hw_breakpoint (addr, 1)
+#define target_remove_hw_breakpoint(addr, shadow) \
+		remote_remove_hw_breakpoint (addr, 1)
 #define target_stopped_data_address() frv_stopped_data_address()
+
+/* These declarations should be in remote.h, no?  */
+extern int remote_insert_watchpoint (CORE_ADDR addr, int len, int type);
+extern int remote_remove_watchpoint (CORE_ADDR addr, int len, int type);
+extern int remote_insert_hw_breakpoint (CORE_ADDR addr, int len);
+extern int remote_remove_hw_breakpoint (CORE_ADDR addr, int len);
diff --git a/gdb/config/i386/nm-i386sol2.h b/gdb/config/i386/nm-i386sol2.h
index 18afa04..aeb89a2 100644
--- a/gdb/config/i386/nm-i386sol2.h
+++ b/gdb/config/i386/nm-i386sol2.h
@@ -28,7 +28,6 @@
    can support "thousands" of hardware watchpoints, but gives no
    method for finding out how many.  So just tell GDB 'yes'.  */
 #define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE, CNT, OT) 1
-#define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1
 
 /* When a hardware watchpoint fires off the PC will be left at the
    instruction following the one which caused the watchpoint.  
diff --git a/gdb/config/i386/nm-linux.h b/gdb/config/i386/nm-linux.h
index 1df875f..ad57124 100644
--- a/gdb/config/i386/nm-linux.h
+++ b/gdb/config/i386/nm-linux.h
@@ -82,13 +82,4 @@
 /* Override child_resume in `infptrace.c'.  */
 #define CHILD_RESUME
 
-/* `linux-nat.c' and `i386-nat.c' have their own versions of
-   child_post_startup_inferior.  Define this to use the copy in
-   `i386-linux-nat.c' instead, which calls both.
-   
-   NOTE drow/2003-08-17: This is ugly beyond words, but properly
-   fixing it will require some serious surgery.  Ideally the target
-   stack could be used for this.  */
-#define LINUX_CHILD_POST_STARTUP_INFERIOR
-
 #endif /* nm-linux.h */
diff --git a/gdb/config/i386/nm-x86-64linux.h b/gdb/config/i386/nm-x86-64linux.h
index d1ac910..8ff8095 100644
--- a/gdb/config/i386/nm-x86-64linux.h
+++ b/gdb/config/i386/nm-x86-64linux.h
@@ -61,9 +61,4 @@
 /* Override copies of {fetch,store}_inferior_registers in `infptrace.c'.  */
 #define FETCH_INFERIOR_REGISTERS
 
-/* `linux-nat.c' and `i386-nat.c' have their own versions of
-   child_post_startup_inferior.  Define this to use the copy in
-   `x86-86-linux-nat.c' instead, which calls both.  */
-#define LINUX_CHILD_POST_STARTUP_INFERIOR
-
 #endif /* NM_X86_64_LINUX_H */
diff --git a/gdb/config/nm-linux.h b/gdb/config/nm-linux.h
index 5d4175c..9a04cf7 100644
--- a/gdb/config/nm-linux.h
+++ b/gdb/config/nm-linux.h
@@ -73,7 +73,3 @@
 #define CHILD_INSERT_FORK_CATCHPOINT
 #define CHILD_INSERT_VFORK_CATCHPOINT
 #define CHILD_INSERT_EXEC_CATCHPOINT
-#define CHILD_POST_STARTUP_INFERIOR
-#define CHILD_POST_ATTACH
-#define CHILD_FOLLOW_FORK
-#define KILL_INFERIOR
diff --git a/gdb/config/pa/tm-hppa64.h b/gdb/config/pa/tm-hppa64.h
index 8999edf..8d19a45 100644
--- a/gdb/config/pa/tm-hppa64.h
+++ b/gdb/config/pa/tm-hppa64.h
@@ -21,6 +21,10 @@
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
+struct type;
+struct value;
+struct frame_info;
+
 /* PA 64-bit specific definitions.  Override those which are in
    tm-hppa.h */
 
@@ -32,20 +36,406 @@
    hppa64-hp-hpux11.00; GDB managed to build / start / break main /
    run with multi-arch enabled.  Not sure about much else as there
    appears to be an unrelated problem in the SOM symbol table reader
-   causing GDB to lose line number information.  Since prior to this
+   causing GDB to loose line number information.  Since prior to this
    switch and a other recent tweaks, 64 bit PA hadn't been building
    for some months, this is probably the lesser of several evils.  */
 #define GDB_MULTI_ARCH GDB_MULTI_ARCH_PARTIAL
 
+/* FIXME: brobecker 2003-05-22: All the definition from this point until
+   the include of pa/tm-hppah.h are extracted from tm-hppa.h and tm-hppah.h.
+   They have been temporarily moved here, until hppa64 is multiarched too.  */
+
+#if !GDB_MULTI_ARCH
+extern int hppa_hpux_pc_in_sigtramp (CORE_ADDR pc, char *name);
+#define PC_IN_SIGTRAMP(pc, name) hppa_hpux_pc_in_sigtramp (pc, name)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern int hppa_reg_struct_has_addr (int gcc_p, struct type *type);
+#define REG_STRUCT_HAS_ADDR(gcc_p,type) hppa_reg_struct_has_addr (gcc_p,type)
+#endif
+
+/* Offset from address of function to start of its code.
+   Zero on most machines.  */
+
+#if !GDB_MULTI_ARCH
+#define FUNCTION_START_OFFSET 0
+#endif
+
+/* Advance PC across any function entry prologue instructions
+   to reach some "real" code.  */
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_skip_prologue (CORE_ADDR);
+#define SKIP_PROLOGUE(pc) (hppa_skip_prologue (pc))
+#endif
+
+/* If PC is in some function-call trampoline code, return the PC
+   where the function itself actually starts.  If not, return NULL.  */
+
+#if !GDB_MULTI_ARCH
+#define	SKIP_TRAMPOLINE_CODE(pc) hppa_skip_trampoline_code (pc)
+extern CORE_ADDR hppa_skip_trampoline_code (CORE_ADDR);
+#endif
+
+/* Return non-zero if we are in an appropriate trampoline. */
+
+#if !GDB_MULTI_ARCH
+#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) \
+   hppa_in_solib_call_trampoline (pc, name)
+extern int hppa_in_solib_call_trampoline (CORE_ADDR, char *);
+#endif
+
+#if !GDB_MULTI_ARCH
+#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) \
+  hppa_in_solib_return_trampoline (pc, name)
+extern int hppa_in_solib_return_trampoline (CORE_ADDR, char *);
+#endif
+
+#if !GDB_MULTI_ARCH
+#undef	DEPRECATED_SAVED_PC_AFTER_CALL
+#define DEPRECATED_SAVED_PC_AFTER_CALL(frame) hppa_saved_pc_after_call (frame)
+extern CORE_ADDR hppa_saved_pc_after_call (struct frame_info *);
+#endif
+
+#if !GDB_MULTI_ARCH
+extern int hppa_inner_than (CORE_ADDR lhs, CORE_ADDR rhs);
+#define INNER_THAN(lhs,rhs) hppa_inner_than(lhs,rhs)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_stack_align (CORE_ADDR sp);
+#define STACK_ALIGN(sp) hppa_stack_align (sp)
+#endif
+
+/* Amount PC must be decremented by after a breakpoint.  This is often
+   the number of bytes returned by BREAKPOINT_FROM_PC but not always.
+
+   Not on the PA-RISC */
+
+#if !GDB_MULTI_ARCH
+#define DECR_PC_AFTER_BREAK 0
+#endif
+
+/* Say how long (ordinary) registers are.  This is a piece of bogosity
+   used in push_word and a few other places; REGISTER_RAW_SIZE is the
+   real way to know how big a register is.  */
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_REGISTER_SIZE 4
+#endif
+
+/* Number of machine registers */
+
+#if !GDB_MULTI_ARCH
+#define NUM_REGS 128
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_FP_REGNUM 3		/* Contains address of executing stack */
+				/* frame */
+#endif
+#if !GDB_MULTI_ARCH
+#define SP_REGNUM 30		/* Contains address of top of stack */
+#endif
+
+#if !GDB_MULTI_ARCH
+#define FP0_REGNUM 64		/* floating point reg. 0 (fspr) */
+#endif
+
+/* compatibility with the rest of gdb. */
+#if !GDB_MULTI_ARCH
+#define PC_REGNUM PCOQ_HEAD_REGNUM
+#endif
+#if !GDB_MULTI_ARCH
+#define NPC_REGNUM PCOQ_TAIL_REGNUM
+#endif
+
+/* Number of bytes of storage in the actual machine representation
+   for register N.  On the PA-RISC, all regs are 4 bytes, including
+   the FP registers (they're accessed as two 4 byte halves).  */
+
+#if !GDB_MULTI_ARCH
+extern int hppa_register_raw_size (int reg_nr);
+#define REGISTER_RAW_SIZE(N) hppa_register_raw_size (N)
+#endif
+
+/* Total amount of space needed to store our copies of the machine's
+   register state, the array `registers'.  */
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_REGISTER_BYTES (NUM_REGS * 4)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern int hppa_register_byte (int reg_nr);
+#define REGISTER_BYTE(N) hppa_register_byte (N)
+#endif
+
+/* Number of bytes of storage in the program's representation
+   for register N. */
+
+#if !GDB_MULTI_ARCH
+#define REGISTER_VIRTUAL_SIZE(N) REGISTER_RAW_SIZE(N)
+#endif
+
+/* Largest value REGISTER_RAW_SIZE can have.  */
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_MAX_REGISTER_RAW_SIZE 4
+#endif
+
+/* Largest value REGISTER_VIRTUAL_SIZE can have.  */
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE 8
+#endif
+
+#if !GDB_MULTI_ARCH
+extern struct type * hppa_register_virtual_type (int reg_nr);
+#define REGISTER_VIRTUAL_TYPE(N) hppa_register_virtual_type (N)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern void hppa_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
+#define STORE_STRUCT_RETURN(ADDR, SP) hppa_store_struct_return (ADDR, SP)
+#endif
+
+/* Extract from an array REGBUF containing the (raw) register state
+   a function return value of type TYPE, and copy that, in virtual format,
+   into VALBUF.  */
+
+#if !GDB_MULTI_ARCH
+void hppa_extract_return_value (struct type *type, char *regbuf, char *valbuf);
+#define DEPRECATED_EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+  hppa_extract_return_value (TYPE, REGBUF, VALBUF);
+#endif
+
+ /* elz: decide whether the function returning a value of type type
+    will put it on the stack or in the registers.
+    The pa calling convention says that:
+    register 28 (called ret0 by gdb) contains any ASCII char,
+    and any non_floating point value up to 32-bits.
+    reg 28 and 29 contain non-floating point up tp 64 bits and larger
+    than 32 bits. (higer order word in reg 28).
+    fr4: floating point up to 64 bits
+    sr1: space identifier (32-bit)
+    stack: any lager than 64-bit, with the address in r28
+  */
+#if !GDB_MULTI_ARCH
+extern use_struct_convention_fn hppa_use_struct_convention;
+#define USE_STRUCT_CONVENTION(gcc_p,type) hppa_use_struct_convention (gcc_p,type)
+#endif
+
+/* Write into appropriate registers a function return value
+   of type TYPE, given in virtual format.  */
+
+#if !GDB_MULTI_ARCH
+extern void hppa_store_return_value (struct type *type, char *valbuf);
+#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \
+  hppa_store_return_value (TYPE, VALBUF);
+#endif
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_extract_struct_value_address (char *regbuf);
+#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
+  hppa_extract_struct_value_address (REGBUF)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern int hppa_cannot_store_register (int regnum);
+#define CANNOT_STORE_REGISTER(regno) hppa_cannot_store_register (regno)
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_INIT_EXTRA_FRAME_INFO(fromleaf, frame) hppa_init_extra_frame_info (fromleaf, frame)
+extern void hppa_init_extra_frame_info (int, struct frame_info *);
+#endif
+
+/* Describe the pointer in each stack frame to the previous stack frame
+   (its caller).  */
+
+/* DEPRECATED_FRAME_CHAIN takes a frame's nominal address and produces
+   the frame's chain-pointer.  */
+
+/* In the case of the PA-RISC, the frame's nominal address
+   is the address of a 4-byte word containing the calling frame's
+   address (previous FP).  */
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_FRAME_CHAIN(thisframe) hppa_frame_chain (thisframe)
+extern CORE_ADDR hppa_frame_chain (struct frame_info *);
+#endif
+
+#if !GDB_MULTI_ARCH
+extern int hppa_frame_chain_valid (CORE_ADDR, struct frame_info *);
+#define DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe) hppa_frame_chain_valid (chain, thisframe)
+#endif
+
+/* Define other aspects of the stack frame.  */
+
+/* A macro that tells us whether the function invocation represented
+   by FI does not have a frame on the stack associated with it.  If it
+   does not, FRAMELESS is set to 1, else 0.  */
+#if !GDB_MULTI_ARCH
+#define FRAMELESS_FUNCTION_INVOCATION(FI) \
+  (hppa_frameless_function_invocation (FI))
+extern int hppa_frameless_function_invocation (struct frame_info *);
+#endif
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_frame_saved_pc (struct frame_info *frame);
+#define DEPRECATED_FRAME_SAVED_PC(FRAME) hppa_frame_saved_pc (FRAME)
+#endif
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_frame_locals_address (struct frame_info *fi);
+#define DEPRECATED_FRAME_LOCALS_ADDRESS(fi) hppa_frame_locals_address (fi)
+#endif
+
+#if !GDB_MULTI_ARCH
+#define FRAME_ARGS_SKIP 0
+#endif
+
+/* Things needed for making the inferior call functions.  */
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_PUSH_DUMMY_FRAME hppa_push_dummy_frame ()
+extern void hppa_push_dummy_frame (void);
+#endif
+
+/* Discard from the stack the innermost frame, 
+   restoring all saved registers.  */
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_POP_FRAME  hppa_pop_frame ()
+extern void hppa_pop_frame (void);
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_CALL_DUMMY_LENGTH (INSTRUCTION_SIZE * 28)
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_CALL_DUMMY_START_OFFSET 0
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
+  (hppa_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
+extern CORE_ADDR hppa_push_arguments (int, struct value **, CORE_ADDR, int,
+				      CORE_ADDR);
+#endif
+
+#if !GDB_MULTI_ARCH
+extern CORE_ADDR hppa_smash_text_address (CORE_ADDR addr);
+#define SMASH_TEXT_ADDRESS(addr) hppa_smash_text_address (addr)
+#endif
+
+#if !GDB_MULTI_ARCH
+#define BELIEVE_PCC_PROMOTION 1
+#endif
+
+#if !GDB_MULTI_ARCH
+#define TARGET_READ_PC(pid) hppa_target_read_pc (pid)
+extern CORE_ADDR hppa_target_read_pc (ptid_t);
+#endif
+
+#if !GDB_MULTI_ARCH
+#define TARGET_WRITE_PC(v,pid) hppa_target_write_pc (v,pid)
+extern void hppa_target_write_pc (CORE_ADDR, ptid_t);
+#endif
+
+#if !GDB_MULTI_ARCH
+#define DEPRECATED_TARGET_READ_FP() hppa_target_read_fp ()
+extern CORE_ADDR hppa_target_read_fp (void);
+#endif
+
 #include "pa/tm-hppah.h"
 
+#define HPUX_1100 1
+
+/* The low two bits of the IA are the privilege level of the instruction.  */
+#define ADDR_BITS_REMOVE(addr) ((CORE_ADDR)addr & (CORE_ADDR)~3)
+
+/* Say how long (ordinary) registers are.  This is used in
+   push_word and a few other places, but REGISTER_RAW_SIZE is
+   the real way to know how big a register is.  */
+
+#undef DEPRECATED_REGISTER_SIZE
+#define DEPRECATED_REGISTER_SIZE 8
+
+/* Number of bytes of storage in the actual machine representation
+   for register N.  On the PA-RISC 2.0, all regs are 8 bytes, including
+   the FP registers (they're accessed as two 4 byte halves).  */
+
+#undef REGISTER_RAW_SIZE
+#define REGISTER_RAW_SIZE(N) 8
+
+/* Largest value REGISTER_RAW_SIZE can have.  */
+
+#undef DEPRECATED_MAX_REGISTER_RAW_SIZE
+#define DEPRECATED_MAX_REGISTER_RAW_SIZE 8
+
+/* Total amount of space needed to store our copies of the machine's
+   register state, the array `registers'.  */
+
+#undef DEPRECATED_REGISTER_BYTES
+#define DEPRECATED_REGISTER_BYTES (NUM_REGS * 8)
+
+/* Index within `registers' of the first byte of the space for
+   register N.  */
+
+#undef REGISTER_BYTE
+#define REGISTER_BYTE(N) ((N) * 8)
+
+#undef REGISTER_VIRTUAL_TYPE
+#define REGISTER_VIRTUAL_TYPE(N) \
+ ((N) < FP4_REGNUM ? builtin_type_unsigned_long_long : builtin_type_double)
+
+
+/* Number of machine registers */
+#undef NUM_REGS
+#define NUM_REGS 96
+
+/* Initializer for an array of names of registers.
+   There should be NUM_REGS strings in this initializer.
+   They are in rows of eight entries  */
+extern const char *hppa64_register_name (int i);
+#define REGISTER_NAME hppa64_register_name
+
+#undef FP0_REGNUM
 #undef FP4_REGNUM
+#define FP0_REGNUM 64		/* floating point reg. 0 (fspr)*/
 #define FP4_REGNUM 68
-#define AP_REGNUM 29  /* Argument Pointer Register */
+
+/* Redefine some target bit sizes from the default.  */
+
+/* Number of bits in a long or unsigned long for the target machine. */
+
+#define TARGET_LONG_BIT 64
+
+/* Number of bits in a long long or unsigned long long for the 
+   target machine.  */
+
+#define TARGET_LONG_LONG_BIT 64
+
+/* Number of bits in a pointer for the target machine */
+
+#define TARGET_PTR_BIT 64
+
+/* Argument Pointer Register */
+#define AP_REGNUM 29
+
 #define DP_REGNUM 27
+
 #define FP5_REGNUM 70
+
 #define SR5_REGNUM 48
 
+/* We access locals from SP. This may not work for frames which call
+   alloca; for those, we may need to consult unwind tables.
+   jimb: FIXME.  */
+#undef DEPRECATED_FRAME_LOCALS_ADDRESS
+#define DEPRECATED_FRAME_LOCALS_ADDRESS(fi) (get_frame_base (fi))
 
 /* For a number of horrible reasons we may have to adjust the location
    of variables on the stack.  Ugh.  jimb: why? */
@@ -102,6 +492,19 @@
                     0xe820f0000fb110d3LL, 0x0001000400151820LL,\
                     0xe6c0000008000240LL}
 
+#define DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET 22 * 4
+
+/* DEPRECATED_CALL_DUMMY_LENGTH is computed based on the size of a
+   word on the target machine, not the size of an instruction.  Since
+   a word on this target holds two instructions we have to divide the
+   instruction size by two to get the word size of the dummy.  */
+#undef DEPRECATED_CALL_DUMMY_LENGTH
+#define DEPRECATED_CALL_DUMMY_LENGTH (INSTRUCTION_SIZE * 26 / 2)
+
+/* The PA64 ABI mandates a 16 byte stack alignment.  */
+#undef STACK_ALIGN
+#define STACK_ALIGN(arg) ( ((arg)%16) ? (((arg)+15)&-16) : (arg))
+
 /* The PA64 ABI reserves 64 bytes of stack space for outgoing register
    parameters.  */
 #undef REG_PARM_STACK_SPACE
@@ -115,22 +518,115 @@
 #undef SR4EXPORT_LDIL_OFFSET
 #undef SR4EXPORT_LDO_OFFSET
 
+#undef REG_STRUCT_HAS_ADDR
+
+#undef DEPRECATED_EXTRACT_RETURN_VALUE
+/* RM: floats are returned in FR4R, doubles in FR4
+ *     integral values are in r28, padded on the left 
+ *     aggregates less that 65 bits are in r28, right padded 
+ *     aggregates upto 128 bits are in r28 and r29, right padded
+ */ 
+#define DEPRECATED_EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+  { \
+    if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \
+      memcpy ((VALBUF), \
+	      ((char *)(REGBUF)) + REGISTER_BYTE (FP4_REGNUM) + \
+              (DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (TYPE)), \
+	      TYPE_LENGTH (TYPE)); \
+    else if  (is_integral_type(TYPE))   \
+       memcpy ((VALBUF), \
+               (char *)(REGBUF) + REGISTER_BYTE (28) + \
+               (DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (TYPE)), \
+               TYPE_LENGTH (TYPE)); \
+    else if (TYPE_LENGTH (TYPE) <= 8)   \
+       memcpy ((VALBUF), \
+               (char *)(REGBUF) + REGISTER_BYTE (28), \
+               TYPE_LENGTH (TYPE)); \
+    else if (TYPE_LENGTH (TYPE) <= 16)   \
+      { \
+        memcpy ((VALBUF), \
+                (char *)(REGBUF) + REGISTER_BYTE (28), \
+                8); \
+        memcpy (((char *) VALBUF + 8), \
+                (char *)(REGBUF) + REGISTER_BYTE (29), \
+                TYPE_LENGTH (TYPE) - 8); \
+       } \
+  }
+
+/* RM: struct upto 128 bits are returned in registers */
+#undef USE_STRUCT_CONVENTION
+#define USE_STRUCT_CONVENTION(gcc_p, value_type)\
+  (TYPE_LENGTH (value_type) > 16)                
+
+/* RM: for return command */
+#undef DEPRECATED_STORE_RETURN_VALUE
+#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \
+  { \
+    if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \
+      deprecated_write_register_bytes \
+	      (REGISTER_BYTE (FP4_REGNUM) + \
+              (DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (TYPE)), \
+              (VALBUF), \
+	      TYPE_LENGTH (TYPE)); \
+    else if (is_integral_type(TYPE))   \
+       deprecated_write_register_bytes \
+              (REGISTER_BYTE (28) + \
+                 (DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (TYPE)), \
+               (VALBUF), \
+               TYPE_LENGTH (TYPE)); \
+    else if (TYPE_LENGTH (TYPE) <= 8)   \
+       deprecated_write_register_bytes \
+             ( REGISTER_BYTE (28), \
+               (VALBUF), \
+               TYPE_LENGTH (TYPE)); \
+    else if (TYPE_LENGTH (TYPE) <= 16)   \
+      { \
+        deprecated_write_register_bytes \
+               (REGISTER_BYTE (28), \
+                (VALBUF), \
+                8); \
+        deprecated_write_register_bytes \
+               (REGISTER_BYTE (29), \
+                ((char *) VALBUF + 8), \
+                TYPE_LENGTH (TYPE) - 8); \
+       } \
+  }
+
+/* RM: these are the PA64 equivalents of the macros in tm-hppah.h --
+ * see comments there.  For PA64, the save_state structure is at an
+ * offset of 24 32-bit words from the sigcontext structure. The 64 bit
+ * general registers are at an offset of 640 bytes from the beginning of the
+ * save_state structure, and the floating pointer register are at an offset
+ * of 256 bytes from the beginning of the save_state structure.
+ */
 #undef FRAME_SAVED_PC_IN_SIGTRAMP
-extern void hppa64_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
-                                                    CORE_ADDR *tmp);
 #define FRAME_SAVED_PC_IN_SIGTRAMP(FRAME, TMP) \
-  hppa64_hpux_frame_saved_pc_in_sigtramp (FRAME, TMP)
+{ \
+  *(TMP) = read_memory_integer (get_frame_base (FRAME) + (24 * 4) + 640 + (33 * 8), 8); \
+}
 
 #undef FRAME_BASE_BEFORE_SIGTRAMP
-extern void hppa64_hpux_frame_base_before_sigtramp (struct frame_info *fi,
-                                                    CORE_ADDR *tmp);
 #define FRAME_BASE_BEFORE_SIGTRAMP(FRAME, TMP) \
-  hppa64_hpux_frame_base_before_sigtramp (FRAME, TMP)
+{ \
+  *(TMP) = read_memory_integer (get_frame_base (FRAME) + (24 * 4) + 640 + (30 * 8), 8); \
+}
 
 #undef FRAME_FIND_SAVED_REGS_IN_SIGTRAMP
-extern void hppa64_hpux_frame_find_saved_regs_in_sigtramp
-              (struct frame_info *fi, CORE_ADDR *fsr);
 #define FRAME_FIND_SAVED_REGS_IN_SIGTRAMP(FRAME, FSR) \
-  hppa64_hpux_frame_find_saved_regs_in_sigtramp (FRAME, FSR)
+{ \
+  int i; \
+  CORE_ADDR TMP1, TMP2; \
+  TMP1 = get_frame_base (FRAME) + (24 * 4) + 640; \
+  TMP2 = get_frame_base (FRAME) + (24 * 4) + 256; \
+  for (i = 0; i < NUM_REGS; i++) \
+    { \
+      if (i == SP_REGNUM) \
+        (FSR)[SP_REGNUM] = read_memory_integer (TMP1 + SP_REGNUM * 8, 8); \
+      else if (i >= FP0_REGNUM) \
+        (FSR)[i] = TMP2 + (i - FP0_REGNUM) * 8; \
+      else \
+        (FSR)[i] = TMP1 + i * 8; \
+    } \
+}
 
 /* jimb: omitted purify call support */
diff --git a/gdb/config/pa/tm-hppah.h b/gdb/config/pa/tm-hppah.h
index 325af81..345baaf 100644
--- a/gdb/config/pa/tm-hppah.h
+++ b/gdb/config/pa/tm-hppah.h
@@ -38,17 +38,17 @@
 extern void hppa_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
                                                   CORE_ADDR *tmp);
 #define FRAME_SAVED_PC_IN_SIGTRAMP(FRAME, TMP) \
-  hppa32_hpux_frame_saved_pc_in_sigtramp (FRAME, TMP)
+  hppa_hpux_frame_saved_pc_in_sigtramp (FRAME, TMP)
 
 extern void hppa_hpux_frame_base_before_sigtramp (struct frame_info *fi,
                                                   CORE_ADDR *tmp);
 #define FRAME_BASE_BEFORE_SIGTRAMP(FRAME, TMP) \
-  hppa32_hpux_frame_base_before_sigtramp (FRAME, TMP)
+  hppa_hpux_frame_base_before_sigtramp (FRAME, TMP)
 
 extern void hppa_hpux_frame_find_saved_regs_in_sigtramp
               (struct frame_info *fi, CORE_ADDR *fsr);
 #define FRAME_FIND_SAVED_REGS_IN_SIGTRAMP(FRAME, FSR) \
-  hppa32_hpux_frame_find_saved_regs_in_sigtramp (FRAME, FSR)
+  hppa_hpux_frame_find_saved_regs_in_sigtramp (FRAME, FSR)
 
 /* For HP-UX on PA-RISC we have an implementation
    for the exception handling target op (in hppa-tdep.c) */
diff --git a/gdb/configure.host b/gdb/configure.host
index fa973af..b801589 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -21,7 +21,6 @@
 s390*)			gdb_host_cpu=s390 ;;
 sh*)			gdb_host_cpu=sh ;;
 x86_64*)		gdb_host_cpu=i386 ;;
-xscale*)		gdb_host_cpu=arm ;;
 *)			gdb_host_cpu=$host_cpu ;;
 
 esac
diff --git a/gdb/defs.h b/gdb/defs.h
index 778f557..86808e1 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -285,15 +285,6 @@
 #endif
 #endif
 
-/* Be conservative and use enum bitfields only with GCC.
-   This is copied from gcc 3.3.1, system.h.  */
-
-#if defined(__GNUC__) && (__GNUC__ >= 2)
-#define ENUM_BITFIELD(TYPE) enum TYPE
-#else
-#define ENUM_BITFIELD(TYPE) unsigned int
-#endif
-
 /* Needed for various prototypes */
 
 struct symtab;
@@ -864,9 +855,6 @@
 extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
 extern void xvasprintf (char **ret, const char *format, va_list ap);
 
-/* Like asprintf, but return the string, throw an error if no memory.  */
-extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
-
 extern int parse_escape (char **);
 
 /* Message to be printed before the error message, when an error occurs.  */
diff --git a/gdb/disasm.c b/gdb/disasm.c
index 47bb125..f86ec3f 100644
--- a/gdb/disasm.c
+++ b/gdb/disasm.c
@@ -334,7 +334,6 @@
   di.arch = gdbarch_bfd_arch_info (gdbarch)->arch;
   di.mach = gdbarch_bfd_arch_info (gdbarch)->mach;
   di.endian = gdbarch_byte_order (gdbarch);
-  di.insn_sets = 0;
   return di;
 }
 
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index f611a6e..3de06db 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,39 +1,3 @@
-2003-08-18  Andrew Cagney  <cagney@redhat.com>
-
-	* gdbint.texinfo (Target Architecture Definition): Document
-	"frame_red_zone_size".
-
-2003-08-09  Andrew Cagney  <cagney@redhat.com>
-
-	* gdb.texinfo (Backtrace): Replace "set/show backtrace-below-main"
-	with "set/show backtrace past-main" and "set/show backtrace
-	limit".
-
-2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (install-info): Support DESTDIR.
-	(install-html): Likewise.
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	Patch from Nick Roberts.
-	* gdb.texinfo (Using GDB under GNU Emacs): Fix/update key
-	bindings.  Remove description of send-gdb-command.
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* gdb.texinfo (Mode Options): Mention that "mi2" was included in
-	GDB 6.0.
-
-2003-08-06  Andrew Cagney  <cagney@redhat.com>
-
-	* gdb.texinfo (Mode Options): Mention that level three is the
-	highest available and that level 2 is deprecated.
-	(Annotations Overview): Mention annotation levels. Cross reference
-	to "Limitations of the Annotation Interface" in annotate.texi.
-	(TODO, Value Annotations, Frame Annotations): Delete section.
-	(Displays, Breakpoint Info): Delete.
-
 2003-08-04  Andrew Cagney  <cagney@redhat.com>
 
 	* agentexpr.texi: Delete @bye.
diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
index a06cc4a..4e8c64e 100644
--- a/gdb/doc/Makefile.in
+++ b/gdb/doc/Makefile.in
@@ -156,14 +156,14 @@
 diststuff: info
 
 install-info: $(INFO_DEPS)
-	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(infodir)
+	$(SHELL) $(srcdir)/../../mkinstalldirs $(infodir)
 	@list='$(INFO_DEPS)'; \
 	for file in $$list; do \
 	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
 	  for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
 	    if test -f $$d/$$ifile; then \
-	      echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
-	      $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
+	      echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \
+	      $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \
 	    else : ; fi; \
 	  done; \
 	done
@@ -171,8 +171,8 @@
 	@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
 	  list='$(INFO_DEPS)'; \
 	  for file in $$list; do \
-	    echo " install-info --info-dir=$(infodir) $(DESTDIR)$(infodir)/$$file";\
-	    install-info --info-dir=$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
+	    echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\
+	    install-info --info-dir=$(infodir) $(infodir)/$$file || :;\
 	  done; \
 	else : ; fi
 
@@ -194,7 +194,7 @@
 
 install-html: html
 	for i in *.html ; do \
-		$(INSTALL_DATA) $$i $(DESTDIR)$(htmldir)/$$i ; \
+		$(INSTALL_DATA) $$i $(htmldir)/$$i ; \
 	done
 
 STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi *.pdf
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index cf69fd3..022b34d 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1054,15 +1054,12 @@
 @cindex @code{--annotate}
 This option sets the @dfn{annotation level} inside @value{GDBN}.  Its
 effect is identical to using @samp{set annotate @var{level}}
-(@pxref{Annotations}).  The annotation @var{level} controls how much
-information @value{GDBN} prints together with its prompt, values of
-expressions, source lines, and other types of output.  Level 0 is the
-normal, level 1 is for use when @value{GDBN} is run as a subprocess of
-@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
-that control @value{GDBN}, and level 2 has been deprecated.
-
-The annotation mechanism has largely been superseeded by @sc{gdb/mi}
-(@pxref{GDB/MI}).
+(@pxref{Annotations}).
+Annotation level controls how much information does @value{GDBN} print
+together with its prompt, values of expressions, source lines, and other
+types of output.  Level 0 is the normal, level 1 is for use when
+@value{GDBN} is run as a subprocess of @sc{gnu} Emacs, level 2 is the
+maximum annotation suitable for programs that control @value{GDBN}.
 
 @item -async
 @cindex @code{--async}
@@ -1133,11 +1130,11 @@
 @xref{Interpreters, , Command Interpreters}.
 
 @samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
-@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
-The @sc{gdb/mi} Interface}) included in @var{GDBN} version 6.0.  The
-previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3,
-can be selected with @samp{--interpreter=mi1}.  Earlier @sc{gdb/mi}
-interfaces are not supported.
+@value{GDBN} to use the current @dfn{@sc{gdb/mi} interface}
+(@pxref{GDB/MI, , The @sc{gdb/mi} Interface}).  The previous @sc{gdb/mi}
+interface, included in @value{GDBN} version 5.3, can be selected with
+@samp{--interpreter=mi1}.  Earlier @sc{gdb/mi} interfaces
+are not supported.
 
 @item -write
 @cindex @code{--write}
@@ -3922,40 +3919,27 @@
 value, indicating that your program has stopped at the beginning of the
 code for line @code{993} of @code{builtin.c}.
 
-@kindex set backtrace past-main
-@kindex show backtrace past-main
-@kindex set backtrace limit
-@kindex show backtrace limit
+@kindex set backtrace-below-main
+@kindex show backtrace-below-main
 
-Most programs have a standard user entry point---a place where system
-libraries and startup code transition into user code.  For C this is
-@code{main}.  When @value{GDBN} finds the entry function in a backtrace
-it will terminate the backtrace, to avoid tracing into highly
-system-specific (and generally uninteresting) code.
-
-If you need to examine the startup code, or limit the number of levels
-in a backtrace, you can change this behavior:
+Most programs have a standard entry point---a place where system libraries
+and startup code transition into user code.  For C this is @code{main}.
+When @value{GDBN} finds the entry function in a backtrace it will terminate
+the backtrace, to avoid tracing into highly system-specific (and generally
+uninteresting) code.  If you need to examine the startup code, then you can
+change this behavior.
 
 @table @code
-@item set backtrace past-main
-@itemx set backtrace past-main on
-Backtraces will continue past the user entry point.
-
-@item set backtrace past-main off
+@item set backtrace-below-main off
 Backtraces will stop when they encounter the user entry point.  This is the
 default.
 
-@item show backtrace past-main
-Display the current user entry point backtrace policy.
+@item set backtrace-below-main
+@itemx set backtrace-below-main on
+Backtraces will continue past the user entry point to the top of the stack.
 
-@item set backtrace limit @var{n}
-@itemx set backtrace limit 0
-@cindex backtrace limit
-Limit the backtrace to @var{n} levels.  A value of zero means
-unlimited.
-
-@item show backtrace limit
-Display the current limit on backtrace levels.
+@item show backtrace-below-main
+Display the current backtrace policy.
 @end table
 
 @node Selection
@@ -14158,26 +14142,36 @@
 Explicit @value{GDBN} @code{list} or search commands still produce output as
 usual, but you probably have no reason to use them from Emacs.
 
-If you specify an absolute file name when prompted for the @kbd{M-x
-gdb} argument, then Emacs sets your current working directory to where
-your program resides.  If you only specify the file name, then Emacs
-sets your current working directory to to the directory associated
-with the previous buffer.  In this case, @value{GDBN} may find your
-program by searching your environment's @code{PATH} variable, but on
-some operating systems it might not find the source.  So, although the
-@value{GDBN} input and output session proceeds normally, the auxiliary
-buffer does not display the current source and line of execution.
+@quotation
+@emph{Warning:} If the directory where your program resides is not your
+current directory, it can be easy to confuse Emacs about the location of
+the source files, in which case the auxiliary display buffer does not
+appear to show your source.  @value{GDBN} can find programs by searching your
+environment's @code{PATH} variable, so the @value{GDBN} input and output
+session proceeds normally; but Emacs does not get enough information
+back from @value{GDBN} to locate the source files in this situation.  To
+avoid this problem, either start @value{GDBN} mode from the directory where
+your program resides, or specify an absolute file name when prompted for the
+@kbd{M-x gdb} argument.
 
-The initial working directory of @value{GDBN} is printed on the top
-line of the @value{GDBN} I/O buffer and this serves as a default for
-the commands that specify files for @value{GDBN} to operate
-on.  @xref{Files, ,Commands to specify files}.
+A similar confusion can result if you use the @value{GDBN} @code{file} command to
+switch to debugging a program in some other location, from an existing
+@value{GDBN} buffer in Emacs.
+@end quotation
 
-By default, @kbd{M-x gdb} calls the program called @file{gdb}.  If you
-need to call @value{GDBN} by a different name (for example, if you
-keep several configurations around, with different names) you can
-customize the Emacs variable @code{gud-gdb-command-name} to run the
-one you want.
+By default, @kbd{M-x gdb} calls the program called @file{gdb}.  If
+you need to call @value{GDBN} by a different name (for example, if you keep
+several configurations around, with different names) you can set the
+Emacs variable @code{gdb-command-name}; for example,
+
+@smallexample
+(setq gdb-command-name "mygdb")
+@end smallexample
+
+@noindent
+(preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
+in your @file{.emacs} file) makes Emacs call the program named
+``@code{mygdb}'' instead.
 
 In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
 addition to the standard Shell mode commands:
@@ -14186,47 +14180,66 @@
 @item C-h m
 Describe the features of Emacs' @value{GDBN} Mode.
 
-@item C-c C-s
+@item M-s
 Execute to another source line, like the @value{GDBN} @code{step} command; also
 update the display window to show the current file and location.
 
-@item C-c C-n
+@item M-n
 Execute to next source line in this function, skipping all function
 calls, like the @value{GDBN} @code{next} command.  Then update the display window
 to show the current file and location.
 
-@item C-c C-i
+@item M-i
 Execute one instruction, like the @value{GDBN} @code{stepi} command; update
 display window accordingly.
 
+@item M-x gdb-nexti
+Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
+display window accordingly.
+
 @item C-c C-f
 Execute until exit from the selected stack frame, like the @value{GDBN}
 @code{finish} command.
 
-@item C-c C-r
+@item M-c
 Continue execution of your program, like the @value{GDBN} @code{continue}
 command.
 
-@item C-c <
+@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
+
+@item M-u
 Go up the number of frames indicated by the numeric argument
 (@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
 like the @value{GDBN} @code{up} command.
 
-@item C-c >
+@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
+
+@item M-d
 Go down the number of frames indicated by the numeric argument, like the
 @value{GDBN} @code{down} command.
+
+@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
+
+@item C-x &
+Read the number where the cursor is positioned, and insert it at the end
+of the @value{GDBN} I/O buffer.  For example, if you wish to disassemble code
+around an address that was displayed earlier, type @kbd{disassemble};
+then move the cursor to the address display, and pick up the
+argument for @code{disassemble} by typing @kbd{C-x &}.
+
+You can customize this further by defining elements of the list
+@code{gdb-print-command}; once it is defined, you can format or
+otherwise process numbers picked up by @kbd{C-x &} before they are
+inserted.  A numeric argument to @kbd{C-x &} indicates that you
+wish special formatting, and also acts as an index to pick an element of the
+list.  If the list element is a string, the number to be inserted is
+formatted using the Emacs function @code{format}; otherwise the number
+is passed as an argument to the corresponding list element.
 @end table
 
-In any source file, the Emacs command @kbd{C-x SPC} (@code{gud-break})
+In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
 tells @value{GDBN} to set a breakpoint on the source line point is on.
 
-If you type @kbd{M-x speedbar}, then Emacs displays a separate frame which
-shows a backtrace when the @value{GDBN} I/O buffer is current.  Move
-point to any frame in the stack and type @key{RET} to make it become the
-current frame and display the associated source in the source buffer.
-Alternatively, click @kbd{Mouse-2} to make the selected frame become the
-current one.
-
 If you accidentally delete the source-display buffer, an easy way to get
 it back is to type the command @code{f} in the @value{GDBN} buffer, to
 request a frame display; when you run under Emacs, this recreates
@@ -14239,10 +14252,6 @@
 communicates with Emacs in terms of line numbers.  If you add or
 delete lines from the text, the line numbers that @value{GDBN} knows cease
 to correspond properly with the code.
-  
-The description given here is for GNU Emacs version 21.3 and a more
-detailed description of its interaction with @value{GDBN} is given in
-the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} Emacs Manual}).
 
 @c The following dropped because Epoch is nonstandard.  Reactivate
 @c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
@@ -18191,14 +18200,11 @@
 @node Annotations
 @chapter @value{GDBN} Annotations
 
-This chapter describes annotations in @value{GDBN}.  Annotations were
-designed to interface @value{GDBN} to graphical user interfaces or other
-similar programs which want to interact with @value{GDBN} at a
+This chapter describes annotations in @value{GDBN}.  Annotations are
+designed to interface @value{GDBN} to graphical user interfaces or
+other similar programs which want to interact with @value{GDBN} at a
 relatively high level.
 
-The annotation mechanism has largely been superseeded by @sc{gdb/mi}
-(@pxref{GDB/MI}).
-
 @ignore
 This is Edition @value{EDITION}, @value{DATE}.
 @end ignore
@@ -18206,18 +18212,25 @@
 @menu
 * Annotations Overview::  What annotations are; the general syntax.
 * Server Prefix::       Issuing a command without affecting user state.
+* Value Annotations::   Values are marked as such.
+* Frame Annotations::   Stack frames are annotated.
+* Displays::            @value{GDBN} can be told to display something periodically.
 * Prompting::           Annotations marking @value{GDBN}'s need for input.
 * Errors::              Annotations for error messages.
+* Breakpoint Info::     Information on breakpoints.
 * Invalidation::        Some annotations describe things now invalid.
 * Annotations for Running::
                         Whether the program is running, how it stopped, etc.
 * Source Annotations::  Annotations describing source code.
+* TODO::                Annotations which might be added in the future.
 @end menu
 
 @node Annotations Overview
 @section What is an Annotation?
 @cindex annotations
 
+To produce annotations, start @value{GDBN} with the @code{--annotate=2} option.
+
 Annotations start with a newline character, two @samp{control-z}
 characters, and the name of the annotation.  If there is no additional
 information associated with this annotation, the name of the annotation
@@ -18233,35 +18246,24 @@
 annotations could be extended with an @samp{escape} annotation which
 means those three characters as output.
 
-The annotation @var{level}, which is specified using the
-@option{--annotate} command line option (@pxref{Mode Options}), controls
-how much information @value{GDBN} prints together with its prompt,
-values of expressions, source lines, and other types of output.  Level 0
-is for no anntations, level 1 is for use when @value{GDBN} is run as a
-subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
-for programs that control @value{GDBN}, and level 2 annotations have
-been made obsolete (@pxref{Limitations, , Limitations of the Annotation
-Interface, annotate, GDB's Obsolete Annotations}).  This chapter
-describes level 3 annotations.
-
 A simple example of starting up @value{GDBN} with annotations is:
 
 @smallexample
-$ @kbd{gdb --annotate=3}
-GNU gdb 6.0
-Copyright 2003 Free Software Foundation, Inc.
+$ gdb --annotate=2
+GNU GDB 5.0
+Copyright 2000 Free Software Foundation, Inc.
 GDB is free software, covered by the GNU General Public License,
 and you are welcome to change it and/or distribute copies of it
 under certain conditions.
 Type "show copying" to see the conditions.
 There is absolutely no warranty for GDB.  Type "show warranty"
 for details.
-This GDB was configured as "i386-pc-linux-gnu"
+This GDB was configured as "sparc-sun-sunos4.1.3"
 
 ^Z^Zpre-prompt
 (gdb) 
 ^Z^Zprompt
-@kbd{quit}
+quit
 
 ^Z^Zpost-prompt
 $ 
@@ -18286,6 +18288,311 @@
 history; to print a value without recording it into the value history,
 use the @code{output} command instead of the @code{print} command.
 
+@node Value Annotations
+@section Values
+
+@cindex annotations for values
+When a value is printed in various contexts, @value{GDBN} uses
+annotations to delimit the value from the surrounding text.
+
+@findex value-history-begin
+@findex value-history-value
+@findex value-history-end
+If a value is printed using @code{print} and added to the value history,
+the annotation looks like
+
+@smallexample
+^Z^Zvalue-history-begin @var{history-number} @var{value-flags}
+@var{history-string}
+^Z^Zvalue-history-value
+@var{the-value}
+^Z^Zvalue-history-end
+@end smallexample
+
+@noindent
+where @var{history-number} is the number it is getting in the value
+history, @var{history-string} is a string, such as @samp{$5 = }, which
+introduces the value to the user, @var{the-value} is the output
+corresponding to the value itself, and @var{value-flags} is @samp{*} for
+a value which can be dereferenced and @samp{-} for a value which cannot.
+
+@findex value-begin
+@findex value-end
+If the value is not added to the value history (it is an invalid float
+or it is printed with the @code{output} command), the annotation is similar:
+
+@smallexample
+^Z^Zvalue-begin @var{value-flags}
+@var{the-value}
+^Z^Zvalue-end
+@end smallexample
+
+@findex arg-begin
+@findex arg-name-end
+@findex arg-value
+@findex arg-end
+When @value{GDBN} prints an argument to a function (for example, in the output
+from the @code{backtrace} command), it annotates it as follows:
+
+@smallexample
+^Z^Zarg-begin
+@var{argument-name}
+^Z^Zarg-name-end
+@var{separator-string}
+^Z^Zarg-value @var{value-flags}
+@var{the-value}
+^Z^Zarg-end
+@end smallexample
+
+@noindent
+where @var{argument-name} is the name of the argument,
+@var{separator-string} is text which separates the name from the value
+for the user's benefit (such as @samp{=}), and @var{value-flags} and
+@var{the-value} have the same meanings as in a
+@code{value-history-begin} annotation.
+
+@findex field-begin
+@findex field-name-end
+@findex field-value
+@findex field-end
+When printing a structure, @value{GDBN} annotates it as follows:
+
+@smallexample
+^Z^Zfield-begin @var{value-flags}
+@var{field-name}
+^Z^Zfield-name-end
+@var{separator-string}
+^Z^Zfield-value
+@var{the-value}
+^Z^Zfield-end
+@end smallexample
+
+@noindent
+where @var{field-name} is the name of the field, @var{separator-string}
+is text which separates the name from the value for the user's benefit
+(such as @samp{=}), and @var{value-flags} and @var{the-value} have the
+same meanings as in a @code{value-history-begin} annotation.
+
+When printing an array, @value{GDBN} annotates it as follows:
+
+@smallexample
+^Z^Zarray-section-begin @var{array-index} @var{value-flags}
+@end smallexample
+
+@noindent
+where @var{array-index} is the index of the first element being
+annotated and @var{value-flags} has the same meaning as in a
+@code{value-history-begin} annotation.  This is followed by any number
+of elements, where is element can be either a single element:
+
+@findex elt
+@smallexample
+@samp{,} @var{whitespace}         ; @r{omitted for the first element}
+@var{the-value}
+^Z^Zelt
+@end smallexample
+
+or a repeated element
+
+@findex elt-rep
+@findex elt-rep-end
+@smallexample
+@samp{,} @var{whitespace}         ; @r{omitted for the first element}
+@var{the-value}
+^Z^Zelt-rep @var{number-of-repetitions}
+@var{repetition-string}
+^Z^Zelt-rep-end
+@end smallexample
+
+In both cases, @var{the-value} is the output for the value of the
+element and @var{whitespace} can contain spaces, tabs, and newlines.  In
+the repeated case, @var{number-of-repetitions} is the number of
+consecutive array elements which contain that value, and
+@var{repetition-string} is a string which is designed to convey to the
+user that repetition is being depicted.
+
+@findex array-section-end
+Once all the array elements have been output, the array annotation is
+ended with
+
+@smallexample
+^Z^Zarray-section-end
+@end smallexample
+
+@node Frame Annotations
+@section Frames
+
+@cindex annotations for frames
+Whenever @value{GDBN} prints a frame, it annotates it.  For example, this applies
+to frames printed when @value{GDBN} stops, output from commands such as
+@code{backtrace} or @code{up}, etc.
+
+@findex frame-begin
+The frame annotation begins with
+
+@smallexample
+^Z^Zframe-begin @var{level} @var{address}
+@var{level-string}
+@end smallexample
+
+@noindent
+where @var{level} is the number of the frame (0 is the innermost frame,
+and other frames have positive numbers), @var{address} is the address of
+the code executing in that frame, and @var{level-string} is a string
+designed to convey the level to the user.  @var{address} is in the form
+@samp{0x} followed by one or more lowercase hex digits (note that this
+does not depend on the language).  The frame ends with
+
+@findex frame-end
+@smallexample
+^Z^Zframe-end
+@end smallexample
+
+Between these annotations is the main body of the frame, which can
+consist of
+
+@itemize @bullet
+@item
+@findex function-call
+@smallexample
+^Z^Zfunction-call
+@var{function-call-string}
+@end smallexample
+
+where @var{function-call-string} is text designed to convey to the user
+that this frame is associated with a function call made by @value{GDBN} to a
+function in the program being debugged.
+
+@item
+@findex signal-handler-caller
+@smallexample
+^Z^Zsignal-handler-caller
+@var{signal-handler-caller-string}
+@end smallexample
+
+where @var{signal-handler-caller-string} is text designed to convey to
+the user that this frame is associated with whatever mechanism is used
+by this operating system to call a signal handler (it is the frame which
+calls the signal handler, not the frame for the signal handler itself).
+
+@item
+A normal frame.
+
+@findex frame-address
+@findex frame-address-end
+This can optionally (depending on whether this is thought of as
+interesting information for the user to see) begin with
+
+@smallexample
+^Z^Zframe-address
+@var{address}
+^Z^Zframe-address-end
+@var{separator-string}
+@end smallexample
+
+where @var{address} is the address executing in the frame (the same
+address as in the @code{frame-begin} annotation, but printed in a form
+which is intended for user consumption---in particular, the syntax varies
+depending on the language), and @var{separator-string} is a string
+intended to separate this address from what follows for the user's
+benefit.
+
+@findex frame-function-name
+@findex frame-args
+Then comes
+
+@smallexample
+^Z^Zframe-function-name
+@var{function-name}
+^Z^Zframe-args
+@var{arguments}
+@end smallexample
+
+where @var{function-name} is the name of the function executing in the
+frame, or @samp{??} if not known, and @var{arguments} are the arguments
+to the frame, with parentheses around them (each argument is annotated
+individually as well, @pxref{Value Annotations}).
+
+@findex frame-source-begin
+@findex frame-source-file
+@findex frame-source-file-end
+@findex frame-source-line
+@findex frame-source-end
+If source information is available, a reference to it is then printed:
+
+@smallexample
+^Z^Zframe-source-begin
+@var{source-intro-string}
+^Z^Zframe-source-file
+@var{filename}
+^Z^Zframe-source-file-end
+:
+^Z^Zframe-source-line
+@var{line-number}
+^Z^Zframe-source-end
+@end smallexample
+
+where @var{source-intro-string} separates for the user's benefit the
+reference from the text which precedes it, @var{filename} is the name of
+the source file, and @var{line-number} is the line number within that
+file (the first line is line 1).
+
+@findex frame-where
+If @value{GDBN} prints some information about where the frame is from (which
+library, which load segment, etc.; currently only done on the RS/6000),
+it is annotated with
+
+@smallexample
+^Z^Zframe-where
+@var{information}
+@end smallexample
+
+Then, if source is to actually be displayed for this frame (for example,
+this is not true for output from the @code{backtrace} command), then a
+@code{source} annotation (@pxref{Source Annotations}) is displayed.  Unlike
+most annotations, this is output instead of the normal text which would be
+output, not in addition.
+@end itemize
+
+@node Displays
+@section Displays
+
+@findex display-begin
+@findex display-number-end
+@findex display-format
+@findex display-expression
+@findex display-expression-end
+@findex display-value
+@findex display-end
+@cindex annotations for display
+When @value{GDBN} is told to display something using the @code{display} command,
+the results of the display are annotated:
+
+@smallexample
+^Z^Zdisplay-begin
+@var{number}
+^Z^Zdisplay-number-end
+@var{number-separator}
+^Z^Zdisplay-format
+@var{format}
+^Z^Zdisplay-expression
+@var{expression}
+^Z^Zdisplay-expression-end
+@var{expression-separator}
+^Z^Zdisplay-value
+@var{value}
+^Z^Zdisplay-end
+@end smallexample
+
+@noindent
+where @var{number} is the number of the display, @var{number-separator}
+is intended to separate the number from what follows for the user,
+@var{format} includes information such as the size, format, or other
+information about how the value is being displayed, @var{expression} is
+the expression being displayed, @var{expression-separator} is intended
+to separate the expression from the text that follows for the user,
+and @var{value} is the actual value being displayed.
+
 @node Prompting
 @section Annotation for @value{GDBN} Input
 
@@ -18386,6 +18693,64 @@
 @c If we want to change that, need to fix warning(), type_error(),
 @c range_error(), and possibly other places.
 
+@node Breakpoint Info
+@section Information on Breakpoints
+
+@cindex annotations for breakpoints
+The output from the @code{info breakpoints} command is annotated as follows:
+
+@findex breakpoints-headers
+@findex breakpoints-table
+@smallexample
+^Z^Zbreakpoints-headers
+@var{header-entry}
+^Z^Zbreakpoints-table
+@end smallexample
+
+@noindent
+where @var{header-entry} has the same syntax as an entry (see below) but
+instead of containing data, it contains strings which are intended to
+convey the meaning of each field to the user.  This is followed by any
+number of entries.  If a field does not apply for this entry, it is
+omitted.  Fields may contain trailing whitespace.  Each entry consists
+of:
+
+@findex record
+@findex field
+@smallexample
+^Z^Zrecord
+^Z^Zfield 0
+@var{number}
+^Z^Zfield 1
+@var{type}
+^Z^Zfield 2
+@var{disposition}
+^Z^Zfield 3
+@var{enable}
+^Z^Zfield 4
+@var{address}
+^Z^Zfield 5
+@var{what}
+^Z^Zfield 6
+@var{frame}
+^Z^Zfield 7
+@var{condition}
+^Z^Zfield 8
+@var{ignore-count}
+^Z^Zfield 9
+@var{commands}
+@end smallexample
+
+Note that @var{address} is intended for user consumption---the syntax
+varies depending on the language.
+
+The output ends with
+
+@findex breakpoints-table-end
+@smallexample
+^Z^Zbreakpoints-table-end
+@end smallexample
+
 @node Invalidation
 @section Invalidation Notices
 
@@ -18501,6 +18866,23 @@
 followed by one or more lowercase hex digits (note that this does not
 depend on the language).
 
+@node TODO
+@section Annotations We Might Want in the Future
+
+@format
+    - target-invalid
+      the target might have changed (registers, heap contents, or
+      execution status).  For performance, we might eventually want
+      to hit `registers-invalid' and `all-registers-invalid' with
+      greater precision
+
+    - systematic annotation for set/show parameters (including
+      invalidation notices).
+
+    - similarly, `info' returns a list of candidates for invalidation
+      notices.
+@end format
+
 @node GDB Bugs
 @chapter Reporting Bugs in @value{GDBN}
 @cindex bugs in @value{GDBN}
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
index 30f3018..00c6283 100644
--- a/gdb/doc/gdbint.texinfo
+++ b/gdb/doc/gdbint.texinfo
@@ -3229,24 +3229,6 @@
 
 By default, no frame based stack alignment is performed.
 
-@item int frame_red_zone_size
-
-The number of bytes, beyond the innermost-stack-address, reserved by the
-@sc{abi}.  A function is permitted to use this scratch area (instead of
-allocating extra stack space).
-
-When performing an inferior function call, to ensure that it does not
-modify this area, @value{GDBN} adjusts the innermost-stack-address by
-@var{frame_red_zone_size} bytes before pushing parameters onto the
-stack.
-
-By default, zero bytes are allocated.  The value must be aligned
-(@pxref{frame_align}).
-
-The @sc{amd64} (nee x86-64) @sc{abi} documentation refers to the
-@emph{red zone} when describing this scratch area.
-@cindex red zone
-
 @item DEPRECATED_FRAME_CHAIN(@var{frame})
 @findex DEPRECATED_FRAME_CHAIN
 Given @var{frame}, return a pointer to the calling frame.
diff --git a/gdb/dsrec.c b/gdb/dsrec.c
index 4f111bb..5f2c2d7 100644
--- a/gdb/dsrec.c
+++ b/gdb/dsrec.c
@@ -23,7 +23,6 @@
 #include "serial.h"
 #include "srec.h"
 #include <time.h>
-#include "gdb_assert.h"
 
 extern void report_transfer_performance (unsigned long, time_t, time_t);
 
@@ -224,6 +223,10 @@
   const static char data_code_table[] = "123";
   const static char term_code_table[] = "987";
   const static char header_code_table[] = "000";
+  const static char *formats[] =
+  {"S%c%02X%04X",
+   "S%c%02X%06X",
+   "S%c%02X%08X"};
   char const *code_table;
   int addr_size;
   int payload_size;
@@ -268,10 +271,9 @@
     payload_size = 0;		/* Term or header packets have no payload */
 
   /* Output the header.  */
-  snprintf (srec, (*maxrecsize) + 1, "S%c%02X%0*X",
-	    code_table[addr_size - 2],
-	    addr_size + payload_size + 1,
-	    addr_size * 2, (int) targ_addr);
+
+  sprintf (srec, formats[addr_size - 2], code_table[addr_size - 2],
+	   addr_size + payload_size + 1, (int) targ_addr);
 
   /* Note that the checksum is calculated on the raw data, not the
      hexified data.  It includes the length, address and the data
@@ -285,9 +287,6 @@
 	       + ((targ_addr >> 16) & 0xff)
 	       + ((targ_addr >> 24) & 0xff));
 
-  /* NOTE: cagney/2003-08-10: The equation is old.  Check that the
-     recent snprintf changes match that equation.  */
-  gdb_assert (strlen (srec) == 1 + 1 + 2 + addr_size * 2);
   p = srec + 1 + 1 + 2 + addr_size * 2;
 
   /* Build the Srecord.  */
diff --git a/gdb/frame.c b/gdb/frame.c
index efcee75..2b54ed7 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -135,11 +135,9 @@
 
 static int frame_debug;
 
-/* Flag to indicate whether backtraces should stop at main et.al.  */
+/* Flag to indicate whether backtraces should stop at main.  */
 
-static int backtrace_past_main;
-static unsigned int backtrace_limit = UINT_MAX;
-
+static int backtrace_below_main;
 
 void
 fprint_frame_id (struct ui_file *file, struct frame_id id)
@@ -1804,7 +1802,7 @@
   gdb_assert (this_frame != NULL);
 
   if (this_frame->level >= 0
-      && !backtrace_past_main
+      && !backtrace_below_main
       && inside_main_func (get_frame_pc (this_frame)))
     /* Don't unwind past main(), bug always unwind the sentinel frame.
        Note, this is done _before_ the frame has been marked as
@@ -1816,11 +1814,6 @@
       return NULL;
     }
 
-  if (this_frame->level > backtrace_limit)
-    {
-      error ("Backtrace limit of %d exceeded", backtrace_limit);
-    }
-
   /* If we're already inside the entry function for the main objfile,
      then it isn't valid.  Don't apply this test to a dummy frame -
      dummy frame PC's typically land in the entry func.  Don't apply
@@ -2279,8 +2272,7 @@
 struct frame_info *
 deprecated_frame_xmalloc (void)
 {
-  struct frame_info *frame = XMALLOC (struct frame_info);
-  memset (frame, 0, sizeof (*frame));
+  struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
   frame->this_id.p = 1;
   return frame;
 }
@@ -2378,39 +2370,18 @@
 
 extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
 
-static struct cmd_list_element *set_backtrace_cmdlist;
-static struct cmd_list_element *show_backtrace_cmdlist;
-
-static void
-set_backtrace_cmd (char *args, int from_tty)
-{
-  help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
-}
-
-static void
-show_backtrace_cmd (char *args, int from_tty)
-{
-  cmd_show_list (show_backtrace_cmdlist, from_tty, "");
-}
-
 void
 _initialize_frame (void)
 {
   obstack_init (&frame_cache_obstack);
 
-  add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
-Set backtrace specific variables.\n\
-Configure backtrace variables such as the backtrace limit",
-		  &set_backtrace_cmdlist, "set backtrace ",
-		  0/*allow-unknown*/, &setlist);
-  add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
-Show backtrace specific variables\n\
-Show backtrace variables such as the backtrace limit",
-		  &show_backtrace_cmdlist, "show backtrace ",
-		  0/*allow-unknown*/, &showlist);
+  /* FIXME: cagney/2003-01-19: This command needs a rename.  Suggest
+     `set backtrace {past,beyond,...}-main'.  Also suggest adding `set
+     backtrace ...-start' to control backtraces past start.  The
+     problem with `below' is that it stops the `up' command.  */
 
-  add_setshow_boolean_cmd ("past-main", class_obscure,
-			   &backtrace_past_main, "\
+  add_setshow_boolean_cmd ("backtrace-below-main", class_obscure,
+			   &backtrace_below_main, "\
 Set whether backtraces should continue past \"main\".\n\
 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
 the backtrace at \"main\".  Set this variable if you need to see the rest\n\
@@ -2419,17 +2390,8 @@
 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
 the backtrace at \"main\".  Set this variable if you need to see the rest\n\
 of the stack trace.",
-			   NULL, NULL, &set_backtrace_cmdlist,
-			   &show_backtrace_cmdlist);
+			   NULL, NULL, &setlist, &showlist);
 
-  add_setshow_uinteger_cmd ("limit", class_obscure,
-			    &backtrace_limit, "\
-Set an upper bound on the number of backtrace levels.\n\
-No more than the specified number of frames can be displayed or examined.\n\
-Zero is unlimited.", "\
-Show the upper bound on the number of backtrace levels.",
-			    NULL, NULL, &set_backtrace_cmdlist,
-			    &show_backtrace_cmdlist);
 
   /* Debug this files internals. */
   add_show_from_set (add_set_cmd ("frame", class_maintenance, var_zinteger,
diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
index 9828b90..e4dc885 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -19,14 +19,11 @@
    Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
-#include "gdb_string.h"
 #include "inferior.h"
 #include "symfile.h"		/* for entry_point_address */
 #include "gdbcore.h"
 #include "arch-utils.h"
 #include "regcache.h"
-#include "frame.h"
-#include "trad-frame.h"
 
 extern void _initialize_frv_tdep (void);
 
@@ -38,9 +35,9 @@
 static gdbarch_deprecated_extract_return_value_ftype frv_extract_return_value;
 static gdbarch_deprecated_extract_struct_value_address_ftype frv_extract_struct_value_address;
 static gdbarch_frameless_function_invocation_ftype frv_frameless_function_invocation;
-static gdbarch_deprecated_push_arguments_ftype frv_push_arguments;
-static gdbarch_deprecated_saved_pc_after_call_ftype frv_saved_pc_after_call;
-static void frv_frame_init_saved_regs (struct frame_info *frame);
+static gdbarch_init_extra_frame_info_ftype stupid_useless_init_extra_frame_info;
+static gdbarch_push_arguments_ftype frv_push_arguments;
+static gdbarch_saved_pc_after_call_ftype frv_saved_pc_after_call;
 
 static void frv_pop_frame_regular (struct frame_info *frame);
 
@@ -96,9 +93,6 @@
     /* Non-zero if we've saved our return address on the stack yet.
        Zero if it's still sitting in the link register.  */
     int lr_saved_on_stack;
-
-    /* Table indicating the location of each and every register.  */
-    struct trad_frame_saved_reg *saved_regs;
   };
 
 
@@ -278,16 +272,12 @@
 frv_frame_chain (struct frame_info *frame)
 {
   CORE_ADDR saved_fp_addr;
-  struct frame_extra_info *extra_info =
-    get_frame_extra_info (frame);
 
-  if (extra_info &&
-      extra_info->saved_regs && 
-      extra_info->saved_regs[fp_regnum].addr != 0)
-    saved_fp_addr = extra_info->saved_regs[fp_regnum].addr;
+  if (frame->saved_regs && frame->saved_regs[fp_regnum] != 0)
+    saved_fp_addr = frame->saved_regs[fp_regnum];
   else
     /* Just assume it was saved in the usual place.  */
-    saved_fp_addr = get_frame_base (frame);
+    saved_fp_addr = frame->frame;
 
   return read_memory_integer (saved_fp_addr, 4);
 }
@@ -295,32 +285,28 @@
 static CORE_ADDR
 frv_frame_saved_pc (struct frame_info *frame)
 {
-  struct frame_extra_info *extra_info =
-    get_frame_extra_info (frame);
-
   frv_frame_init_saved_regs (frame);
 
   /* Perhaps the prologue analyzer recorded where it was stored.
      (As of 14 Oct 2001, it never does.)  */
-  if (extra_info && extra_info->saved_regs && 
-      extra_info->saved_regs[pc_regnum].addr != 0)
-    return read_memory_integer (extra_info->saved_regs[pc_regnum].addr, 4);
+  if (frame->saved_regs && frame->saved_regs[pc_regnum] != 0)
+    return read_memory_integer (frame->saved_regs[pc_regnum], 4);
 
   /* If the prologue analyzer tells us the link register was saved on
      the stack, get it from there.  */
-  if (extra_info->lr_saved_on_stack)
-    return read_memory_integer (get_frame_base (frame) + 8, 4);
+  if (frame->extra_info->lr_saved_on_stack)
+    return read_memory_integer (frame->frame + 8, 4);
 
   /* Otherwise, it's still in LR.
      However, if FRAME isn't the youngest frame, this is kind of
      suspicious --- if this frame called somebody else, then its LR
      has certainly been overwritten.  */
-  if (! get_next_frame (frame))
+  if (! frame->next)
     return read_register (lr_regnum);
 
   /* By default, assume it's saved in the standard place, relative to
      the frame pointer.  */
-  return read_memory_integer (get_frame_base (frame) + 8, 4);
+  return read_memory_integer (frame->frame + 8, 4);
 }
 
 
@@ -405,7 +391,7 @@
 
   memset (gr_saved, 0, sizeof (gr_saved));
 
-  while (! frame || pc < get_frame_pc (frame))
+  while (! frame || pc < frame->pc)
     {
       LONGEST op = read_memory_integer (pc, 4);
 
@@ -673,10 +659,7 @@
 
   if (frame)
     {
-      struct frame_extra_info *extra_info = 
-	get_frame_extra_info (frame);
-
-      extra_info->lr_saved_on_stack = lr_saved_on_stack;
+      frame->extra_info->lr_saved_on_stack = lr_saved_on_stack;
 
       /* If we know the relationship between the stack and frame
          pointers, record the addresses of the registers we noticed.
@@ -685,17 +668,14 @@
          their addresses relative to the FP.  */
       if (fp_set)
         {
-	  struct trad_frame_saved_reg *saved_regs;
           int i;
 
-	  saved_regs = extra_info->saved_regs;
           for (i = 0; i < 64; i++)
             if (gr_saved[i])
-	      trad_frame_set_value (saved_regs, i, 
-			            get_frame_base (frame) - fp_offset 
-				    + gr_sp_offset[i]);
+              frame->saved_regs[i] = (frame->frame
+                                      - fp_offset + gr_sp_offset[i]);
 
-          extra_info->fp_to_callers_sp_offset = framesize - fp_offset;
+          frame->extra_info->fp_to_callers_sp_offset = framesize - fp_offset;
         }
     }
 
@@ -737,23 +717,18 @@
 static void
 frv_frame_init_saved_regs (struct frame_info *frame)
 {
-  struct frame_extra_info *extra_info =
-    get_frame_extra_info (frame);
-
-  if (extra_info && extra_info->saved_regs)
+  if (frame->saved_regs)
     return;
 
-  extra_info->saved_regs = trad_frame_alloc_saved_regs (frame);
-  trad_frame_set_value (extra_info->saved_regs,
-			fp_regnum, get_frame_base (frame));
+  frame_saved_regs_zalloc (frame);
+  frame->saved_regs[fp_regnum] = frame->frame;
 
   /* Find the beginning of this function, so we can analyze its
      prologue.  */     
   {
     CORE_ADDR func_addr, func_end;
 
-    if (find_pc_partial_function (get_frame_pc (frame), 
-				  NULL, &func_addr, &func_end))
+    if (find_pc_partial_function (frame->pc, NULL, &func_addr, &func_end))
       frv_analyze_prologue (func_addr, frame);
   }
 }
@@ -770,8 +745,7 @@
 static CORE_ADDR
 frv_extract_struct_value_address (char *regbuf)
 {
-  return extract_unsigned_integer (regbuf + 
-				   frv_register_byte (struct_return_regnum),
+  return extract_unsigned_integer (regbuf + frv_register_byte (struct_return_regnum),
 				   4);
 }
 
@@ -796,12 +770,9 @@
 static void
 frv_init_extra_frame_info (int fromleaf, struct frame_info *frame)
 {
-  struct frame_extra_info *extra_info =
-    frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
-
-  extra_info->fp_to_callers_sp_offset = 0;
-  extra_info->lr_saved_on_stack = 0;
-  extra_info->saved_regs = trad_frame_alloc_saved_regs (frame);
+  frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
+  frame->extra_info->fp_to_callers_sp_offset = 0;
+  frame->extra_info->lr_saved_on_stack = 0;
 }
 
 #define ROUND_UP(n,a) (((n)+(a)-1) & ~((a)-1))
@@ -927,32 +898,38 @@
 static void
 frv_pop_frame_regular (struct frame_info *frame)
 {
-  struct frame_extra_info *extra_info;
-  struct trad_frame_saved_reg *saved_regs;
-
   CORE_ADDR fp;
   int regno;
 
-  fp = get_frame_base (frame);
+  fp = frame->frame;
 
   frv_frame_init_saved_regs (frame);
-  extra_info = get_frame_extra_info (frame);
-  saved_regs = extra_info->saved_regs;
+
   write_register (pc_regnum, frv_frame_saved_pc (frame));
   for (regno = 0; regno < frv_num_regs; ++regno)
     {
-      if (extra_info->saved_regs[regno].addr
+      if (frame->saved_regs[regno]
 	  && regno != pc_regnum
 	  && regno != sp_regnum)
 	{
 	  write_register (regno,
-			  read_memory_integer (saved_regs[regno].addr, 4));
+			  read_memory_integer (frame->saved_regs[regno], 4));
 	}
     }
-  write_register (sp_regnum, fp + extra_info->fp_to_callers_sp_offset);
+  write_register (sp_regnum, fp + frame->extra_info->fp_to_callers_sp_offset);
   flush_cached_frames ();
 }
 
+
+static void
+frv_remote_translate_xfer_address (CORE_ADDR memaddr, int nr_bytes,
+				   CORE_ADDR *targ_addr, int *targ_len)
+{
+  *targ_addr = memaddr;
+  *targ_len  = nr_bytes;
+}
+
+
 /* Hardware watchpoint / breakpoint support for the FR500
    and FR400.  */
 
@@ -1113,7 +1090,7 @@
   set_gdbarch_function_start_offset (gdbarch, 0);
 
   set_gdbarch_remote_translate_xfer_address
-    (gdbarch, generic_remote_translate_xfer_address);
+    (gdbarch, frv_remote_translate_xfer_address);
 
   /* Hardware watchpoint / breakpoint support.  */
   switch (info.bfd_arch_info->mach)
@@ -1151,4 +1128,4 @@
   deprecated_tm_print_insn = print_insn_frv;
 }
 
-
+
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index 523dfac..b9aea09 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -36,8 +36,27 @@
 #include "defs.h"
 #include "arch-utils.h"
 
+#if GDB_MULTI_ARCH
 #include "gdbcmd.h"
 #include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */
+#else
+/* Just include everything in sight so that the every old definition
+   of macro is visible. */
+#include "gdb_string.h"
+#include <ctype.h>
+#include "symtab.h"
+#include "frame.h"
+#include "inferior.h"
+#include "breakpoint.h"
+#include "gdb_wait.h"
+#include "gdbcore.h"
+#include "gdbcmd.h"
+#include "target.h"
+#include "gdbthread.h"
+#include "annotate.h"
+#include "symfile.h"		/* for overlay functions */
+#include "value.h"		/* For old tm.h/nm.h macros.  */
+#endif
 #include "symcat.h"
 
 #include "floatformat.h"
@@ -238,7 +257,6 @@
   gdbarch_stack_align_ftype *stack_align;
   gdbarch_frame_align_ftype *frame_align;
   gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr;
-  int frame_red_zone_size;
   int parm_boundary;
   const struct floatformat * float_format;
   const struct floatformat * double_format;
@@ -406,7 +424,6 @@
   0,  /* stack_align */
   0,  /* frame_align */
   0,  /* reg_struct_has_addr */
-  0,  /* frame_red_zone_size */
   0,  /* parm_boundary */
   0,  /* float_format */
   0,  /* double_format */
@@ -600,6 +617,8 @@
   long dummy;
   char *buf;
   /* Only perform sanity checks on a multi-arch target. */
+  if (!GDB_MULTI_ARCH)
+    return;
   log = mem_fileopen ();
   cleanups = make_cleanup_ui_file_delete (log);
   /* fundamental */
@@ -786,36 +805,46 @@
   fprintf_unfiltered (file,
                       "gdbarch_dump: GDB_MULTI_ARCH = %d\n",
                       GDB_MULTI_ARCH);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_frame_align_p() = %d\n",
-                      gdbarch_frame_align_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: frame_align = 0x%08lx\n",
-                      (long) current_gdbarch->frame_align);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: in_function_epilogue_p = 0x%08lx\n",
-                      (long) current_gdbarch->in_function_epilogue_p);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: register_reggroup_p = 0x%08lx\n",
-                      (long) current_gdbarch->register_reggroup_p);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_pseudo_register_read_p() = %d\n",
-                      gdbarch_pseudo_register_read_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: pseudo_register_read = 0x%08lx\n",
-                      (long) current_gdbarch->pseudo_register_read);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_pseudo_register_write_p() = %d\n",
-                      gdbarch_pseudo_register_write_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: pseudo_register_write = 0x%08lx\n",
-                      (long) current_gdbarch->pseudo_register_write);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_address_class_name_to_type_flags_p() = %d\n",
-                      gdbarch_address_class_name_to_type_flags_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: address_class_name_to_type_flags = 0x%08lx\n",
-                      (long) current_gdbarch->address_class_name_to_type_flags);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_frame_align_p() = %d\n",
+                        gdbarch_frame_align_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: frame_align = 0x%08lx\n",
+                        (long) current_gdbarch->frame_align);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: in_function_epilogue_p = 0x%08lx\n",
+                        (long) current_gdbarch->in_function_epilogue_p);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: register_reggroup_p = 0x%08lx\n",
+                        (long) current_gdbarch->register_reggroup_p);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_pseudo_register_read_p() = %d\n",
+                        gdbarch_pseudo_register_read_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: pseudo_register_read = 0x%08lx\n",
+                        (long) current_gdbarch->pseudo_register_read);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_pseudo_register_write_p() = %d\n",
+                        gdbarch_pseudo_register_write_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: pseudo_register_write = 0x%08lx\n",
+                        (long) current_gdbarch->pseudo_register_write);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_address_class_name_to_type_flags_p() = %d\n",
+                        gdbarch_address_class_name_to_type_flags_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: address_class_name_to_type_flags = 0x%08lx\n",
+                        (long) current_gdbarch->address_class_name_to_type_flags);
 #ifdef ADDRESS_CLASS_TYPE_FLAGS_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -830,36 +859,44 @@
                       "gdbarch_dump: %s # %s\n",
                       "ADDRESS_CLASS_TYPE_FLAGS(byte_size, dwarf2_addr_class)",
                       XSTRING (ADDRESS_CLASS_TYPE_FLAGS (byte_size, dwarf2_addr_class)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: ADDRESS_CLASS_TYPE_FLAGS = <0x%08lx>\n",
-                      (long) current_gdbarch->address_class_type_flags
-                      /*ADDRESS_CLASS_TYPE_FLAGS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: ADDRESS_CLASS_TYPE_FLAGS = <0x%08lx>\n",
+                        (long) current_gdbarch->address_class_type_flags
+                        /*ADDRESS_CLASS_TYPE_FLAGS ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_address_class_type_flags_to_name_p() = %d\n",
-                      gdbarch_address_class_type_flags_to_name_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: address_class_type_flags_to_name = 0x%08lx\n",
-                      (long) current_gdbarch->address_class_type_flags_to_name);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_address_class_type_flags_to_name_p() = %d\n",
+                        gdbarch_address_class_type_flags_to_name_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: address_class_type_flags_to_name = 0x%08lx\n",
+                        (long) current_gdbarch->address_class_type_flags_to_name);
 #ifdef ADDRESS_TO_POINTER
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "ADDRESS_TO_POINTER(type, buf, addr)",
                       XSTRING (ADDRESS_TO_POINTER (type, buf, addr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: ADDRESS_TO_POINTER = <0x%08lx>\n",
-                      (long) current_gdbarch->address_to_pointer
-                      /*ADDRESS_TO_POINTER ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: ADDRESS_TO_POINTER = <0x%08lx>\n",
+                        (long) current_gdbarch->address_to_pointer
+                        /*ADDRESS_TO_POINTER ()*/);
 #endif
 #ifdef ADDR_BITS_REMOVE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "ADDR_BITS_REMOVE(addr)",
                       XSTRING (ADDR_BITS_REMOVE (addr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: ADDR_BITS_REMOVE = <0x%08lx>\n",
-                      (long) current_gdbarch->addr_bits_remove
-                      /*ADDR_BITS_REMOVE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: ADDR_BITS_REMOVE = <0x%08lx>\n",
+                        (long) current_gdbarch->addr_bits_remove
+                        /*ADDR_BITS_REMOVE ()*/);
 #endif
 #ifdef BELIEVE_PCC_PROMOTION
   fprintf_unfiltered (file,
@@ -882,20 +919,22 @@
                       "gdbarch_dump: %s # %s\n",
                       "BREAKPOINT_FROM_PC(pcptr, lenptr)",
                       XSTRING (BREAKPOINT_FROM_PC (pcptr, lenptr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: BREAKPOINT_FROM_PC = <0x%08lx>\n",
-                      (long) current_gdbarch->breakpoint_from_pc
-                      /*BREAKPOINT_FROM_PC ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: BREAKPOINT_FROM_PC = <0x%08lx>\n",
+                        (long) current_gdbarch->breakpoint_from_pc
+                        /*BREAKPOINT_FROM_PC ()*/);
 #endif
 #ifdef CALL_DUMMY_ADDRESS
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "CALL_DUMMY_ADDRESS()",
                       XSTRING (CALL_DUMMY_ADDRESS ()));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: CALL_DUMMY_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->call_dummy_address
-                      /*CALL_DUMMY_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: CALL_DUMMY_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->call_dummy_address
+                        /*CALL_DUMMY_ADDRESS ()*/);
 #endif
 #ifdef CALL_DUMMY_LOCATION
   fprintf_unfiltered (file,
@@ -910,10 +949,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "CANNOT_FETCH_REGISTER(regnum)",
                       XSTRING (CANNOT_FETCH_REGISTER (regnum)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: CANNOT_FETCH_REGISTER = <0x%08lx>\n",
-                      (long) current_gdbarch->cannot_fetch_register
-                      /*CANNOT_FETCH_REGISTER ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: CANNOT_FETCH_REGISTER = <0x%08lx>\n",
+                        (long) current_gdbarch->cannot_fetch_register
+                        /*CANNOT_FETCH_REGISTER ()*/);
 #endif
 #ifdef CANNOT_STEP_BREAKPOINT
   fprintf_unfiltered (file,
@@ -928,43 +968,51 @@
                       "gdbarch_dump: %s # %s\n",
                       "CANNOT_STORE_REGISTER(regnum)",
                       XSTRING (CANNOT_STORE_REGISTER (regnum)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: CANNOT_STORE_REGISTER = <0x%08lx>\n",
-                      (long) current_gdbarch->cannot_store_register
-                      /*CANNOT_STORE_REGISTER ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: CANNOT_STORE_REGISTER = <0x%08lx>\n",
+                        (long) current_gdbarch->cannot_store_register
+                        /*CANNOT_STORE_REGISTER ()*/);
 #endif
 #ifdef COFF_MAKE_MSYMBOL_SPECIAL
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "COFF_MAKE_MSYMBOL_SPECIAL(val, msym)",
                       XSTRING (COFF_MAKE_MSYMBOL_SPECIAL (val, msym)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: COFF_MAKE_MSYMBOL_SPECIAL = <0x%08lx>\n",
-                      (long) current_gdbarch->coff_make_msymbol_special
-                      /*COFF_MAKE_MSYMBOL_SPECIAL ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: construct_inferior_arguments = 0x%08lx\n",
-                      (long) current_gdbarch->construct_inferior_arguments);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: COFF_MAKE_MSYMBOL_SPECIAL = <0x%08lx>\n",
+                        (long) current_gdbarch->coff_make_msymbol_special
+                        /*COFF_MAKE_MSYMBOL_SPECIAL ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: construct_inferior_arguments = 0x%08lx\n",
+                        (long) current_gdbarch->construct_inferior_arguments);
 #ifdef CONVERT_FROM_FUNC_PTR_ADDR
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "CONVERT_FROM_FUNC_PTR_ADDR(addr)",
                       XSTRING (CONVERT_FROM_FUNC_PTR_ADDR (addr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: CONVERT_FROM_FUNC_PTR_ADDR = <0x%08lx>\n",
-                      (long) current_gdbarch->convert_from_func_ptr_addr
-                      /*CONVERT_FROM_FUNC_PTR_ADDR ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: CONVERT_FROM_FUNC_PTR_ADDR = <0x%08lx>\n",
+                        (long) current_gdbarch->convert_from_func_ptr_addr
+                        /*CONVERT_FROM_FUNC_PTR_ADDR ()*/);
 #endif
 #ifdef CONVERT_REGISTER_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "CONVERT_REGISTER_P(regnum, type)",
                       XSTRING (CONVERT_REGISTER_P (regnum, type)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: CONVERT_REGISTER_P = <0x%08lx>\n",
-                      (long) current_gdbarch->convert_register_p
-                      /*CONVERT_REGISTER_P ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: CONVERT_REGISTER_P = <0x%08lx>\n",
+                        (long) current_gdbarch->convert_register_p
+                        /*CONVERT_REGISTER_P ()*/);
 #endif
 #ifdef DECR_PC_AFTER_BREAK
   fprintf_unfiltered (file,
@@ -1033,14 +1081,18 @@
                       DEPRECATED_DO_REGISTERS_INFO_P ());
 #endif
 #ifdef DEPRECATED_DO_REGISTERS_INFO
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_DO_REGISTERS_INFO(reg_nr, fpregs)",
                       XSTRING (DEPRECATED_DO_REGISTERS_INFO (reg_nr, fpregs)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_DO_REGISTERS_INFO = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_do_registers_info
-                      /*DEPRECATED_DO_REGISTERS_INFO ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_DO_REGISTERS_INFO = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_do_registers_info
+                        /*DEPRECATED_DO_REGISTERS_INFO ()*/);
 #endif
 #ifdef DEPRECATED_DUMMY_WRITE_SP_P
   fprintf_unfiltered (file,
@@ -1052,24 +1104,32 @@
                       DEPRECATED_DUMMY_WRITE_SP_P ());
 #endif
 #ifdef DEPRECATED_DUMMY_WRITE_SP
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_DUMMY_WRITE_SP(val)",
                       XSTRING (DEPRECATED_DUMMY_WRITE_SP (val)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_DUMMY_WRITE_SP = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_dummy_write_sp
-                      /*DEPRECATED_DUMMY_WRITE_SP ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_DUMMY_WRITE_SP = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_dummy_write_sp
+                        /*DEPRECATED_DUMMY_WRITE_SP ()*/);
 #endif
 #ifdef DEPRECATED_EXTRACT_RETURN_VALUE
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf)",
                       XSTRING (DEPRECATED_EXTRACT_RETURN_VALUE (type, regbuf, valbuf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_EXTRACT_RETURN_VALUE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_extract_return_value
-                      /*DEPRECATED_EXTRACT_RETURN_VALUE ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_EXTRACT_RETURN_VALUE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_extract_return_value
+                        /*DEPRECATED_EXTRACT_RETURN_VALUE ()*/);
 #endif
 #ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P
   fprintf_unfiltered (file,
@@ -1085,10 +1145,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf)",
                       XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regbuf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_extract_struct_value_address
-                      /*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_extract_struct_value_address
+                        /*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
 #endif
 #ifdef DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED
   fprintf_unfiltered (file,
@@ -1108,14 +1169,18 @@
                       DEPRECATED_FIX_CALL_DUMMY_P ());
 #endif
 #ifdef DEPRECATED_FIX_CALL_DUMMY
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p)",
                       XSTRING (DEPRECATED_FIX_CALL_DUMMY (dummy, pc, fun, nargs, args, type, gcc_p)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FIX_CALL_DUMMY = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_fix_call_dummy
-                      /*DEPRECATED_FIX_CALL_DUMMY ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FIX_CALL_DUMMY = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_fix_call_dummy
+                        /*DEPRECATED_FIX_CALL_DUMMY ()*/);
 #endif
 #ifdef DEPRECATED_FP_REGNUM
   fprintf_unfiltered (file,
@@ -1139,10 +1204,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_ARGS_ADDRESS(fi)",
                       XSTRING (DEPRECATED_FRAME_ARGS_ADDRESS (fi)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_ARGS_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_args_address
-                      /*DEPRECATED_FRAME_ARGS_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_ARGS_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_args_address
+                        /*DEPRECATED_FRAME_ARGS_ADDRESS ()*/);
 #endif
 #ifdef DEPRECATED_FRAME_CHAIN_P
   fprintf_unfiltered (file,
@@ -1158,10 +1224,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_CHAIN(frame)",
                       XSTRING (DEPRECATED_FRAME_CHAIN (frame)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_CHAIN = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_chain
-                      /*DEPRECATED_FRAME_CHAIN ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_CHAIN = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_chain
+                        /*DEPRECATED_FRAME_CHAIN ()*/);
 #endif
 #ifdef DEPRECATED_FRAME_CHAIN_VALID_P
   fprintf_unfiltered (file,
@@ -1177,10 +1244,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe)",
                       XSTRING (DEPRECATED_FRAME_CHAIN_VALID (chain, thisframe)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_CHAIN_VALID = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_chain_valid
-                      /*DEPRECATED_FRAME_CHAIN_VALID ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_CHAIN_VALID = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_chain_valid
+                        /*DEPRECATED_FRAME_CHAIN_VALID ()*/);
 #endif
 #ifdef DEPRECATED_FRAME_INIT_SAVED_REGS_P
   fprintf_unfiltered (file,
@@ -1192,14 +1260,18 @@
                       DEPRECATED_FRAME_INIT_SAVED_REGS_P ());
 #endif
 #ifdef DEPRECATED_FRAME_INIT_SAVED_REGS
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_INIT_SAVED_REGS(frame)",
                       XSTRING (DEPRECATED_FRAME_INIT_SAVED_REGS (frame)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_INIT_SAVED_REGS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_init_saved_regs
-                      /*DEPRECATED_FRAME_INIT_SAVED_REGS ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_INIT_SAVED_REGS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_init_saved_regs
+                        /*DEPRECATED_FRAME_INIT_SAVED_REGS ()*/);
 #endif
 #ifdef DEPRECATED_FRAME_LOCALS_ADDRESS_P
   fprintf_unfiltered (file,
@@ -1215,10 +1287,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_LOCALS_ADDRESS(fi)",
                       XSTRING (DEPRECATED_FRAME_LOCALS_ADDRESS (fi)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_LOCALS_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_locals_address
-                      /*DEPRECATED_FRAME_LOCALS_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_LOCALS_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_locals_address
+                        /*DEPRECATED_FRAME_LOCALS_ADDRESS ()*/);
 #endif
 #ifdef DEPRECATED_FRAME_SAVED_PC_P
   fprintf_unfiltered (file,
@@ -1234,10 +1307,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_FRAME_SAVED_PC(fi)",
                       XSTRING (DEPRECATED_FRAME_SAVED_PC (fi)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FRAME_SAVED_PC = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_frame_saved_pc
-                      /*DEPRECATED_FRAME_SAVED_PC ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_FRAME_SAVED_PC = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_frame_saved_pc
+                        /*DEPRECATED_FRAME_SAVED_PC ()*/);
 #endif
 #ifdef DEPRECATED_GET_SAVED_REGISTER_P
   fprintf_unfiltered (file,
@@ -1249,14 +1323,18 @@
                       DEPRECATED_GET_SAVED_REGISTER_P ());
 #endif
 #ifdef DEPRECATED_GET_SAVED_REGISTER
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval)",
                       XSTRING (DEPRECATED_GET_SAVED_REGISTER (raw_buffer, optimized, addrp, frame, regnum, lval)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_GET_SAVED_REGISTER = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_get_saved_register
-                      /*DEPRECATED_GET_SAVED_REGISTER ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_GET_SAVED_REGISTER = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_get_saved_register
+                        /*DEPRECATED_GET_SAVED_REGISTER ()*/);
 #endif
 #ifdef DEPRECATED_INIT_EXTRA_FRAME_INFO_P
   fprintf_unfiltered (file,
@@ -1268,14 +1346,18 @@
                       DEPRECATED_INIT_EXTRA_FRAME_INFO_P ());
 #endif
 #ifdef DEPRECATED_INIT_EXTRA_FRAME_INFO
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_INIT_EXTRA_FRAME_INFO(fromleaf, frame)",
                       XSTRING (DEPRECATED_INIT_EXTRA_FRAME_INFO (fromleaf, frame)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_INIT_EXTRA_FRAME_INFO = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_init_extra_frame_info
-                      /*DEPRECATED_INIT_EXTRA_FRAME_INFO ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_INIT_EXTRA_FRAME_INFO = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_init_extra_frame_info
+                        /*DEPRECATED_INIT_EXTRA_FRAME_INFO ()*/);
 #endif
 #ifdef DEPRECATED_INIT_FRAME_PC_P
   fprintf_unfiltered (file,
@@ -1291,10 +1373,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_INIT_FRAME_PC(fromleaf, prev)",
                       XSTRING (DEPRECATED_INIT_FRAME_PC (fromleaf, prev)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_INIT_FRAME_PC = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_init_frame_pc
-                      /*DEPRECATED_INIT_FRAME_PC ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_INIT_FRAME_PC = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_init_frame_pc
+                        /*DEPRECATED_INIT_FRAME_PC ()*/);
 #endif
 #ifdef DEPRECATED_INIT_FRAME_PC_FIRST_P
   fprintf_unfiltered (file,
@@ -1310,10 +1393,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev)",
                       XSTRING (DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf, prev)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_INIT_FRAME_PC_FIRST = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_init_frame_pc_first
-                      /*DEPRECATED_INIT_FRAME_PC_FIRST ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_INIT_FRAME_PC_FIRST = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_init_frame_pc_first
+                        /*DEPRECATED_INIT_FRAME_PC_FIRST ()*/);
 #endif
 #ifdef DEPRECATED_MAX_REGISTER_RAW_SIZE_P
   fprintf_unfiltered (file,
@@ -1363,10 +1447,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_PC_IN_CALL_DUMMY(pc, sp, frame_address)",
                       XSTRING (DEPRECATED_PC_IN_CALL_DUMMY (pc, sp, frame_address)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_PC_IN_CALL_DUMMY = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_pc_in_call_dummy
-                      /*DEPRECATED_PC_IN_CALL_DUMMY ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_PC_IN_CALL_DUMMY = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_pc_in_call_dummy
+                        /*DEPRECATED_PC_IN_CALL_DUMMY ()*/);
 #endif
 #ifdef DEPRECATED_POP_FRAME_P
   fprintf_unfiltered (file,
@@ -1378,14 +1463,18 @@
                       DEPRECATED_POP_FRAME_P ());
 #endif
 #ifdef DEPRECATED_POP_FRAME
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_POP_FRAME(-)",
                       XSTRING (DEPRECATED_POP_FRAME (-)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_POP_FRAME = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_pop_frame
-                      /*DEPRECATED_POP_FRAME ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_POP_FRAME = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_pop_frame
+                        /*DEPRECATED_POP_FRAME ()*/);
 #endif
 #ifdef DEPRECATED_PUSH_ARGUMENTS_P
   fprintf_unfiltered (file,
@@ -1401,10 +1490,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr)",
                       XSTRING (DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_PUSH_ARGUMENTS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_push_arguments
-                      /*DEPRECATED_PUSH_ARGUMENTS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_PUSH_ARGUMENTS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_push_arguments
+                        /*DEPRECATED_PUSH_ARGUMENTS ()*/);
 #endif
 #ifdef DEPRECATED_PUSH_DUMMY_FRAME_P
   fprintf_unfiltered (file,
@@ -1416,14 +1506,18 @@
                       DEPRECATED_PUSH_DUMMY_FRAME_P ());
 #endif
 #ifdef DEPRECATED_PUSH_DUMMY_FRAME
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_PUSH_DUMMY_FRAME(-)",
                       XSTRING (DEPRECATED_PUSH_DUMMY_FRAME (-)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_PUSH_DUMMY_FRAME = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_push_dummy_frame
-                      /*DEPRECATED_PUSH_DUMMY_FRAME ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_PUSH_DUMMY_FRAME = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_push_dummy_frame
+                        /*DEPRECATED_PUSH_DUMMY_FRAME ()*/);
 #endif
 #ifdef DEPRECATED_PUSH_RETURN_ADDRESS_P
   fprintf_unfiltered (file,
@@ -1439,10 +1533,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_PUSH_RETURN_ADDRESS(pc, sp)",
                       XSTRING (DEPRECATED_PUSH_RETURN_ADDRESS (pc, sp)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_PUSH_RETURN_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_push_return_address
-                      /*DEPRECATED_PUSH_RETURN_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_PUSH_RETURN_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_push_return_address
+                        /*DEPRECATED_PUSH_RETURN_ADDRESS ()*/);
 #endif
 #ifdef DEPRECATED_REGISTER_BYTES
   fprintf_unfiltered (file,
@@ -1457,30 +1552,39 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_REGISTER_CONVERTIBLE(nr)",
                       XSTRING (DEPRECATED_REGISTER_CONVERTIBLE (nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_REGISTER_CONVERTIBLE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_convertible
-                      /*DEPRECATED_REGISTER_CONVERTIBLE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_REGISTER_CONVERTIBLE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_convertible
+                        /*DEPRECATED_REGISTER_CONVERTIBLE ()*/);
 #endif
 #ifdef DEPRECATED_REGISTER_CONVERT_TO_RAW
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_REGISTER_CONVERT_TO_RAW(type, regnum, from, to)",
                       XSTRING (DEPRECATED_REGISTER_CONVERT_TO_RAW (type, regnum, from, to)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_REGISTER_CONVERT_TO_RAW = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_convert_to_raw
-                      /*DEPRECATED_REGISTER_CONVERT_TO_RAW ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_REGISTER_CONVERT_TO_RAW = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_convert_to_raw
+                        /*DEPRECATED_REGISTER_CONVERT_TO_RAW ()*/);
 #endif
 #ifdef DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to)",
                       XSTRING (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL (regnum, type, from, to)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_convert_to_virtual
-                      /*DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_convert_to_virtual
+                        /*DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL ()*/);
 #endif
 #ifdef DEPRECATED_REGISTER_SIZE
   fprintf_unfiltered (file,
@@ -1504,10 +1608,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_SAVED_PC_AFTER_CALL(frame)",
                       XSTRING (DEPRECATED_SAVED_PC_AFTER_CALL (frame)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_SAVED_PC_AFTER_CALL = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_saved_pc_after_call
-                      /*DEPRECATED_SAVED_PC_AFTER_CALL ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_SAVED_PC_AFTER_CALL = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_saved_pc_after_call
+                        /*DEPRECATED_SAVED_PC_AFTER_CALL ()*/);
 #endif
 #ifdef DEPRECATED_SAVE_DUMMY_FRAME_TOS_P
   fprintf_unfiltered (file,
@@ -1519,14 +1624,18 @@
                       DEPRECATED_SAVE_DUMMY_FRAME_TOS_P ());
 #endif
 #ifdef DEPRECATED_SAVE_DUMMY_FRAME_TOS
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_SAVE_DUMMY_FRAME_TOS(sp)",
                       XSTRING (DEPRECATED_SAVE_DUMMY_FRAME_TOS (sp)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_SAVE_DUMMY_FRAME_TOS = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_save_dummy_frame_tos
-                      /*DEPRECATED_SAVE_DUMMY_FRAME_TOS ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_SAVE_DUMMY_FRAME_TOS = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_save_dummy_frame_tos
+                        /*DEPRECATED_SAVE_DUMMY_FRAME_TOS ()*/);
 #endif
 #ifdef DEPRECATED_SIZEOF_CALL_DUMMY_WORDS
   fprintf_unfiltered (file,
@@ -1537,14 +1646,18 @@
                       DEPRECATED_SIZEOF_CALL_DUMMY_WORDS);
 #endif
 #ifdef DEPRECATED_STORE_RETURN_VALUE
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_STORE_RETURN_VALUE(type, valbuf)",
                       XSTRING (DEPRECATED_STORE_RETURN_VALUE (type, valbuf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_STORE_RETURN_VALUE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_store_return_value
-                      /*DEPRECATED_STORE_RETURN_VALUE ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_STORE_RETURN_VALUE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_store_return_value
+                        /*DEPRECATED_STORE_RETURN_VALUE ()*/);
 #endif
 #ifdef DEPRECATED_STORE_STRUCT_RETURN_P
   fprintf_unfiltered (file,
@@ -1556,14 +1669,18 @@
                       DEPRECATED_STORE_STRUCT_RETURN_P ());
 #endif
 #ifdef DEPRECATED_STORE_STRUCT_RETURN
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_STORE_STRUCT_RETURN(addr, sp)",
                       XSTRING (DEPRECATED_STORE_STRUCT_RETURN (addr, sp)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_STORE_STRUCT_RETURN = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_store_struct_return
-                      /*DEPRECATED_STORE_STRUCT_RETURN ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_STORE_STRUCT_RETURN = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_store_struct_return
+                        /*DEPRECATED_STORE_STRUCT_RETURN ()*/);
 #endif
 #ifdef DEPRECATED_TARGET_READ_FP_P
   fprintf_unfiltered (file,
@@ -1579,10 +1696,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "DEPRECATED_TARGET_READ_FP()",
                       XSTRING (DEPRECATED_TARGET_READ_FP ()));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_TARGET_READ_FP = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_target_read_fp
-                      /*DEPRECATED_TARGET_READ_FP ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DEPRECATED_TARGET_READ_FP = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_target_read_fp
+                        /*DEPRECATED_TARGET_READ_FP ()*/);
 #endif
 #ifdef DEPRECATED_USE_GENERIC_DUMMY_FRAMES
   fprintf_unfiltered (file,
@@ -1597,50 +1715,61 @@
                       "gdbarch_dump: %s # %s\n",
                       "DWARF2_REG_TO_REGNUM(dwarf2_regnr)",
                       XSTRING (DWARF2_REG_TO_REGNUM (dwarf2_regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DWARF2_REG_TO_REGNUM = <0x%08lx>\n",
-                      (long) current_gdbarch->dwarf2_reg_to_regnum
-                      /*DWARF2_REG_TO_REGNUM ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DWARF2_REG_TO_REGNUM = <0x%08lx>\n",
+                        (long) current_gdbarch->dwarf2_reg_to_regnum
+                        /*DWARF2_REG_TO_REGNUM ()*/);
 #endif
 #ifdef DWARF_REG_TO_REGNUM
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "DWARF_REG_TO_REGNUM(dwarf_regnr)",
                       XSTRING (DWARF_REG_TO_REGNUM (dwarf_regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DWARF_REG_TO_REGNUM = <0x%08lx>\n",
-                      (long) current_gdbarch->dwarf_reg_to_regnum
-                      /*DWARF_REG_TO_REGNUM ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: DWARF_REG_TO_REGNUM = <0x%08lx>\n",
+                        (long) current_gdbarch->dwarf_reg_to_regnum
+                        /*DWARF_REG_TO_REGNUM ()*/);
 #endif
 #ifdef ECOFF_REG_TO_REGNUM
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "ECOFF_REG_TO_REGNUM(ecoff_regnr)",
                       XSTRING (ECOFF_REG_TO_REGNUM (ecoff_regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: ECOFF_REG_TO_REGNUM = <0x%08lx>\n",
-                      (long) current_gdbarch->ecoff_reg_to_regnum
-                      /*ECOFF_REG_TO_REGNUM ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: ECOFF_REG_TO_REGNUM = <0x%08lx>\n",
+                        (long) current_gdbarch->ecoff_reg_to_regnum
+                        /*ECOFF_REG_TO_REGNUM ()*/);
 #endif
 #ifdef ELF_MAKE_MSYMBOL_SPECIAL
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "ELF_MAKE_MSYMBOL_SPECIAL(sym, msym)",
                       XSTRING (ELF_MAKE_MSYMBOL_SPECIAL (sym, msym)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: ELF_MAKE_MSYMBOL_SPECIAL = <0x%08lx>\n",
-                      (long) current_gdbarch->elf_make_msymbol_special
-                      /*ELF_MAKE_MSYMBOL_SPECIAL ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: ELF_MAKE_MSYMBOL_SPECIAL = <0x%08lx>\n",
+                        (long) current_gdbarch->elf_make_msymbol_special
+                        /*ELF_MAKE_MSYMBOL_SPECIAL ()*/);
 #endif
 #ifdef EXTRACT_RETURN_VALUE
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "EXTRACT_RETURN_VALUE(type, regcache, valbuf)",
                       XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: EXTRACT_RETURN_VALUE = <0x%08lx>\n",
-                      (long) current_gdbarch->extract_return_value
-                      /*EXTRACT_RETURN_VALUE ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: EXTRACT_RETURN_VALUE = <0x%08lx>\n",
+                        (long) current_gdbarch->extract_return_value
+                        /*EXTRACT_RETURN_VALUE ()*/);
 #endif
 #ifdef EXTRACT_STRUCT_VALUE_ADDRESS_P
   fprintf_unfiltered (file,
@@ -1656,10 +1785,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "EXTRACT_STRUCT_VALUE_ADDRESS(regcache)",
                       XSTRING (EXTRACT_STRUCT_VALUE_ADDRESS (regcache)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: EXTRACT_STRUCT_VALUE_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->extract_struct_value_address
-                      /*EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: EXTRACT_STRUCT_VALUE_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->extract_struct_value_address
+                        /*EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
 #endif
 #ifdef FETCH_POINTER_ARGUMENT_P
   fprintf_unfiltered (file,
@@ -1675,10 +1805,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "FETCH_POINTER_ARGUMENT(frame, argi, type)",
                       XSTRING (FETCH_POINTER_ARGUMENT (frame, argi, type)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FETCH_POINTER_ARGUMENT = <0x%08lx>\n",
-                      (long) current_gdbarch->fetch_pointer_argument
-                      /*FETCH_POINTER_ARGUMENT ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: FETCH_POINTER_ARGUMENT = <0x%08lx>\n",
+                        (long) current_gdbarch->fetch_pointer_argument
+                        /*FETCH_POINTER_ARGUMENT ()*/);
 #endif
 #ifdef FP0_REGNUM
   fprintf_unfiltered (file,
@@ -1693,10 +1824,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "FRAMELESS_FUNCTION_INVOCATION(fi)",
                       XSTRING (FRAMELESS_FUNCTION_INVOCATION (fi)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FRAMELESS_FUNCTION_INVOCATION = <0x%08lx>\n",
-                      (long) current_gdbarch->frameless_function_invocation
-                      /*FRAMELESS_FUNCTION_INVOCATION ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: FRAMELESS_FUNCTION_INVOCATION = <0x%08lx>\n",
+                        (long) current_gdbarch->frameless_function_invocation
+                        /*FRAMELESS_FUNCTION_INVOCATION ()*/);
 #endif
 #ifdef FRAME_ARGS_SKIP
   fprintf_unfiltered (file,
@@ -1720,18 +1852,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "FRAME_NUM_ARGS(frame)",
                       XSTRING (FRAME_NUM_ARGS (frame)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FRAME_NUM_ARGS = <0x%08lx>\n",
-                      (long) current_gdbarch->frame_num_args
-                      /*FRAME_NUM_ARGS ()*/);
-#endif
-#ifdef FRAME_RED_ZONE_SIZE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FRAME_RED_ZONE_SIZE # %s\n",
-                      XSTRING (FRAME_RED_ZONE_SIZE));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FRAME_RED_ZONE_SIZE = %d\n",
-                      FRAME_RED_ZONE_SIZE);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: FRAME_NUM_ARGS = <0x%08lx>\n",
+                        (long) current_gdbarch->frame_num_args
+                        /*FRAME_NUM_ARGS ()*/);
 #endif
 #ifdef FUNCTION_START_OFFSET
   fprintf_unfiltered (file,
@@ -1755,10 +1880,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "GET_LONGJMP_TARGET(pc)",
                       XSTRING (GET_LONGJMP_TARGET (pc)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: GET_LONGJMP_TARGET = <0x%08lx>\n",
-                      (long) current_gdbarch->get_longjmp_target
-                      /*GET_LONGJMP_TARGET ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: GET_LONGJMP_TARGET = <0x%08lx>\n",
+                        (long) current_gdbarch->get_longjmp_target
+                        /*GET_LONGJMP_TARGET ()*/);
 #endif
 #ifdef HAVE_NONSTEPPABLE_WATCHPOINT
   fprintf_unfiltered (file,
@@ -1773,10 +1899,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "INNER_THAN(lhs, rhs)",
                       XSTRING (INNER_THAN (lhs, rhs)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: INNER_THAN = <0x%08lx>\n",
-                      (long) current_gdbarch->inner_than
-                      /*INNER_THAN ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: INNER_THAN = <0x%08lx>\n",
+                        (long) current_gdbarch->inner_than
+                        /*INNER_THAN ()*/);
 #endif
 #ifdef INTEGER_TO_ADDRESS_P
   fprintf_unfiltered (file,
@@ -1792,50 +1919,55 @@
                       "gdbarch_dump: %s # %s\n",
                       "INTEGER_TO_ADDRESS(type, buf)",
                       XSTRING (INTEGER_TO_ADDRESS (type, buf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: INTEGER_TO_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->integer_to_address
-                      /*INTEGER_TO_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: INTEGER_TO_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->integer_to_address
+                        /*INTEGER_TO_ADDRESS ()*/);
 #endif
 #ifdef IN_SOLIB_CALL_TRAMPOLINE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "IN_SOLIB_CALL_TRAMPOLINE(pc, name)",
                       XSTRING (IN_SOLIB_CALL_TRAMPOLINE (pc, name)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: IN_SOLIB_CALL_TRAMPOLINE = <0x%08lx>\n",
-                      (long) current_gdbarch->in_solib_call_trampoline
-                      /*IN_SOLIB_CALL_TRAMPOLINE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: IN_SOLIB_CALL_TRAMPOLINE = <0x%08lx>\n",
+                        (long) current_gdbarch->in_solib_call_trampoline
+                        /*IN_SOLIB_CALL_TRAMPOLINE ()*/);
 #endif
 #ifdef IN_SOLIB_RETURN_TRAMPOLINE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "IN_SOLIB_RETURN_TRAMPOLINE(pc, name)",
                       XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (pc, name)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: IN_SOLIB_RETURN_TRAMPOLINE = <0x%08lx>\n",
-                      (long) current_gdbarch->in_solib_return_trampoline
-                      /*IN_SOLIB_RETURN_TRAMPOLINE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: IN_SOLIB_RETURN_TRAMPOLINE = <0x%08lx>\n",
+                        (long) current_gdbarch->in_solib_return_trampoline
+                        /*IN_SOLIB_RETURN_TRAMPOLINE ()*/);
 #endif
 #ifdef MEMORY_INSERT_BREAKPOINT
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "MEMORY_INSERT_BREAKPOINT(addr, contents_cache)",
                       XSTRING (MEMORY_INSERT_BREAKPOINT (addr, contents_cache)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: MEMORY_INSERT_BREAKPOINT = <0x%08lx>\n",
-                      (long) current_gdbarch->memory_insert_breakpoint
-                      /*MEMORY_INSERT_BREAKPOINT ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: MEMORY_INSERT_BREAKPOINT = <0x%08lx>\n",
+                        (long) current_gdbarch->memory_insert_breakpoint
+                        /*MEMORY_INSERT_BREAKPOINT ()*/);
 #endif
 #ifdef MEMORY_REMOVE_BREAKPOINT
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "MEMORY_REMOVE_BREAKPOINT(addr, contents_cache)",
                       XSTRING (MEMORY_REMOVE_BREAKPOINT (addr, contents_cache)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: MEMORY_REMOVE_BREAKPOINT = <0x%08lx>\n",
-                      (long) current_gdbarch->memory_remove_breakpoint
-                      /*MEMORY_REMOVE_BREAKPOINT ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: MEMORY_REMOVE_BREAKPOINT = <0x%08lx>\n",
+                        (long) current_gdbarch->memory_remove_breakpoint
+                        /*MEMORY_REMOVE_BREAKPOINT ()*/);
 #endif
 #ifdef NAME_OF_MALLOC
   fprintf_unfiltered (file,
@@ -1882,10 +2014,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "PC_IN_SIGTRAMP(pc, name)",
                       XSTRING (PC_IN_SIGTRAMP (pc, name)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: PC_IN_SIGTRAMP = <0x%08lx>\n",
-                      (long) current_gdbarch->pc_in_sigtramp
-                      /*PC_IN_SIGTRAMP ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: PC_IN_SIGTRAMP = <0x%08lx>\n",
+                        (long) current_gdbarch->pc_in_sigtramp
+                        /*PC_IN_SIGTRAMP ()*/);
 #endif
 #ifdef PC_REGNUM
   fprintf_unfiltered (file,
@@ -1900,35 +2033,42 @@
                       "gdbarch_dump: %s # %s\n",
                       "POINTER_TO_ADDRESS(type, buf)",
                       XSTRING (POINTER_TO_ADDRESS (type, buf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: POINTER_TO_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->pointer_to_address
-                      /*POINTER_TO_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: POINTER_TO_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->pointer_to_address
+                        /*POINTER_TO_ADDRESS ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_print_float_info_p() = %d\n",
-                      gdbarch_print_float_info_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: print_float_info = 0x%08lx\n",
-                      (long) current_gdbarch->print_float_info);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: print_registers_info = 0x%08lx\n",
-                      (long) current_gdbarch->print_registers_info);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_print_vector_info_p() = %d\n",
-                      gdbarch_print_vector_info_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: print_vector_info = 0x%08lx\n",
-                      (long) current_gdbarch->print_vector_info);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_print_float_info_p() = %d\n",
+                        gdbarch_print_float_info_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: print_float_info = 0x%08lx\n",
+                        (long) current_gdbarch->print_float_info);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: print_registers_info = 0x%08lx\n",
+                        (long) current_gdbarch->print_registers_info);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_print_vector_info_p() = %d\n",
+                        gdbarch_print_vector_info_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: print_vector_info = 0x%08lx\n",
+                        (long) current_gdbarch->print_vector_info);
 #ifdef PROLOGUE_FRAMELESS_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "PROLOGUE_FRAMELESS_P(ip)",
                       XSTRING (PROLOGUE_FRAMELESS_P (ip)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: PROLOGUE_FRAMELESS_P = <0x%08lx>\n",
-                      (long) current_gdbarch->prologue_frameless_p
-                      /*PROLOGUE_FRAMELESS_P ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: PROLOGUE_FRAMELESS_P = <0x%08lx>\n",
+                        (long) current_gdbarch->prologue_frameless_p
+                        /*PROLOGUE_FRAMELESS_P ()*/);
 #endif
 #ifdef PS_REGNUM
   fprintf_unfiltered (file,
@@ -1938,18 +2078,22 @@
                       "gdbarch_dump: PS_REGNUM = %d\n",
                       PS_REGNUM);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_push_dummy_call_p() = %d\n",
-                      gdbarch_push_dummy_call_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: push_dummy_call = 0x%08lx\n",
-                      (long) current_gdbarch->push_dummy_call);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_push_dummy_code_p() = %d\n",
-                      gdbarch_push_dummy_code_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: push_dummy_code = 0x%08lx\n",
-                      (long) current_gdbarch->push_dummy_code);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_push_dummy_call_p() = %d\n",
+                        gdbarch_push_dummy_call_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: push_dummy_call = 0x%08lx\n",
+                        (long) current_gdbarch->push_dummy_call);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_push_dummy_code_p() = %d\n",
+                        gdbarch_push_dummy_code_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: push_dummy_code = 0x%08lx\n",
+                        (long) current_gdbarch->push_dummy_code);
 #ifdef REGISTER_BYTE_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -1964,10 +2108,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_BYTE(reg_nr)",
                       XSTRING (REGISTER_BYTE (reg_nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_BYTE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_byte
-                      /*REGISTER_BYTE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_BYTE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_byte
+                        /*REGISTER_BYTE ()*/);
 #endif
 #ifdef REGISTER_BYTES_OK_P
   fprintf_unfiltered (file,
@@ -1983,20 +2128,22 @@
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_BYTES_OK(nr_bytes)",
                       XSTRING (REGISTER_BYTES_OK (nr_bytes)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_BYTES_OK = <0x%08lx>\n",
-                      (long) current_gdbarch->register_bytes_ok
-                      /*REGISTER_BYTES_OK ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_BYTES_OK = <0x%08lx>\n",
+                        (long) current_gdbarch->register_bytes_ok
+                        /*REGISTER_BYTES_OK ()*/);
 #endif
 #ifdef REGISTER_NAME
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_NAME(regnr)",
                       XSTRING (REGISTER_NAME (regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_NAME = <0x%08lx>\n",
-                      (long) current_gdbarch->register_name
-                      /*REGISTER_NAME ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_NAME = <0x%08lx>\n",
+                        (long) current_gdbarch->register_name
+                        /*REGISTER_NAME ()*/);
 #endif
 #ifdef REGISTER_RAW_SIZE_P
   fprintf_unfiltered (file,
@@ -2012,37 +2159,45 @@
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_RAW_SIZE(reg_nr)",
                       XSTRING (REGISTER_RAW_SIZE (reg_nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_RAW_SIZE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_raw_size
-                      /*REGISTER_RAW_SIZE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_RAW_SIZE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_raw_size
+                        /*REGISTER_RAW_SIZE ()*/);
 #endif
 #ifdef REGISTER_SIM_REGNO
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_SIM_REGNO(reg_nr)",
                       XSTRING (REGISTER_SIM_REGNO (reg_nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_SIM_REGNO = <0x%08lx>\n",
-                      (long) current_gdbarch->register_sim_regno
-                      /*REGISTER_SIM_REGNO ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_SIM_REGNO = <0x%08lx>\n",
+                        (long) current_gdbarch->register_sim_regno
+                        /*REGISTER_SIM_REGNO ()*/);
 #endif
 #ifdef REGISTER_TO_VALUE
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_TO_VALUE(frame, regnum, type, buf)",
                       XSTRING (REGISTER_TO_VALUE (frame, regnum, type, buf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_TO_VALUE = <0x%08lx>\n",
-                      (long) current_gdbarch->register_to_value
-                      /*REGISTER_TO_VALUE ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_register_type_p() = %d\n",
-                      gdbarch_register_type_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: register_type = 0x%08lx\n",
-                      (long) current_gdbarch->register_type);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_TO_VALUE = <0x%08lx>\n",
+                        (long) current_gdbarch->register_to_value
+                        /*REGISTER_TO_VALUE ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_register_type_p() = %d\n",
+                        gdbarch_register_type_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: register_type = 0x%08lx\n",
+                        (long) current_gdbarch->register_type);
 #ifdef REGISTER_VIRTUAL_SIZE_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -2057,10 +2212,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_VIRTUAL_SIZE(reg_nr)",
                       XSTRING (REGISTER_VIRTUAL_SIZE (reg_nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_VIRTUAL_SIZE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_virtual_size
-                      /*REGISTER_VIRTUAL_SIZE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_VIRTUAL_SIZE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_virtual_size
+                        /*REGISTER_VIRTUAL_SIZE ()*/);
 #endif
 #ifdef REGISTER_VIRTUAL_TYPE_P
   fprintf_unfiltered (file,
@@ -2076,10 +2232,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "REGISTER_VIRTUAL_TYPE(reg_nr)",
                       XSTRING (REGISTER_VIRTUAL_TYPE (reg_nr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REGISTER_VIRTUAL_TYPE = <0x%08lx>\n",
-                      (long) current_gdbarch->deprecated_register_virtual_type
-                      /*REGISTER_VIRTUAL_TYPE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REGISTER_VIRTUAL_TYPE = <0x%08lx>\n",
+                        (long) current_gdbarch->deprecated_register_virtual_type
+                        /*REGISTER_VIRTUAL_TYPE ()*/);
 #endif
 #ifdef REG_STRUCT_HAS_ADDR_P
   fprintf_unfiltered (file,
@@ -2095,33 +2252,37 @@
                       "gdbarch_dump: %s # %s\n",
                       "REG_STRUCT_HAS_ADDR(gcc_p, type)",
                       XSTRING (REG_STRUCT_HAS_ADDR (gcc_p, type)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: REG_STRUCT_HAS_ADDR = <0x%08lx>\n",
-                      (long) current_gdbarch->reg_struct_has_addr
-                      /*REG_STRUCT_HAS_ADDR ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: REG_STRUCT_HAS_ADDR = <0x%08lx>\n",
+                        (long) current_gdbarch->reg_struct_has_addr
+                        /*REG_STRUCT_HAS_ADDR ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: remote_translate_xfer_address = 0x%08lx\n",
-                      (long) current_gdbarch->remote_translate_xfer_address);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: remote_translate_xfer_address = 0x%08lx\n",
+                        (long) current_gdbarch->remote_translate_xfer_address);
 #ifdef RETURN_VALUE_ON_STACK
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "RETURN_VALUE_ON_STACK(type)",
                       XSTRING (RETURN_VALUE_ON_STACK (type)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: RETURN_VALUE_ON_STACK = <0x%08lx>\n",
-                      (long) current_gdbarch->return_value_on_stack
-                      /*RETURN_VALUE_ON_STACK ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: RETURN_VALUE_ON_STACK = <0x%08lx>\n",
+                        (long) current_gdbarch->return_value_on_stack
+                        /*RETURN_VALUE_ON_STACK ()*/);
 #endif
 #ifdef SDB_REG_TO_REGNUM
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "SDB_REG_TO_REGNUM(sdb_regnr)",
                       XSTRING (SDB_REG_TO_REGNUM (sdb_regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SDB_REG_TO_REGNUM = <0x%08lx>\n",
-                      (long) current_gdbarch->sdb_reg_to_regnum
-                      /*SDB_REG_TO_REGNUM ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SDB_REG_TO_REGNUM = <0x%08lx>\n",
+                        (long) current_gdbarch->sdb_reg_to_regnum
+                        /*SDB_REG_TO_REGNUM ()*/);
 #endif
 #ifdef SIGTRAMP_END_P
   fprintf_unfiltered (file,
@@ -2137,10 +2298,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "SIGTRAMP_END(pc)",
                       XSTRING (SIGTRAMP_END (pc)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SIGTRAMP_END = <0x%08lx>\n",
-                      (long) current_gdbarch->sigtramp_end
-                      /*SIGTRAMP_END ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SIGTRAMP_END = <0x%08lx>\n",
+                        (long) current_gdbarch->sigtramp_end
+                        /*SIGTRAMP_END ()*/);
 #endif
 #ifdef SIGTRAMP_START_P
   fprintf_unfiltered (file,
@@ -2156,40 +2318,44 @@
                       "gdbarch_dump: %s # %s\n",
                       "SIGTRAMP_START(pc)",
                       XSTRING (SIGTRAMP_START (pc)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SIGTRAMP_START = <0x%08lx>\n",
-                      (long) current_gdbarch->sigtramp_start
-                      /*SIGTRAMP_START ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SIGTRAMP_START = <0x%08lx>\n",
+                        (long) current_gdbarch->sigtramp_start
+                        /*SIGTRAMP_START ()*/);
 #endif
 #ifdef SKIP_PROLOGUE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "SKIP_PROLOGUE(ip)",
                       XSTRING (SKIP_PROLOGUE (ip)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SKIP_PROLOGUE = <0x%08lx>\n",
-                      (long) current_gdbarch->skip_prologue
-                      /*SKIP_PROLOGUE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SKIP_PROLOGUE = <0x%08lx>\n",
+                        (long) current_gdbarch->skip_prologue
+                        /*SKIP_PROLOGUE ()*/);
 #endif
 #ifdef SKIP_TRAMPOLINE_CODE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "SKIP_TRAMPOLINE_CODE(pc)",
                       XSTRING (SKIP_TRAMPOLINE_CODE (pc)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SKIP_TRAMPOLINE_CODE = <0x%08lx>\n",
-                      (long) current_gdbarch->skip_trampoline_code
-                      /*SKIP_TRAMPOLINE_CODE ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SKIP_TRAMPOLINE_CODE = <0x%08lx>\n",
+                        (long) current_gdbarch->skip_trampoline_code
+                        /*SKIP_TRAMPOLINE_CODE ()*/);
 #endif
 #ifdef SMASH_TEXT_ADDRESS
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "SMASH_TEXT_ADDRESS(addr)",
                       XSTRING (SMASH_TEXT_ADDRESS (addr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SMASH_TEXT_ADDRESS = <0x%08lx>\n",
-                      (long) current_gdbarch->smash_text_address
-                      /*SMASH_TEXT_ADDRESS ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SMASH_TEXT_ADDRESS = <0x%08lx>\n",
+                        (long) current_gdbarch->smash_text_address
+                        /*SMASH_TEXT_ADDRESS ()*/);
 #endif
 #ifdef SOFTWARE_SINGLE_STEP_P
   fprintf_unfiltered (file,
@@ -2201,14 +2367,18 @@
                       SOFTWARE_SINGLE_STEP_P ());
 #endif
 #ifdef SOFTWARE_SINGLE_STEP
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p)",
                       XSTRING (SOFTWARE_SINGLE_STEP (sig, insert_breakpoints_p)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SOFTWARE_SINGLE_STEP = <0x%08lx>\n",
-                      (long) current_gdbarch->software_single_step
-                      /*SOFTWARE_SINGLE_STEP ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: SOFTWARE_SINGLE_STEP = <0x%08lx>\n",
+                        (long) current_gdbarch->software_single_step
+                        /*SOFTWARE_SINGLE_STEP ()*/);
 #endif
 #ifdef SP_REGNUM
   fprintf_unfiltered (file,
@@ -2223,10 +2393,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "STAB_REG_TO_REGNUM(stab_regnr)",
                       XSTRING (STAB_REG_TO_REGNUM (stab_regnr)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: STAB_REG_TO_REGNUM = <0x%08lx>\n",
-                      (long) current_gdbarch->stab_reg_to_regnum
-                      /*STAB_REG_TO_REGNUM ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: STAB_REG_TO_REGNUM = <0x%08lx>\n",
+                        (long) current_gdbarch->stab_reg_to_regnum
+                        /*STAB_REG_TO_REGNUM ()*/);
 #endif
 #ifdef STACK_ALIGN_P
   fprintf_unfiltered (file,
@@ -2242,20 +2413,25 @@
                       "gdbarch_dump: %s # %s\n",
                       "STACK_ALIGN(sp)",
                       XSTRING (STACK_ALIGN (sp)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: STACK_ALIGN = <0x%08lx>\n",
-                      (long) current_gdbarch->stack_align
-                      /*STACK_ALIGN ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: STACK_ALIGN = <0x%08lx>\n",
+                        (long) current_gdbarch->stack_align
+                        /*STACK_ALIGN ()*/);
 #endif
 #ifdef STORE_RETURN_VALUE
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "STORE_RETURN_VALUE(type, regcache, valbuf)",
                       XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: STORE_RETURN_VALUE = <0x%08lx>\n",
-                      (long) current_gdbarch->store_return_value
-                      /*STORE_RETURN_VALUE ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: STORE_RETURN_VALUE = <0x%08lx>\n",
+                        (long) current_gdbarch->store_return_value
+                        /*STORE_RETURN_VALUE ()*/);
 #endif
 #ifdef TARGET_ADDR_BIT
   fprintf_unfiltered (file,
@@ -2383,10 +2559,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "TARGET_PRINT_INSN(vma, info)",
                       XSTRING (TARGET_PRINT_INSN (vma, info)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_PRINT_INSN = <0x%08lx>\n",
-                      (long) current_gdbarch->print_insn
-                      /*TARGET_PRINT_INSN ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: TARGET_PRINT_INSN = <0x%08lx>\n",
+                        (long) current_gdbarch->print_insn
+                        /*TARGET_PRINT_INSN ()*/);
 #endif
 #ifdef TARGET_PTR_BIT
   fprintf_unfiltered (file,
@@ -2410,10 +2587,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "TARGET_READ_PC(ptid)",
                       XSTRING (TARGET_READ_PC (ptid)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_READ_PC = <0x%08lx>\n",
-                      (long) current_gdbarch->read_pc
-                      /*TARGET_READ_PC ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: TARGET_READ_PC = <0x%08lx>\n",
+                        (long) current_gdbarch->read_pc
+                        /*TARGET_READ_PC ()*/);
 #endif
 #ifdef TARGET_READ_SP_P
   fprintf_unfiltered (file,
@@ -2429,10 +2607,11 @@
                       "gdbarch_dump: %s # %s\n",
                       "TARGET_READ_SP()",
                       XSTRING (TARGET_READ_SP ()));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_READ_SP = <0x%08lx>\n",
-                      (long) current_gdbarch->read_sp
-                      /*TARGET_READ_SP ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: TARGET_READ_SP = <0x%08lx>\n",
+                        (long) current_gdbarch->read_sp
+                        /*TARGET_READ_SP ()*/);
 #endif
 #ifdef TARGET_SHORT_BIT
   fprintf_unfiltered (file,
@@ -2443,62 +2622,81 @@
                       TARGET_SHORT_BIT);
 #endif
 #ifdef TARGET_VIRTUAL_FRAME_POINTER
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "TARGET_VIRTUAL_FRAME_POINTER(pc, frame_regnum, frame_offset)",
                       XSTRING (TARGET_VIRTUAL_FRAME_POINTER (pc, frame_regnum, frame_offset)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_VIRTUAL_FRAME_POINTER = <0x%08lx>\n",
-                      (long) current_gdbarch->virtual_frame_pointer
-                      /*TARGET_VIRTUAL_FRAME_POINTER ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: TARGET_VIRTUAL_FRAME_POINTER = <0x%08lx>\n",
+                        (long) current_gdbarch->virtual_frame_pointer
+                        /*TARGET_VIRTUAL_FRAME_POINTER ()*/);
 #endif
 #ifdef TARGET_WRITE_PC
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "TARGET_WRITE_PC(val, ptid)",
                       XSTRING (TARGET_WRITE_PC (val, ptid)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_WRITE_PC = <0x%08lx>\n",
-                      (long) current_gdbarch->write_pc
-                      /*TARGET_WRITE_PC ()*/);
 #endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_unwind_dummy_id_p() = %d\n",
-                      gdbarch_unwind_dummy_id_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: unwind_dummy_id = 0x%08lx\n",
-                      (long) current_gdbarch->unwind_dummy_id);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_unwind_pc_p() = %d\n",
-                      gdbarch_unwind_pc_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: unwind_pc = 0x%08lx\n",
-                      (long) current_gdbarch->unwind_pc);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_unwind_sp_p() = %d\n",
-                      gdbarch_unwind_sp_p (current_gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: unwind_sp = 0x%08lx\n",
-                      (long) current_gdbarch->unwind_sp);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: TARGET_WRITE_PC = <0x%08lx>\n",
+                        (long) current_gdbarch->write_pc
+                        /*TARGET_WRITE_PC ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_unwind_dummy_id_p() = %d\n",
+                        gdbarch_unwind_dummy_id_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: unwind_dummy_id = 0x%08lx\n",
+                        (long) current_gdbarch->unwind_dummy_id);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_unwind_pc_p() = %d\n",
+                        gdbarch_unwind_pc_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: unwind_pc = 0x%08lx\n",
+                        (long) current_gdbarch->unwind_pc);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: gdbarch_unwind_sp_p() = %d\n",
+                        gdbarch_unwind_sp_p (current_gdbarch));
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: unwind_sp = 0x%08lx\n",
+                        (long) current_gdbarch->unwind_sp);
 #ifdef USE_STRUCT_CONVENTION
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "USE_STRUCT_CONVENTION(gcc_p, value_type)",
                       XSTRING (USE_STRUCT_CONVENTION (gcc_p, value_type)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: USE_STRUCT_CONVENTION = <0x%08lx>\n",
-                      (long) current_gdbarch->use_struct_convention
-                      /*USE_STRUCT_CONVENTION ()*/);
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: USE_STRUCT_CONVENTION = <0x%08lx>\n",
+                        (long) current_gdbarch->use_struct_convention
+                        /*USE_STRUCT_CONVENTION ()*/);
 #endif
 #ifdef VALUE_TO_REGISTER
+#if GDB_MULTI_ARCH
+  /* Macro might contain `[{}]' when not multi-arch */
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
                       "VALUE_TO_REGISTER(frame, regnum, type, buf)",
                       XSTRING (VALUE_TO_REGISTER (frame, regnum, type, buf)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: VALUE_TO_REGISTER = <0x%08lx>\n",
-                      (long) current_gdbarch->value_to_register
-                      /*VALUE_TO_REGISTER ()*/);
+#endif
+  if (GDB_MULTI_ARCH)
+    fprintf_unfiltered (file,
+                        "gdbarch_dump: VALUE_TO_REGISTER = <0x%08lx>\n",
+                        (long) current_gdbarch->value_to_register
+                        /*VALUE_TO_REGISTER ()*/);
 #endif
   if (current_gdbarch->dump_tdep != NULL)
     current_gdbarch->dump_tdep (current_gdbarch, file);
@@ -4916,22 +5114,6 @@
 }
 
 int
-gdbarch_frame_red_zone_size (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_red_zone_size called\n");
-  return gdbarch->frame_red_zone_size;
-}
-
-void
-set_gdbarch_frame_red_zone_size (struct gdbarch *gdbarch,
-                                 int frame_red_zone_size)
-{
-  gdbarch->frame_red_zone_size = frame_red_zone_size;
-}
-
-int
 gdbarch_parm_boundary (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
@@ -5653,30 +5835,37 @@
 const char **
 gdbarch_printable_names (void)
 {
-  /* Accumulate a list of names based on the registed list of
-     architectures. */
-  enum bfd_architecture a;
-  int nr_arches = 0;
-  const char **arches = NULL;
-  struct gdbarch_registration *rego;
-  for (rego = gdbarch_registry;
-       rego != NULL;
-       rego = rego->next)
+  if (GDB_MULTI_ARCH)
     {
-      const struct bfd_arch_info *ap;
-      ap = bfd_lookup_arch (rego->bfd_architecture, 0);
-      if (ap == NULL)
-        internal_error (__FILE__, __LINE__,
-                        "gdbarch_architecture_names: multi-arch unknown");
-      do
-        {
-          append_name (&arches, &nr_arches, ap->printable_name);
-          ap = ap->next;
-        }
-      while (ap != NULL);
+      /* Accumulate a list of names based on the registed list of
+         architectures. */
+      enum bfd_architecture a;
+      int nr_arches = 0;
+      const char **arches = NULL;
+      struct gdbarch_registration *rego;
+      for (rego = gdbarch_registry;
+	   rego != NULL;
+	   rego = rego->next)
+	{
+	  const struct bfd_arch_info *ap;
+	  ap = bfd_lookup_arch (rego->bfd_architecture, 0);
+	  if (ap == NULL)
+	    internal_error (__FILE__, __LINE__,
+                            "gdbarch_architecture_names: multi-arch unknown");
+	  do
+	    {
+	      append_name (&arches, &nr_arches, ap->printable_name);
+	      ap = ap->next;
+	    }
+	  while (ap != NULL);
+	}
+      append_name (&arches, &nr_arches, NULL);
+      return arches;
     }
-  append_name (&arches, &nr_arches, NULL);
-  return arches;
+  else
+    /* Just return all the architectures that BFD knows.  Assume that
+       the legacy architecture framework supports them. */
+    return bfd_arch_list ();
 }
 
 
@@ -5717,6 +5906,12 @@
   (*curr)->dump_tdep = dump_tdep;
   (*curr)->arches = NULL;
   (*curr)->next = NULL;
+  /* When non- multi-arch, install whatever target dump routine we've
+     been provided - hopefully that routine has been written correctly
+     and works regardless of multi-arch. */
+  if (!GDB_MULTI_ARCH && dump_tdep != NULL
+      && startup_gdbarch.dump_tdep == NULL)
+    startup_gdbarch.dump_tdep = dump_tdep;
 }
 
 void
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 7c26628..3850c4b 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -36,6 +36,11 @@
 #define GDBARCH_H
 
 #include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
+#if !GDB_MULTI_ARCH
+/* Pull in function declarations refered to, indirectly, via macros.  */
+#include "inferior.h"		/* For unsigned_address_to_pointer().  */
+#include "symfile.h"		/* For entry_point_address().  */
+#endif
 
 struct floatformat;
 struct ui_file;
@@ -95,6 +100,11 @@
   
    Number of bits in a short or unsigned short for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_SHORT_BIT)
+#define TARGET_SHORT_BIT (2*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_short_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_short_bit (struct gdbarch *gdbarch, int short_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_SHORT_BIT)
@@ -106,6 +116,11 @@
 
 /* Number of bits in an int or unsigned int for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_INT_BIT)
+#define TARGET_INT_BIT (4*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_int_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_int_bit (struct gdbarch *gdbarch, int int_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_INT_BIT)
@@ -117,6 +132,11 @@
 
 /* Number of bits in a long or unsigned long for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_BIT)
+#define TARGET_LONG_BIT (4*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_long_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_BIT)
@@ -129,6 +149,11 @@
 /* Number of bits in a long long or unsigned long long for the target
    machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_LONG_BIT)
+#define TARGET_LONG_LONG_BIT (2*TARGET_LONG_BIT)
+#endif
+
 extern int gdbarch_long_long_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_LONG_BIT)
@@ -140,6 +165,11 @@
 
 /* Number of bits in a float for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_FLOAT_BIT)
+#define TARGET_FLOAT_BIT (4*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_float_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_FLOAT_BIT)
@@ -151,6 +181,11 @@
 
 /* Number of bits in a double for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_DOUBLE_BIT)
+#define TARGET_DOUBLE_BIT (8*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_double_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_double_bit (struct gdbarch *gdbarch, int double_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_DOUBLE_BIT)
@@ -162,6 +197,11 @@
 
 /* Number of bits in a long double for the target machine. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_DOUBLE_BIT)
+#define TARGET_LONG_DOUBLE_BIT (8*TARGET_CHAR_BIT)
+#endif
+
 extern int gdbarch_long_double_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_double_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_DOUBLE_BIT)
@@ -181,6 +221,11 @@
   
    ptr_bit is the size of a pointer on the target */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_PTR_BIT)
+#define TARGET_PTR_BIT (TARGET_INT_BIT)
+#endif
+
 extern int gdbarch_ptr_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_PTR_BIT)
@@ -192,6 +237,11 @@
 
 /* addr_bit is the size of a target address as represented in gdb */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_ADDR_BIT)
+#define TARGET_ADDR_BIT (TARGET_PTR_BIT)
+#endif
+
 extern int gdbarch_addr_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_addr_bit (struct gdbarch *gdbarch, int addr_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_ADDR_BIT)
@@ -203,6 +253,11 @@
 
 /* Number of bits in a BFD_VMA for the target object file format. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_BFD_VMA_BIT)
+#define TARGET_BFD_VMA_BIT (TARGET_ARCHITECTURE->bits_per_address)
+#endif
+
 extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_BFD_VMA_BIT)
@@ -214,6 +269,11 @@
 
 /* One if `char' acts like `signed char', zero if `unsigned char'. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_CHAR_SIGNED)
+#define TARGET_CHAR_SIGNED (1)
+#endif
+
 extern int gdbarch_char_signed (struct gdbarch *gdbarch);
 extern void set_gdbarch_char_signed (struct gdbarch *gdbarch, int char_signed);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_CHAR_SIGNED)
@@ -230,6 +290,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_PC_P)
+#define TARGET_READ_PC_P() (0)
+#endif
+
 extern int gdbarch_read_pc_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_PC_P)
 #error "Non multi-arch definition of TARGET_READ_PC"
@@ -238,6 +303,11 @@
 #define TARGET_READ_PC_P() (gdbarch_read_pc_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_PC)
+#define TARGET_READ_PC(ptid) (internal_error (__FILE__, __LINE__, "TARGET_READ_PC"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_read_pc_ftype) (ptid_t ptid);
 extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid);
 extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype *read_pc);
@@ -248,6 +318,11 @@
 #define TARGET_READ_PC(ptid) (gdbarch_read_pc (current_gdbarch, ptid))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_WRITE_PC)
+#define TARGET_WRITE_PC(val, ptid) (generic_target_write_pc (val, ptid))
+#endif
+
 typedef void (gdbarch_write_pc_ftype) (CORE_ADDR val, ptid_t ptid);
 extern void gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid);
 extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc);
@@ -267,6 +342,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_SP_P)
+#define TARGET_READ_SP_P() (0)
+#endif
+
 extern int gdbarch_read_sp_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_SP_P)
 #error "Non multi-arch definition of TARGET_READ_SP"
@@ -275,6 +355,11 @@
 #define TARGET_READ_SP_P() (gdbarch_read_sp_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_SP)
+#define TARGET_READ_SP() (internal_error (__FILE__, __LINE__, "TARGET_READ_SP"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_read_sp_ftype) (void);
 extern CORE_ADDR gdbarch_read_sp (struct gdbarch *gdbarch);
 extern void set_gdbarch_read_sp (struct gdbarch *gdbarch, gdbarch_read_sp_ftype *read_sp);
@@ -289,6 +374,11 @@
    whole scheme for dealing with "frames" and "frame pointers" needs a
    serious shakedown. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_VIRTUAL_FRAME_POINTER)
+#define TARGET_VIRTUAL_FRAME_POINTER(pc, frame_regnum, frame_offset) (legacy_virtual_frame_pointer (pc, frame_regnum, frame_offset))
+#endif
+
 typedef void (gdbarch_virtual_frame_pointer_ftype) (CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
 extern void gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
 extern void set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer);
@@ -325,6 +415,11 @@
    These pseudo-registers may be aliases for other registers,
    combinations of other registers, or they may be computed by GDB. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (NUM_PSEUDO_REGS)
+#define NUM_PSEUDO_REGS (0)
+#endif
+
 extern int gdbarch_num_pseudo_regs (struct gdbarch *gdbarch);
 extern void set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch, int num_pseudo_regs);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NUM_PSEUDO_REGS)
@@ -339,6 +434,11 @@
    all (-1).
    SP_REGNUM will hopefully be replaced by UNWIND_SP. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SP_REGNUM)
+#define SP_REGNUM (-1)
+#endif
+
 extern int gdbarch_sp_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_sp_regnum (struct gdbarch *gdbarch, int sp_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SP_REGNUM)
@@ -348,6 +448,11 @@
 #define SP_REGNUM (gdbarch_sp_regnum (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (PC_REGNUM)
+#define PC_REGNUM (-1)
+#endif
+
 extern int gdbarch_pc_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_pc_regnum (struct gdbarch *gdbarch, int pc_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PC_REGNUM)
@@ -357,6 +462,11 @@
 #define PC_REGNUM (gdbarch_pc_regnum (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (PS_REGNUM)
+#define PS_REGNUM (-1)
+#endif
+
 extern int gdbarch_ps_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_ps_regnum (struct gdbarch *gdbarch, int ps_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PS_REGNUM)
@@ -366,6 +476,11 @@
 #define PS_REGNUM (gdbarch_ps_regnum (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (FP0_REGNUM)
+#define FP0_REGNUM (-1)
+#endif
+
 extern int gdbarch_fp0_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int fp0_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FP0_REGNUM)
@@ -375,6 +490,11 @@
 #define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (NPC_REGNUM)
+#define NPC_REGNUM (-1)
+#endif
+
 extern int gdbarch_npc_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_npc_regnum (struct gdbarch *gdbarch, int npc_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NPC_REGNUM)
@@ -386,6 +506,11 @@
 
 /* Convert stab register number (from `r' declaration) to a gdb REGNUM. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (STAB_REG_TO_REGNUM)
+#define STAB_REG_TO_REGNUM(stab_regnr) (no_op_reg_to_regnum (stab_regnr))
+#endif
+
 typedef int (gdbarch_stab_reg_to_regnum_ftype) (int stab_regnr);
 extern int gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr);
 extern void set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum);
@@ -398,6 +523,11 @@
 
 /* Provide a default mapping from a ecoff register number to a gdb REGNUM. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (ECOFF_REG_TO_REGNUM)
+#define ECOFF_REG_TO_REGNUM(ecoff_regnr) (no_op_reg_to_regnum (ecoff_regnr))
+#endif
+
 typedef int (gdbarch_ecoff_reg_to_regnum_ftype) (int ecoff_regnr);
 extern int gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr);
 extern void set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum);
@@ -410,6 +540,11 @@
 
 /* Provide a default mapping from a DWARF register number to a gdb REGNUM. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DWARF_REG_TO_REGNUM)
+#define DWARF_REG_TO_REGNUM(dwarf_regnr) (no_op_reg_to_regnum (dwarf_regnr))
+#endif
+
 typedef int (gdbarch_dwarf_reg_to_regnum_ftype) (int dwarf_regnr);
 extern int gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr);
 extern void set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum);
@@ -424,6 +559,11 @@
    This should be defined in tm.h, if REGISTER_NAMES is not set up
    to map one to one onto the sdb register numbers. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SDB_REG_TO_REGNUM)
+#define SDB_REG_TO_REGNUM(sdb_regnr) (no_op_reg_to_regnum (sdb_regnr))
+#endif
+
 typedef int (gdbarch_sdb_reg_to_regnum_ftype) (int sdb_regnr);
 extern int gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr);
 extern void set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum);
@@ -434,6 +574,11 @@
 #define SDB_REG_TO_REGNUM(sdb_regnr) (gdbarch_sdb_reg_to_regnum (current_gdbarch, sdb_regnr))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DWARF2_REG_TO_REGNUM)
+#define DWARF2_REG_TO_REGNUM(dwarf2_regnr) (no_op_reg_to_regnum (dwarf2_regnr))
+#endif
+
 typedef int (gdbarch_dwarf2_reg_to_regnum_ftype) (int dwarf2_regnr);
 extern int gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr);
 extern void set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum);
@@ -471,6 +616,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_VIRTUAL_TYPE_P)
+#define REGISTER_VIRTUAL_TYPE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_register_virtual_type_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_VIRTUAL_TYPE_P)
 #error "Non multi-arch definition of REGISTER_VIRTUAL_TYPE"
@@ -479,6 +629,11 @@
 #define REGISTER_VIRTUAL_TYPE_P() (gdbarch_deprecated_register_virtual_type_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_VIRTUAL_TYPE)
+#define REGISTER_VIRTUAL_TYPE(reg_nr) (internal_error (__FILE__, __LINE__, "REGISTER_VIRTUAL_TYPE"), 0)
+#endif
+
 typedef struct type * (gdbarch_deprecated_register_virtual_type_ftype) (int reg_nr);
 extern struct type * gdbarch_deprecated_register_virtual_type (struct gdbarch *gdbarch, int reg_nr);
 extern void set_gdbarch_deprecated_register_virtual_type (struct gdbarch *gdbarch, gdbarch_deprecated_register_virtual_type_ftype *deprecated_register_virtual_type);
@@ -516,6 +671,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_BYTE_P)
+#define REGISTER_BYTE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_register_byte_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_BYTE_P)
 #error "Non multi-arch definition of REGISTER_BYTE"
@@ -524,6 +684,11 @@
 #define REGISTER_BYTE_P() (gdbarch_deprecated_register_byte_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_BYTE)
+#define REGISTER_BYTE(reg_nr) (generic_register_byte (reg_nr))
+#endif
+
 typedef int (gdbarch_deprecated_register_byte_ftype) (int reg_nr);
 extern int gdbarch_deprecated_register_byte (struct gdbarch *gdbarch, int reg_nr);
 extern void set_gdbarch_deprecated_register_byte (struct gdbarch *gdbarch, gdbarch_deprecated_register_byte_ftype *deprecated_register_byte);
@@ -546,6 +711,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_RAW_SIZE_P)
+#define REGISTER_RAW_SIZE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_register_raw_size_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_RAW_SIZE_P)
 #error "Non multi-arch definition of REGISTER_RAW_SIZE"
@@ -554,6 +724,11 @@
 #define REGISTER_RAW_SIZE_P() (gdbarch_deprecated_register_raw_size_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_RAW_SIZE)
+#define REGISTER_RAW_SIZE(reg_nr) (generic_register_size (reg_nr))
+#endif
+
 typedef int (gdbarch_deprecated_register_raw_size_ftype) (int reg_nr);
 extern int gdbarch_deprecated_register_raw_size (struct gdbarch *gdbarch, int reg_nr);
 extern void set_gdbarch_deprecated_register_raw_size (struct gdbarch *gdbarch, gdbarch_deprecated_register_raw_size_ftype *deprecated_register_raw_size);
@@ -576,6 +751,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_VIRTUAL_SIZE_P)
+#define REGISTER_VIRTUAL_SIZE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_register_virtual_size_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_VIRTUAL_SIZE_P)
 #error "Non multi-arch definition of REGISTER_VIRTUAL_SIZE"
@@ -584,6 +764,11 @@
 #define REGISTER_VIRTUAL_SIZE_P() (gdbarch_deprecated_register_virtual_size_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_VIRTUAL_SIZE)
+#define REGISTER_VIRTUAL_SIZE(reg_nr) (generic_register_size (reg_nr))
+#endif
+
 typedef int (gdbarch_deprecated_register_virtual_size_ftype) (int reg_nr);
 extern int gdbarch_deprecated_register_virtual_size (struct gdbarch *gdbarch, int reg_nr);
 extern void set_gdbarch_deprecated_register_virtual_size (struct gdbarch *gdbarch, gdbarch_deprecated_register_virtual_size_ftype *deprecated_register_virtual_size);
@@ -604,6 +789,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_MAX_REGISTER_RAW_SIZE_P)
+#define DEPRECATED_MAX_REGISTER_RAW_SIZE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_max_register_raw_size_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_RAW_SIZE_P)
 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_RAW_SIZE"
@@ -612,6 +802,11 @@
 #define DEPRECATED_MAX_REGISTER_RAW_SIZE_P() (gdbarch_deprecated_max_register_raw_size_p (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_MAX_REGISTER_RAW_SIZE)
+#define DEPRECATED_MAX_REGISTER_RAW_SIZE (0)
+#endif
+
 extern int gdbarch_deprecated_max_register_raw_size (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_max_register_raw_size (struct gdbarch *gdbarch, int deprecated_max_register_raw_size);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_RAW_SIZE)
@@ -631,6 +826,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P)
+#define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P() (0)
+#endif
+
 extern int gdbarch_deprecated_max_register_virtual_size_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P)
 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE"
@@ -639,6 +839,11 @@
 #define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P() (gdbarch_deprecated_max_register_virtual_size_p (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE)
+#define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE (0)
+#endif
+
 extern int gdbarch_deprecated_max_register_virtual_size (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_max_register_virtual_size (struct gdbarch *gdbarch, int deprecated_max_register_virtual_size);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE)
@@ -666,6 +871,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS_P)
+#define DEPRECATED_SAVE_DUMMY_FRAME_TOS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_save_dummy_frame_tos_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS_P)
 #error "Non multi-arch definition of DEPRECATED_SAVE_DUMMY_FRAME_TOS"
@@ -674,6 +884,11 @@
 #define DEPRECATED_SAVE_DUMMY_FRAME_TOS_P() (gdbarch_deprecated_save_dummy_frame_tos_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS)
+#define DEPRECATED_SAVE_DUMMY_FRAME_TOS(sp) (internal_error (__FILE__, __LINE__, "DEPRECATED_SAVE_DUMMY_FRAME_TOS"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_save_dummy_frame_tos_ftype) (CORE_ADDR sp);
 extern void gdbarch_deprecated_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp);
 extern void set_gdbarch_deprecated_save_dummy_frame_tos (struct gdbarch *gdbarch, gdbarch_deprecated_save_dummy_frame_tos_ftype *deprecated_save_dummy_frame_tos);
@@ -687,6 +902,11 @@
 /* Implement UNWIND_DUMMY_ID and PUSH_DUMMY_CALL, then delete
    DEPRECATED_FP_REGNUM. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FP_REGNUM)
+#define DEPRECATED_FP_REGNUM (-1)
+#endif
+
 extern int gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch, int deprecated_fp_regnum);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FP_REGNUM)
@@ -706,6 +926,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_TARGET_READ_FP_P)
+#define DEPRECATED_TARGET_READ_FP_P() (0)
+#endif
+
 extern int gdbarch_deprecated_target_read_fp_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_TARGET_READ_FP_P)
 #error "Non multi-arch definition of DEPRECATED_TARGET_READ_FP"
@@ -714,6 +939,11 @@
 #define DEPRECATED_TARGET_READ_FP_P() (gdbarch_deprecated_target_read_fp_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_TARGET_READ_FP)
+#define DEPRECATED_TARGET_READ_FP() (internal_error (__FILE__, __LINE__, "DEPRECATED_TARGET_READ_FP"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_target_read_fp_ftype) (void);
 extern CORE_ADDR gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch, gdbarch_deprecated_target_read_fp_ftype *deprecated_target_read_fp);
@@ -742,6 +972,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_ARGUMENTS_P)
+#define DEPRECATED_PUSH_ARGUMENTS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_push_arguments_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_ARGUMENTS_P)
 #error "Non multi-arch definition of DEPRECATED_PUSH_ARGUMENTS"
@@ -750,6 +985,11 @@
 #define DEPRECATED_PUSH_ARGUMENTS_P() (gdbarch_deprecated_push_arguments_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_ARGUMENTS)
+#define DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (internal_error (__FILE__, __LINE__, "DEPRECATED_PUSH_ARGUMENTS"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_push_arguments_ftype) (int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
 extern CORE_ADDR gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
 extern void set_gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, gdbarch_deprecated_push_arguments_ftype *deprecated_push_arguments);
@@ -762,6 +1002,11 @@
 
 /* DEPRECATED_USE_GENERIC_DUMMY_FRAMES can be deleted.  Always true. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
+#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES (1)
+#endif
+
 extern int gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch, int deprecated_use_generic_dummy_frames);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
@@ -781,6 +1026,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_RETURN_ADDRESS_P)
+#define DEPRECATED_PUSH_RETURN_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_push_return_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_RETURN_ADDRESS_P)
 #error "Non multi-arch definition of DEPRECATED_PUSH_RETURN_ADDRESS"
@@ -789,6 +1039,11 @@
 #define DEPRECATED_PUSH_RETURN_ADDRESS_P() (gdbarch_deprecated_push_return_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_RETURN_ADDRESS)
+#define DEPRECATED_PUSH_RETURN_ADDRESS(pc, sp) (internal_error (__FILE__, __LINE__, "DEPRECATED_PUSH_RETURN_ADDRESS"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_push_return_address_ftype) (CORE_ADDR pc, CORE_ADDR sp);
 extern CORE_ADDR gdbarch_deprecated_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp);
 extern void set_gdbarch_deprecated_push_return_address (struct gdbarch *gdbarch, gdbarch_deprecated_push_return_address_ftype *deprecated_push_return_address);
@@ -808,6 +1063,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_DUMMY_WRITE_SP_P)
+#define DEPRECATED_DUMMY_WRITE_SP_P() (0)
+#endif
+
 extern int gdbarch_deprecated_dummy_write_sp_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DUMMY_WRITE_SP_P)
 #error "Non multi-arch definition of DEPRECATED_DUMMY_WRITE_SP"
@@ -816,6 +1076,11 @@
 #define DEPRECATED_DUMMY_WRITE_SP_P() (gdbarch_deprecated_dummy_write_sp_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_DUMMY_WRITE_SP)
+#define DEPRECATED_DUMMY_WRITE_SP(val) (internal_error (__FILE__, __LINE__, "DEPRECATED_DUMMY_WRITE_SP"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_dummy_write_sp_ftype) (CORE_ADDR val);
 extern void gdbarch_deprecated_dummy_write_sp (struct gdbarch *gdbarch, CORE_ADDR val);
 extern void set_gdbarch_deprecated_dummy_write_sp (struct gdbarch *gdbarch, gdbarch_deprecated_dummy_write_sp_ftype *deprecated_dummy_write_sp);
@@ -837,6 +1102,11 @@
 #define DEPRECATED_REGISTER_SIZE (gdbarch_deprecated_register_size (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CALL_DUMMY_LOCATION)
+#define CALL_DUMMY_LOCATION (AT_ENTRY_POINT)
+#endif
+
 extern int gdbarch_call_dummy_location (struct gdbarch *gdbarch);
 extern void set_gdbarch_call_dummy_location (struct gdbarch *gdbarch, int call_dummy_location);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_LOCATION)
@@ -846,6 +1116,11 @@
 #define CALL_DUMMY_LOCATION (gdbarch_call_dummy_location (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CALL_DUMMY_ADDRESS)
+#define CALL_DUMMY_ADDRESS() (entry_point_address ())
+#endif
+
 typedef CORE_ADDR (gdbarch_call_dummy_address_ftype) (void);
 extern CORE_ADDR gdbarch_call_dummy_address (struct gdbarch *gdbarch);
 extern void set_gdbarch_call_dummy_address (struct gdbarch *gdbarch, gdbarch_call_dummy_address_ftype *call_dummy_address);
@@ -891,6 +1166,11 @@
 
 /* DEPRECATED_CALL_DUMMY_WORDS can be deleted. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_CALL_DUMMY_WORDS)
+#define DEPRECATED_CALL_DUMMY_WORDS (legacy_call_dummy_words)
+#endif
+
 extern LONGEST * gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch, LONGEST * deprecated_call_dummy_words);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_WORDS)
@@ -902,6 +1182,11 @@
 
 /* Implement PUSH_DUMMY_CALL, then delete DEPRECATED_SIZEOF_CALL_DUMMY_WORDS. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS)
+#define DEPRECATED_SIZEOF_CALL_DUMMY_WORDS (legacy_sizeof_call_dummy_words)
+#endif
+
 extern int gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch, int deprecated_sizeof_call_dummy_words);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS)
@@ -920,6 +1205,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P)
+#define DEPRECATED_CALL_DUMMY_STACK_ADJUST_P() (0)
+#endif
+
 extern int gdbarch_deprecated_call_dummy_stack_adjust_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P)
 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_STACK_ADJUST"
@@ -928,6 +1218,11 @@
 #define DEPRECATED_CALL_DUMMY_STACK_ADJUST_P() (gdbarch_deprecated_call_dummy_stack_adjust_p (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST)
+#define DEPRECATED_CALL_DUMMY_STACK_ADJUST (0)
+#endif
+
 extern int gdbarch_deprecated_call_dummy_stack_adjust (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_call_dummy_stack_adjust (struct gdbarch *gdbarch, int deprecated_call_dummy_stack_adjust);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST)
@@ -947,6 +1242,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FIX_CALL_DUMMY_P)
+#define DEPRECATED_FIX_CALL_DUMMY_P() (0)
+#endif
+
 extern int gdbarch_deprecated_fix_call_dummy_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FIX_CALL_DUMMY_P)
 #error "Non multi-arch definition of DEPRECATED_FIX_CALL_DUMMY"
@@ -955,6 +1255,11 @@
 #define DEPRECATED_FIX_CALL_DUMMY_P() (gdbarch_deprecated_fix_call_dummy_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FIX_CALL_DUMMY)
+#define DEPRECATED_FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p) (internal_error (__FILE__, __LINE__, "DEPRECATED_FIX_CALL_DUMMY"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_fix_call_dummy_ftype) (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
 extern void gdbarch_deprecated_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
 extern void set_gdbarch_deprecated_fix_call_dummy (struct gdbarch *gdbarch, gdbarch_deprecated_fix_call_dummy_ftype *deprecated_fix_call_dummy);
@@ -982,6 +1287,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_DUMMY_FRAME_P)
+#define DEPRECATED_PUSH_DUMMY_FRAME_P() (0)
+#endif
+
 extern int gdbarch_deprecated_push_dummy_frame_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_DUMMY_FRAME_P)
 #error "Non multi-arch definition of DEPRECATED_PUSH_DUMMY_FRAME"
@@ -990,6 +1300,11 @@
 #define DEPRECATED_PUSH_DUMMY_FRAME_P() (gdbarch_deprecated_push_dummy_frame_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PUSH_DUMMY_FRAME)
+#define DEPRECATED_PUSH_DUMMY_FRAME (internal_error (__FILE__, __LINE__, "DEPRECATED_PUSH_DUMMY_FRAME"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_push_dummy_frame_ftype) (void);
 extern void gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch, gdbarch_deprecated_push_dummy_frame_ftype *deprecated_push_dummy_frame);
@@ -1003,6 +1318,11 @@
 /* Implement PUSH_DUMMY_CALL, then delete
    DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED. */
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
+#define DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED (0)
+#endif
+
 extern int gdbarch_deprecated_extra_stack_alignment_needed (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_extra_stack_alignment_needed (struct gdbarch *gdbarch, int deprecated_extra_stack_alignment_needed);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
@@ -1019,6 +1339,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_DO_REGISTERS_INFO_P)
+#define DEPRECATED_DO_REGISTERS_INFO_P() (0)
+#endif
+
 extern int gdbarch_deprecated_do_registers_info_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DO_REGISTERS_INFO_P)
 #error "Non multi-arch definition of DEPRECATED_DO_REGISTERS_INFO"
@@ -1027,6 +1352,11 @@
 #define DEPRECATED_DO_REGISTERS_INFO_P() (gdbarch_deprecated_do_registers_info_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_DO_REGISTERS_INFO)
+#define DEPRECATED_DO_REGISTERS_INFO(reg_nr, fpregs) (internal_error (__FILE__, __LINE__, "DEPRECATED_DO_REGISTERS_INFO"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_do_registers_info_ftype) (int reg_nr, int fpregs);
 extern void gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs);
 extern void set_gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch, gdbarch_deprecated_do_registers_info_ftype *deprecated_do_registers_info);
@@ -1056,6 +1386,11 @@
 /* MAP a GDB RAW register number onto a simulator register number.  See
    also include/...-sim.h. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_SIM_REGNO)
+#define REGISTER_SIM_REGNO(reg_nr) (legacy_register_sim_regno (reg_nr))
+#endif
+
 typedef int (gdbarch_register_sim_regno_ftype) (int reg_nr);
 extern int gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr);
 extern void set_gdbarch_register_sim_regno (struct gdbarch *gdbarch, gdbarch_register_sim_regno_ftype *register_sim_regno);
@@ -1073,6 +1408,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_BYTES_OK_P)
+#define REGISTER_BYTES_OK_P() (0)
+#endif
+
 extern int gdbarch_register_bytes_ok_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_BYTES_OK_P)
 #error "Non multi-arch definition of REGISTER_BYTES_OK"
@@ -1081,6 +1421,11 @@
 #define REGISTER_BYTES_OK_P() (gdbarch_register_bytes_ok_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_BYTES_OK)
+#define REGISTER_BYTES_OK(nr_bytes) (internal_error (__FILE__, __LINE__, "REGISTER_BYTES_OK"), 0)
+#endif
+
 typedef int (gdbarch_register_bytes_ok_ftype) (long nr_bytes);
 extern int gdbarch_register_bytes_ok (struct gdbarch *gdbarch, long nr_bytes);
 extern void set_gdbarch_register_bytes_ok (struct gdbarch *gdbarch, gdbarch_register_bytes_ok_ftype *register_bytes_ok);
@@ -1091,6 +1436,11 @@
 #define REGISTER_BYTES_OK(nr_bytes) (gdbarch_register_bytes_ok (current_gdbarch, nr_bytes))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CANNOT_FETCH_REGISTER)
+#define CANNOT_FETCH_REGISTER(regnum) (cannot_register_not (regnum))
+#endif
+
 typedef int (gdbarch_cannot_fetch_register_ftype) (int regnum);
 extern int gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype *cannot_fetch_register);
@@ -1101,6 +1451,11 @@
 #define CANNOT_FETCH_REGISTER(regnum) (gdbarch_cannot_fetch_register (current_gdbarch, regnum))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CANNOT_STORE_REGISTER)
+#define CANNOT_STORE_REGISTER(regnum) (cannot_register_not (regnum))
+#endif
+
 typedef int (gdbarch_cannot_store_register_ftype) (int regnum);
 extern int gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype *cannot_store_register);
@@ -1120,6 +1475,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (GET_LONGJMP_TARGET_P)
+#define GET_LONGJMP_TARGET_P() (0)
+#endif
+
 extern int gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (GET_LONGJMP_TARGET_P)
 #error "Non multi-arch definition of GET_LONGJMP_TARGET"
@@ -1128,6 +1488,11 @@
 #define GET_LONGJMP_TARGET_P() (gdbarch_get_longjmp_target_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (GET_LONGJMP_TARGET)
+#define GET_LONGJMP_TARGET(pc) (internal_error (__FILE__, __LINE__, "GET_LONGJMP_TARGET"), 0)
+#endif
+
 typedef int (gdbarch_get_longjmp_target_ftype) (CORE_ADDR *pc);
 extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc);
 extern void set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype *get_longjmp_target);
@@ -1151,6 +1516,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PC_IN_CALL_DUMMY_P)
+#define DEPRECATED_PC_IN_CALL_DUMMY_P() (0)
+#endif
+
 extern int gdbarch_deprecated_pc_in_call_dummy_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PC_IN_CALL_DUMMY_P)
 #error "Non multi-arch definition of DEPRECATED_PC_IN_CALL_DUMMY"
@@ -1159,6 +1529,11 @@
 #define DEPRECATED_PC_IN_CALL_DUMMY_P() (gdbarch_deprecated_pc_in_call_dummy_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_PC_IN_CALL_DUMMY)
+#define DEPRECATED_PC_IN_CALL_DUMMY(pc, sp, frame_address) (generic_pc_in_call_dummy (pc, sp, frame_address))
+#endif
+
 typedef int (gdbarch_deprecated_pc_in_call_dummy_ftype) (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
 extern int gdbarch_deprecated_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
 extern void set_gdbarch_deprecated_pc_in_call_dummy (struct gdbarch *gdbarch, gdbarch_deprecated_pc_in_call_dummy_ftype *deprecated_pc_in_call_dummy);
@@ -1176,6 +1551,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_FRAME_PC_FIRST_P)
+#define DEPRECATED_INIT_FRAME_PC_FIRST_P() (0)
+#endif
+
 extern int gdbarch_deprecated_init_frame_pc_first_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC_FIRST_P)
 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC_FIRST"
@@ -1184,6 +1564,11 @@
 #define DEPRECATED_INIT_FRAME_PC_FIRST_P() (gdbarch_deprecated_init_frame_pc_first_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_FRAME_PC_FIRST)
+#define DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev) (internal_error (__FILE__, __LINE__, "DEPRECATED_INIT_FRAME_PC_FIRST"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_init_frame_pc_first_ftype) (int fromleaf, struct frame_info *prev);
 extern CORE_ADDR gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev);
 extern void set_gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch, gdbarch_deprecated_init_frame_pc_first_ftype *deprecated_init_frame_pc_first);
@@ -1201,6 +1586,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_FRAME_PC_P)
+#define DEPRECATED_INIT_FRAME_PC_P() (0)
+#endif
+
 extern int gdbarch_deprecated_init_frame_pc_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC_P)
 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC"
@@ -1209,6 +1599,11 @@
 #define DEPRECATED_INIT_FRAME_PC_P() (gdbarch_deprecated_init_frame_pc_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_FRAME_PC)
+#define DEPRECATED_INIT_FRAME_PC(fromleaf, prev) (internal_error (__FILE__, __LINE__, "DEPRECATED_INIT_FRAME_PC"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_init_frame_pc_ftype) (int fromleaf, struct frame_info *prev);
 extern CORE_ADDR gdbarch_deprecated_init_frame_pc (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev);
 extern void set_gdbarch_deprecated_init_frame_pc (struct gdbarch *gdbarch, gdbarch_deprecated_init_frame_pc_ftype *deprecated_init_frame_pc);
@@ -1244,6 +1639,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_GET_SAVED_REGISTER_P)
+#define DEPRECATED_GET_SAVED_REGISTER_P() (0)
+#endif
+
 extern int gdbarch_deprecated_get_saved_register_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_GET_SAVED_REGISTER_P)
 #error "Non multi-arch definition of DEPRECATED_GET_SAVED_REGISTER"
@@ -1252,6 +1652,11 @@
 #define DEPRECATED_GET_SAVED_REGISTER_P() (gdbarch_deprecated_get_saved_register_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_GET_SAVED_REGISTER)
+#define DEPRECATED_GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (internal_error (__FILE__, __LINE__, "DEPRECATED_GET_SAVED_REGISTER"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_get_saved_register_ftype) (char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
 extern void gdbarch_deprecated_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
 extern void set_gdbarch_deprecated_get_saved_register (struct gdbarch *gdbarch, gdbarch_deprecated_get_saved_register_ftype *deprecated_get_saved_register);
@@ -1265,6 +1670,11 @@
 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
    For raw <-> cooked register conversions, replaced by pseudo registers. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_REGISTER_CONVERTIBLE)
+#define DEPRECATED_REGISTER_CONVERTIBLE(nr) (deprecated_register_convertible_not (nr))
+#endif
+
 typedef int (gdbarch_deprecated_register_convertible_ftype) (int nr);
 extern int gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, int nr);
 extern void set_gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, gdbarch_deprecated_register_convertible_ftype *deprecated_register_convertible);
@@ -1278,6 +1688,11 @@
 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
    For raw <-> cooked register conversions, replaced by pseudo registers. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL)
+#define DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (internal_error (__FILE__, __LINE__, "DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_register_convert_to_virtual_ftype) (int regnum, struct type *type, char *from, char *to);
 extern void gdbarch_deprecated_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to);
 extern void set_gdbarch_deprecated_register_convert_to_virtual (struct gdbarch *gdbarch, gdbarch_deprecated_register_convert_to_virtual_ftype *deprecated_register_convert_to_virtual);
@@ -1291,6 +1706,11 @@
 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
    For raw <-> cooked register conversions, replaced by pseudo registers. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_REGISTER_CONVERT_TO_RAW)
+#define DEPRECATED_REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (internal_error (__FILE__, __LINE__, "DEPRECATED_REGISTER_CONVERT_TO_RAW"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_register_convert_to_raw_ftype) (struct type *type, int regnum, const char *from, char *to);
 extern void gdbarch_deprecated_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, const char *from, char *to);
 extern void set_gdbarch_deprecated_register_convert_to_raw (struct gdbarch *gdbarch, gdbarch_deprecated_register_convert_to_raw_ftype *deprecated_register_convert_to_raw);
@@ -1301,6 +1721,11 @@
 #define DEPRECATED_REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (gdbarch_deprecated_register_convert_to_raw (current_gdbarch, type, regnum, from, to))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CONVERT_REGISTER_P)
+#define CONVERT_REGISTER_P(regnum, type) (legacy_convert_register_p (regnum, type))
+#endif
+
 typedef int (gdbarch_convert_register_p_ftype) (int regnum, struct type *type);
 extern int gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type);
 extern void set_gdbarch_convert_register_p (struct gdbarch *gdbarch, gdbarch_convert_register_p_ftype *convert_register_p);
@@ -1311,6 +1736,11 @@
 #define CONVERT_REGISTER_P(regnum, type) (gdbarch_convert_register_p (current_gdbarch, regnum, type))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REGISTER_TO_VALUE)
+#define REGISTER_TO_VALUE(frame, regnum, type, buf) (legacy_register_to_value (frame, regnum, type, buf))
+#endif
+
 typedef void (gdbarch_register_to_value_ftype) (struct frame_info *frame, int regnum, struct type *type, void *buf);
 extern void gdbarch_register_to_value (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, void *buf);
 extern void set_gdbarch_register_to_value (struct gdbarch *gdbarch, gdbarch_register_to_value_ftype *register_to_value);
@@ -1321,6 +1751,11 @@
 #define REGISTER_TO_VALUE(frame, regnum, type, buf) (gdbarch_register_to_value (current_gdbarch, frame, regnum, type, buf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (VALUE_TO_REGISTER)
+#define VALUE_TO_REGISTER(frame, regnum, type, buf) (legacy_value_to_register (frame, regnum, type, buf))
+#endif
+
 typedef void (gdbarch_value_to_register_ftype) (struct frame_info *frame, int regnum, struct type *type, const void *buf);
 extern void gdbarch_value_to_register (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, const void *buf);
 extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_value_to_register_ftype *value_to_register);
@@ -1331,6 +1766,11 @@
 #define VALUE_TO_REGISTER(frame, regnum, type, buf) (gdbarch_value_to_register (current_gdbarch, frame, regnum, type, buf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (POINTER_TO_ADDRESS)
+#define POINTER_TO_ADDRESS(type, buf) (unsigned_pointer_to_address (type, buf))
+#endif
+
 typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct type *type, const void *buf);
 extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const void *buf);
 extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address);
@@ -1341,6 +1781,11 @@
 #define POINTER_TO_ADDRESS(type, buf) (gdbarch_pointer_to_address (current_gdbarch, type, buf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (ADDRESS_TO_POINTER)
+#define ADDRESS_TO_POINTER(type, buf, addr) (unsigned_address_to_pointer (type, buf, addr))
+#endif
+
 typedef void (gdbarch_address_to_pointer_ftype) (struct type *type, void *buf, CORE_ADDR addr);
 extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr);
 extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer);
@@ -1358,6 +1803,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (INTEGER_TO_ADDRESS_P)
+#define INTEGER_TO_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_integer_to_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (INTEGER_TO_ADDRESS_P)
 #error "Non multi-arch definition of INTEGER_TO_ADDRESS"
@@ -1366,6 +1816,11 @@
 #define INTEGER_TO_ADDRESS_P() (gdbarch_integer_to_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (INTEGER_TO_ADDRESS)
+#define INTEGER_TO_ADDRESS(type, buf) (internal_error (__FILE__, __LINE__, "INTEGER_TO_ADDRESS"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct type *type, void *buf);
 extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf);
 extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address);
@@ -1376,6 +1831,11 @@
 #define INTEGER_TO_ADDRESS(type, buf) (gdbarch_integer_to_address (current_gdbarch, type, buf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (RETURN_VALUE_ON_STACK)
+#define RETURN_VALUE_ON_STACK(type) (generic_return_value_on_stack_not (type))
+#endif
+
 typedef int (gdbarch_return_value_on_stack_ftype) (struct type *type);
 extern int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type);
 extern void set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch_return_value_on_stack_ftype *return_value_on_stack);
@@ -1393,6 +1853,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_POP_FRAME_P)
+#define DEPRECATED_POP_FRAME_P() (0)
+#endif
+
 extern int gdbarch_deprecated_pop_frame_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_POP_FRAME_P)
 #error "Non multi-arch definition of DEPRECATED_POP_FRAME"
@@ -1401,6 +1866,11 @@
 #define DEPRECATED_POP_FRAME_P() (gdbarch_deprecated_pop_frame_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_POP_FRAME)
+#define DEPRECATED_POP_FRAME (internal_error (__FILE__, __LINE__, "DEPRECATED_POP_FRAME"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_pop_frame_ftype) (void);
 extern void gdbarch_deprecated_pop_frame (struct gdbarch *gdbarch);
 extern void set_gdbarch_deprecated_pop_frame (struct gdbarch *gdbarch, gdbarch_deprecated_pop_frame_ftype *deprecated_pop_frame);
@@ -1420,6 +1890,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_STORE_STRUCT_RETURN_P)
+#define DEPRECATED_STORE_STRUCT_RETURN_P() (0)
+#endif
+
 extern int gdbarch_deprecated_store_struct_return_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STORE_STRUCT_RETURN_P)
 #error "Non multi-arch definition of DEPRECATED_STORE_STRUCT_RETURN"
@@ -1428,6 +1903,11 @@
 #define DEPRECATED_STORE_STRUCT_RETURN_P() (gdbarch_deprecated_store_struct_return_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_STORE_STRUCT_RETURN)
+#define DEPRECATED_STORE_STRUCT_RETURN(addr, sp) (internal_error (__FILE__, __LINE__, "DEPRECATED_STORE_STRUCT_RETURN"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_store_struct_return_ftype) (CORE_ADDR addr, CORE_ADDR sp);
 extern void gdbarch_deprecated_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp);
 extern void set_gdbarch_deprecated_store_struct_return (struct gdbarch *gdbarch, gdbarch_deprecated_store_struct_return_ftype *deprecated_store_struct_return);
@@ -1438,6 +1918,11 @@
 #define DEPRECATED_STORE_STRUCT_RETURN(addr, sp) (gdbarch_deprecated_store_struct_return (current_gdbarch, addr, sp))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (EXTRACT_RETURN_VALUE)
+#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (legacy_extract_return_value (type, regcache, valbuf))
+#endif
+
 typedef void (gdbarch_extract_return_value_ftype) (struct type *type, struct regcache *regcache, void *valbuf);
 extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *valbuf);
 extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value);
@@ -1448,6 +1933,11 @@
 #define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regcache, valbuf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (STORE_RETURN_VALUE)
+#define STORE_RETURN_VALUE(type, regcache, valbuf) (legacy_store_return_value (type, regcache, valbuf))
+#endif
+
 typedef void (gdbarch_store_return_value_ftype) (struct type *type, struct regcache *regcache, const void *valbuf);
 extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const void *valbuf);
 extern void set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch_store_return_value_ftype *store_return_value);
@@ -1485,6 +1975,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (EXTRACT_STRUCT_VALUE_ADDRESS_P)
+#define EXTRACT_STRUCT_VALUE_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_extract_struct_value_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_STRUCT_VALUE_ADDRESS_P)
 #error "Non multi-arch definition of EXTRACT_STRUCT_VALUE_ADDRESS"
@@ -1493,6 +1988,11 @@
 #define EXTRACT_STRUCT_VALUE_ADDRESS_P() (gdbarch_extract_struct_value_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (EXTRACT_STRUCT_VALUE_ADDRESS)
+#define EXTRACT_STRUCT_VALUE_ADDRESS(regcache) (internal_error (__FILE__, __LINE__, "EXTRACT_STRUCT_VALUE_ADDRESS"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_extract_struct_value_address_ftype) (struct regcache *regcache);
 extern CORE_ADDR gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache);
 extern void set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_extract_struct_value_address_ftype *extract_struct_value_address);
@@ -1510,6 +2010,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
+#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
 #error "Non multi-arch definition of DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"
@@ -1518,6 +2023,11 @@
 #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (gdbarch_deprecated_extract_struct_value_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
+#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (internal_error (__FILE__, __LINE__, "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_extract_struct_value_address_ftype) (char *regbuf);
 extern CORE_ADDR gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf);
 extern void set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address);
@@ -1528,6 +2038,11 @@
 #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (gdbarch_deprecated_extract_struct_value_address (current_gdbarch, regbuf))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (USE_STRUCT_CONVENTION)
+#define USE_STRUCT_CONVENTION(gcc_p, value_type) (generic_use_struct_convention (gcc_p, value_type))
+#endif
+
 typedef int (gdbarch_use_struct_convention_ftype) (int gcc_p, struct type *value_type);
 extern int gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type);
 extern void set_gdbarch_use_struct_convention (struct gdbarch *gdbarch, gdbarch_use_struct_convention_ftype *use_struct_convention);
@@ -1545,6 +2060,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
+#define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_init_saved_regs_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_INIT_SAVED_REGS"
@@ -1553,6 +2073,11 @@
 #define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (gdbarch_deprecated_frame_init_saved_regs_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
+#define DEPRECATED_FRAME_INIT_SAVED_REGS(frame) (internal_error (__FILE__, __LINE__, "DEPRECATED_FRAME_INIT_SAVED_REGS"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_frame_init_saved_regs_ftype) (struct frame_info *frame);
 extern void gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame);
 extern void set_gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, gdbarch_deprecated_frame_init_saved_regs_ftype *deprecated_frame_init_saved_regs);
@@ -1570,6 +2095,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
+#define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (0)
+#endif
+
 extern int gdbarch_deprecated_init_extra_frame_info_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
 #error "Non multi-arch definition of DEPRECATED_INIT_EXTRA_FRAME_INFO"
@@ -1578,6 +2108,11 @@
 #define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (gdbarch_deprecated_init_extra_frame_info_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
+#define DEPRECATED_INIT_EXTRA_FRAME_INFO(fromleaf, frame) (internal_error (__FILE__, __LINE__, "DEPRECATED_INIT_EXTRA_FRAME_INFO"), 0)
+#endif
+
 typedef void (gdbarch_deprecated_init_extra_frame_info_ftype) (int fromleaf, struct frame_info *frame);
 extern void gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame);
 extern void set_gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, gdbarch_deprecated_init_extra_frame_info_ftype *deprecated_init_extra_frame_info);
@@ -1598,6 +2133,11 @@
 #define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (PROLOGUE_FRAMELESS_P)
+#define PROLOGUE_FRAMELESS_P(ip) (generic_prologue_frameless_p (ip))
+#endif
+
 typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip);
 extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip);
 extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p);
@@ -1628,6 +2168,11 @@
 #define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (MEMORY_INSERT_BREAKPOINT)
+#define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (default_memory_insert_breakpoint (addr, contents_cache))
+#endif
+
 typedef int (gdbarch_memory_insert_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
 extern int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
 extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint);
@@ -1638,6 +2183,11 @@
 #define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (gdbarch_memory_insert_breakpoint (current_gdbarch, addr, contents_cache))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (MEMORY_REMOVE_BREAKPOINT)
+#define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (default_memory_remove_breakpoint (addr, contents_cache))
+#endif
+
 typedef int (gdbarch_memory_remove_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
 extern int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
 extern void set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint);
@@ -1679,6 +2229,11 @@
 #define FRAME_ARGS_SKIP (gdbarch_frame_args_skip (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (FRAMELESS_FUNCTION_INVOCATION)
+#define FRAMELESS_FUNCTION_INVOCATION(fi) (generic_frameless_function_invocation_not (fi))
+#endif
+
 typedef int (gdbarch_frameless_function_invocation_ftype) (struct frame_info *fi);
 extern int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi);
 extern void set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, gdbarch_frameless_function_invocation_ftype *frameless_function_invocation);
@@ -1696,6 +2251,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_CHAIN_P)
+#define DEPRECATED_FRAME_CHAIN_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_chain_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN"
@@ -1704,6 +2264,11 @@
 #define DEPRECATED_FRAME_CHAIN_P() (gdbarch_deprecated_frame_chain_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_CHAIN)
+#define DEPRECATED_FRAME_CHAIN(frame) (internal_error (__FILE__, __LINE__, "DEPRECATED_FRAME_CHAIN"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_frame_chain_ftype) (struct frame_info *frame);
 extern CORE_ADDR gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame);
 extern void set_gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_ftype *deprecated_frame_chain);
@@ -1721,6 +2286,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_CHAIN_VALID_P)
+#define DEPRECATED_FRAME_CHAIN_VALID_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_chain_valid_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_VALID_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN_VALID"
@@ -1729,6 +2299,11 @@
 #define DEPRECATED_FRAME_CHAIN_VALID_P() (gdbarch_deprecated_frame_chain_valid_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_CHAIN_VALID)
+#define DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe) (internal_error (__FILE__, __LINE__, "DEPRECATED_FRAME_CHAIN_VALID"), 0)
+#endif
+
 typedef int (gdbarch_deprecated_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe);
 extern int gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe);
 extern void set_gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_valid_ftype *deprecated_frame_chain_valid);
@@ -1750,6 +2325,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_SAVED_PC_P)
+#define DEPRECATED_FRAME_SAVED_PC_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_saved_pc_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_SAVED_PC_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_SAVED_PC"
@@ -1758,6 +2338,11 @@
 #define DEPRECATED_FRAME_SAVED_PC_P() (gdbarch_deprecated_frame_saved_pc_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_SAVED_PC)
+#define DEPRECATED_FRAME_SAVED_PC(fi) (internal_error (__FILE__, __LINE__, "DEPRECATED_FRAME_SAVED_PC"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_frame_saved_pc_ftype) (struct frame_info *fi);
 extern CORE_ADDR gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi);
 extern void set_gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, gdbarch_deprecated_frame_saved_pc_ftype *deprecated_frame_saved_pc);
@@ -1790,6 +2375,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
+#define DEPRECATED_FRAME_ARGS_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_args_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_ARGS_ADDRESS"
@@ -1798,6 +2388,11 @@
 #define DEPRECATED_FRAME_ARGS_ADDRESS_P() (gdbarch_deprecated_frame_args_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_ARGS_ADDRESS)
+#define DEPRECATED_FRAME_ARGS_ADDRESS(fi) (get_frame_base (fi))
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_frame_args_address_ftype) (struct frame_info *fi);
 extern CORE_ADDR gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi);
 extern void set_gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_args_address_ftype *deprecated_frame_args_address);
@@ -1818,6 +2413,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
+#define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (0)
+#endif
+
 extern int gdbarch_deprecated_frame_locals_address_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
 #error "Non multi-arch definition of DEPRECATED_FRAME_LOCALS_ADDRESS"
@@ -1826,6 +2426,11 @@
 #define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (gdbarch_deprecated_frame_locals_address_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
+#define DEPRECATED_FRAME_LOCALS_ADDRESS(fi) (get_frame_base (fi))
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_frame_locals_address_ftype) (struct frame_info *fi);
 extern CORE_ADDR gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi);
 extern void set_gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_locals_address_ftype *deprecated_frame_locals_address);
@@ -1843,6 +2448,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
+#define DEPRECATED_SAVED_PC_AFTER_CALL_P() (0)
+#endif
+
 extern int gdbarch_deprecated_saved_pc_after_call_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
 #error "Non multi-arch definition of DEPRECATED_SAVED_PC_AFTER_CALL"
@@ -1851,6 +2461,11 @@
 #define DEPRECATED_SAVED_PC_AFTER_CALL_P() (gdbarch_deprecated_saved_pc_after_call_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_SAVED_PC_AFTER_CALL)
+#define DEPRECATED_SAVED_PC_AFTER_CALL(frame) (internal_error (__FILE__, __LINE__, "DEPRECATED_SAVED_PC_AFTER_CALL"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_deprecated_saved_pc_after_call_ftype) (struct frame_info *frame);
 extern CORE_ADDR gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame);
 extern void set_gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, gdbarch_deprecated_saved_pc_after_call_ftype *deprecated_saved_pc_after_call);
@@ -1868,6 +2483,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (FRAME_NUM_ARGS_P)
+#define FRAME_NUM_ARGS_P() (0)
+#endif
+
 extern int gdbarch_frame_num_args_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_NUM_ARGS_P)
 #error "Non multi-arch definition of FRAME_NUM_ARGS"
@@ -1876,6 +2496,11 @@
 #define FRAME_NUM_ARGS_P() (gdbarch_frame_num_args_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (FRAME_NUM_ARGS)
+#define FRAME_NUM_ARGS(frame) (internal_error (__FILE__, __LINE__, "FRAME_NUM_ARGS"), 0)
+#endif
+
 typedef int (gdbarch_frame_num_args_ftype) (struct frame_info *frame);
 extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame);
 extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
@@ -1893,6 +2518,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (STACK_ALIGN_P)
+#define STACK_ALIGN_P() (0)
+#endif
+
 extern int gdbarch_stack_align_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STACK_ALIGN_P)
 #error "Non multi-arch definition of STACK_ALIGN"
@@ -1901,6 +2531,11 @@
 #define STACK_ALIGN_P() (gdbarch_stack_align_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (STACK_ALIGN)
+#define STACK_ALIGN(sp) (internal_error (__FILE__, __LINE__, "STACK_ALIGN"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_stack_align_ftype) (CORE_ADDR sp);
 extern CORE_ADDR gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp);
 extern void set_gdbarch_stack_align (struct gdbarch *gdbarch, gdbarch_stack_align_ftype *stack_align);
@@ -1924,6 +2559,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (REG_STRUCT_HAS_ADDR_P)
+#define REG_STRUCT_HAS_ADDR_P() (0)
+#endif
+
 extern int gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REG_STRUCT_HAS_ADDR_P)
 #error "Non multi-arch definition of REG_STRUCT_HAS_ADDR"
@@ -1932,6 +2572,11 @@
 #define REG_STRUCT_HAS_ADDR_P() (gdbarch_reg_struct_has_addr_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (REG_STRUCT_HAS_ADDR)
+#define REG_STRUCT_HAS_ADDR(gcc_p, type) (internal_error (__FILE__, __LINE__, "REG_STRUCT_HAS_ADDR"), 0)
+#endif
+
 typedef int (gdbarch_reg_struct_has_addr_ftype) (int gcc_p, struct type *type);
 extern int gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type);
 extern void set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr);
@@ -1942,15 +2587,6 @@
 #define REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_reg_struct_has_addr (current_gdbarch, gcc_p, type))
 #endif
 
-extern int gdbarch_frame_red_zone_size (struct gdbarch *gdbarch);
-extern void set_gdbarch_frame_red_zone_size (struct gdbarch *gdbarch, int frame_red_zone_size);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_RED_ZONE_SIZE)
-#error "Non multi-arch definition of FRAME_RED_ZONE_SIZE"
-#endif
-#if !defined (FRAME_RED_ZONE_SIZE)
-#define FRAME_RED_ZONE_SIZE (gdbarch_frame_red_zone_size (current_gdbarch))
-#endif
-
 extern int gdbarch_parm_boundary (struct gdbarch *gdbarch);
 extern void set_gdbarch_parm_boundary (struct gdbarch *gdbarch, int parm_boundary);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PARM_BOUNDARY)
@@ -1960,6 +2596,11 @@
 #define PARM_BOUNDARY (gdbarch_parm_boundary (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_FLOAT_FORMAT)
+#define TARGET_FLOAT_FORMAT (default_float_format (current_gdbarch))
+#endif
+
 extern const struct floatformat * gdbarch_float_format (struct gdbarch *gdbarch);
 extern void set_gdbarch_float_format (struct gdbarch *gdbarch, const struct floatformat * float_format);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_FLOAT_FORMAT)
@@ -1969,6 +2610,11 @@
 #define TARGET_FLOAT_FORMAT (gdbarch_float_format (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_DOUBLE_FORMAT)
+#define TARGET_DOUBLE_FORMAT (default_double_format (current_gdbarch))
+#endif
+
 extern const struct floatformat * gdbarch_double_format (struct gdbarch *gdbarch);
 extern void set_gdbarch_double_format (struct gdbarch *gdbarch, const struct floatformat * double_format);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_DOUBLE_FORMAT)
@@ -1978,6 +2624,11 @@
 #define TARGET_DOUBLE_FORMAT (gdbarch_double_format (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_DOUBLE_FORMAT)
+#define TARGET_LONG_DOUBLE_FORMAT (default_double_format (current_gdbarch))
+#endif
+
 extern const struct floatformat * gdbarch_long_double_format (struct gdbarch *gdbarch);
 extern void set_gdbarch_long_double_format (struct gdbarch *gdbarch, const struct floatformat * long_double_format);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_DOUBLE_FORMAT)
@@ -1987,6 +2638,11 @@
 #define TARGET_LONG_DOUBLE_FORMAT (gdbarch_long_double_format (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CONVERT_FROM_FUNC_PTR_ADDR)
+#define CONVERT_FROM_FUNC_PTR_ADDR(addr) (core_addr_identity (addr))
+#endif
+
 typedef CORE_ADDR (gdbarch_convert_from_func_ptr_addr_ftype) (CORE_ADDR addr);
 extern CORE_ADDR gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr);
 extern void set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr);
@@ -2007,6 +2663,11 @@
    sort of generic thing to handle alignment or segmentation (it's
    possible it should be in TARGET_READ_PC instead). */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (ADDR_BITS_REMOVE)
+#define ADDR_BITS_REMOVE(addr) (core_addr_identity (addr))
+#endif
+
 typedef CORE_ADDR (gdbarch_addr_bits_remove_ftype) (CORE_ADDR addr);
 extern CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr);
 extern void set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype *addr_bits_remove);
@@ -2020,6 +2681,11 @@
 /* It is not at all clear why SMASH_TEXT_ADDRESS is not folded into
    ADDR_BITS_REMOVE. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SMASH_TEXT_ADDRESS)
+#define SMASH_TEXT_ADDRESS(addr) (core_addr_identity (addr))
+#endif
+
 typedef CORE_ADDR (gdbarch_smash_text_address_ftype) (CORE_ADDR addr);
 extern CORE_ADDR gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr);
 extern void set_gdbarch_smash_text_address (struct gdbarch *gdbarch, gdbarch_smash_text_address_ftype *smash_text_address);
@@ -2046,6 +2712,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (SOFTWARE_SINGLE_STEP_P)
+#define SOFTWARE_SINGLE_STEP_P() (0)
+#endif
+
 extern int gdbarch_software_single_step_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SOFTWARE_SINGLE_STEP_P)
 #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP"
@@ -2054,6 +2725,11 @@
 #define SOFTWARE_SINGLE_STEP_P() (gdbarch_software_single_step_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SOFTWARE_SINGLE_STEP)
+#define SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p) (internal_error (__FILE__, __LINE__, "SOFTWARE_SINGLE_STEP"), 0)
+#endif
+
 typedef void (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p);
 extern void gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p);
 extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step);
@@ -2064,6 +2740,11 @@
 #define SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p) (gdbarch_software_single_step (current_gdbarch, sig, insert_breakpoints_p))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (TARGET_PRINT_INSN)
+#define TARGET_PRINT_INSN(vma, info) (legacy_print_insn (vma, info))
+#endif
+
 typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, disassemble_info *info);
 extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, disassemble_info *info);
 extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
@@ -2074,6 +2755,11 @@
 #define TARGET_PRINT_INSN(vma, info) (gdbarch_print_insn (current_gdbarch, vma, info))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SKIP_TRAMPOLINE_CODE)
+#define SKIP_TRAMPOLINE_CODE(pc) (generic_skip_trampoline_code (pc))
+#endif
+
 typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (CORE_ADDR pc);
 extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc);
 extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code);
@@ -2088,6 +2774,11 @@
    trampoline code in the ".plt" section.  IN_SOLIB_CALL_TRAMPOLINE evaluates
    to nonzero if we are currently stopped in one of these. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (IN_SOLIB_CALL_TRAMPOLINE)
+#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) (generic_in_solib_call_trampoline (pc, name))
+#endif
+
 typedef int (gdbarch_in_solib_call_trampoline_ftype) (CORE_ADDR pc, char *name);
 extern int gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
 extern void set_gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline);
@@ -2100,6 +2791,11 @@
 
 /* Some systems also have trampoline code for returning from shared libs. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (IN_SOLIB_RETURN_TRAMPOLINE)
+#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) (generic_in_solib_return_trampoline (pc, name))
+#endif
+
 typedef int (gdbarch_in_solib_return_trampoline_ftype) (CORE_ADDR pc, char *name);
 extern int gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
 extern void set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline);
@@ -2131,6 +2827,11 @@
    Some code also depends on SIGTRAMP_START and SIGTRAMP_END but other
    does not. */
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (PC_IN_SIGTRAMP)
+#define PC_IN_SIGTRAMP(pc, name) (legacy_pc_in_sigtramp (pc, name))
+#endif
+
 typedef int (gdbarch_pc_in_sigtramp_ftype) (CORE_ADDR pc, char *name);
 extern int gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
 extern void set_gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, gdbarch_pc_in_sigtramp_ftype *pc_in_sigtramp);
@@ -2148,6 +2849,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (SIGTRAMP_START_P)
+#define SIGTRAMP_START_P() (0)
+#endif
+
 extern int gdbarch_sigtramp_start_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_START_P)
 #error "Non multi-arch definition of SIGTRAMP_START"
@@ -2156,6 +2862,11 @@
 #define SIGTRAMP_START_P() (gdbarch_sigtramp_start_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SIGTRAMP_START)
+#define SIGTRAMP_START(pc) (internal_error (__FILE__, __LINE__, "SIGTRAMP_START"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_sigtramp_start_ftype) (CORE_ADDR pc);
 extern CORE_ADDR gdbarch_sigtramp_start (struct gdbarch *gdbarch, CORE_ADDR pc);
 extern void set_gdbarch_sigtramp_start (struct gdbarch *gdbarch, gdbarch_sigtramp_start_ftype *sigtramp_start);
@@ -2173,6 +2884,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (SIGTRAMP_END_P)
+#define SIGTRAMP_END_P() (0)
+#endif
+
 extern int gdbarch_sigtramp_end_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_END_P)
 #error "Non multi-arch definition of SIGTRAMP_END"
@@ -2181,6 +2897,11 @@
 #define SIGTRAMP_END_P() (gdbarch_sigtramp_end_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (SIGTRAMP_END)
+#define SIGTRAMP_END(pc) (internal_error (__FILE__, __LINE__, "SIGTRAMP_END"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_sigtramp_end_ftype) (CORE_ADDR pc);
 extern CORE_ADDR gdbarch_sigtramp_end (struct gdbarch *gdbarch, CORE_ADDR pc);
 extern void set_gdbarch_sigtramp_end (struct gdbarch *gdbarch, gdbarch_sigtramp_end_ftype *sigtramp_end);
@@ -2218,6 +2939,11 @@
 extern char * gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv);
 extern void set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments);
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (ELF_MAKE_MSYMBOL_SPECIAL)
+#define ELF_MAKE_MSYMBOL_SPECIAL(sym, msym) (default_elf_make_msymbol_special (sym, msym))
+#endif
+
 typedef void (gdbarch_elf_make_msymbol_special_ftype) (asymbol *sym, struct minimal_symbol *msym);
 extern void gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym);
 extern void set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special);
@@ -2228,6 +2954,11 @@
 #define ELF_MAKE_MSYMBOL_SPECIAL(sym, msym) (gdbarch_elf_make_msymbol_special (current_gdbarch, sym, msym))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (COFF_MAKE_MSYMBOL_SPECIAL)
+#define COFF_MAKE_MSYMBOL_SPECIAL(val, msym) (default_coff_make_msymbol_special (val, msym))
+#endif
+
 typedef void (gdbarch_coff_make_msymbol_special_ftype) (int val, struct minimal_symbol *msym);
 extern void gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym);
 extern void set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special);
@@ -2238,6 +2969,11 @@
 #define COFF_MAKE_MSYMBOL_SPECIAL(val, msym) (gdbarch_coff_make_msymbol_special (current_gdbarch, val, msym))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (NAME_OF_MALLOC)
+#define NAME_OF_MALLOC ("malloc")
+#endif
+
 extern const char * gdbarch_name_of_malloc (struct gdbarch *gdbarch);
 extern void set_gdbarch_name_of_malloc (struct gdbarch *gdbarch, const char * name_of_malloc);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NAME_OF_MALLOC)
@@ -2247,6 +2983,11 @@
 #define NAME_OF_MALLOC (gdbarch_name_of_malloc (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (CANNOT_STEP_BREAKPOINT)
+#define CANNOT_STEP_BREAKPOINT (0)
+#endif
+
 extern int gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch);
 extern void set_gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch, int cannot_step_breakpoint);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CANNOT_STEP_BREAKPOINT)
@@ -2256,6 +2997,11 @@
 #define CANNOT_STEP_BREAKPOINT (gdbarch_cannot_step_breakpoint (current_gdbarch))
 #endif
 
+/* Default (value) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (HAVE_NONSTEPPABLE_WATCHPOINT)
+#define HAVE_NONSTEPPABLE_WATCHPOINT (0)
+#endif
+
 extern int gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch);
 extern void set_gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch, int have_nonsteppable_watchpoint);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (HAVE_NONSTEPPABLE_WATCHPOINT)
@@ -2272,6 +3018,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (ADDRESS_CLASS_TYPE_FLAGS_P)
+#define ADDRESS_CLASS_TYPE_FLAGS_P() (0)
+#endif
+
 extern int gdbarch_address_class_type_flags_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_CLASS_TYPE_FLAGS_P)
 #error "Non multi-arch definition of ADDRESS_CLASS_TYPE_FLAGS"
@@ -2280,6 +3031,11 @@
 #define ADDRESS_CLASS_TYPE_FLAGS_P() (gdbarch_address_class_type_flags_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (ADDRESS_CLASS_TYPE_FLAGS)
+#define ADDRESS_CLASS_TYPE_FLAGS(byte_size, dwarf2_addr_class) (internal_error (__FILE__, __LINE__, "ADDRESS_CLASS_TYPE_FLAGS"), 0)
+#endif
+
 typedef int (gdbarch_address_class_type_flags_ftype) (int byte_size, int dwarf2_addr_class);
 extern int gdbarch_address_class_type_flags (struct gdbarch *gdbarch, int byte_size, int dwarf2_addr_class);
 extern void set_gdbarch_address_class_type_flags (struct gdbarch *gdbarch, gdbarch_address_class_type_flags_ftype *address_class_type_flags);
@@ -2317,6 +3073,11 @@
 #endif
 #endif
 
+/* Default predicate for non- multi-arch targets. */
+#if (!GDB_MULTI_ARCH) && !defined (FETCH_POINTER_ARGUMENT_P)
+#define FETCH_POINTER_ARGUMENT_P() (0)
+#endif
+
 extern int gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_POINTER_ARGUMENT_P)
 #error "Non multi-arch definition of FETCH_POINTER_ARGUMENT"
@@ -2325,6 +3086,11 @@
 #define FETCH_POINTER_ARGUMENT_P() (gdbarch_fetch_pointer_argument_p (current_gdbarch))
 #endif
 
+/* Default (function) for non- multi-arch platforms. */
+#if (!GDB_MULTI_ARCH) && !defined (FETCH_POINTER_ARGUMENT)
+#define FETCH_POINTER_ARGUMENT(frame, argi, type) (internal_error (__FILE__, __LINE__, "FETCH_POINTER_ARGUMENT"), 0)
+#endif
+
 typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (struct frame_info *frame, int argi, struct type *type);
 extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, struct frame_info *frame, int argi, struct type *type);
 extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 331b1aa..9a63348 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -643,7 +643,6 @@
 F:2:STACK_ALIGN:CORE_ADDR:stack_align:CORE_ADDR sp:sp
 M:::CORE_ADDR:frame_align:CORE_ADDR address:address
 F:2:REG_STRUCT_HAS_ADDR:int:reg_struct_has_addr:int gcc_p, struct type *type:gcc_p, type
-v::FRAME_RED_ZONE_SIZE:int:frame_red_zone_size
 v:2:PARM_BOUNDARY:int:parm_boundary
 #
 v:2:TARGET_FLOAT_FORMAT:const struct floatformat *:float_format::::::default_float_format (gdbarch)::%s:(TARGET_FLOAT_FORMAT)->name
@@ -835,6 +834,11 @@
 #define GDBARCH_H
 
 #include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
+#if !GDB_MULTI_ARCH
+/* Pull in function declarations refered to, indirectly, via macros.  */
+#include "inferior.h"		/* For unsigned_address_to_pointer().  */
+#include "symfile.h"		/* For entry_point_address().  */
+#endif
 
 struct floatformat;
 struct ui_file;
@@ -908,6 +912,11 @@
 	    printf "#endif\n"
 	    printf "#endif\n"
 	    printf "\n"
+	    printf "/* Default predicate for non- multi-arch targets. */\n"
+	    printf "#if (!GDB_MULTI_ARCH) && !defined (${macro}_P)\n"
+	    printf "#define ${macro}_P() (0)\n"
+	    printf "#endif\n"
+	    printf "\n"
 	    printf "extern int gdbarch_${function}_p (struct gdbarch *gdbarch);\n"
 	    printf "#if (GDB_MULTI_ARCH ${gt_level}) && defined (${macro}_P)\n"
 	    printf "#error \"Non multi-arch definition of ${macro}\"\n"
@@ -919,6 +928,15 @@
     fi
     if class_is_variable_p
     then
+	if fallback_default_p || class_is_predicate_p
+	then
+	    printf "\n"
+	    printf "/* Default (value) for non- multi-arch platforms. */\n"
+	    printf "#if (!GDB_MULTI_ARCH) && !defined (${macro})\n"
+	    echo "#define ${macro} (${fallbackdefault})" \
+		| sed -e 's/\([^a-z_]\)\(gdbarch[^a-z_]\)/\1current_\2/g'
+	    printf "#endif\n"
+	fi
 	printf "\n"
 	printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
 	printf "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, ${returntype} ${function});\n"
@@ -931,6 +949,27 @@
     fi
     if class_is_function_p
     then
+	if class_is_multiarch_p ; then :
+	elif fallback_default_p || class_is_predicate_p
+	then
+	    printf "\n"
+	    printf "/* Default (function) for non- multi-arch platforms. */\n"
+	    printf "#if (!GDB_MULTI_ARCH) && !defined (${macro})\n"
+	    if [ "x${fallbackdefault}" = "x0" ]
+	    then
+		if [ "x${actual}" = "x-" ]
+		then
+		    printf "#define ${macro} (internal_error (__FILE__, __LINE__, \"${macro}\"), 0)\n"
+		else
+		    printf "#define ${macro}(${actual}) (internal_error (__FILE__, __LINE__, \"${macro}\"), 0)\n"
+		fi
+	    else
+		# FIXME: Should be passing current_gdbarch through!
+		echo "#define ${macro}(${actual}) (${fallbackdefault} (${actual}))" \
+		    | sed -e 's/\([^a-z_]\)\(gdbarch[^a-z_]\)/\1current_\2/g'
+	    fi
+	    printf "#endif\n"
+	fi
 	printf "\n"
 	if [ "x${formal}" = "xvoid" ] && class_is_multiarch_p
 	then
@@ -1252,8 +1291,27 @@
 #include "defs.h"
 #include "arch-utils.h"
 
+#if GDB_MULTI_ARCH
 #include "gdbcmd.h"
 #include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */
+#else
+/* Just include everything in sight so that the every old definition
+   of macro is visible. */
+#include "gdb_string.h"
+#include <ctype.h>
+#include "symtab.h"
+#include "frame.h"
+#include "inferior.h"
+#include "breakpoint.h"
+#include "gdb_wait.h"
+#include "gdbcore.h"
+#include "gdbcmd.h"
+#include "target.h"
+#include "gdbthread.h"
+#include "annotate.h"
+#include "symfile.h"		/* for overlay functions */
+#include "value.h"		/* For old tm.h/nm.h macros.  */
+#endif
 #include "symcat.h"
 
 #include "floatformat.h"
@@ -1517,6 +1575,9 @@
   struct cleanup *cleanups;
   long dummy;
   char *buf;
+  /* Only perform sanity checks on a multi-arch target. */
+  if (!GDB_MULTI_ARCH)
+    return;
   log = mem_fileopen ();
   cleanups = make_cleanup_ui_file_delete (log);
   /* fundamental */
@@ -1599,9 +1660,10 @@
     then
 	if class_is_multiarch_p
 	then
-	    printf "  fprintf_unfiltered (file,\n"
-	    printf "                      \"gdbarch_dump: gdbarch_${function}_p() = %%d\\\\n\",\n"
-	    printf "                      gdbarch_${function}_p (current_gdbarch));\n"
+	    printf "  if (GDB_MULTI_ARCH)\n"
+	    printf "    fprintf_unfiltered (file,\n"
+	    printf "                        \"gdbarch_dump: gdbarch_${function}_p() = %%d\\\\n\",\n"
+	    printf "                        gdbarch_${function}_p (current_gdbarch));\n"
 	else
 	    printf "#ifdef ${macro}_P\n"
 	    printf "  fprintf_unfiltered (file,\n"
@@ -1617,13 +1679,19 @@
     # multiarch functions don't have macros.
     if class_is_multiarch_p
     then
-	printf "  fprintf_unfiltered (file,\n"
-	printf "                      \"gdbarch_dump: ${function} = 0x%%08lx\\\\n\",\n"
-	printf "                      (long) current_gdbarch->${function});\n"
+	printf "  if (GDB_MULTI_ARCH)\n"
+	printf "    fprintf_unfiltered (file,\n"
+	printf "                        \"gdbarch_dump: ${function} = 0x%%08lx\\\\n\",\n"
+	printf "                        (long) current_gdbarch->${function});\n"
 	continue
     fi
     # Print the macro definition.
     printf "#ifdef ${macro}\n"
+    if [ "x${returntype}" = "xvoid" ]
+    then
+	printf "#if GDB_MULTI_ARCH\n"
+	printf "  /* Macro might contain \`[{}]' when not multi-arch */\n"
+    fi
     if class_is_function_p
     then
 	printf "  fprintf_unfiltered (file,\n"
@@ -1635,6 +1703,11 @@
 	printf "                      \"gdbarch_dump: ${macro} # %%s\\\\n\",\n"
 	printf "                      XSTRING (${macro}));\n"
     fi
+    # Print the architecture vector value
+    if [ "x${returntype}" = "xvoid" ]
+    then
+	printf "#endif\n"
+    fi
     if [ "x${print_p}" = "x()" ]
     then
         printf "  gdbarch_dump_${function} (current_gdbarch);\n"
@@ -1649,10 +1722,11 @@
 	printf "                        ${print});\n"
     elif class_is_function_p
     then
-	printf "  fprintf_unfiltered (file,\n"
-	printf "                      \"gdbarch_dump: ${macro} = <0x%%08lx>\\\\n\",\n"
-	printf "                      (long) current_gdbarch->${function}\n"
-	printf "                      /*${macro} ()*/);\n"
+	printf "  if (GDB_MULTI_ARCH)\n"
+	printf "    fprintf_unfiltered (file,\n"
+	printf "                        \"gdbarch_dump: ${macro} = <0x%%08lx>\\\\n\",\n"
+	printf "                        (long) current_gdbarch->${function}\n"
+	printf "                        /*${macro} ()*/);\n"
     else
 	printf "  fprintf_unfiltered (file,\n"
 	printf "                      \"gdbarch_dump: ${macro} = %s\\\\n\",\n" "${fmt}"
@@ -2006,30 +2080,37 @@
 const char **
 gdbarch_printable_names (void)
 {
-  /* Accumulate a list of names based on the registed list of
-     architectures. */
-  enum bfd_architecture a;
-  int nr_arches = 0;
-  const char **arches = NULL;
-  struct gdbarch_registration *rego;
-  for (rego = gdbarch_registry;
-       rego != NULL;
-       rego = rego->next)
+  if (GDB_MULTI_ARCH)
     {
-      const struct bfd_arch_info *ap;
-      ap = bfd_lookup_arch (rego->bfd_architecture, 0);
-      if (ap == NULL)
-        internal_error (__FILE__, __LINE__,
-                        "gdbarch_architecture_names: multi-arch unknown");
-      do
-        {
-          append_name (&arches, &nr_arches, ap->printable_name);
-          ap = ap->next;
-        }
-      while (ap != NULL);
+      /* Accumulate a list of names based on the registed list of
+         architectures. */
+      enum bfd_architecture a;
+      int nr_arches = 0;
+      const char **arches = NULL;
+      struct gdbarch_registration *rego;
+      for (rego = gdbarch_registry;
+	   rego != NULL;
+	   rego = rego->next)
+	{
+	  const struct bfd_arch_info *ap;
+	  ap = bfd_lookup_arch (rego->bfd_architecture, 0);
+	  if (ap == NULL)
+	    internal_error (__FILE__, __LINE__,
+                            "gdbarch_architecture_names: multi-arch unknown");
+	  do
+	    {
+	      append_name (&arches, &nr_arches, ap->printable_name);
+	      ap = ap->next;
+	    }
+	  while (ap != NULL);
+	}
+      append_name (&arches, &nr_arches, NULL);
+      return arches;
     }
-  append_name (&arches, &nr_arches, NULL);
-  return arches;
+  else
+    /* Just return all the architectures that BFD knows.  Assume that
+       the legacy architecture framework supports them. */
+    return bfd_arch_list ();
 }
 
 
@@ -2070,6 +2151,12 @@
   (*curr)->dump_tdep = dump_tdep;
   (*curr)->arches = NULL;
   (*curr)->next = NULL;
+  /* When non- multi-arch, install whatever target dump routine we've
+     been provided - hopefully that routine has been written correctly
+     and works regardless of multi-arch. */
+  if (!GDB_MULTI_ARCH && dump_tdep != NULL
+      && startup_gdbarch.dump_tdep == NULL)
+    startup_gdbarch.dump_tdep = dump_tdep;
 }
 
 void
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 42dab16..1a3a7dc 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,12 +1,3 @@
-2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (install-only): Create dest dir. Support DESTDIR.
-	(uninstall): Support DESTDIR.
-
-Mon Jul 21 20:09:34 UTC 2003  Brendan Conoboy  <blc@redhat.com>
-
-	* configure.srv: Add xscale*linux copy of arm*linux entry.
-
 2003-07-24  Daniel Jacobowitz  <drow@mvista.com>
 
 	* linux-arm-low.c (arm_reinsert_addr): New function.
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 8554dae..80667f9 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -151,15 +151,13 @@
 install-only: 
 	n=`echo gdbserver | sed '$(program_transform_name)'`; \
 	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
-	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir); \
-	$(INSTALL_PROGRAM) gdbserver $(DESTDIR)$(bindir)/$$n; \
-	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man1dir); \
-	$(INSTALL_DATA) $(srcdir)/gdbserver.1 $(DESTDIR)$(man1dir)/$$n.1
+	$(INSTALL_PROGRAM) gdbserver $(bindir)/$$n; \
+	$(INSTALL_DATA) $(srcdir)/gdbserver.1 $(man1dir)/$$n.1
 
 uninstall: force
 	n=`echo gdbserver | sed '$(program_transform_name)'`; \
 	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
-	rm -f $(bindir)/$$n $(DESTDIR)$(man1dir)/$$n.1
+	rm -f $(bindir)/$$n $(man1dir)/$$n.1
 
 installcheck:
 check:
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 251dd6b..6ab60e9 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -64,11 +64,6 @@
 			srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o"
 			srv_linux_regsets=yes
 			;;
-  xscale*-*-linux*)	srv_regobj=reg-arm.o
-			srv_tgtobj="linux-low.o linux-arm-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
   *)			echo "Error: target not supported by gdbserver."
 			exit 1
 			;;
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 554778a..e7d755a 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -272,26 +272,11 @@
 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
 				   & TYPE_FLAG_ADDRESS_CLASS_ALL)
 
-/* This structure is space-critical.
-   Its layout has been tweaked to reduce the space used.  */
-
 struct main_type
 {
   /* Code for kind of type */
 
-  ENUM_BITFIELD(type_code) code : 8;
-
-  /* These fields appear at this location because they pack nicely here.  */
-  /* FIXME, these should probably be restricted to a Fortran-specific
-     field in some fashion.  */
-#define BOUND_CANNOT_BE_DETERMINED   5
-#define BOUND_BY_REF_ON_STACK        4
-#define BOUND_BY_VALUE_ON_STACK      3
-#define BOUND_BY_REF_IN_REG          2
-#define BOUND_BY_VALUE_IN_REG        1
-#define BOUND_SIMPLE                 0
-  int upper_bound_type : 4;
-  int lower_bound_type : 4;
+  enum type_code code;
 
   /* Name of this type, or NULL if none.
 
@@ -313,6 +298,17 @@
 
   char *tag_name;
 
+  /* FIXME, these should probably be restricted to a Fortran-specific
+     field in some fashion.  */
+#define BOUND_CANNOT_BE_DETERMINED   5
+#define BOUND_BY_REF_ON_STACK        4
+#define BOUND_BY_VALUE_ON_STACK      3
+#define BOUND_BY_REF_IN_REG          2
+#define BOUND_BY_VALUE_IN_REG        1
+#define BOUND_SIMPLE                 0
+  int upper_bound_type;
+  int lower_bound_type;
+
   /* Every type is now associated with a particular objfile, and the
      type is allocated on the type_obstack for that objfile.  One problem
      however, is that there are times when gdb allocates new types while
@@ -344,15 +340,6 @@
 
   short nfields;
 
-  /* Field number of the virtual function table pointer in
-     VPTR_BASETYPE.  If -1, we were unable to find the virtual
-     function table pointer in initial symbol reading, and
-     fill_in_vptr_fieldno should be called to find it if possible.
-
-     Unused if this type does not have virtual functions.  */
-
-  short vptr_fieldno;
-
   /* For structure and union types, a description of each field.
      For set and pascal array types, there is one "field",
      whose type is the domain type of the set or array.
@@ -434,6 +421,15 @@
 
   struct type *vptr_basetype;
 
+  /* Field number of the virtual function table pointer in
+     VPTR_BASETYPE.  If -1, we were unable to find the virtual
+     function table pointer in initial symbol reading, and
+     fill_in_vptr_fieldno should be called to find it if possible.
+
+     Unused if this type does not have virtual functions.  */
+
+  int vptr_fieldno;
+
   /* Slot to point to additional language-specific fields of this type.  */
 
   union type_specific
diff --git a/gdb/hppa-hpux-tdep.c b/gdb/hppa-hpux-tdep.c
index 62271ff..5d26c7c 100644
--- a/gdb/hppa-hpux-tdep.c
+++ b/gdb/hppa-hpux-tdep.c
@@ -32,18 +32,12 @@
 /* FIXME: brobecker 2002-12-25.  The following functions will eventually
    become static, after the multiarching conversion is done.  */
 int hppa_hpux_pc_in_sigtramp (CORE_ADDR pc, char *name);
-void hppa32_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
-                                             CORE_ADDR *tmp);
-void hppa32_hpux_frame_base_before_sigtramp (struct frame_info *fi,
-                                             CORE_ADDR *tmp);
-void hppa32_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi,
-                                                    CORE_ADDR *fsr);
-void hppa64_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
-                                             CORE_ADDR *tmp);
-void hppa64_hpux_frame_base_before_sigtramp (struct frame_info *fi,
-                                             CORE_ADDR *tmp);
-void hppa64_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi,
-                                                    CORE_ADDR *fsr);
+void hppa_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
+                                           CORE_ADDR *tmp);
+void hppa_hpux_frame_base_before_sigtramp (struct frame_info *fi,
+                                           CORE_ADDR *tmp);
+void hppa_hpux_frame_find_saved_regs_in_sigtramp
+      (struct frame_info *fi, CORE_ADDR *fsr);
 
 int
 hppa_hpux_pc_in_sigtramp (CORE_ADDR pc, char *name)
@@ -54,9 +48,9 @@
   return (name && (strcmp ("_sigreturn", name) == 0));
 }
 
-/* For hppa32_hpux_frame_saved_pc_in_sigtramp, 
-   hppa32_hpux_frame_base_before_sigtramp and
-   hppa32_hpux_frame_find_saved_regs_in_sigtramp:
+/* For hppa_hpux_frame_saved_pc_in_sigtramp, 
+   hppa_hpux_frame_base_before_sigtramp and
+   hppa_hpux_frame_find_saved_regs_in_sigtramp:
 
    The signal context structure pointer is always saved at the base
    of the frame which "calls" the signal handler.  We only want to find
@@ -73,21 +67,21 @@
    written.  */
 
 void
-hppa32_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi, CORE_ADDR *tmp)
+hppa_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi, CORE_ADDR *tmp)
 {
   *tmp = read_memory_integer (get_frame_base (fi) + (43 * 4), 4);
 }
 
 void
-hppa32_hpux_frame_base_before_sigtramp (struct frame_info *fi,
-                                        CORE_ADDR *tmp)
+hppa_hpux_frame_base_before_sigtramp (struct frame_info *fi,
+                                      CORE_ADDR *tmp)
 {
   *tmp = read_memory_integer (get_frame_base (fi) + (40 * 4), 4);
 }
 
 void
-hppa32_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi,
-					       CORE_ADDR *fsr)
+hppa_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi,
+					     CORE_ADDR *fsr)
 {
   int i;
   const CORE_ADDR tmp = get_frame_base (fi) + (10 * 4);
@@ -101,53 +95,6 @@
     }
 }
 
-/* For hppa64_hpux_frame_saved_pc_in_sigtramp, 
-   hppa64_hpux_frame_base_before_sigtramp and
-   hppa64_hpux_frame_find_saved_regs_in_sigtramp:
-
-   These functions are the PA64 ABI equivalents of the 32bits counterparts
-   above. See the comments there.
-
-   For PA64, the save_state structure is at an offset of 24 32-bit words
-   from the sigcontext structure. The 64 bit general registers are at an
-   offset of 640 bytes from the beginning of the save_state structure,
-   and the floating pointer register are at an offset of 256 bytes from
-   the beginning of the save_state structure.  */
-
-void
-hppa64_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi, CORE_ADDR *tmp)
-{
-  *tmp = read_memory_integer
-           (get_frame_base (fi) + (24 * 4) + 640 + (33 * 8), 8);
-}
-
-void
-hppa64_hpux_frame_base_before_sigtramp (struct frame_info *fi,
-                                        CORE_ADDR *tmp)
-{
-  *tmp = read_memory_integer
-           (get_frame_base (fi) + (24 * 4) + 640 + (30 * 8), 8);
-}
-
-void
-hppa64_hpux_frame_find_saved_regs_in_sigtramp (struct frame_info *fi,
-					       CORE_ADDR *fsr)
-{
-  int i;
-  const CORE_ADDR tmp1 = get_frame_base (fi) + (24 * 4) + 640;
-  const CORE_ADDR tmp2 = get_frame_base (fi) + (24 * 4) + 256;
-
-  for (i = 0; i < NUM_REGS; i++)
-    {
-      if (i == SP_REGNUM)
-        fsr[SP_REGNUM] = read_memory_integer (tmp1 + SP_REGNUM * 8, 8);
-      else if (i >= FP0_REGNUM)
-        fsr[i] = tmp2 + (i - FP0_REGNUM) * 8;
-      else
-        fsr[i] = tmp1 + i * 8;
-    }
-}
-
 static void
 hppa_hpux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
@@ -171,9 +118,6 @@
 {
   gdbarch_register_osabi (bfd_arch_hppa, 0, GDB_OSABI_HPUX_SOM,
                           hppa_hpux_som_init_abi);
-  /* FIXME brobecker 2003-08-13: The machine number 25 corresponds to
-     the hppa2.0w bfd arch_info. A #define should probably be defined
-     in bfd, instead of using this hard-coded number.  */
-  gdbarch_register_osabi (bfd_arch_hppa, 25, GDB_OSABI_HPUX_ELF,
+  gdbarch_register_osabi (bfd_arch_hppa, 0, GDB_OSABI_HPUX_ELF,
                           hppa_hpux_elf_init_abi);
 }
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 699cd74..fed6cb1 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -64,20 +64,9 @@
 #include "target.h"
 #include "symfile.h"
 #include "objfiles.h"
-#include "hppa-tdep.h"
 
 /* Some local constants.  */
-static const int hppa32_num_regs = 128;
-static const int hppa64_num_regs = 96;
-
-static const int hppa64_call_dummy_breakpoint_offset = 22 * 4;
-
-/* DEPRECATED_CALL_DUMMY_LENGTH is computed based on the size of a
-   word on the target machine, not the size of an instruction.  Since
-   a word on this target holds two instructions we have to divide the
-   instruction size by two to get the word size of the dummy.  */
-static const int hppa32_call_dummy_length = INSTRUCTION_SIZE * 28;
-static const int hppa64_call_dummy_length = INSTRUCTION_SIZE * 26 / 2;
+static const int hppa_num_regs = 128;
 
 /* Get at various relevent fields of an instruction word. */
 #define MASK_5 0x1f
@@ -175,23 +164,16 @@
 int hppa_in_solib_return_trampoline (CORE_ADDR pc, char *name);
 CORE_ADDR hppa_saved_pc_after_call (struct frame_info *frame);
 int hppa_inner_than (CORE_ADDR lhs, CORE_ADDR rhs);
-CORE_ADDR hppa32_stack_align (CORE_ADDR sp);
-CORE_ADDR hppa64_stack_align (CORE_ADDR sp);
+CORE_ADDR hppa_stack_align (CORE_ADDR sp);
 int hppa_pc_requires_run_before_use (CORE_ADDR pc);
 int hppa_instruction_nullified (void);
 int hppa_register_raw_size (int reg_nr);
 int hppa_register_byte (int reg_nr);
-struct type * hppa32_register_virtual_type (int reg_nr);
-struct type * hppa64_register_virtual_type (int reg_nr);
+struct type * hppa_register_virtual_type (int reg_nr);
 void hppa_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
-void hppa32_extract_return_value (struct type *type, char *regbuf,
-                                  char *valbuf);
-void hppa64_extract_return_value (struct type *type, char *regbuf,
-                                  char *valbuf);
-int hppa32_use_struct_convention (int gcc_p, struct type *type);
-int hppa64_use_struct_convention (int gcc_p, struct type *type);
-void hppa32_store_return_value (struct type *type, char *valbuf);
-void hppa64_store_return_value (struct type *type, char *valbuf);
+void hppa_extract_return_value (struct type *type, char *regbuf, char *valbuf);
+int hppa_use_struct_convention (int gcc_p, struct type *type);
+void hppa_store_return_value (struct type *type, char *valbuf);
 CORE_ADDR hppa_extract_struct_value_address (char *regbuf);
 int hppa_cannot_store_register (int regnum);
 void hppa_init_extra_frame_info (int fromleaf, struct frame_info *frame);
@@ -200,6 +182,7 @@
 int hppa_frameless_function_invocation (struct frame_info *frame);
 CORE_ADDR hppa_frame_saved_pc (struct frame_info *frame);
 CORE_ADDR hppa_frame_args_address (struct frame_info *fi);
+CORE_ADDR hppa_frame_locals_address (struct frame_info *fi);
 int hppa_frame_num_args (struct frame_info *frame);
 void hppa_push_dummy_frame (void);
 void hppa_pop_frame (void);
@@ -234,19 +217,11 @@
 /* Should call_function allocate stack space for a struct return?  */
 
 int
-hppa32_use_struct_convention (int gcc_p, struct type *type)
+hppa_use_struct_convention (int gcc_p, struct type *type)
 {
   return (TYPE_LENGTH (type) > 2 * DEPRECATED_REGISTER_SIZE);
 }
-
-/* Same as hppa32_use_struct_convention() for the PA64 ABI.  */
-
-int
-hppa64_use_struct_convention (int gcc_p, struct type *type)
-{
-  /* RM: struct upto 128 bits are returned in registers */
-  return TYPE_LENGTH (type) > 16;
-}
+
 
 /* Routines to extract various sized constants out of hppa 
    instructions. */
@@ -706,7 +681,7 @@
 /* Return the name of a register.  */
 
 const char *
-hppa32_register_name (int i)
+hppa_register_name (int i)
 {
   static char *names[] = {
     "flags",  "r1",      "rp",     "r3",
@@ -4807,7 +4782,7 @@
    Called only in the context of the "return" command.  */
 
 void
-hppa32_store_return_value (struct type *type, char *valbuf)
+hppa_store_return_value (struct type *type, char *valbuf)
 {
   /* For software floating point, the return value goes into the
      integer registers.  But we do not have any flag to key this on,
@@ -4825,32 +4800,6 @@
 				     valbuf, TYPE_LENGTH (type));
 }
 
-/* Same as hppa32_store_return_value(), but for the PA64 ABI.  */
-
-void
-hppa64_store_return_value (struct type *type, char *valbuf)
-{
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
-    deprecated_write_register_bytes
-      (REGISTER_BYTE (FP4_REGNUM)
-        + DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (type),
-       valbuf, TYPE_LENGTH (type));
-  else if (is_integral_type(type))
-    deprecated_write_register_bytes
-      (REGISTER_BYTE (28)
-        + DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (type),
-       valbuf, TYPE_LENGTH (type));
-  else if (TYPE_LENGTH (type) <= 8)
-    deprecated_write_register_bytes
-      (REGISTER_BYTE (28),valbuf, TYPE_LENGTH (type));
-  else if (TYPE_LENGTH (type) <= 16)
-    {
-      deprecated_write_register_bytes (REGISTER_BYTE (28),valbuf, 8);
-      deprecated_write_register_bytes
-        (REGISTER_BYTE (29), valbuf + 8, TYPE_LENGTH (type) - 8);
-    }
-}
-
 /* Copy the function's return value into VALBUF.
 
    This function is called only in the context of "target function calls",
@@ -4859,13 +4808,15 @@
    "return" command.  */
 
 void
-hppa32_extract_return_value (struct type *type, char *regbuf, char *valbuf)
+hppa_extract_return_value (struct type *type, char *regbuf, char *valbuf)
 {
   if (TYPE_CODE (type) == TYPE_CODE_FLT)
-    memcpy (valbuf, regbuf + REGISTER_BYTE (FP4_REGNUM), TYPE_LENGTH (type));
+    memcpy (valbuf,
+	    (char *)regbuf + REGISTER_BYTE (FP4_REGNUM),
+	    TYPE_LENGTH (type));
   else
     memcpy (valbuf,
-	    (regbuf
+	    ((char *)regbuf
 	     + REGISTER_BYTE (28)
 	     + (TYPE_LENGTH (type) > 4
 		? (8 - TYPE_LENGTH (type))
@@ -4873,34 +4824,6 @@
 	    TYPE_LENGTH (type));
 }
 
-/* Same as hppa32_extract_return_value but for the PA64 ABI case.  */
-
-void
-hppa64_extract_return_value (struct type *type, char *regbuf, char *valbuf)
-{
-  /* RM: Floats are returned in FR4R, doubles in FR4.
-         Integral values are in r28, padded on the left.
-         Aggregates less that 65 bits are in r28, right padded.
-         Aggregates upto 128 bits are in r28 and r29, right padded.  */ 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
-    memcpy (valbuf,
-            regbuf + REGISTER_BYTE (FP4_REGNUM)
-             + DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (type),
-            TYPE_LENGTH (type));
-  else if (is_integral_type(type))
-    memcpy (valbuf,
-            regbuf + REGISTER_BYTE (28)
-             + DEPRECATED_REGISTER_SIZE - TYPE_LENGTH (type),
-            TYPE_LENGTH (type));
-  else if (TYPE_LENGTH (type) <= 8)
-    memcpy (valbuf, regbuf + REGISTER_BYTE (28), TYPE_LENGTH (type));
-  else if (TYPE_LENGTH (type) <= 16)
-    {
-      memcpy (valbuf, regbuf + REGISTER_BYTE (28), 8);
-      memcpy (valbuf + 8, regbuf + REGISTER_BYTE (29), TYPE_LENGTH (type) - 8);
-    }
-}
-
 int
 hppa_reg_struct_has_addr (int gcc_p, struct type *type)
 {
@@ -4917,7 +4840,7 @@
 }
 
 CORE_ADDR
-hppa32_stack_align (CORE_ADDR sp)
+hppa_stack_align (CORE_ADDR sp)
 {
   /* elz: adjust the quantity to the next highest value which is
      64-bit aligned.  This is used in valops.c, when the sp is adjusted.
@@ -4925,13 +4848,6 @@
   return ((sp % 8) ? (sp + 7) & -8 : sp);
 }
 
-CORE_ADDR
-hppa64_stack_align (CORE_ADDR sp)
-{
-  /* The PA64 ABI mandates a 16 byte stack alignment.  */
-  return ((sp % 16) ? (sp + 15) & -16 : sp);
-}
-
 int
 hppa_pc_requires_run_before_use (CORE_ADDR pc)
 {
@@ -4985,16 +4901,14 @@
 int
 hppa_register_byte (int reg_nr)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-
-  return reg_nr * tdep->bytes_per_address;
+  return reg_nr * 4;
 }
 
 /* Return the GDB type object for the "standard" data type of data
    in register N.  */
 
 struct type *
-hppa32_register_virtual_type (int reg_nr)
+hppa_register_virtual_type (int reg_nr)
 {
    if (reg_nr < FP4_REGNUM)
      return builtin_type_int;
@@ -5002,18 +4916,6 @@
      return builtin_type_float;
 }
 
-/* Return the GDB type object for the "standard" data type of data
-   in register N.  hppa64 version.  */
-
-struct type *
-hppa64_register_virtual_type (int reg_nr)
-{
-   if (reg_nr < FP4_REGNUM)
-     return builtin_type_unsigned_long_long;
-   else
-     return builtin_type_double;
-}
-
 /* Store the address of the place in which to copy the structure the
    subroutine will return.  This is called from call_function.  */
 
@@ -5077,7 +4979,6 @@
 static struct gdbarch *
 hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch_tdep *tdep;
   struct gdbarch *gdbarch;
   
   /* Try to determine the ABI of the object we are loading.  */
@@ -5094,70 +4995,12 @@
     return (arches->gdbarch);
 
   /* If none found, then allocate and initialize one.  */
-  tdep = XMALLOC (struct gdbarch_tdep);
-  gdbarch = gdbarch_alloc (&info, tdep);
+  gdbarch = gdbarch_alloc (&info, NULL);
 
-  /* Determine from the bfd_arch_info structure if we are dealing with
-     a 32 or 64 bits architecture.  If the bfd_arch_info is not available,
-     then default to a 32bit machine.  */
-  if (info.bfd_arch_info != NULL)
-    tdep->bytes_per_address =
-      info.bfd_arch_info->bits_per_address / info.bfd_arch_info->bits_per_byte;
-  else
-    tdep->bytes_per_address = 4;
+  /* Hook in ABI-specific overrides, if they have been registered.  */
+  gdbarch_init_osabi (info, gdbarch);
 
-  /* Some parts of the gdbarch vector depend on whether we are running
-     on a 32 bits or 64 bits target.  */
-  switch (tdep->bytes_per_address)
-    {
-      case 4:
-        set_gdbarch_num_regs (gdbarch, hppa32_num_regs);
-        set_gdbarch_register_name (gdbarch, hppa32_register_name);
-        set_gdbarch_deprecated_register_virtual_type
-          (gdbarch, hppa32_register_virtual_type);
-        set_gdbarch_deprecated_call_dummy_length
-          (gdbarch, hppa32_call_dummy_length);
-        set_gdbarch_stack_align (gdbarch, hppa32_stack_align);
-        set_gdbarch_reg_struct_has_addr (gdbarch, hppa_reg_struct_has_addr);
-        set_gdbarch_deprecated_extract_return_value
-          (gdbarch, hppa32_extract_return_value);
-        set_gdbarch_use_struct_convention
-          (gdbarch, hppa32_use_struct_convention);
-        set_gdbarch_deprecated_store_return_value
-          (gdbarch, hppa32_store_return_value);
-        break;
-      case 8:
-        set_gdbarch_num_regs (gdbarch, hppa64_num_regs);
-        set_gdbarch_register_name (gdbarch, hppa64_register_name);
-        set_gdbarch_deprecated_register_virtual_type
-          (gdbarch, hppa64_register_virtual_type);
-        set_gdbarch_deprecated_call_dummy_breakpoint_offset
-          (gdbarch, hppa64_call_dummy_breakpoint_offset);
-        set_gdbarch_deprecated_call_dummy_length
-          (gdbarch, hppa64_call_dummy_length);
-        set_gdbarch_stack_align (gdbarch, hppa64_stack_align);
-        set_gdbarch_deprecated_extract_return_value
-          (gdbarch, hppa64_extract_return_value);
-        set_gdbarch_use_struct_convention
-          (gdbarch, hppa64_use_struct_convention);
-        set_gdbarch_deprecated_store_return_value
-          (gdbarch, hppa64_store_return_value);
-        break;
-      default:
-        internal_error (__FILE__, __LINE__, "Unsupported address size: %d",
-                        tdep->bytes_per_address);
-    }
-
-  /* The following gdbarch vector elements depend on other parts of this
-     vector which have been set above, depending on the ABI.  */
-  set_gdbarch_deprecated_register_bytes
-    (gdbarch, gdbarch_num_regs (gdbarch) * tdep->bytes_per_address);
-  set_gdbarch_long_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
-  set_gdbarch_long_long_bit (gdbarch, 64);
-  set_gdbarch_ptr_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
-
-  /* The following gdbarch vector elements do not depend on the address
-     size, or in any other gdbarch element previously set.  */
+  set_gdbarch_reg_struct_has_addr (gdbarch, hppa_reg_struct_has_addr);
   set_gdbarch_function_start_offset (gdbarch, 0);
   set_gdbarch_skip_prologue (gdbarch, hppa_skip_prologue);
   set_gdbarch_skip_trampoline_code (gdbarch, hppa_skip_trampoline_code);
@@ -5166,19 +5009,28 @@
                                           hppa_in_solib_return_trampoline);
   set_gdbarch_deprecated_saved_pc_after_call (gdbarch, hppa_saved_pc_after_call);
   set_gdbarch_inner_than (gdbarch, hppa_inner_than);
+  set_gdbarch_stack_align (gdbarch, hppa_stack_align);
   set_gdbarch_decr_pc_after_break (gdbarch, 0);
-  set_gdbarch_deprecated_register_size (gdbarch, tdep->bytes_per_address);
+  set_gdbarch_deprecated_register_size (gdbarch, 4);
+  set_gdbarch_num_regs (gdbarch, hppa_num_regs);
   set_gdbarch_deprecated_fp_regnum (gdbarch, 3);
   set_gdbarch_sp_regnum (gdbarch, 30);
   set_gdbarch_fp0_regnum (gdbarch, 64);
   set_gdbarch_pc_regnum (gdbarch, PCOQ_HEAD_REGNUM);
   set_gdbarch_npc_regnum (gdbarch, PCOQ_TAIL_REGNUM);
   set_gdbarch_deprecated_register_raw_size (gdbarch, hppa_register_raw_size);
+  set_gdbarch_deprecated_register_bytes (gdbarch, hppa_num_regs * 4);
   set_gdbarch_deprecated_register_byte (gdbarch, hppa_register_byte);
   set_gdbarch_deprecated_register_virtual_size (gdbarch, hppa_register_raw_size);
-  set_gdbarch_deprecated_max_register_raw_size (gdbarch, tdep->bytes_per_address);
+  set_gdbarch_deprecated_max_register_raw_size (gdbarch, 4);
   set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 8);
+  set_gdbarch_deprecated_register_virtual_type (gdbarch, hppa_register_virtual_type);
+  set_gdbarch_register_name (gdbarch, hppa_register_name);
   set_gdbarch_deprecated_store_struct_return (gdbarch, hppa_store_struct_return);
+  set_gdbarch_deprecated_extract_return_value (gdbarch,
+                                               hppa_extract_return_value);
+  set_gdbarch_use_struct_convention (gdbarch, hppa_use_struct_convention);
+  set_gdbarch_deprecated_store_return_value (gdbarch, hppa_store_return_value);
   set_gdbarch_deprecated_extract_struct_value_address
     (gdbarch, hppa_extract_struct_value_address);
   set_gdbarch_cannot_store_register (gdbarch, hppa_cannot_store_register);
@@ -5191,9 +5043,9 @@
   set_gdbarch_frame_args_skip (gdbarch, 0);
   set_gdbarch_deprecated_push_dummy_frame (gdbarch, hppa_push_dummy_frame);
   set_gdbarch_deprecated_pop_frame (gdbarch, hppa_pop_frame);
+  set_gdbarch_deprecated_call_dummy_length (gdbarch, INSTRUCTION_SIZE * 28);
   /* set_gdbarch_deprecated_fix_call_dummy (gdbarch, hppa_fix_call_dummy); */
   set_gdbarch_deprecated_push_arguments (gdbarch, hppa_push_arguments);
-  set_gdbarch_addr_bits_remove (gdbarch, hppa_smash_text_address);
   set_gdbarch_smash_text_address (gdbarch, hppa_smash_text_address);
   set_gdbarch_believe_pcc_promotion (gdbarch, 1);
   set_gdbarch_read_pc (gdbarch, hppa_target_read_pc);
@@ -5203,9 +5055,6 @@
   /* Helper for function argument information.  */
   set_gdbarch_fetch_pointer_argument (gdbarch, hppa_fetch_pointer_argument);
 
-  /* Hook in ABI-specific overrides, if they have been registered.  */
-  gdbarch_init_osabi (info, gdbarch);
-
   return gdbarch;
 }
 
diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h
deleted file mode 100644
index 05a4e89..0000000
--- a/gdb/hppa-tdep.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Common target dependent code for GDB on HPPA systems.
-   Copyright 2003 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef HPPA_TDEP_H
-#define HPPA_TDEP_H
-
-/* Target-dependent structure in gdbarch.  */
-struct gdbarch_tdep
-{
-  /* The number of bytes in an address.  For now, this field is designed
-     to allow us to differentiate hppa32 from hppa64 targets.  */
-  int bytes_per_address;
-};
-
-#endif  /* HPPA_TDEP_H */
diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
index 4549b37..81be404 100644
--- a/gdb/i386-linux-nat.c
+++ b/gdb/i386-linux-nat.c
@@ -23,7 +23,6 @@
 #include "inferior.h"
 #include "gdbcore.h"
 #include "regcache.h"
-#include "linux-nat.h"
 
 #include "gdb_assert.h"
 #include "gdb_string.h"
@@ -891,13 +890,6 @@
   if (ptrace (request, pid, 0, target_signal_to_host (signal)) == -1)
     perror_with_name ("ptrace");
 }
-
-void
-child_post_startup_inferior (ptid_t ptid)
-{
-  i386_cleanup_dregs ();
-  linux_child_post_startup_inferior (ptid);
-}
 
 
 /* Register that we are able to handle GNU/Linux ELF core file
diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c
index 73794bc..53a81a4 100644
--- a/gdb/i386-nat.c
+++ b/gdb/i386-nat.c
@@ -230,7 +230,6 @@
   dr_status_mirror  = 0;
 }
 
-#ifndef LINUX_CHILD_POST_STARTUP_INFERIOR
 /* Reset all debug registers at each new startup
    to avoid missing watchpoints after restart.  */
 void
@@ -238,7 +237,6 @@
 {
   i386_cleanup_dregs ();
 }
-#endif /* LINUX_CHILD_POST_STARTUP_INFERIOR */
 
 /* Print the values of the mirrored debug registers.
    This is called when maint_show_dr is non-zero.  To set that
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 9aa20d6..328dff2 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -439,7 +439,6 @@
 			  struct i386_frame_cache *cache)
 {
   unsigned char op;
-  int skip = 0;
 
   if (current_pc <= pc)
     return current_pc;
@@ -457,61 +456,25 @@
       if (current_pc <= pc + 1)
 	return current_pc;
 
-      op = read_memory_unsigned_integer (pc + 1, 1);
-
-      /* Check for some special instructions that might be migrated
-	 by GCC into the prologue.  We check for
-
-	    xorl %ebx, %ebx
-	    xorl %ecx, %ecx
-	    xorl %edx, %edx
-
-	 and the equivalent
-
-	    subl %ebx, %ebx
-	    subl %ecx, %ecx
-	    subl %edx, %edx
-
-	 Make sure we only skip these instructions if we later see the
-	 `movl %esp, %ebp' that actually sets up the frame.  */
-      while (op == 0x29 || op == 0x31)
-	{
-	  op = read_memory_unsigned_integer (pc + skip + 2, 1);
-	  switch (op)
-	    {
-	    case 0xdb:	/* %ebx */
-	    case 0xc9:	/* %ecx */
-	    case 0xd2:	/* %edx */
-	      skip += 2;
-	      break;
-	    default:
-	      return pc + 1;
-	    }
-
-	  op = read_memory_unsigned_integer (pc + skip + 1, 1);
-	}
-
       /* Check for `movl %esp, %ebp' -- can be written in two ways.  */
+      op = read_memory_unsigned_integer (pc + 1, 1);
       switch (op)
 	{
 	case 0x8b:
-	  if (read_memory_unsigned_integer (pc + skip + 2, 1) != 0xec)
+	  if (read_memory_unsigned_integer (pc + 2, 1) != 0xec)
 	    return pc + 1;
 	  break;
 	case 0x89:
-	  if (read_memory_unsigned_integer (pc + skip + 2, 1) != 0xe5)
+	  if (read_memory_unsigned_integer (pc + 2, 1) != 0xe5)
 	    return pc + 1;
 	  break;
 	default:
 	  return pc + 1;
 	}
 
-      /* OK, we actually have a frame.  We just don't know how large
-	 it is yet.  Set its size to zero.  We'll adjust it if
-	 necessary.  We also now commit to skipping the special
-	 instructions mentioned before.  */
+      /* OK, we actually have a frame.  We just don't know how large it is
+	 yet.  Set its size to zero.  We'll adjust it if necessary.  */
       cache->locals = 0;
-      pc += skip;
 
       /* If that's all, return now.  */
       if (current_pc <= pc + 3)
@@ -571,22 +534,23 @@
 i386_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc,
 			     struct i386_frame_cache *cache)
 {
-  CORE_ADDR offset = 0;
-  unsigned char op;
-  int i;
-
-  if (cache->locals > 0)
-    offset -= cache->locals;
-  for (i = 0; i < 8 && pc < current_pc; i++)
+  if (cache->locals >= 0)
     {
-      op = read_memory_unsigned_integer (pc, 1);
-      if (op < 0x50 || op > 0x57)
-	break;
+      CORE_ADDR offset;
+      unsigned char op;
+      int i;
 
-      offset -= 4;
-      cache->saved_regs[op - 0x50] = offset;
-      cache->sp_offset += 4;
-      pc++;
+      offset = - 4 - cache->locals;
+      for (i = 0; i < 8 && pc < current_pc; i++)
+	{
+	  op = read_memory_unsigned_integer (pc, 1);
+	  if (op < 0x50 || op > 0x57)
+	    break;
+
+	  cache->saved_regs[op - 0x50] = offset;
+	  offset -= 4;
+	  pc++;
+	}
     }
 
   return pc;
@@ -831,8 +795,7 @@
 	  ULONGEST val;
 
 	  /* Clear the direction flag.  */
-	  val = frame_unwind_register_unsigned (next_frame,
-						I386_EFLAGS_REGNUM);
+	  frame_unwind_unsigned_register (next_frame, PS_REGNUM, &val);
 	  val &= ~(1 << 10);
 	  store_unsigned_integer (valuep, 4, val);
 	}
@@ -1035,14 +998,11 @@
   if (jb_pc_offset == -1)
     return 0;
 
-  /* Don't use I386_ESP_REGNUM here, since this function is also used
-     for AMD64.  */
-  regcache_cooked_read (current_regcache, SP_REGNUM, buf);
-  sp = extract_typed_address (buf, builtin_type_void_data_ptr);
+  sp = read_register (SP_REGNUM);
   if (target_read_memory (sp + len, buf, len))
     return 0;
 
-  jb_addr = extract_typed_address (buf, builtin_type_void_data_ptr);
+  jb_addr = extract_typed_address (buf, builtin_type_void_func_ptr);
   if (target_read_memory (jb_addr + jb_pc_offset, buf, len))
     return 0;
 
@@ -1151,8 +1111,8 @@
     }
   else
     {
-      int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
-      int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+      int low_size = REGISTER_RAW_SIZE (LOW_RETURN_REGNUM);
+      int high_size = REGISTER_RAW_SIZE (HIGH_RETURN_REGNUM);
 
       if (len <= low_size)
 	{
@@ -1225,8 +1185,8 @@
     }
   else
     {
-      int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
-      int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+      int low_size = REGISTER_RAW_SIZE (LOW_RETURN_REGNUM);
+      int high_size = REGISTER_RAW_SIZE (HIGH_RETURN_REGNUM);
 
       if (len <= low_size)
 	regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
@@ -1340,7 +1300,7 @@
 
       /* Extract (always little endian).  */
       regcache_raw_read (regcache, fpnum, mmx_buf);
-      memcpy (buf, mmx_buf, register_size (gdbarch, regnum));
+      memcpy (buf, mmx_buf, REGISTER_RAW_SIZE (regnum));
     }
   else
     regcache_raw_read (regcache, regnum, buf);
@@ -1358,7 +1318,7 @@
       /* Read ...  */
       regcache_raw_read (regcache, fpnum, mmx_buf);
       /* ... Modify ... (always little endian).  */
-      memcpy (mmx_buf, buf, register_size (gdbarch, regnum));
+      memcpy (mmx_buf, buf, REGISTER_RAW_SIZE (regnum));
       /* ... Write.  */
       regcache_raw_write (regcache, fpnum, mmx_buf);
     }
@@ -1462,7 +1422,7 @@
       gdb_assert (regnum != -1);
       gdb_assert (register_size (current_gdbarch, regnum) == 4);
 
-      get_frame_register (frame, regnum, buf);
+      frame_read_register (frame, regnum, buf);
       regnum = i386_next_regnum (regnum);
       len -= 4;
       buf += 4;
@@ -1730,14 +1690,14 @@
 }
 
 
-/* Get the ARGIth function argument for the current function.  */
-
+/* Get the ith function argument for the current function.  */
 static CORE_ADDR
 i386_fetch_pointer_argument (struct frame_info *frame, int argi, 
 			     struct type *type)
 {
-  CORE_ADDR sp = get_frame_register_unsigned  (frame, I386_ESP_REGNUM);
-  return read_memory_unsigned_integer (sp + (4 * (argi + 1)), 4);
+  CORE_ADDR stack;
+  frame_read_register (frame, SP_REGNUM, &stack);
+  return read_memory_unsigned_integer (stack + (4 * (argi + 1)), 4);
 }
 
 
@@ -1756,23 +1716,10 @@
   tdep = XMALLOC (struct gdbarch_tdep);
   gdbarch = gdbarch_alloc (&info, tdep);
 
-  /* The i386 default settings now include the SSE registers.
-     I386_NUM_XREGS includes mxcsr, and we don't want to count
-     this as one of the xmm regs -- which is why we subtract one.
-
-     Note: kevinb/2003-07-14: Whatever Mark's concerns are about the
-     FPU registers in the FIXME below apply to the SSE registers as well.
-     The only problem that I see is that these registers will show up
-     in "info all-registers" even on CPUs where they don't exist.  IMO,
-     however, if it's a choice between printing them always (even when
-     they don't exist) or never showing them to the user (even when they
-     do exist), I prefer the former over the latter.  Ideally, of course,
-     we'd somehow autodetect that we have them (or not) and display them
-     when we have them and suppress them when we don't.
-
+  /* The i386 default settings don't include the SSE registers.
      FIXME: kettenis/20020614: They do include the FPU registers for
      now, which probably is not quite right.  */
-  tdep->num_xmm_regs = I386_NUM_XREGS - 1;
+  tdep->num_xmm_regs = 0;
 
   tdep->jb_pc_offset = -1;
   tdep->struct_return = pcc_struct_return;
@@ -1794,9 +1741,9 @@
      alignment.  */
   set_gdbarch_long_double_bit (gdbarch, 96);
 
-  /* The default ABI includes general-purpose registers, 
-     floating-point registers, and the SSE registers.  */
-  set_gdbarch_num_regs (gdbarch, I386_SSE_NUM_REGS);
+  /* The default ABI includes general-purpose registers and
+     floating-point registers.  */
+  set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS);
   set_gdbarch_register_name (gdbarch, i386_register_name);
   set_gdbarch_register_type (gdbarch, i386_register_type);
 
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index 7412b8e..38eac20 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -178,20 +178,9 @@
 
 /* Initialize a SVR4 architecture variant.  */
 extern void i386_svr4_init_abi (struct gdbarch_info, struct gdbarch *);
-
 
-/* Functions and variables exported from i386bsd-tdep.c.  */
+/* Functions exported from i386bsd-tdep.c.  */
 
 extern void i386bsd_init_abi (struct gdbarch_info, struct gdbarch *);
-extern CORE_ADDR i386fbsd_sigtramp_start;
-extern CORE_ADDR i386fbsd_sigtramp_end;
-extern CORE_ADDR i386obsd_sigtramp_start;
-extern CORE_ADDR i386obsd_sigtramp_end;
-extern int i386fbsd4_sc_reg_offset[];
-extern int i386fbsd_sc_reg_offset[];
-extern int i386nbsd_sc_reg_offset[];
-extern int i386obsd_sc_reg_offset[];
-extern int i386bsd_sc_reg_offset[];
 
 #endif /* i386-tdep.h */
-
diff --git a/gdb/i386bsd-nat.c b/gdb/i386bsd-nat.c
index 0fc66fc..60524de 100644
--- a/gdb/i386bsd-nat.c
+++ b/gdb/i386bsd-nat.c
@@ -1,5 +1,5 @@
 /* Native-dependent code for modern i386 BSD's.
-   Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -196,9 +196,9 @@
 #ifdef HAVE_PT_GETXMMREGS
       char xmmregs[512];
 
-      if (have_ptrace_xmmregs != 0
-	  && ptrace(PT_GETXMMREGS, PIDGET (inferior_ptid),
-		    (PTRACE_ARG3_TYPE) xmmregs, 0) == 0)
+      if (have_ptrace_xmmregs != 0 &&
+	  ptrace(PT_GETXMMREGS, PIDGET (inferior_ptid),
+		 (PTRACE_ARG3_TYPE) xmmregs, 0) == 0)
 	{
 	  have_ptrace_xmmregs = 1;
 	  i387_supply_fxsave (xmmregs);
@@ -252,9 +252,9 @@
 #ifdef HAVE_PT_GETXMMREGS
       char xmmregs[512];
 
-      if (have_ptrace_xmmregs != 0
-	  && ptrace(PT_GETXMMREGS, PIDGET (inferior_ptid),
-		    (PTRACE_ARG3_TYPE) xmmregs, 0) == 0)
+      if (have_ptrace_xmmregs != 0 &&
+	  ptrace(PT_GETXMMREGS, PIDGET (inferior_ptid),
+		 (PTRACE_ARG3_TYPE) xmmregs, 0) == 0)
 	{
 	  have_ptrace_xmmregs = 1;
 
@@ -395,15 +395,20 @@
      information.  */
 
 #if defined (__FreeBSD_version) && __FreeBSD_version >= 400011
+  extern int i386fbsd4_sc_reg_offset[];
 #define SC_REG_OFFSET i386fbsd4_sc_reg_offset
 #elif defined (__FreeBSD_version) && __FreeBSD_version >= 300005
+  extern int i386fbsd_sc_reg_offset[];
 #define SC_REG_OFFSET i386fbsd_sc_reg_offset
 #elif defined (NetBSD) || defined (__NetBSD_Version__)
+  extern int i386nbsd_sc_reg_offset[];
 #define SC_REG_OFFSET i386nbsd_sc_reg_offset
 #elif defined (OpenBSD)
+  extern int i386obsd_sc_reg_offset[];
 #define SC_REG_OFFSET i386obsd_sc_reg_offset
 #else
-#define SC_REG_OFFSET i386bsd_sc_reg_offset
+  extern int i386bsd_sc_reg_offset[];
+#define SC_PC_OFFSET i386bsd_sc_reg_offset
 #endif
 
   /* We only check the program counter, stack pointer and frame
diff --git a/gdb/i386fbsd-nat.c b/gdb/i386fbsd-nat.c
index 7feb7b0..a80d0a0 100644
--- a/gdb/i386fbsd-nat.c
+++ b/gdb/i386fbsd-nat.c
@@ -1,5 +1,5 @@
 /* Native-dependent code for FreeBSD/i386.
-   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,8 +26,6 @@
 #include <sys/ptrace.h>
 #include <sys/sysctl.h>
 
-#include "i386-tdep.h"
-
 /* Prevent warning from -Wmissing-prototypes.  */
 void _initialize_i386fbsd_nat (void);
 
@@ -49,7 +47,7 @@
 
   if (!step)
     {
-      ULONGEST eflags;
+      unsigned int eflags;
 
       /* Workaround for a bug in FreeBSD.  Make sure that the trace
  	 flag is off when doing a continue.  There is a code path
@@ -61,11 +59,9 @@
  	 never goes through the kernel's trap() function which would
  	 normally clear it.  */
 
-      regcache_cooked_read_unsigned (current_regcache, I386_EFLAGS_REGNUM,
-				     &eflags);
+      eflags = read_register (PS_REGNUM);
       if (eflags & 0x0100)
-	regcache_cooked_write_unsigned (current_regcache, I386_EFLAGS_REGNUM,
-					eflags & ~0x0100);
+	write_register (PS_REGNUM, eflags & ~0x0100);
 
       request = PT_CONTINUE;
     }
@@ -93,6 +89,9 @@
     int ps_strings;
     size_t len;
 
+    extern CORE_ADDR i386fbsd_sigtramp_start;
+    extern CORE_ADDR i386fbsd_sigtramp_end;
+
     mib[0] = CTL_KERN;
     mib[1] = KERN_PS_STRINGS;
     len = sizeof (ps_strings);
diff --git a/gdb/i386obsd-nat.c b/gdb/i386obsd-nat.c
index b0d4e03..b2cdc2a 100644
--- a/gdb/i386obsd-nat.c
+++ b/gdb/i386obsd-nat.c
@@ -1,5 +1,5 @@
 /* Native-dependent code for OpenBSD/i386.
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,8 +23,6 @@
 #include <sys/param.h>
 #include <sys/sysctl.h>
 
-#include "i386-tdep.h"
-
 /* Prevent warning from -Wmissing-prototypes.  */
 void _initialize_i386obsd_nat (void);
 
@@ -46,6 +44,9 @@
     int mib[2];
     size_t len;
 
+    extern CORE_ADDR i386obsd_sigtramp_start;
+    extern CORE_ADDR i386obsd_sigtramp_end;
+
     mib[0] = CTL_VM;
     mib[1] = VM_PSSTRINGS;
     len = sizeof (_ps);
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index b6e53a1..f7800af 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -217,14 +217,22 @@
   int fpreg;
   int top;
 
-  fctrl = get_frame_register_unsigned (frame, FCTRL_REGNUM);
-  fstat = get_frame_register_unsigned (frame, FSTAT_REGNUM);
-  ftag = get_frame_register_unsigned (frame, FTAG_REGNUM);
-  fiseg = get_frame_register_unsigned (frame, FISEG_REGNUM);
-  fioff = get_frame_register_unsigned (frame, FIOFF_REGNUM);
-  foseg = get_frame_register_unsigned (frame, FOSEG_REGNUM);
-  fooff = get_frame_register_unsigned (frame, FOOFF_REGNUM);
-  fop = get_frame_register_unsigned (frame, FOP_REGNUM);
+  frame_register_read (frame, FCTRL_REGNUM, buf);
+  fctrl = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FSTAT_REGNUM, buf);
+  fstat = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FTAG_REGNUM, buf);
+  ftag = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FISEG_REGNUM, buf);
+  fiseg = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FIOFF_REGNUM, buf);
+  fioff = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FOSEG_REGNUM, buf);
+  foseg = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FOOFF_REGNUM, buf);
+  fooff = extract_unsigned_integer (buf, 4);
+  frame_register_read (frame, FOP_REGNUM, buf);
+  fop = extract_unsigned_integer (buf, 4);
 
   top = ((fstat >> 11) & 7);
 
@@ -252,7 +260,7 @@
 	  break;
 	}
 
-      get_frame_register (frame, (fpreg + 8 - top) % 8 + FP0_REGNUM, raw);
+      frame_register_read (frame, (fpreg + 8 - top) % 8 + FP0_REGNUM, raw);
 
       fputs_filtered ("0x", file);
       for (i = 9; i >= 0; i--)
@@ -302,7 +310,7 @@
 
   /* Convert to TYPE.  This should be a no-op if TYPE is equivalent to
      the extended floating-point format used by the FPU.  */
-  get_frame_register (frame, regnum, from);
+  frame_read_register (frame, regnum, from);
   convert_typed_floating (from, builtin_type_i387_ext, to, type);
 }
 
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 98e7da5..4fd97ae 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -440,18 +440,6 @@
     CORE_ADDR old_sp = read_sp ();
     if (gdbarch_frame_align_p (current_gdbarch))
       {
-	sp = gdbarch_frame_align (current_gdbarch, old_sp);
-	/* NOTE: cagney/2003-08-13: Skip the "red zone".  For some
-	   ABIs, a function can use memory beyond the inner most stack
-	   address.  AMD64 called that region the "red zone".  Skip at
-	   least the "red zone" size before allocating any space on
-	   the stack.  */
-	if (INNER_THAN (1, 2))
-	  sp -= gdbarch_frame_red_zone_size (current_gdbarch);
-	else
-	  sp += gdbarch_frame_red_zone_size (current_gdbarch);
-	/* Still aligned?  */
-	gdb_assert (sp == gdbarch_frame_align (current_gdbarch, sp));
 	/* NOTE: cagney/2002-09-18:
 	   
 	   On a RISC architecture, a void parameterless generic dummy
@@ -472,6 +460,7 @@
 	   stack.  That way, two dummy frames can never be identical.
 	   It does burn a few bytes of stack but that is a small price
 	   to pay :-).  */
+	sp = gdbarch_frame_align (current_gdbarch, old_sp);
 	if (sp == old_sp)
 	  {
 	    if (INNER_THAN (1, 2))
@@ -487,16 +476,12 @@
     else
       /* FIXME: cagney/2002-09-18: Hey, you loose!
 
-	 Who knows how badly aligned the SP is!
-
-	 If the generic dummy frame ends up empty (because nothing is
-	 pushed) GDB won't be able to correctly perform back traces.
-	 If a target is having trouble with backtraces, first thing to
-	 do is add FRAME_ALIGN() to the architecture vector. If that
-	 fails, try unwind_dummy_id().
-
-         If the ABI specifies a "Red Zone" (see the doco) the code
-         below will quietly trash it.  */
+	 Who knows how badly aligned the SP is!  Further, per comment
+	 above, if the generic dummy frame ends up empty (because
+	 nothing is pushed) GDB won't be able to correctly perform
+	 back traces.  If a target is having trouble with backtraces,
+	 first thing to do is add FRAME_ALIGN() to the architecture
+	 vector. If that fails, try unwind_dummy_id().  */
       sp = old_sp;
   }
 
@@ -562,23 +547,6 @@
          it's address is the same as the address of the dummy.  */
       bp_addr = dummy_addr;
       break;
-    case AT_SYMBOL:
-      /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose
-	 address is the location where the breakpoint should be
-	 placed.  Once all targets are using the overhauled frame code
-	 this can be deleted - ON_STACK is a better option.  */
-      {
-	struct minimal_symbol *sym;
-
-	sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
-	real_pc = funaddr;
-	if (sym)
-	  dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
-	else
-	  dummy_addr = entry_point_address ();
-	bp_addr = dummy_addr;
-	break;
-      }
     default:
       internal_error (__FILE__, __LINE__, "bad switch");
     }
@@ -952,7 +920,7 @@
   if (stopped_by_random_signal || !stop_stack_dummy)
     {
       /* Find the name of the function we're about to complain about.  */
-      const char *name = NULL;
+      char *name = NULL;
       {
 	struct symbol *symbol = find_pc_function (funaddr);
 	if (symbol)
@@ -964,17 +932,17 @@
 	    if (msymbol)
 	      name = SYMBOL_PRINT_NAME (msymbol);
 	  }
-	if (name == NULL)
-	  {
-	    /* Can't use a cleanup here.  It is discarded, instead use
-               an alloca.  */
-	    char *tmp = xstrprintf ("at %s", local_hex_string (funaddr));
-	    char *a = alloca (strlen (tmp) + 1);
-	    strcpy (a, tmp);
-	    xfree (tmp);
-	    name = a;
-	  }
       }
+      if (name == NULL)
+	{
+	  /* NOTE: cagney/2003-04-23: Don't blame me.  This code dates
+             back to 1993-07-08, I simply moved it.  */
+	  char format[80];
+	  sprintf (format, "at %s", local_hex_format ());
+	  name = alloca (80);
+	  /* FIXME-32x64: assumes funaddr fits in a long.  */
+	  sprintf (name, format, (unsigned long) funaddr);
+	}
       if (stopped_by_random_signal)
 	{
 	  /* We stopped inside the FUNCTION because of a random
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 60191f2..ed49d23 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -438,7 +438,6 @@
 /* Possible values for CALL_DUMMY_LOCATION.  */
 #define ON_STACK 1
 #define AT_ENTRY_POINT 4
-#define AT_SYMBOL 5
 
 /* FIXME: cagney/2000-04-17: gdbarch should manage this.  The default
    shouldn't be necessary. */
diff --git a/gdb/infptrace.c b/gdb/infptrace.c
index 5df9f6d..6147cbe 100644
--- a/gdb/infptrace.c
+++ b/gdb/infptrace.c
@@ -208,7 +208,6 @@
   return wstate;
 }
 
-#ifndef KILL_INFERIOR
 void
 kill_inferior (void)
 {
@@ -230,7 +229,6 @@
   ptrace_wait (null_ptid, &status);
   target_mourn_inferior ();
 }
-#endif /* KILL_INFERIOR */
 
 #ifndef CHILD_RESUME
 
diff --git a/gdb/interps.c b/gdb/interps.c
index 82e9af6..6df1d4b 100644
--- a/gdb/interps.c
+++ b/gdb/interps.c
@@ -183,7 +183,7 @@
   if (interp->procs->resume_proc != NULL
       && (!interp->procs->resume_proc (interp->data)))
     {
-      if (old_interp == NULL || !interp_set (old_interp))
+      if (!interp_set (old_interp))
 	internal_error (__FILE__, __LINE__,
 			"Failed to initialize new interp \"%s\" %s",
 			interp->name, "and could not restore old interp!\n");
diff --git a/gdb/interps.h b/gdb/interps.h
index d24cf6a..74008d6 100644
--- a/gdb/interps.h
+++ b/gdb/interps.h
@@ -68,8 +68,6 @@
 /* well-known interpreters */
 #define INTERP_CONSOLE		"console"
 #define INTERP_MI1             "mi1"
-#define INTERP_MI2             "mi2"
-#define INTERP_MI3             "mi3"
 #define INTERP_MI		"mi"
 
 #endif
diff --git a/gdb/language.c b/gdb/language.c
index a98c9d6..eb203dc 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -151,6 +151,7 @@
 char lang_frame_mismatch_warn[] =
 "Warning: the current language does not match this frame.";
 
+
 /* This page contains the functions corresponding to GDB commands
    and their helpers. */
 
@@ -985,10 +986,210 @@
   return !value_logical_not (val);
 }
 
+/* Returns non-zero if the operator OP is defined on
+   the values ARG1 and ARG2. */
+
+#if 0				/* Currently unused */
+
+void
+binop_type_check (struct value *arg1, struct value *arg2, int op)
+{
+  struct type *t1, *t2;
+
+  /* If we're not checking types, always return success. */
+  if (!STRICT_TYPE)
+    return;
+
+  t1 = VALUE_TYPE (arg1);
+  if (arg2 != NULL)
+    t2 = VALUE_TYPE (arg2);
+  else
+    t2 = NULL;
+
+  switch (op)
+    {
+    case BINOP_ADD:
+    case BINOP_SUB:
+      if ((numeric_type (t1) && pointer_type (t2)) ||
+	  (pointer_type (t1) && numeric_type (t2)))
+	{
+	  warning ("combining pointer and integer.\n");
+	  break;
+	}
+    case BINOP_MUL:
+    case BINOP_LSH:
+    case BINOP_RSH:
+      if (!numeric_type (t1) || !numeric_type (t2))
+	type_op_error ("Arguments to %s must be numbers.", op);
+      else if (!same_type (t1, t2))
+	type_op_error ("Arguments to %s must be of the same type.", op);
+      break;
+
+    case BINOP_LOGICAL_AND:
+    case BINOP_LOGICAL_OR:
+      if (!boolean_type (t1) || !boolean_type (t2))
+	type_op_error ("Arguments to %s must be of boolean type.", op);
+      break;
+
+    case BINOP_EQUAL:
+      if ((pointer_type (t1) && !(pointer_type (t2) || integral_type (t2))) ||
+	  (pointer_type (t2) && !(pointer_type (t1) || integral_type (t1))))
+	type_op_error ("A pointer can only be compared to an integer or pointer.", op);
+      else if ((pointer_type (t1) && integral_type (t2)) ||
+	       (integral_type (t1) && pointer_type (t2)))
+	{
+	  warning ("combining integer and pointer.\n");
+	  break;
+	}
+      else if (!simple_type (t1) || !simple_type (t2))
+	type_op_error ("Arguments to %s must be of simple type.", op);
+      else if (!same_type (t1, t2))
+	type_op_error ("Arguments to %s must be of the same type.", op);
+      break;
+
+    case BINOP_REM:
+    case BINOP_MOD:
+      if (!integral_type (t1) || !integral_type (t2))
+	type_op_error ("Arguments to %s must be of integral type.", op);
+      break;
+
+    case BINOP_LESS:
+    case BINOP_GTR:
+    case BINOP_LEQ:
+    case BINOP_GEQ:
+      if (!ordered_type (t1) || !ordered_type (t2))
+	type_op_error ("Arguments to %s must be of ordered type.", op);
+      else if (!same_type (t1, t2))
+	type_op_error ("Arguments to %s must be of the same type.", op);
+      break;
+
+    case BINOP_ASSIGN:
+      if (pointer_type (t1) && !integral_type (t2))
+	type_op_error ("A pointer can only be assigned an integer.", op);
+      else if (pointer_type (t1) && integral_type (t2))
+	{
+	  warning ("combining integer and pointer.");
+	  break;
+	}
+      else if (!simple_type (t1) || !simple_type (t2))
+	type_op_error ("Arguments to %s must be of simple type.", op);
+      else if (!same_type (t1, t2))
+	type_op_error ("Arguments to %s must be of the same type.", op);
+      break;
+
+    case BINOP_CONCAT:
+      /* FIXME:  Needs to handle bitstrings as well. */
+      if (!(string_type (t1) || character_type (t1) || integral_type (t1))
+	|| !(string_type (t2) || character_type (t2) || integral_type (t2)))
+	type_op_error ("Arguments to %s must be strings or characters.", op);
+      break;
+
+      /* Unary checks -- arg2 is null */
+
+    case UNOP_LOGICAL_NOT:
+      if (!boolean_type (t1))
+	type_op_error ("Argument to %s must be of boolean type.", op);
+      break;
+
+    case UNOP_PLUS:
+    case UNOP_NEG:
+      if (!numeric_type (t1))
+	type_op_error ("Argument to %s must be of numeric type.", op);
+      break;
+
+    case UNOP_IND:
+      if (integral_type (t1))
+	{
+	  warning ("combining pointer and integer.\n");
+	  break;
+	}
+      else if (!pointer_type (t1))
+	type_op_error ("Argument to %s must be a pointer.", op);
+      break;
+
+    case UNOP_PREINCREMENT:
+    case UNOP_POSTINCREMENT:
+    case UNOP_PREDECREMENT:
+    case UNOP_POSTDECREMENT:
+      if (!ordered_type (t1))
+	type_op_error ("Argument to %s must be of an ordered type.", op);
+      break;
+
+    default:
+      /* Ok.  The following operators have different meanings in
+         different languages. */
+      switch (current_language->la_language)
+	{
+#ifdef _LANG_c
+	case language_c:
+	case language_cplus:
+	case language_objc:
+	  switch (op)
+	    {
+	    case BINOP_DIV:
+	      if (!numeric_type (t1) || !numeric_type (t2))
+		type_op_error ("Arguments to %s must be numbers.", op);
+	      break;
+	    }
+	  break;
+#endif
+
+#ifdef _LANG_m2
+	case language_m2:
+	  switch (op)
+	    {
+	    case BINOP_DIV:
+	      if (!float_type (t1) || !float_type (t2))
+		type_op_error ("Arguments to %s must be floating point numbers.", op);
+	      break;
+	    case BINOP_INTDIV:
+	      if (!integral_type (t1) || !integral_type (t2))
+		type_op_error ("Arguments to %s must be of integral type.", op);
+	      break;
+	    }
+#endif
+
+#ifdef _LANG_pascal
+      case language_pascal:
+	 switch(op)
+	 {
+	 case BINOP_DIV:
+	    if (!float_type(t1) && !float_type(t2))
+	       type_op_error ("Arguments to %s must be floating point numbers.",op);
+	    break;
+	 case BINOP_INTDIV:
+	    if (!integral_type(t1) || !integral_type(t2))
+	       type_op_error ("Arguments to %s must be of integral type.",op);
+	    break;
+	 }
+#endif
+
+	}
+    }
+}
+
+#endif /* 0 */
+
+
 /* This page contains functions for the printing out of
    error messages that occur during type- and range-
    checking. */
 
+/* Prints the format string FMT with the operator as a string
+   corresponding to the opcode OP.  If FATAL is non-zero, then
+   this is an error and error () is called.  Otherwise, it is
+   a warning and printf() is called. */
+void
+op_error (char *fmt, enum exp_opcode op, int fatal)
+{
+  if (fatal)
+    error (fmt, op_string (op));
+  else
+    {
+      warning (fmt, op_string (op));
+    }
+}
+
 /* These are called when a language fails a type- or range-check.  The
    first argument should be a printf()-style format string, and the
    rest of the arguments should be its arguments.  If
diff --git a/gdb/language.h b/gdb/language.h
index 75ca555..a1a73a5 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -463,8 +463,12 @@
 
 /* Error messages */
 
-extern void op_error (const char *lhs, enum exp_opcode,
-		      const char *rhs);
+extern void op_error (char *fmt, enum exp_opcode, int);
+
+#define type_op_error(f,o) \
+   op_error((f),(o),type_check==type_check_on ? 1 : 0)
+#define range_op_error(f,o) \
+   op_error((f),(o),range_check==range_check_on ? 1 : 0)
 
 extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
diff --git a/gdb/lin-lwp.c b/gdb/lin-lwp.c
index ef0cde9..a82adb7 100644
--- a/gdb/lin-lwp.c
+++ b/gdb/lin-lwp.c
@@ -324,8 +324,6 @@
       gdb_assert (pid == GET_LWP (ptid)
 		  && WIFSTOPPED (status) && WSTOPSIG (status));
 
-      child_post_attach (pid);
-
       lp->stopped = 1;
 
       if (debug_lin_lwp)
@@ -1049,7 +1047,6 @@
       if (pid != -1 && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP
 	  && pid != GET_PID (inferior_ptid))
 	{
-	  linux_record_stopped_pid (pid);
 	  pid = -1;
 	  save_errno = EINTR;
 	}
@@ -1070,10 +1067,6 @@
       return minus_one_ptid;
     }
 
-  /* Handle GNU/Linux's extended waitstatus for trace events.  */
-  if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP && status >> 16 != 0)
-    return linux_handle_extended_wait (pid, status, ourstatus);
-
   store_waitstatus (ourstatus, status);
   return pid_to_ptid (pid);
 }
@@ -1495,14 +1488,6 @@
   else
     trap_ptid = null_ptid;
 
-  /* Handle GNU/Linux's extended waitstatus for trace events.  */
-  if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP && status >> 16 != 0)
-    {
-      linux_handle_extended_wait (ptid_get_pid (trap_ptid),
-				  status, ourstatus);
-      return trap_ptid;
-    }
-
   store_waitstatus (ourstatus, status);
   return (threaded ? lp->ptid : pid_to_ptid (GET_LWP (lp->ptid)));
 }
@@ -1672,12 +1657,6 @@
   lin_lwp_ops.to_mourn_inferior = lin_lwp_mourn_inferior;
   lin_lwp_ops.to_thread_alive = lin_lwp_thread_alive;
   lin_lwp_ops.to_pid_to_str = lin_lwp_pid_to_str;
-  lin_lwp_ops.to_post_startup_inferior = child_post_startup_inferior;
-  lin_lwp_ops.to_post_attach = child_post_attach;
-  lin_lwp_ops.to_insert_fork_catchpoint = child_insert_fork_catchpoint;
-  lin_lwp_ops.to_insert_vfork_catchpoint = child_insert_vfork_catchpoint;
-  lin_lwp_ops.to_insert_exec_catchpoint = child_insert_exec_catchpoint;
-
   lin_lwp_ops.to_stratum = thread_stratum;
   lin_lwp_ops.to_has_thread_control = tc_schedlock;
   lin_lwp_ops.to_magic = OPS_MAGIC;
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 2680422..61931c6 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -40,16 +40,12 @@
 #define PTRACE_O_TRACEVFORK	0x00000004
 #define PTRACE_O_TRACECLONE	0x00000008
 #define PTRACE_O_TRACEEXEC	0x00000010
-#define PTRACE_O_TRACEVFORKDONE	0x00000020
-#define PTRACE_O_TRACEEXIT	0x00000040
 
 /* Wait extended result codes for the above trace options.  */
 #define PTRACE_EVENT_FORK	1
 #define PTRACE_EVENT_VFORK	2
 #define PTRACE_EVENT_CLONE	3
 #define PTRACE_EVENT_EXEC	4
-#define PTRACE_EVENT_VFORKDONE	5
-#define PTRACE_EVENT_EXIT	6
 
 #endif /* PTRACE_EVENT_FORK */
 
@@ -60,10 +56,6 @@
 #define __WALL          0x40000000 /* Wait for any child.  */
 #endif
 
-extern struct target_ops child_ops;
-
-static int linux_parent_pid;
-
 struct simple_pid_list
 {
   int pid;
@@ -76,11 +68,6 @@
 
 static int linux_supports_tracefork_flag = -1;
 
-/* If we have PTRACE_O_TRACEFORK, this flag indicates whether we also have
-   PTRACE_O_TRACEVFORKDONE.  */
-
-static int linux_supports_tracevforkdone_flag = -1;
-
 
 /* Trivial list manipulation functions to keep track of a list of
    new stopped processes.  */
@@ -166,11 +153,6 @@
       return;
     }
 
-  /* Check whether PTRACE_O_TRACEVFORKDONE is available.  */
-  ret = ptrace (PTRACE_SETOPTIONS, child_pid, 0,
-		PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORKDONE);
-  linux_supports_tracevforkdone_flag = (ret == 0);
-
   ptrace (PTRACE_CONT, child_pid, 0, 0);
   ret = waitpid (child_pid, &status, 0);
   if (ret == child_pid && WIFSTOPPED (status)
@@ -206,315 +188,32 @@
   return linux_supports_tracefork_flag;
 }
 
-static int
-linux_supports_tracevforkdone (void)
-{
-  if (linux_supports_tracefork_flag == -1)
-    linux_test_for_tracefork ();
-  return linux_supports_tracevforkdone_flag;
-}
-
-
-void
-linux_enable_event_reporting (ptid_t ptid)
-{
-  int pid = ptid_get_pid (ptid);
-  int options;
-
-  if (! linux_supports_tracefork ())
-    return;
-
-  options = PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACEEXEC;
-  if (linux_supports_tracevforkdone ())
-    options |= PTRACE_O_TRACEVFORKDONE;
-
-  /* Do not enable PTRACE_O_TRACEEXIT until GDB is more prepared to support
-     read-only process state.  */
-
-  ptrace (PTRACE_SETOPTIONS, pid, 0, options);
-}
-
-void
-child_post_attach (int pid)
-{
-  linux_enable_event_reporting (pid_to_ptid (pid));
-}
-
-void
-linux_child_post_startup_inferior (ptid_t ptid)
-{
-  linux_enable_event_reporting (ptid);
-}
-
-#ifndef LINUX_CHILD_POST_STARTUP_INFERIOR
-void
-child_post_startup_inferior (ptid_t ptid)
-{
-  linux_child_post_startup_inferior (ptid);
-}
-#endif
-
-int
-child_follow_fork (int follow_child)
-{
-  ptid_t last_ptid;
-  struct target_waitstatus last_status;
-  int has_vforked;
-  int parent_pid, child_pid;
-
-  get_last_target_status (&last_ptid, &last_status);
-  has_vforked = (last_status.kind == TARGET_WAITKIND_VFORKED);
-  parent_pid = ptid_get_pid (last_ptid);
-  child_pid = last_status.value.related_pid;
-
-  if (! follow_child)
-    {
-      /* We're already attached to the parent, by default. */
-
-      /* Before detaching from the child, remove all breakpoints from
-         it.  (This won't actually modify the breakpoint list, but will
-         physically remove the breakpoints from the child.) */
-      /* If we vforked this will remove the breakpoints from the parent
-	 also, but they'll be reinserted below.  */
-      detach_breakpoints (child_pid);
-
-      fprintf_filtered (gdb_stdout,
-			"Detaching after fork from child process %d.\n",
-			child_pid);
-
-      ptrace (PTRACE_DETACH, child_pid, 0, 0);
-
-      if (has_vforked)
-	{
-	  if (linux_supports_tracevforkdone ())
-	    {
-	      int status;
-
-	      ptrace (PTRACE_CONT, parent_pid, 0, 0);
-	      waitpid (parent_pid, &status, __WALL);
-	      if ((status >> 16) != PTRACE_EVENT_VFORKDONE)
-		warning ("Unexpected waitpid result %06x when waiting for "
-			 "vfork-done", status);
-	    }
-	  else
-	    {
-	      /* We can't insert breakpoints until the child has
-		 finished with the shared memory region.  We need to
-		 wait until that happens.  Ideal would be to just
-		 call:
-		 - ptrace (PTRACE_SYSCALL, parent_pid, 0, 0);
-		 - waitpid (parent_pid, &status, __WALL);
-		 However, most architectures can't handle a syscall
-		 being traced on the way out if it wasn't traced on
-		 the way in.
-
-		 We might also think to loop, continuing the child
-		 until it exits or gets a SIGTRAP.  One problem is
-		 that the child might call ptrace with PTRACE_TRACEME.
-
-		 There's no simple and reliable way to figure out when
-		 the vforked child will be done with its copy of the
-		 shared memory.  We could step it out of the syscall,
-		 two instructions, let it go, and then single-step the
-		 parent once.  When we have hardware single-step, this
-		 would work; with software single-step it could still
-		 be made to work but we'd have to be able to insert
-		 single-step breakpoints in the child, and we'd have
-		 to insert -just- the single-step breakpoint in the
-		 parent.  Very awkward.
-
-		 In the end, the best we can do is to make sure it
-		 runs for a little while.  Hopefully it will be out of
-		 range of any breakpoints we reinsert.  Usually this
-		 is only the single-step breakpoint at vfork's return
-		 point.  */
-
-	      usleep (10000);
-	    }
-
-	  /* Since we vforked, breakpoints were removed in the parent
-	     too.  Put them back.  */
-	  reattach_breakpoints (parent_pid);
-	}
-    }
-  else
-    {
-      char child_pid_spelling[40];
-
-      /* Needed to keep the breakpoint lists in sync.  */
-      if (! has_vforked)
-	detach_breakpoints (child_pid);
-
-      /* Before detaching from the parent, remove all breakpoints from it. */
-      remove_breakpoints ();
-
-      fprintf_filtered (gdb_stdout,
-			"Attaching after fork to child process %d.\n",
-			child_pid);
-
-      /* If we're vforking, we may want to hold on to the parent until
-	 the child exits or execs.  At exec time we can remove the old
-	 breakpoints from the parent and detach it; at exit time we
-	 could do the same (or even, sneakily, resume debugging it - the
-	 child's exec has failed, or something similar).
-
-	 This doesn't clean up "properly", because we can't call
-	 target_detach, but that's OK; if the current target is "child",
-	 then it doesn't need any further cleanups, and lin_lwp will
-	 generally not encounter vfork (vfork is defined to fork
-	 in libpthread.so).
-
-	 The holding part is very easy if we have VFORKDONE events;
-	 but keeping track of both processes is beyond GDB at the
-	 moment.  So we don't expose the parent to the rest of GDB.
-	 Instead we quietly hold onto it until such time as we can
-	 safely resume it.  */
-
-      if (has_vforked)
-	linux_parent_pid = parent_pid;
-      else
-	target_detach (NULL, 0);
-
-      inferior_ptid = pid_to_ptid (child_pid);
-      push_target (&child_ops);
-
-      /* Reset breakpoints in the child as appropriate.  */
-      follow_inferior_reset_breakpoints ();
-    }
-
-  return 0;
-}
-
-ptid_t
-linux_handle_extended_wait (int pid, int status,
-			    struct target_waitstatus *ourstatus)
-{
-  int event = status >> 16;
-
-  if (event == PTRACE_EVENT_CLONE)
-    internal_error (__FILE__, __LINE__,
-		    "unexpected clone event");
-
-  if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK)
-    {
-      unsigned long new_pid;
-      int ret;
-
-      ptrace (PTRACE_GETEVENTMSG, pid, 0, &new_pid);
-
-      /* If we haven't already seen the new PID stop, wait for it now.  */
-      if (! pull_pid_from_list (&stopped_pids, new_pid))
-	{
-	  /* The new child has a pending SIGSTOP.  We can't affect it until it
-	     hits the SIGSTOP, but we're already attached.
-
-	     It won't be a clone (we didn't ask for clones in the event mask)
-	     so we can just call waitpid and wait for the SIGSTOP.  */
-	  do {
-	    ret = waitpid (new_pid, &status, 0);
-	  } while (ret == -1 && errno == EINTR);
-	  if (ret == -1)
-	    perror_with_name ("waiting for new child");
-	  else if (ret != new_pid)
-	    internal_error (__FILE__, __LINE__,
-			    "wait returned unexpected PID %d", ret);
-	  else if (!WIFSTOPPED (status) || WSTOPSIG (status) != SIGSTOP)
-	    internal_error (__FILE__, __LINE__,
-			    "wait returned unexpected status 0x%x", status);
-	}
-
-      ourstatus->kind = (event == PTRACE_EVENT_FORK)
-	? TARGET_WAITKIND_FORKED : TARGET_WAITKIND_VFORKED;
-      ourstatus->value.related_pid = new_pid;
-      return inferior_ptid;
-    }
-
-  if (event == PTRACE_EVENT_EXEC)
-    {
-      ourstatus->kind = TARGET_WAITKIND_EXECD;
-      ourstatus->value.execd_pathname
-	= xstrdup (child_pid_to_exec_file (pid));
-
-      if (linux_parent_pid)
-	{
-	  detach_breakpoints (linux_parent_pid);
-	  ptrace (PTRACE_DETACH, linux_parent_pid, 0, 0);
-
-	  linux_parent_pid = 0;
-	}
-
-      return inferior_ptid;
-    }
-
-  internal_error (__FILE__, __LINE__,
-		  "unknown ptrace event %d", event);
-}
-
 
 int
 child_insert_fork_catchpoint (int pid)
 {
-  if (! linux_supports_tracefork ())
+  if (linux_supports_tracefork ())
+    error ("Fork catchpoints have not been implemented yet.");
+  else
     error ("Your system does not support fork catchpoints.");
-
-  return 0;
 }
 
 int
 child_insert_vfork_catchpoint (int pid)
 {
-  if (!linux_supports_tracefork ())
+  if (linux_supports_tracefork ())
+    error ("Vfork catchpoints have not been implemented yet.");
+  else
     error ("Your system does not support vfork catchpoints.");
-
-  return 0;
 }
 
 int
 child_insert_exec_catchpoint (int pid)
 {
-  if (!linux_supports_tracefork ())
+  if (linux_supports_tracefork ())
+    error ("Exec catchpoints have not been implemented yet.");
+  else
     error ("Your system does not support exec catchpoints.");
-
-  return 0;
 }
 
-void
-kill_inferior (void)
-{
-  int status;
-  int pid =  PIDGET (inferior_ptid);
-  struct target_waitstatus last;
-  ptid_t last_ptid;
-  int ret;
 
-  if (pid == 0)
-    return;
-
-  /* If we're stopped while forking and we haven't followed yet, kill the
-     other task.  We need to do this first because the parent will be
-     sleeping if this is a vfork.  */
-
-  get_last_target_status (&last_ptid, &last);
-
-  if (last.kind == TARGET_WAITKIND_FORKED
-      || last.kind == TARGET_WAITKIND_VFORKED)
-    {
-      ptrace (PT_KILL, last.value.related_pid);
-      ptrace_wait (null_ptid, &status);
-    }
-
-  /* Kill the current process.  */
-  ptrace (PT_KILL, pid, (PTRACE_ARG3_TYPE) 0, 0);
-  ret = ptrace_wait (null_ptid, &status);
-
-  /* We might get a SIGCHLD instead of an exit status.  This is
-     aggravated by the first kill above - a child has just died.  */
-
-  while (ret == pid && WIFSTOPPED (status))
-    {
-      ptrace (PT_KILL, pid, (PTRACE_ARG3_TYPE) 0, 0);
-      ret = ptrace_wait (null_ptid, &status);
-    }
-
-  target_mourn_inferior ();
-}
diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
index 90652aa..b0d9600 100644
--- a/gdb/linux-nat.h
+++ b/gdb/linux-nat.h
@@ -65,12 +65,7 @@
 				   int write, struct mem_attrib *attrib,
 				   struct target_ops *target);
 
-/* linux-nat functions for handling fork events.  */
 extern void linux_record_stopped_pid (int pid);
-extern void linux_enable_event_reporting (ptid_t ptid);
-extern ptid_t linux_handle_extended_wait (int pid, int status,
-					  struct target_waitstatus *ourstatus);
-extern void linux_child_post_startup_inferior (ptid_t ptid);
 
 /* Iterator function for lin-lwp's lwp list.  */
 struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *, 
diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c
index 7ec4edd..223eb09 100644
--- a/gdb/m68hc11-tdep.c
+++ b/gdb/m68hc11-tdep.c
@@ -961,7 +961,7 @@
 };
 
 const struct frame_unwind *
-m68hc11_frame_sniffer (struct frame_info *next_frame)
+m68hc11_frame_p (CORE_ADDR pc)
 {
   return &m68hc11_frame_unwind;
 }
@@ -1581,8 +1581,9 @@
 
   /* Hook in the DWARF CFI frame unwinder.  */
   frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer);
+  set_gdbarch_dwarf2_build_frame_info (gdbarch, dwarf2_build_frame_info);
 
-  frame_unwind_append_sniffer (gdbarch, m68hc11_frame_sniffer);
+  frame_unwind_append_predicate (gdbarch, m68hc11_frame_p);
   frame_base_set_default (gdbarch, &m68hc11_frame_base);
   
   /* Methods for saving / extracting a dummy frame's ID.  The ID's
diff --git a/gdb/mi/ChangeLog b/gdb/mi/ChangeLog
index 520ad4d..a9a09d1 100644
--- a/gdb/mi/ChangeLog
+++ b/gdb/mi/ChangeLog
@@ -1,22 +1,3 @@
-2003-08-08  Andrew Cagney  <cagney@redhat.com>
-
-	* mi-main.c (captured_mi_execute_command): Add "mi2" and "mi3" to
-	interpreters that hack around CLI.
-	* mi-interp.c (mi3_command_loop): New function.
-	(mi_interpreter_resume): Check for "mi3", default to "mi2".
-
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* mi-interp.c (_initialize_mi_interp): Register "mi2" and "mi3".
-	Make "mi" select "mi2".
-
-2003-08-05  Andrew Cagney  <cagney@redhat.com>
-
-	* mi-cmd-env.c (env_execute_cli_command): Use an explicit "%s %s"
-	when constructing the run command.
-	(mi_cmd_env_cd, mi_cmd_env_path, mi_cmd_env_dir): Simplify command
-	string removing the "%s".
-
 2003-08-04  Andrew Cagney  <cagney@redhat.com>
 
 	* mi-cmds.h (struct mi_cli): Define.
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index ec0fa35..55fcba1 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -37,27 +37,23 @@
 #include "gdb_string.h"
 #include "gdb_stat.h"
 
-static void env_cli_command (const char *cli, const char *args);
+static void env_cli_command (const char *cli, char *args);
 static void env_mod_path (char *dirname, char **which_path);
 extern void _initialize_mi_cmd_env (void);
 
 static const char path_var_name[] = "PATH";
 static char *orig_path = NULL;
 
-/* The following is copied from mi-main.c so for m1 and below we can
-   perform old behavior and use cli commands.  If ARGS is non-null,
-   append it to the CMD.  */
+/* The following is copied from mi-main.c so for m1 and below we
+   can perform old behavior and use cli commands.  */
 static void
-env_execute_cli_command (const char *cmd, const char *args)
+env_execute_cli_command (const char *cli, char *args)
 {
-  if (cmd != 0)
+  if (cli != 0)
     {
       struct cleanup *old_cleanups;
       char *run;
-      if (args != NULL)
-	xasprintf (&run, "%s %s", cmd, args);
-      else
-	run = xstrdup (cmd);
+      xasprintf (&run, cli, args);
       old_cleanups = make_cleanup (xfree, run);
       execute_command ( /*ui */ run, 0 /*from_tty */ );
       do_cleanups (old_cleanups);
@@ -94,7 +90,7 @@
   if (argc == 0 || argc > 1)
     error ("mi_cmd_env_cd: Usage DIRECTORY");
           
-  env_execute_cli_command ("cd", argv[0]);
+  env_execute_cli_command ("cd %s", argv[0]);
 
   return MI_CMD_DONE;
 }
@@ -135,7 +131,7 @@
   if (mi_version (uiout) < 2)
     {
       for (i = argc - 1; i >= 0; --i)
-	env_execute_cli_command ("path", argv[i]);
+	env_execute_cli_command ("path %s", argv[i]);
       return MI_CMD_DONE;
     }
 
@@ -207,7 +203,7 @@
   if (mi_version (uiout) < 2)
     {
       for (i = argc - 1; i >= 0; --i)
-	env_execute_cli_command ("dir", argv[i]);
+	env_execute_cli_command ("dir %s", argv[i]);
       return MI_CMD_DONE;
     }
 
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index b72d7ef..696ae06 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -60,7 +60,6 @@
 static char *mi_interp_read_one_line_hook (char *prompt, int repeat,
 					   char *anno);
 
-static void mi3_command_loop (void);
 static void mi2_command_loop (void);
 static void mi1_command_loop (void);
 
@@ -134,12 +133,10 @@
   /* If we're _the_ interpreter, take control. */
   if (current_interp_named_p (INTERP_MI1))
     command_loop_hook = mi1_command_loop;
-  else if (current_interp_named_p (INTERP_MI2))
+  else if (current_interp_named_p (INTERP_MI))
     command_loop_hook = mi2_command_loop;
-  else if (current_interp_named_p (INTERP_MI3))
-    command_loop_hook = mi3_command_loop;
   else
-    command_loop_hook = mi2_command_loop;
+    return 0;
 
   return 1;
 }
@@ -337,12 +334,6 @@
 }
 
 static void
-mi3_command_loop (void)
-{
-  mi_command_loop (3);
-}
-
-static void
 mi_command_loop (int mi_version)
 {
 #if 0
@@ -416,12 +407,8 @@
     mi_interpreter_prompt_p	/* prompt_proc_p */
   };
 
-  /* The various interpreter levels.  */
+  /* Create MI1 interpreter */
   interp_add (interp_new (INTERP_MI1, NULL, mi_out_new (1), &procs));
-  interp_add (interp_new (INTERP_MI2, NULL, mi_out_new (2), &procs));
-  interp_add (interp_new (INTERP_MI3, NULL, mi_out_new (3), &procs));
 
-  /* "mi" selects the most recent released version.  "mi2" was
-     released as part of GDB 6.0.  */
-  interp_add (interp_new (INTERP_MI, NULL, mi_out_new (2), &procs));
+  interp_add (interp_new (INTERP_MI, NULL, mi_out_new (3), &procs));
 }
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 40d3699..29eccac 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -1161,9 +1161,7 @@
 
       /* If we changed interpreters, DON'T print out anything. */
       if (current_interp_named_p (INTERP_MI)
-	  || current_interp_named_p (INTERP_MI1)
-	  || current_interp_named_p (INTERP_MI2)
-	  || current_interp_named_p (INTERP_MI3))
+	  || current_interp_named_p (INTERP_MI1))
 	{
 	  /* print the result */
 	  /* FIXME: Check for errors here. */
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index ab860a7..d1d2e38 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -5540,6 +5540,25 @@
 }
 
 
+/* Return a location where we can set a breakpoint that will be hit
+   when an inferior function call returns.  This is normally the
+   program's entry point.  Executables that don't have an entry
+   point (e.g. programs in ROM) should define a symbol __CALL_DUMMY_ADDRESS
+   whose address is the location where the breakpoint should be placed.  */
+
+static CORE_ADDR
+mips_call_dummy_address (void)
+{
+  struct minimal_symbol *sym;
+
+  sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
+  if (sym)
+    return SYMBOL_VALUE_ADDRESS (sym);
+  else
+    return entry_point_address ();
+}
+
+
 /* When debugging a 64 MIPS target running a 32 bit ABI, the size of
    the register stored on the stack (32) is different to its real raw
    size (64).  The below ensures that registers are fetched from the
@@ -6094,10 +6113,7 @@
 
   /* MIPS version of CALL_DUMMY */
 
-  /* NOTE: cagney/2003-08-05: Eventually call dummy location will be
-     replaced by a command, and all targets will default to on stack
-     (regardless of the stack's execute status).  */
-  set_gdbarch_call_dummy_location (gdbarch, AT_SYMBOL);
+  set_gdbarch_call_dummy_address (gdbarch, mips_call_dummy_address);
   set_gdbarch_deprecated_pop_frame (gdbarch, mips_pop_frame);
   set_gdbarch_frame_align (gdbarch, mips_frame_align);
   set_gdbarch_deprecated_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
diff --git a/gdb/reggroups.c b/gdb/reggroups.c
index 7000957..791ec0a 100644
--- a/gdb/reggroups.c
+++ b/gdb/reggroups.c
@@ -132,18 +132,13 @@
   if (groups->first == NULL)
     groups = &default_groups;
 
-  /* Return the first/next reggroup.  */
+  /* Retun the first/next reggroup.  */
   if (last == NULL)
     return groups->first->group;
   for (el = groups->first; el != NULL; el = el->next)
     {
       if (el->group == last)
-	{
-	  if (el->next != NULL)
-	    return el->next->group;
-	  else
-	    return NULL;
-	}
+	return el->next->group;
     }
   return NULL;
 }
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 6265f90..9f3e9ea 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -2944,12 +2944,6 @@
 
   set_gdbarch_deprecated_fix_call_dummy (gdbarch, rs6000_fix_call_dummy);
   set_gdbarch_frame_align (gdbarch, rs6000_frame_align);
-  if (sysv_abi && wordsize == 8)
-    /* PPC64 SYSV.  */
-    set_gdbarch_frame_red_zone_size (gdbarch, 288);
-  else if (!sysv_abi && wordsize == 4)
-    /* PowerOpen / AIX 32 bit.  */
-    set_gdbarch_frame_red_zone_size (gdbarch, 220);
   set_gdbarch_deprecated_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
   set_gdbarch_deprecated_push_return_address (gdbarch, ppc_push_return_address);
   set_gdbarch_believe_pcc_promotion (gdbarch, 1);
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index 3ead64c..dc3e992 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -2034,7 +2034,7 @@
   return sp & ~3;
 }
 
-/* Function: sh_push_dummy_call (formerly push_arguments)
+/* Function: push_arguments
    Setup the function arguments for calling a function in the inferior.
 
    On the Hitachi SH architecture, there are four registers (R4 to R7)
@@ -2042,10 +2042,6 @@
    four arguments (depending on size) may go into these registers.
    The rest go on the stack.
 
-   MVS: Except on SH variants that have floating point registers.
-   In that case, float and double arguments are passed in the same
-   manner, but using FP registers instead of GP registers.
-
    Arguments that are smaller than 4 bytes will still take up a whole
    register or a whole 32-bit word on the stack, and will be 
    right-justified in the register or the stack word.  This includes
@@ -2059,11 +2055,6 @@
    that will be passed in this way; in other words, the convention of 
    passing a pointer to a large aggregate instead of a copy is not used.
 
-   MVS: The above appears to be true for the SH variants that do not
-   have an FPU, however those that have an FPU appear to copy the 
-   aggregate argument onto the stack (and not place it in registers)
-   if it is larger than 16 bytes (four GP registers).
-
    An exceptional case exists for struct arguments (and possibly other
    aggregates such as arrays) if the size is larger than 4 bytes but 
    not a multiple of 4 bytes.  In this case the argument is never split 
@@ -2087,124 +2078,11 @@
    to R7.   */
 
 static CORE_ADDR
-sh_push_dummy_call_fpu (struct gdbarch *gdbarch, 
-			CORE_ADDR func_addr,
-			struct regcache *regcache, 
-			CORE_ADDR bp_addr, int nargs,
-			struct value **args, 
-			CORE_ADDR sp, int struct_return,
-			CORE_ADDR struct_addr)
-{
-  int stack_offset, stack_alloc;
-  int argreg, flt_argreg;
-  int argnum;
-  struct type *type;
-  CORE_ADDR regval;
-  char *val;
-  char valbuf[4];
-  int len;
-  int odd_sized_struct;
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); 
+sh_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
+		    struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
+		    struct value **args, CORE_ADDR sp, int struct_return,
+		    CORE_ADDR struct_addr)
 
-  /* first force sp to a 4-byte alignment */
-  sp = sh_frame_align (gdbarch, sp);
-
-  /* The "struct return pointer" pseudo-argument has its own dedicated 
-     register */
-  if (struct_return)
-    regcache_cooked_write_unsigned (regcache, 
-				    STRUCT_RETURN_REGNUM, 
-				    struct_addr);
-
-  /* Now make sure there's space on the stack */
-  for (argnum = 0, stack_alloc = 0; argnum < nargs; argnum++)
-    stack_alloc += ((TYPE_LENGTH (VALUE_TYPE (args[argnum])) + 3) & ~3);
-  sp -= stack_alloc;		/* make room on stack for args */
-
-  /* Now load as many as possible of the first arguments into
-     registers, and push the rest onto the stack.  There are 16 bytes
-     in four registers available.  Loop thru args from first to last.  */
-
-  argreg = tdep->ARG0_REGNUM;
-  flt_argreg = tdep->FLOAT_ARG0_REGNUM;
-  for (argnum = 0, stack_offset = 0; argnum < nargs; argnum++)
-    {
-      type = VALUE_TYPE (args[argnum]);
-      len = TYPE_LENGTH (type);
-      memset (valbuf, 0, sizeof (valbuf));
-      if (len < 4)
-	{
-	  /* value gets right-justified in the register or stack word */
-	  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-	    memcpy (valbuf + (4 - len),
-		    (char *) VALUE_CONTENTS (args[argnum]), len);
-	  else
-	    memcpy (valbuf, (char *) VALUE_CONTENTS (args[argnum]), len);
-	  val = valbuf;
-	}
-      else
-	val = (char *) VALUE_CONTENTS (args[argnum]);
-
-      if (len > 4 && (len & 3) != 0)
-	odd_sized_struct = 1;	/* Such structs go entirely on stack.  */
-      else if (len > 16)
-	odd_sized_struct = 1;	/* So do aggregates bigger than 4 words.  */
-      else
-	odd_sized_struct = 0;
-      while (len > 0)
-	{
-	  if ((TYPE_CODE (type) == TYPE_CODE_FLT 
-	       && flt_argreg > tdep->FLOAT_ARGLAST_REGNUM) 
-	      || argreg > tdep->ARGLAST_REGNUM
-	      || odd_sized_struct)
-	    {			
-	      /* must go on the stack */
-	      write_memory (sp + stack_offset, val, 4);
-	      stack_offset += 4;
-	    }
-	  /* NOTE WELL!!!!!  This is not an "else if" clause!!!
-	     That's because some *&^%$ things get passed on the stack
-	     AND in the registers!   */
-	  if (TYPE_CODE (type) == TYPE_CODE_FLT &&
-	      flt_argreg > 0 && flt_argreg <= tdep->FLOAT_ARGLAST_REGNUM)
-	    {
-	      /* Argument goes in a single-precision fp reg.  */
-	      regval = extract_unsigned_integer (val, register_size (gdbarch,
-								     argreg));
-	      regcache_cooked_write_unsigned (regcache, flt_argreg++, regval);
-	    }
-	  else if (argreg <= tdep->ARGLAST_REGNUM)
-	    {			
-	      /* there's room in a register */
-	      regval = extract_unsigned_integer (val, register_size (gdbarch,
-								     argreg));
-	      regcache_cooked_write_unsigned (regcache, argreg++, regval);
-	    }
-	  /* Store the value 4 bytes at a time.  This means that things
-	     larger than 4 bytes may go partly in registers and partly
-	     on the stack.  */
-	  len -= register_size (gdbarch, argreg);
-	  val += register_size (gdbarch, argreg);
-	}
-    }
-
-  /* Store return address. */
-  regcache_cooked_write_unsigned (regcache, tdep->PR_REGNUM, bp_addr);
-
-  /* Update stack pointer.  */
-  regcache_cooked_write_unsigned (regcache, SP_REGNUM, sp);
-
-  return sp;
-}
-
-static CORE_ADDR
-sh_push_dummy_call_nofpu (struct gdbarch *gdbarch, 
-			  CORE_ADDR func_addr,
-			  struct regcache *regcache, 
-			  CORE_ADDR bp_addr, 
-			  int nargs, struct value **args, 
-			  CORE_ADDR sp, int struct_return, 
-			  CORE_ADDR struct_addr)
 {
   int stack_offset, stack_alloc;
   int argreg;
@@ -2223,9 +2101,7 @@
   /* The "struct return pointer" pseudo-argument has its own dedicated 
      register */
   if (struct_return)
-    regcache_cooked_write_unsigned (regcache, 
-				    STRUCT_RETURN_REGNUM, 
-				    struct_addr);
+    regcache_cooked_write_unsigned (regcache, STRUCT_RETURN_REGNUM, struct_addr);
 
   /* Now make sure there's space on the stack */
   for (argnum = 0, stack_alloc = 0; argnum < nargs; argnum++)
@@ -4498,7 +4374,7 @@
       set_gdbarch_push_dummy_code (gdbarch, sh_push_dummy_code);
       set_gdbarch_store_return_value (gdbarch, sh_default_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
 
       set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
@@ -4511,7 +4387,7 @@
       set_gdbarch_push_dummy_code (gdbarch, sh_push_dummy_code);
       set_gdbarch_store_return_value (gdbarch, sh_default_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
 
       set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
@@ -4528,16 +4404,13 @@
       set_gdbarch_fp0_regnum (gdbarch, 25);
       set_gdbarch_store_return_value (gdbarch, sh3e_sh4_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->FPUL_REGNUM = 23;
       tdep->FPSCR_REGNUM = 24;
       tdep->FP_LAST_REGNUM = 40;
-      tdep->FLOAT_ARG0_REGNUM = 29;	/* FIXME use constants! */
-      tdep->FLOAT_ARGLAST_REGNUM = 36;	/* FIXME use constants! */
 
-      set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, 
-						    sh_nofp_frame_init_saved_regs);
+      set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
       break;
     case bfd_mach_sh_dsp:
       set_gdbarch_register_name (gdbarch, sh_sh_dsp_register_name);
@@ -4548,7 +4421,7 @@
       set_gdbarch_register_sim_regno (gdbarch, sh_dsp_register_sim_regno);
       set_gdbarch_store_return_value (gdbarch, sh_default_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->DSR_REGNUM = 24;
       tdep->A0G_REGNUM = 25;
@@ -4575,7 +4448,7 @@
       set_gdbarch_push_dummy_code (gdbarch, sh_push_dummy_code);
       set_gdbarch_store_return_value (gdbarch, sh_default_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->SSR_REGNUM = 41;
       tdep->SPC_REGNUM = 42;
@@ -4594,13 +4467,11 @@
       set_gdbarch_fp0_regnum (gdbarch, 25);
       set_gdbarch_store_return_value (gdbarch, sh3e_sh4_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->FPUL_REGNUM = 23;
       tdep->FPSCR_REGNUM = 24;
       tdep->FP_LAST_REGNUM = 40;
-      tdep->FLOAT_ARG0_REGNUM = 29;	/* FIXME use constants! */
-      tdep->FLOAT_ARGLAST_REGNUM = 36;	/* FIXME use constants! */
       tdep->SSR_REGNUM = 41;
       tdep->SPC_REGNUM = 42;
 
@@ -4615,7 +4486,7 @@
       set_gdbarch_register_sim_regno (gdbarch, sh_dsp_register_sim_regno);
       set_gdbarch_store_return_value (gdbarch, sh_default_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->DSR_REGNUM = 24;
       tdep->A0G_REGNUM = 25;
@@ -4648,7 +4519,7 @@
       set_gdbarch_pseudo_register_write (gdbarch, sh_pseudo_register_write);
       set_gdbarch_store_return_value (gdbarch, sh3e_sh4_store_return_value);
       set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
-      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
+      set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call);
       set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
       tdep->FPUL_REGNUM = 23;
       tdep->FPSCR_REGNUM = 24;
@@ -4659,8 +4530,6 @@
       tdep->DR_LAST_REGNUM = 66;
       tdep->FV0_REGNUM = 67;
       tdep->FV_LAST_REGNUM = 70;
-      tdep->FLOAT_ARG0_REGNUM = 29;	/* FIXME use constants! */
-      tdep->FLOAT_ARGLAST_REGNUM = 36;	/* FIXME use constants! */
 
       set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_fp_frame_init_saved_regs);
       break;
diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
index c35964a..1b9c8fe 100644
--- a/gdb/sh-tdep.h
+++ b/gdb/sh-tdep.h
@@ -85,8 +85,7 @@
     int FV_LAST_C_REGNUM; /*                            sh5-compact*/
     int ARG0_REGNUM;
     int ARGLAST_REGNUM;
-    int FLOAT_ARG0_REGNUM;	/* sh4 */
-    int FLOAT_ARGLAST_REGNUM;	/* sh4, sh5 */
+    int FLOAT_ARGLAST_REGNUM;
     int RETURN_REGNUM;
     enum sh_abi sh_abi;
   };
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
index a96e8cb..8e2c4ad 100644
--- a/gdb/sol-thread.c
+++ b/gdb/sol-thread.c
@@ -646,10 +646,10 @@
 
   if (regno != -1)
     {				/* Not writing all the regs */
-      char old_value[MAX_REGISTER_SIZE];
-      
-      /* Save new register value.  */
-      regcache_collect (regno, old_value);
+      /* save new register value */
+      char* old_value = (char*) alloca (DEPRECATED_REGISTER_SIZE);
+      memcpy (old_value, &deprecated_registers[REGISTER_BYTE (regno)],
+	      DEPRECATED_REGISTER_SIZE);
 
       val = p_td_thr_getgregs (&thandle, gregset);
       if (val != TD_OK)
@@ -660,8 +660,9 @@
 	error ("sol_thread_store_registers: td_thr_getfpregs %s",
 	       td_err_string (val));
 
-      /* Restore new register value.  */
-      supply_register (regno, old_value);
+      /* restore new register value */
+      memcpy (&deprecated_registers[REGISTER_BYTE (regno)], old_value,
+	      DEPRECATED_REGISTER_SIZE);
 
 #if 0
 /* thread_db doesn't seem to handle this right */
diff --git a/gdb/symfile.c b/gdb/symfile.c
index b1ff445..839a7bc 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1377,6 +1377,10 @@
       || our_flavour == bfd_target_tekhex_flavour)
     return;	/* No symbols. */
 
+  /* Special kludge for apollo.  See dstread.c.  */
+  if (STREQN (our_target, "apollo", 6))
+    our_flavour = (enum bfd_flavour) -2;
+
   for (sf = symtab_fns; sf != NULL; sf = sf->next)
     {
       if (our_flavour == sf->sym_flavour)
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 48afabb..ddf8748 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -945,14 +945,6 @@
 {
   struct symbol *sym;
 
-  /* Make sure we do something sensible with is_a_field_of_this, since
-     the callers that set this parameter to some non-null value will
-     certainly use it later and expect it to be either 0 or 1.
-     If we don't set it, the contents of is_a_field_of_this are
-     undefined.  */
-  if (is_a_field_of_this != NULL)
-    *is_a_field_of_this = 0;
-
   /* Search specified block and its superiors.  Don't search
      STATIC_BLOCK or GLOBAL_BLOCK.  */
 
@@ -969,6 +961,7 @@
     {
       struct value *v = current_language->la_value_of_this (0);
 
+      *is_a_field_of_this = 0;
       if (v && check_field (v, name))
 	{
 	  *is_a_field_of_this = 1;
diff --git a/gdb/symtab.h b/gdb/symtab.h
index a7f1e30..29df929 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -35,6 +35,17 @@
 struct axs_value;
 struct agent_expr;
 
+/* Don't do this; it means that if some .o's are compiled with GNU C
+   and some are not (easy to do accidentally the way we configure
+   things; also it is a pain to have to "make clean" every time you
+   want to switch compilers), then GDB dies a horrible death.  */
+/* GNU C supports enums that are bitfields.  Some compilers don't. */
+#if 0 && defined(__GNUC__) && !defined(BYTE_BITFIELD)
+#define	BYTE_BITFIELD	:8;
+#else
+#define	BYTE_BITFIELD		/*nothing */
+#endif
+
 /* Define a structure for the information that is common to all symbol types,
    including minimal symbols, partial symbols, and full symbols.  In a
    multilanguage environment, some language specific information may need to
@@ -96,7 +107,7 @@
      This is used to select one of the fields from the language specific
      union above. */
 
-  ENUM_BITFIELD(language) language : 8;
+  enum language language BYTE_BITFIELD;
 
   /* Which section is this symbol in?  This is an index into
      section_offsets for this objfile.  Negative means that the symbol
@@ -216,37 +227,6 @@
 #define SYMBOL_MATCHES_NATURAL_NAME(symbol, name)			\
   (strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
 
-/* Classification types for a minimal symbol.  These should be taken as
-   "advisory only", since if gdb can't easily figure out a
-   classification it simply selects mst_unknown.  It may also have to
-   guess when it can't figure out which is a better match between two
-   types (mst_data versus mst_bss) for example.  Since the minimal
-   symbol info is sometimes derived from the BFD library's view of a
-   file, we need to live with what information bfd supplies. */
-
-enum minimal_symbol_type
-{
-  mst_unknown = 0,		/* Unknown type, the default */
-  mst_text,			/* Generally executable instructions */
-  mst_data,			/* Generally initialized data */
-  mst_bss,			/* Generally uninitialized data */
-  mst_abs,			/* Generally absolute (nonrelocatable) */
-  /* GDB uses mst_solib_trampoline for the start address of a shared
-     library trampoline entry.  Breakpoints for shared library functions
-     are put there if the shared library is not yet loaded.
-     After the shared library is loaded, lookup_minimal_symbol will
-     prefer the minimal symbol from the shared library (usually
-     a mst_text symbol) over the mst_solib_trampoline symbol, and the
-     breakpoints will be moved to their true address in the shared
-     library via breakpoint_re_set.  */
-  mst_solib_trampoline,		/* Shared library trampoline code */
-  /* For the mst_file* types, the names are only guaranteed to be unique
-     within a given .o file.  */
-  mst_file_text,		/* Static version of mst_text */
-  mst_file_data,		/* Static version of mst_data */
-  mst_file_bss			/* Static version of mst_bss */
-};
-
 /* Define a simple structure used to hold some very basic information about
    all defined global symbols (text, data, bss, abs, etc).  The only required
    information is the general_symbol_info.
@@ -288,9 +268,37 @@
   char *filename;
 #endif
 
-  /* Classification type for this minimal symbol.  */
+  /* Classification types for this symbol.  These should be taken as "advisory
+     only", since if gdb can't easily figure out a classification it simply
+     selects mst_unknown.  It may also have to guess when it can't figure out
+     which is a better match between two types (mst_data versus mst_bss) for
+     example.  Since the minimal symbol info is sometimes derived from the
+     BFD library's view of a file, we need to live with what information bfd
+     supplies. */
 
-  ENUM_BITFIELD(minimal_symbol_type) type : 8;
+  enum minimal_symbol_type
+  {
+    mst_unknown = 0,		/* Unknown type, the default */
+    mst_text,			/* Generally executable instructions */
+    mst_data,			/* Generally initialized data */
+    mst_bss,			/* Generally uninitialized data */
+    mst_abs,			/* Generally absolute (nonrelocatable) */
+    /* GDB uses mst_solib_trampoline for the start address of a shared
+       library trampoline entry.  Breakpoints for shared library functions
+       are put there if the shared library is not yet loaded.
+       After the shared library is loaded, lookup_minimal_symbol will
+       prefer the minimal symbol from the shared library (usually
+       a mst_text symbol) over the mst_solib_trampoline symbol, and the
+       breakpoints will be moved to their true address in the shared
+       library via breakpoint_re_set.  */
+    mst_solib_trampoline,	/* Shared library trampoline code */
+    /* For the mst_file* types, the names are only guaranteed to be unique
+       within a given .o file.  */
+    mst_file_text,		/* Static version of mst_text */
+    mst_file_data,		/* Static version of mst_data */
+    mst_file_bss		/* Static version of mst_bss */
+  }
+  type BYTE_BITFIELD;
 
   /* Minimal symbols with the same hash key are kept on a linked
      list.  This is the link.  */
@@ -313,7 +321,7 @@
 /* Different name domains for symbols.  Looking up a symbol specifies a
    domain and ignores symbol definitions in other name domains. */
 
-typedef enum domain_enum_tag
+typedef enum
 {
   /* UNDEF_DOMAIN is used when a domain has not been discovered or
      none of the following apply.  This usually indicates an error either
@@ -570,11 +578,11 @@
 
   /* Domain code.  */
 
-  ENUM_BITFIELD(domain_enum_tag) domain : 6;
+  domain_enum domain BYTE_BITFIELD;
 
   /* Address class */
 
-  ENUM_BITFIELD(address_class) aclass : 6;
+  enum address_class aclass BYTE_BITFIELD;
 
   /* Line number of definition.  FIXME:  Should we really make the assumption
      that nobody will try to debug files longer than 64K lines?  What about
@@ -647,11 +655,11 @@
 
   /* Name space code.  */
 
-  ENUM_BITFIELD(domain_enum_tag) domain : 6;
+  domain_enum domain BYTE_BITFIELD;
 
   /* Address class (for info_symbols) */
 
-  ENUM_BITFIELD(address_class) aclass : 6;
+  enum address_class aclass BYTE_BITFIELD;
 
 };
 
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 8657935..bde28ab 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,58 +1,3 @@
-2003-08-18  Mark Kettenis  <kettenis@gnu.org>
-
-	* gdb.arch/i386-prologue.exp: Add testcase for PR backtrace/1338.
-	* gdb.arch/i386-prologue.c (gdb1338): Add function.
-
-2003-08-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* mi-var-display.exp (-var-list-children weird): Accept function
-	pointers with argument types.
-	* mi1-var-display.exp (-var-list-children weird): Likewise.
-	* mi2-var-display.exp (-var-list-children weird): Likewise.
-
-2003-08-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* gdb.base/annota3.exp: Add missing newline.
-
-2003-08-06  Michael Chastain  <mec@shout.net>
-
-	* gdb.java/jmisc1.exp: Add test for pr gdb/1322.
-
-2003-08-12  Michael Snyder  <msnyder@redhat.com>
-
-	* gdb.base/float.exp: Add test for SH.
-
-2003-08-10  Mark Kettenis  <kettenis@gnu.org>
-
-	* gdb.arch/i386-prologue.c, gdb.arch/i386-prologue.exp: New files.
-
-2003-08-07  Elena Zannoni  <ezannoni@redhat.com>
-
-       * gdb.base/completion.exp: Remove reduntant completion test
-       on filename.
-
-2003-08-07  Elena Zannoni  <ezannoni@redhat.com>
-
-        * gdb.base/attach.exp, gdb.base/detach.exp, gdb.base/gcore.exp,
-        gdb.mi/mi-basics.exp, gdb.threads/gcore-thread.exp,
-        gdb.trace/save-trace.exp: Make sure that full pathnames are
-        escaped correctly.
-
-2003-08-07  Elena Zannoni  <ezannoni@redhat.com>
-        
-        * configure.in: Don't generate config.h from config.hin.
-        * configure: Regenerate.
-        * config.hin: Remove file.
-        * gdb.mi/pthreads.c: Remove include of config.h, and other ifdefs.
-        * gdb.threads/pthreads.c: Ditto.
-
-2003-08-07  Daniel Jacobowitz  <drow@mvista.com>
-
-	From Kei Sakamoto <sakamoto.kei@renesas.com>:
-	* gdb.asm/asm-source.exp : Add -lgloss to link-flags.
-	* gdb.asm/m32r.inc : Remove an illegal nop after bl instruction.
-	Replace ld24 with seth/add3.
-
 2003-08-02  Andrew Cagney  <cagney@redhat.com>
 
 	* gdb.base/annota3.exp: New file.
@@ -85,16 +30,6 @@
 	From Kei Sakamoto <sakamoto.kei@renesas.com>:
 	* gdb.base/relocate.c (dummy): New padding array.
 
-2003-07-22  Michael Snyder  <msnyder@redhat.com>
-
-	* gdb.disasm/8300s.s: Fix syntax of bsr insn.  
-
-	* gdb.disasm/h8300s.exp : Minor changes in disassembler output require
-	patterns to be more general, accepting old and new output.
-	Some output chars (such as '+') also must be quoted.
-	Some addresses are displayed numerically instead of 
-	symbolically.
-
 2003-07-23  Michael Snyder  <msnyder@redhat.com>
 
 	* gdb.base/return2.exp: Don't test long-long return.
diff --git a/gdb/testsuite/config.hin b/gdb/testsuite/config.hin
new file mode 100644
index 0000000..1333b97
--- /dev/null
+++ b/gdb/testsuite/config.hin
@@ -0,0 +1,4 @@
+/* config.hin.  Generated automatically from configure.in by autoheader.  */
+
+/* Define if you have the <pthread.h> header file.  */
+#undef HAVE_PTHREAD_H
diff --git a/gdb/testsuite/configure b/gdb/testsuite/configure
index eb505fe..31e3a07 100755
--- a/gdb/testsuite/configure
+++ b/gdb/testsuite/configure
@@ -34,7 +34,6 @@
 program_transform_name=s,x,x,
 silent=
 site=
-sitefile=
 srcdir=
 target=NONE
 verbose=
@@ -149,7 +148,6 @@
   --help                  print this message
   --no-create             do not create output files
   --quiet, --silent       do not print \`checking...' messages
-  --site-file=FILE        use FILE as the site file
   --version               print the version of autoconf that created configure
 Directory and file names:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -320,11 +318,6 @@
   -site=* | --site=* | --sit=*)
     site="$ac_optarg" ;;
 
-  -site-file | --site-file | --site-fil | --site-fi | --site-f)
-    ac_prev=sitefile ;;
-  -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
-    sitefile="$ac_optarg" ;;
-
   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
     ac_prev=srcdir ;;
   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
@@ -490,16 +483,12 @@
 srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
 
 # Prefer explicitly selected file to automatically selected ones.
-if test -z "$sitefile"; then
-  if test -z "$CONFIG_SITE"; then
-    if test "x$prefix" != xNONE; then
-      CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-    else
-      CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-    fi
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
   fi
-else
-  CONFIG_SITE="$sitefile"
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
@@ -539,6 +528,7 @@
 
 
 
+
 ac_aux_dir=
 for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   if test -f $ac_dir/install-sh; then
@@ -559,7 +549,7 @@
 ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:563: checking build system type" >&5
+echo "configure:553: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -583,7 +573,7 @@
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:587: checking host system type" >&5
+echo "configure:577: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -604,7 +594,7 @@
 echo "$ac_t""$host" 1>&6
 
 echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:608: checking target system type" >&5
+echo "configure:598: checking target system type" >&5
 
 target_alias=$target
 case "$target_alias" in
@@ -719,7 +709,7 @@
 
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:723: checking how to run the C preprocessor" >&5
+echo "configure:713: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -734,13 +724,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 738 "configure"
+#line 728 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -751,13 +741,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 755 "configure"
+#line 745 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -768,13 +758,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 772 "configure"
+#line 762 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -802,17 +792,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:806: checking for $ac_hdr" >&5
+echo "configure:796: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 811 "configure"
+#line 801 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -840,12 +830,12 @@
 
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:844: checking for Cygwin environment" >&5
+echo "configure:834: checking for Cygwin environment" >&5
 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 849 "configure"
+#line 839 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -856,7 +846,7 @@
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -873,19 +863,19 @@
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:877: checking for mingw32 environment" >&5
+echo "configure:867: checking for mingw32 environment" >&5
 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 882 "configure"
+#line 872 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -904,7 +894,7 @@
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:908: checking for executable suffix" >&5
+echo "configure:898: checking for executable suffix" >&5
 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -914,10 +904,10 @@
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
-      *.c | *.o | *.obj | *.ilk | *.pdb) ;;
+      *.c | *.o | *.obj) ;;
       *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
       esac
     done
@@ -1000,19 +990,7 @@
 
 trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
 
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ 	`~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
+DEFS=-DHAVE_CONFIG_H
 
 # Without the "./", some shells look in PATH for config.status.
 : ${CONFIG_STATUS=./config.status}
@@ -1051,7 +1029,7 @@
 
 trap 'rm -fr `echo "Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile \
   gdb.c++/Makefile gdb.disasm/Makefile gdb.java/Makefile gdb.mi/Makefile \
-  gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+  gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile config.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -1199,6 +1177,113 @@
 fi; done
 rm -f conftest.s*
 
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='\([ 	][ 	]*\)[^ 	]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='\([ 	]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+  CONFIG_HEADERS="config.h:config.hin"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h.  And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write a limited-size here document to conftest.frag.
+  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
diff --git a/gdb/testsuite/configure.in b/gdb/testsuite/configure.in
index 14300ec..f80b623 100644
--- a/gdb/testsuite/configure.in
+++ b/gdb/testsuite/configure.in
@@ -21,6 +21,7 @@
 
 AC_PREREQ(2.13)
 AC_INIT(gdb.base)
+AC_CONFIG_HEADER(config.h:config.hin)
 
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
diff --git a/gdb/testsuite/gdb.arch/i386-prologue.c b/gdb/testsuite/gdb.arch/i386-prologue.c
deleted file mode 100644
index 4c92a9c..0000000
--- a/gdb/testsuite/gdb.arch/i386-prologue.c
+++ /dev/null
@@ -1,37 +0,0 @@
-void gdb1253 (void);
-void gdb1338 (void);
-
-int
-main (void)
-{
-  gdb1253 ();
-  gdb1338 ();
-  return 0;
-}
-
-/* Relevant part of the prologue from symtab/1253.  */
-
-asm(".text\n"
-    "    .align 8\n"
-    "gdb1253:\n"
-    "    pushl %ebp\n"
-    "    xorl  %ecx, %ecx\n"
-    "    movl  %esp, %ebp\n"
-    "    pushl %edi\n"
-    "    int   $0x03\n"
-    "    leave\n"
-    "    ret\n");
-
-/* Relevant part of the prologue from backtrace/1338.  */
-
-asm(".text\n"
-    "    .align 8\n"
-    "gdb1338:\n"
-    "    pushl %edi\n"
-    "    pushl %esi\n"
-    "    pushl %ebx\n"
-    "    int   $0x03\n"
-    "    popl  %ebx\n"
-    "    popl  %esi\n"
-    "    popl  %edi\n"
-    "    ret\n");
diff --git a/gdb/testsuite/gdb.arch/i386-prologue.exp b/gdb/testsuite/gdb.arch/i386-prologue.exp
deleted file mode 100644
index 68a3125..0000000
--- a/gdb/testsuite/gdb.arch/i386-prologue.exp
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@gnu.org
-
-# This file is part of the gdb testsuite.
-
-if $tracelevel {
-    strace $tracelevel
-}
-
-# Test i386 prologue analyzer.
-
-set prms_id 0
-set bug_id 0
-
-if ![istarget "i?86-*-*"] then {
-    verbose "Skipping i386 prologue tests."
-    return
-}
-
-set testfile "i386-prologue"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-#
-# Run to `main' where we begin our tests.
-#
-
-if ![runto_main] then {
-    gdb_suppress_tests
-}
-
-# Testcase from symtab/1253.
-
-gdb_test "continue" "Program received signal SIGTRAP.*" "continue to gdb1253"
-
-gdb_test "backtrace 10" \
-	"#0\[ \t\]*$hex in gdb1253.*\r\n#1\[ \t\]*$hex in main.*" \
-	"backtrace in gdb1253"
-
-# Testcase from backtrace/1338.
-
-gdb_test "continue" "Program received signal SIGTRAP.*" "continue to gdb1338"
-
-gdb_test "backtrace 10" \
-	"#0\[ \t\]*$hex in gdb1338.*\r\n#1\[ \t\]*$hex in main.*" \
-	"backtrace in gdb1338"
diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
index 7bebd09..3745e60 100644
--- a/gdb/testsuite/gdb.asm/asm-source.exp
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
@@ -69,7 +69,6 @@
     }
     "m32r*-*" {
         set asm-arch m32r
-        set link-flags "-Wl,--whole-archive -lgloss -Wl,--no-whole-archive"
     }
     "m6811-*-*" {
         set asm-arch m68hc11
diff --git a/gdb/testsuite/gdb.asm/m32r.inc b/gdb/testsuite/gdb.asm/m32r.inc
index fa104cd..6110373 100644
--- a/gdb/testsuite/gdb.asm/m32r.inc
+++ b/gdb/testsuite/gdb.asm/m32r.inc
@@ -11,7 +11,7 @@
 	.endm
 
 	.macro gdbasm_call subr
-	bl	\subr
+	bl	\subr -> nop
 	.endm
 
 	.macro gdbasm_several_nops
@@ -30,7 +30,6 @@
 
 	comment "crt0 startup"
 	.macro gdbasm_startup
-	seth sp, #shigh(_stack)
-	add3 sp, sp, #low(_stack)
+	ld24 sp,_stack
 	ldi fp,#0
 	.endm
diff --git a/gdb/testsuite/gdb.base/annota3.exp b/gdb/testsuite/gdb.base/annota3.exp
index 93086ef..09a2e5b 100644
--- a/gdb/testsuite/gdb.base/annota3.exp
+++ b/gdb/testsuite/gdb.base/annota3.exp
@@ -331,7 +331,7 @@
     "\r\n\032\032post-prompt\r\n"
     "\(\r\n\032\032frames-invalid\r\n\)+"
     "\r\n\032\032breakpoint 5\r\n"
-    "Breakpoint 5, main \\(\\) at .*annota3.c:46\r\n"
+    "Breakpoint 5, main \\(\\) at .*annota3.c:46"
     "\r\n\032\032source .*annota3.c:46:\[0-9\]+:beg:0x\[0-9a-z\]+\r\n"
     "1: value = 11\r\n"
     "\r\n\032\032stopped\r\n"
diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp
index ea11087..66e9f0e 100644
--- a/gdb/testsuite/gdb.base/attach.exp
+++ b/gdb/testsuite/gdb.base/attach.exp
@@ -45,7 +45,6 @@
 set srcfile2 ${testfile}2.c
 set binfile  ${objdir}/${subdir}/${testfile}
 set binfile2 ${objdir}/${subdir}/${testfile}2
-set escapedbinfile  [string_to_regexp ${objdir}/${subdir}/${testfile}]
 set cleanupfile ${objdir}/${subdir}/${testfile}.awk
 
 #execute_anywhere "rm -f ${binfile} ${binfile2}"
@@ -77,7 +76,6 @@
 proc do_attach_tests {} {
    global gdb_prompt
    global binfile
-   global escapedbinfile
    global srcfile
    global testfile
    global objdir
@@ -159,13 +157,13 @@
       -re "Load new symbol table from.*y or n.*$" {
          send_gdb "y\n"
          gdb_expect {
-            -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $"\
+            -re "Reading symbols from $binfile\.\.\.*done.*$gdb_prompt $"\
                             {pass "(re)set file, before attach1"}
             -re "$gdb_prompt $" {fail "(re)set file, before attach1"}
             timeout         {fail "(timeout) (re)set file, before attach1"}
          }
       }
-      -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $"\
+      -re "Reading symbols from $binfile\.\.\.*done.*$gdb_prompt $"\
                       {pass "set file, before attach1"}
       -re "$gdb_prompt $" {fail "set file, before attach1"}
       timeout         {fail "(timeout) set file, before attach1"}
@@ -173,7 +171,7 @@
 
    send_gdb "attach $testpid\n"
    gdb_expect {
-      -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*main.*at .*$srcfile:.*$gdb_prompt $"\
+      -re "Attaching to program.*`?$binfile'?, process $testpid.*main.*at .*$srcfile:.*$gdb_prompt $"\
                       {pass "attach1, after setting file"}
       -re "$gdb_prompt $" {fail "attach1, after setting file"}
       timeout         {fail "(timeout) attach1, after setting file"}
@@ -194,7 +192,7 @@
    #
    send_gdb "detach\n"
    gdb_expect {
-      -re "Detaching from program: .*$escapedbinfile.*$gdb_prompt $"\
+      -re "Detaching from program: .*$binfile.*$gdb_prompt $"\
                       {pass "attach1 detach"}
       -re "$gdb_prompt $" {fail "attach1 detach"}
       timeout         {fail "(timeout) attach1 detach"}
@@ -236,7 +234,7 @@
    #
    send_gdb "attach $testpid\n"
    gdb_expect {
-      -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $"\
+      -re "Attaching to process $testpid.*Reading symbols from $binfile.*main.*at .*$gdb_prompt $"\
                       {pass "attach2"}
       -re "$gdb_prompt $" {fail "attach2"}
       timeout         {fail "(timeout) attach2"}
@@ -337,7 +335,7 @@
 
    send_gdb "attach $testpid\n"
    gdb_expect {
-      -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $"\
+      -re "Attaching to process $testpid.*Reading symbols from $binfile.*main.*at .*$gdb_prompt $"\
                       {pass "attach when process' a.out not in cwd"}
       -re "$gdb_prompt $" {fail "attach when process' a.out not in cwd"}
       timeout         {fail "(timeout) attach when process' a.out not in cwd"}
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index a1ff58a..1ac5a50 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -611,7 +611,7 @@
 }
 
 
-# The following tests used to simply try to complete `${objdir}/file',
+# The following tests used to simply try to complete `${objdir}/Make',
 # and so on.  The problem is that ${objdir} can be very long; the
 # completed filename may be more than eighty characters wide.  When
 # this happens, readline tries to manage things, producing output that
@@ -619,7 +619,7 @@
 # recognize.
 #
 # In the case that motivated this change, the (gdb) prompt occupied
-# the leftmost six columns, and `${objdir}/' was seventy-four
+# the leftmost six columns, and `${objdump}/' was seventy-four
 # characters long --- eighty in all.  After printing the slash,
 # readline emitted a space, a carriage return, and then `Makefile'
 # (the tab character being received as input after `Make'.
@@ -631,6 +631,36 @@
 #
 # So, we avoid long lines.  We `cd' to ${objdir} first, and then do
 # the completion relative to the current directory.
+#
+# Note that if we are building in the source tree, then there will be
+# more than one completion for ./Make, so we need to handle that also.
+# A better long term solution might be to create a temporary directory,
+# populate it with a set of known names, and use that directory to
+# test completions.
+
+gdb_test "cd ${objdir}" "Working directory ${objdir}.*" "cd to \${objdir}"
+send_gdb "file ./Make\t"
+sleep 1
+gdb_expect  {
+        -re "^file ./Make(\\\x07|)file.*$"\
+            { send_gdb "\n"
+              gdb_expect {
+                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"\
+                      { send_gdb "n\n"
+                        gdb_expect {
+                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
+                                        { pass "complete 'file ./Make'"}
+                                -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"}
+                                timeout           {fail "(timeout) complete 'file ./Make'"}
+                               }
+                      }
+                      -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"}
+                      timeout           {fail "(timeout) complete 'file ./Make'"}
+                     }
+            }
+        -re ".*$gdb_prompt $"       { fail "complete 'file ./Make'" }
+        timeout         { fail "(timeout) complete 'file ./Make'" }
+        }
 
 # ${srcdir} may be a relative path.  We want to make sure we end up
 # in the right directory - so make sure we know where it is.
diff --git a/gdb/testsuite/gdb.base/detach.exp b/gdb/testsuite/gdb.base/detach.exp
index 1f86fec..1556cf9 100644
--- a/gdb/testsuite/gdb.base/detach.exp
+++ b/gdb/testsuite/gdb.base/detach.exp
@@ -40,7 +40,6 @@
 set testfile "attach"
 set srcfile  ${testfile}.c
 set binfile  ${objdir}/${subdir}/${testfile}
-set escapedbinfile  [string_to_regexp ${objdir}/${subdir}/${testfile}]
 
 if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
      gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
@@ -49,13 +48,12 @@
 proc do_detach_tests {} {
   global srcdir
   global binfile
-  global escapedbinfile
   global subdir
   global pass
 
   runto_main
   gdb_test "set should_exit = 1" "" "set should_exit, $pass"
-  gdb_test "detach" "Detaching from program: .*$escapedbinfile, .*" "detach, $pass"
+  gdb_test "detach" "Detaching from program: .*$binfile, .*" "detach, $pass"
 }
 
 # Start with a fresh gdb
diff --git a/gdb/testsuite/gdb.base/float.exp b/gdb/testsuite/gdb.base/float.exp
index 6c80fbb..f681e1f 100644
--- a/gdb/testsuite/gdb.base/float.exp
+++ b/gdb/testsuite/gdb.base/float.exp
@@ -63,16 +63,6 @@
     gdb_test "info float" "f0.*f1.*f127.*" "info float"
 } elseif [istarget "m68k-*-*"] then {
     gdb_test "info float" "fp0.*fp1.*fp7.*" "info float"
-} elseif [istarget "sh*-*"] then {
-    # SH may or may not have an FPU
-    gdb_test_multiple "info float" "info float" {
-	-re "fpul.*fr0.*fr1.*fr15.*$gdb_prompt $" {
-	      pass "info float (with FPU)"
-	  }
-	-re "No floating.point info available for this processor.*" {
-	      pass "info float (without FPU)"
-	}
-    }
 } else {
     gdb_test "info float" "No floating.point info available for this processor." "info float"
 }
diff --git a/gdb/testsuite/gdb.base/gcore.exp b/gdb/testsuite/gdb.base/gcore.exp
index 8c0ae8e..f8d5baa 100644
--- a/gdb/testsuite/gdb.base/gcore.exp
+++ b/gdb/testsuite/gdb.base/gcore.exp
@@ -104,10 +104,8 @@
 set pre_corefile_extern_array \
 	[capture_command_output "print extern_array" "$print_prefix"]
 
-set escapedfilename [string_to_regexp ${objdir}/${subdir}/gcore.test]
-
 gdb_test "gcore ${objdir}/${subdir}/gcore.test" \
-	"Saved corefile ${escapedfilename}" \
+	"Saved corefile ${objdir}/${subdir}/gcore.test" \
 	"save a corefile"
 
 # Now restart gdb and load the corefile.
diff --git a/gdb/testsuite/gdb.disasm/h8300s.exp b/gdb/testsuite/gdb.disasm/h8300s.exp
index dff165c..eeaf23b 100644
--- a/gdb/testsuite/gdb.disasm/h8300s.exp
+++ b/gdb/testsuite/gdb.disasm/h8300s.exp
@@ -189,22 +189,22 @@
     send_gdb "x/16i inc_dec_adds_subs_tests\n"
     gdb_expect {
 	-re "
-.*inc(.b|)\tr0l.*
-.*inc.w\t#(0x|)1,r4.*
-.*inc.w\t#(0x|)2,r3.*
-.*inc.l\t#(0x|)1,er2.*
-.*inc.l\t#(0x|)2,er1.*
+.*inc.b\tr0l.*
+.*inc.w\t#0x1,r4.*
+.*inc.w\t#0x2,r3.*
+.*inc.l\t#0x1,er2.*
+.*inc.l\t#0x2,er1.*
 .*dec.b\tr0l.*
-.*dec.w\t#(0x|)1,r4.*
-.*dec.w\t#(0x|)2,r3.*
-.*dec.l\t#(0x|)1,er2.*
-.*dec.l\t#(0x|)2,er1.*
-.*adds\t#(0x|)1,er7.*
-.*adds\t#(0x|)2,er6.*
-.*adds\t#(0x|)4,er5.*
-.*subs\t#(0x|)1,er7.*
-.*subs\t#(0x|)2,er6.*
-.*subs\t#(0x|)4,er5.*
+.*dec.w\t#0x1,r4.*
+.*dec.w\t#0x2,r3.*
+.*dec.l\t#0x1,er2.*
+.*dec.l\t#0x2,er1.*
+.*adds\t#0x1,er7.*
+.*adds\t#0x2,er6.*
+.*adds\t#0x4,er5.*
+.*subs\t#0x1,er7.*
+.*subs\t#0x2,er6.*
+.*subs\t#0x4,er5.*
 .*$gdb_prompt $" { pass "inc_dec_adds_subs_tests" }
 	-re "$gdb_prompt $" { fail "inc_dec_adds_subs_tests" }
 	timeout { fail "(timeout) inc_dec_adds_subs_tests" }
@@ -313,7 +313,7 @@
     gdb_expect {
 	-re "
 .*tas\t@er0.*
-.*mac\t@er1\\+,@er2\\+.*
+.*mac\t@er1+,@er2+.*
 .*clrmac.*
 .*ldmac\ter4,mach.*
 .*ldmac\ter5,macl.*
@@ -345,8 +345,8 @@
 .*or.w\tr1,r2.*
 .*or.l\t#0x12345678,er0.*
 .*or.l\ter1,er2.*
-.*xor(.b|)\t#0x12,r0l.*
-.*xor(.b|)\tr1l,r2h.*
+.*xor.b\t#0x12,r0l.*
+.*xor.b\tr1l,r2h.*
 .*xor.w\t#0x1234,r0.*
 .*xor.w\tr1,r2.*
 .*xor.l\t#0x12345678,er0.*
@@ -368,18 +368,18 @@
     send_gdb "x/12i sha_shl_tests\n"
     gdb_expect {
 	-re "
-.*shal(.b|)\tr0l.*
-.*shal(.w|)\tr1.*
-.*shal(.l|)\ter2.*
-.*shar(.b|)\tr3l.*
-.*shar(.w|)\tr4.*
-.*shar(.l|)\ter5.*
-.*shll(.b|)\tr0l.*
-.*shll(.w|)\tr1.*
-.*shll(.l|)\ter2.*
-.*shlr(.b|)\tr3l.*
-.*shlr(.w|)\tr4.*
-.*shlr(.l|)\ter5.*
+.*shal\tr0l.*
+.*shal\tr1.*
+.*shal\ter2.*
+.*shar\tr3l.*
+.*shar\tr4.*
+.*shar\ter5.*
+.*shll\tr0l.*
+.*shll\tr1.*
+.*shll\ter2.*
+.*shlr\tr3l.*
+.*shlr\tr4.*
+.*shlr\ter5.*
 .*$gdb_prompt $" { pass "sha_shl_tests" }
 	-re "$gdb_prompt $" { fail "sha_shl_tests" }
 	timeout { fail "(timeout) sha_shl_tests" }
@@ -394,18 +394,18 @@
     send_gdb "x/12i rot_rotx_tests\n"
     gdb_expect {
 	-re "
-.*rotl(.b|)\tr0l.*
-.*rotl(.w|)\tr1.*
-.*rotl(.l|)\ter2.*
-.*rotr(.b|)\tr3l.*
-.*rotr(.w|)\tr4.*
-.*rotr(.l|)\ter5.*
-.*rotxl(.b|)\tr0l.*
-.*rotxl(.w|)\tr1.*
-.*rotxl(.l|)\ter2.*
-.*rotxr(.b|)\tr3l.*
-.*rotxr(.w|)\tr4.*
-.*rotxr(.l|)\ter5.*
+.*rotl\tr0l.*
+.*rotl\tr1.*
+.*rotl\ter2.*
+.*rotr\tr3l.*
+.*rotr\tr4.*
+.*rotr\ter5.*
+.*rotxl\tr0l.*
+.*rotxl\tr1.*
+.*rotxl\ter2.*
+.*rotxr\tr3l.*
+.*rotxr\tr4.*
+.*rotxr\ter5.*
 .*$gdb_prompt $" { pass "rot_rotx_tests" }
 	-re "$gdb_prompt $" { fail "rot_rotx_tests" }
 	timeout { fail "(timeout) rot_rotx_tests" }
@@ -551,30 +551,30 @@
     send_gdb "x/25i branch_tests\n"
     gdb_expect {
 	-re "
-.*bra\t(branch_tests|.-2 ).*
-.*brn\t(branch_tests|.-4 ).*
-.*bhi\t(branch_tests|.-6 ).*
-.*bls\t(branch_tests|.-8 ).*
-.*bcc\t(branch_tests|.-10 ).*
-.*bcs\t(branch_tests|.-12 ).*
-.*bne\t(branch_tests|.-14 ).*
-.*beq\t(branch_tests|.-16 ).*
-.*bvc\t(branch_tests|.-18 ).*
-.*bvs\t(branch_tests|.-20 ).*
-.*bpl\t(branch_tests|.-22 ).*
-.*bmi\t(branch_tests|.-24 ).*
-.*bge\t(branch_tests|.-26 ).*
-.*blt\t(branch_tests|.-28 ).*
-.*bgt\t(branch_tests|.-30 ).*
-.*ble\t(branch_tests|.-32 ).*
+.*bra\tbranch_tests.*
+.*brn\tbranch_tests.*
+.*bhi\tbranch_tests.*
+.*bls\tbranch_tests.*
+.*bcc\tbranch_tests.*
+.*bcs\tbranch_tests.*
+.*bne\tbranch_tests.*
+.*beq\tbranch_tests.*
+.*bvc\tbranch_tests.*
+.*bvs\tbranch_tests.*
+.*bpl\tbranch_tests.*
+.*bmi\tbranch_tests.*
+.*bge\tbranch_tests.*
+.*blt\tbranch_tests.*
+.*bgt\tbranch_tests.*
+.*ble\tbranch_tests.*
 .*jmp\t@er0.*
-.*jmp\t@(branch_tests|0x).*
-.*jmp\t@@0 \\((0x|)0\\).*
-.*bsr\t(branch_tests|.-42 ).*
-.*bsr\t(branch_tests|.-46 ).*
+.*jmp\t@branch_tests.*
+.*jmp\t@@0 (0).*
+.*bsr\tbranch_tests.*
+.*bsr\tbranch_tests.*
 .*jsr\t@er0.*
-.*jsr\t@(branch_tests|0x).*
-.*jsr\t@@0 \\((0x|)0\\).*
+.*jsr\t@branch_tests.*
+.*jsr\t@@0 (0).*
 .*rts.*
 .*$gdb_prompt $" { pass "branch_tests" }
 	-re "$gdb_prompt $" { fail "branch_tests" }
diff --git a/gdb/testsuite/gdb.disasm/h8300s.s b/gdb/testsuite/gdb.disasm/h8300s.s
index 6510d40..ec66a55 100644
--- a/gdb/testsuite/gdb.disasm/h8300s.s
+++ b/gdb/testsuite/gdb.disasm/h8300s.s
@@ -302,8 +302,8 @@
 	jmp	@er0
 	jmp	@branch_tests
 	jmp	@@0 (0)
-	bsr	branch_tests:8
-	bsr	branch_tests:16
+	bsr	@branch_tests:8
+	bsr	@branch_tests:16
 	jsr	@er0
 	jsr	@branch_tests
 	jsr	@@0 (0)
diff --git a/gdb/testsuite/gdb.java/jmisc1.exp b/gdb/testsuite/gdb.java/jmisc1.exp
index dd5af98..eea559e 100644
--- a/gdb/testsuite/gdb.java/jmisc1.exp
+++ b/gdb/testsuite/gdb.java/jmisc1.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -88,30 +88,4 @@
 	-re ".*$gdb_prompt $"             { fail "p *args" }
 	timeout { fail "p *args (timeout)" ; return }
     }
-
-    # The idea of running to 'exit' is that 'exit' is in a different
-    # objfile from the rest of the program (provided that program is
-    # linked normally with a shared libc).  That causes gdb to examine
-    # fresh objfiles.  There is nothing important about 'exit'
-    # semantics; it could be any symbol that is in a shared library.
-    # -- chastain 2003-08-06
-
-    gdb_test "break exit" ".*Breakpoint $decimal at .*"
-    gdb_test_multiple "continue" "continue to exit" {
-	-re ".*Breakpoint $decimal, .*exit.*$gdb_prompt $" {
-	    pass "continue to exit"
-	}
-	-re ".*internal-error: sect_index_text not initialized.*\\(y or n\\) " {
-	    # gdb choked on the "anonymous objfile" (probably).
-	    kfail "gdb/1322" "continue to exit"
-	    # get back to the gdb prompt
-	    gdb_test_multiple "no" "internal sync 1" {
-		-re ".*\\(y or n\\) " {
-		    gdb_test_multiple "no" "internal sync 2" {
-			-re ".*$gdb_prompt $" { ; }
-		    }
-		}
-	    }
-	}
-    }
 }
diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog
index 6f263c3..e4aec35 100644
--- a/gdb/testsuite/gdb.mi/ChangeLog
+++ b/gdb/testsuite/gdb.mi/ChangeLog
@@ -1,14 +1,3 @@
-2003-08-07  Andrew Cagney  <cagney@redhat.com>
-
-	* mi2-basics.exp: Copy base MI .exp file, set MIFLAGS to -i=mi2.
-	* mi2-break.exp, mi2-cli.exp, mi2-console.exp: Ditto.
-	* mi2-disassemble.exp, mi2-eval.exp, mi2-file.exp: Ditto.
-	* mi2-hack-cli.exp, mi2-pthreads.exp, mi2-read-memory.exp: Ditto.
-	* mi2-regs.exp, mi2-return.exp, mi2-simplerun.exp: Ditto.
-	* mi2-stack.exp, mi2-stepi.exp, mi2-syn-frame.exp: Ditto.
-	* mi2-until.exp, mi2-var-block.exp, mi2-var-child.exp: Ditto.
-	* mi2-var-cmd.exp, mi2-var-display.exp, mi2-watch.exp: Ditto.
-
 2003-05-03  J. Brobecker  <brobecker@gnat.com>
 
 	From Thierry Schneider  <tpschneider1@yahoo.com>:
diff --git a/gdb/testsuite/gdb.mi/mi-basics.exp b/gdb/testsuite/gdb.mi/mi-basics.exp
index 9377baf..98ffe1d 100644
--- a/gdb/testsuite/gdb.mi/mi-basics.exp
+++ b/gdb/testsuite/gdb.mi/mi-basics.exp
@@ -40,9 +40,6 @@
 set testfile "basics"
 set srcfile ${testfile}.c
 set binfile ${objdir}/${subdir}/${testfile}
-set escapedobjdir [string_to_regexp ${objdir}]
-set escapedsrcdir [string_to_regexp ${srcdir}]
-
 if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
      gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
 }
@@ -157,25 +154,25 @@
     # -environment-directory 
     # -environment-directory -r
 
-    set envirodir [string_to_regexp ${srcdir}/${subdir}]
-
+#exp_internal 1
     mi_gdb_test "202-environment-directory ${srcdir}/${subdir}" \
-             "\\\^done,source-path=\"${envirodir}.\\\$cdir.\\\$cwd\"" \
+             "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
              "environment-directory arg operation"
 
     mi_gdb_test "203-environment-directory" \
-             "\\\^done,source-path=\"${envirodir}.\\\$cdir.\\\$cwd\"" \
+             "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
              "environment-directory empty-string operation"
 
     mi_gdb_test "204-environment-directory -r" \
              "\\\^done,source-path=\"\\\$cdir.\\\$cwd\"" \
              "environment-directory operation"
+
+#exp_internal 0
 }
 
 proc test_cwd_specification {} {
     global mi_gdb_prompt
     global objdir
-    global escapedobjdir
     global subdir
 
     # Change the working directory, then print the current working directory
@@ -188,7 +185,7 @@
              "environment-cd arg operation"
 
     mi_gdb_test "206-environment-pwd" \
-             "\\\^done,cwd=\"${escapedobjdir}\"" \
+             "\\\^done,cwd=\"${objdir}\"" \
              "environment-pwd operation"
 }
 
@@ -197,8 +194,6 @@
     global orig_path
     global objdir
     global srcdir
-    global escapedobjdir
-    global escapedsrcdir
 
     # Add to the path, display, then reset 
     # Tests:
@@ -207,6 +202,8 @@
     # -environment-path -r dir
     # -environment-path -r
 
+#exp_internal 1
+
     send_gdb "-environment-path\n"
     gdb_expect 20 {
 	-re "\\\^done,path=\"\(.*\)\"\r\n$mi_gdb_prompt" { 
@@ -223,17 +220,18 @@
              "environment-path no-args operation"
 
     mi_gdb_test "208-environment-path $srcdir $objdir" \
-             "\\\^done,path=\"$escapedsrcdir.$escapedobjdir.$orig_path\"" \
+             "\\\^done,path=\"$srcdir.$objdir.$orig_path\"" \
              "environment-path dir1 dir2 operation"
 
     mi_gdb_test "209-environment-path -r $objdir" \
-             "\\\^done,path=\"$escapedobjdir.$orig_path\"" \
+             "\\\^done,path=\"$objdir.$orig_path\"" \
              "environment-path -r dir operation"
 
     mi_gdb_test "210-environment-path -r" \
              "\\\^done,path=\"$orig_path\"" \
              "environment-path -r operation"
 
+#exp_internal 0
 } 
 
 if [test_mi_interpreter_selection] {
diff --git a/gdb/testsuite/gdb.mi/mi-var-display.exp b/gdb/testsuite/gdb.mi/mi-var-display.exp
index ab5a17b..fafa79a 100644
--- a/gdb/testsuite/gdb.mi/mi-var-display.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-display.exp
@@ -183,7 +183,7 @@
 	"create local variable weird"
 
 mi_gdb_test "-var-list-children weird" \
-	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void|)\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
+	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\(\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\(\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\(\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
 	"get children local variable weird"
 
 
diff --git a/gdb/testsuite/gdb.mi/mi1-var-display.exp b/gdb/testsuite/gdb.mi/mi1-var-display.exp
index 593a1c0..0bdaee4 100644
--- a/gdb/testsuite/gdb.mi/mi1-var-display.exp
+++ b/gdb/testsuite/gdb.mi/mi1-var-display.exp
@@ -183,7 +183,7 @@
 	"create local variable weird"
 
 mi_gdb_test "-var-list-children weird" \
-	"\\^done,numchild=\"11\",children=\{child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void|)\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\}" \
+	"\\^done,numchild=\"11\",children=\{child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\(\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\(\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\(\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\}" \
 	"get children local variable weird"
 
 
diff --git a/gdb/testsuite/gdb.mi/mi2-basics.exp b/gdb/testsuite/gdb.mi/mi2-basics.exp
deleted file mode 100644
index 44d2e4b..0000000
--- a/gdb/testsuite/gdb.mi/mi2-basics.exp
+++ /dev/null
@@ -1,246 +0,0 @@
-#   Copyright 1999, 2000 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# test basic Machine interface (MI) operations
-#
-# Verify that, using the MI, we can load a program and do
-# other basic things that are used by all test files through  mi_gdb_exit,
-# mi_gdb_start, mi_delete_breakpoints, mi_gdb_reinitialize_dir and
-# mi_gdb_load, so we can safely use those.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but the command syntax and correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-# In this file we want to test if the operations needed by the following
-# procedures work, so it makes no sense using them here.
-
-# mi_delete_breakpoints
-# mi_gdb_reinitialize_dir $srcdir/$subdir
-# mi_gdb_load ${binfile}
-
-# Test if the MI interpreter has been configured
-
-proc test_mi_interpreter_selection {} {
-    global mi_gdb_prompt
-    global gdb_prompt
-
-    # All this test expects is to get the prompt back
-    # with no syntax error message
-    send_gdb "-gdb-version\n"
-    gdb_expect {
-           -re "GNU gdb .*\r\n$mi_gdb_prompt$" \
-               { pass "acceptance of MI operations" 
-                 return 1}
-           -re ".*\r\n$mi_gdb_prompt$" \
-               { fail "acceptance of MI operations"
-                 note "Skipping all other MI tests." }
-           -re "Undefined command.*$gdb_prompt $" \
-               { fail "acceptance of MI operations"
-                 note "Skipping all other MI tests." }
-           -re ".*$gdb_prompt $" \
-               { fail "acceptance of MI operations"
-                 note "Skipping all other MI tests." }
-           timeout { fail "acceptance of MI operations (timeout)"
-                     note "Skipping all other MI tests." }
-    }
-    return 0
-}
-
-proc test_exec_and_symbol_mi_operatons {} {
-    global mi_gdb_prompt
-    global binfile
-
-    # Load symbols and specify executable on a single operation
-    # Tests:
-    # -file-exec-and-symbols
-
-    # Can't use mi_gdb_test as if this doesn't work,
-    #  we must give up on the whole test file
-    send_gdb "-file-exec-and-symbols ${binfile}\n"
-    gdb_expect {
-           -re "\[\r\n\]*\\\^done\r\n$mi_gdb_prompt$" \
-               { pass "file-exec-and-symbols operation" }
-           timeout { fail "file-exec-and-symbols operation (timeout)"
-                     note "Skipping all other MI tests."
-                     return 0}
-    }
-
-    # The following is not used by mi-support.exp, but we test here so
-    # we get done with loading a program basics.
-
-    # Do it again, but now load symbols and specify executable with
-    # two separate operations
-    # Tests:
-    # -file-clear
-    # -file-exec-file
-    # -file-symbol-file
-
-    # FIXME: file-clear is not implemented yet.
-#   mi_gdb_test "-file-clear" \
-#            "\\\^done" \
-#            "file-clear operation"
-
-    mi_gdb_test "-file-exec-file ${binfile}" \
-             "\\\^done" \
-             "file-exec-file operation"
-
-    mi_gdb_test "-file-symbol-file ${binfile}" \
-             "\\\^done" \
-             "file-symbol-file operation"
-
-    # FIXME: if we cannot load we have to skip all other tests.
-}
-
-proc test_breakpoints_deletion {} {
-    global mi_gdb_prompt
-    global srcfile
-
-    # Clear all breakpoints and list to confirm
-    # Tests:
-    # -break-delete (all)
-    # -break-list
-
-    # The all parameter is actually no parameter.
-    mi_gdb_test "200-break-delete" \
-             "\\\^done" \
-             "break-delete (all) operation"
-
-    mi_gdb_test "201-break-list" \
-             ".*\\\^done,BreakpointTable=\\\{.*,body=\\\[\\\]\\\}" \
-             "all breakpoints removed"
-}
-
-proc test_dir_specification {} {
-    global mi_gdb_prompt
-    global srcdir
-    global subdir
-
-    # Add to the search directories, display, then reset back to default
-    # Tests:
-    # -environment-directory arg
-    # -environment-directory 
-    # -environment-directory -r
-
-#exp_internal 1
-    mi_gdb_test "202-environment-directory ${srcdir}/${subdir}" \
-             "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
-             "environment-directory arg operation"
-
-    mi_gdb_test "203-environment-directory" \
-             "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
-             "environment-directory empty-string operation"
-
-    mi_gdb_test "204-environment-directory -r" \
-             "\\\^done,source-path=\"\\\$cdir.\\\$cwd\"" \
-             "environment-directory operation"
-
-#exp_internal 0
-}
-
-proc test_cwd_specification {} {
-    global mi_gdb_prompt
-    global objdir
-    global subdir
-
-    # Change the working directory, then print the current working directory
-    # Tests:
-    # -environment-cd ${objdir}
-    # -environment-pwd
-
-    mi_gdb_test "205-environment-cd ${objdir}" \
-             "\\\^done" \
-             "environment-cd arg operation"
-
-    mi_gdb_test "206-environment-pwd" \
-             "\\\^done,cwd=\"${objdir}\"" \
-             "environment-pwd operation"
-}
-
-proc test_path_specification {} {
-    global mi_gdb_prompt
-    global orig_path
-    global objdir
-    global srcdir
-
-    # Add to the path, display, then reset 
-    # Tests:
-    # -environment-path 
-    # -environment-path dir1 dir2
-    # -environment-path -r dir
-    # -environment-path -r
-
-#exp_internal 1
-
-    send_gdb "-environment-path\n"
-    gdb_expect 20 {
-	-re "\\\^done,path=\"\(.*\)\"\r\n$mi_gdb_prompt" { 
-	  set orig_path $expect_out(1,string); 
-	}
-	timeout { 
-	  perror "-environment-path (timeout)" ; 
-	  return 
-	}
-    }
-
-    mi_gdb_test "207-environment-path" \
-             "\\\^done,path=\"$orig_path\"" \
-             "environment-path no-args operation"
-
-    mi_gdb_test "208-environment-path $srcdir $objdir" \
-             "\\\^done,path=\"$srcdir.$objdir.$orig_path\"" \
-             "environment-path dir1 dir2 operation"
-
-    mi_gdb_test "209-environment-path -r $objdir" \
-             "\\\^done,path=\"$objdir.$orig_path\"" \
-             "environment-path -r dir operation"
-
-    mi_gdb_test "210-environment-path -r" \
-             "\\\^done,path=\"$orig_path\"" \
-             "environment-path -r operation"
-
-#exp_internal 0
-} 
-
-if [test_mi_interpreter_selection] {
-  test_exec_and_symbol_mi_operatons
-  test_breakpoints_deletion
-  test_dir_specification
-  test_cwd_specification
-  test_path_specification
-}
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-break.exp b/gdb/testsuite/gdb.mi/mi2-break.exp
deleted file mode 100644
index 11cb0d9..0000000
--- a/gdb/testsuite/gdb.mi/mi2-break.exp
+++ /dev/null
@@ -1,138 +0,0 @@
-#   Copyright 1999 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and perform basic
-# debugging activities like: insert breakpoints, run the program,
-# step, next, continue until it ends and, last but not least, quit.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_tbreak_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert some breakpoints and list them
-    # Also, disable some so they do not interfere with other tests
-    # Tests:
-    # -break-insert -t main
-    # -break-insert -t basics.c:callee2
-    # -break-insert -t basics.c:15
-    # -break-insert -t srcfile:6
-    # -break-list
-
-    mi_gdb_test "222-break-insert -t main" \
-             "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\}" \
-             "break-insert -t operation"
-
-    mi_gdb_test "333-break-insert -t basics.c:callee2" \
-             "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"22\",times=\"0\"\}" \
-             "insert temp breakpoint at basics.c:callee2"
-
-    mi_gdb_test "444-break-insert -t basics.c:15" \
-             "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"15\",times=\"0\"\}" \
-             "insert temp breakpoint at basics.c:15 (callee3)"
-
-    # Getting the quoting right is tricky.  That is "\"<file>\":6"
-    mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":6\"" \
-             "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"6\",times=\"0\"\}" \
-             "insert temp breakpoint at \"<fullfilename>\":6 (callee4)"
-
-    mi_gdb_test "666-break-list" \
-	    "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\}.*\\\]\}" \
-                "list of breakpoints"
-
-    mi_gdb_test "777-break-delete" \
-	    "777\\^done" \
-	    "delete temp breakpoints"
-}
-
-proc test_rbreak_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert some breakpoints and list them
-    # Also, disable some so they do not interfere with other tests
-    # Tests:
-    # -break-insert -r main
-    # -break-insert -r callee2
-    # -break-insert -r callee
-    # -break-insert -r .*llee
-    # -break-list
-
-    setup_xfail "*-*-*"
-    mi_gdb_test "122-break-insert -r main" \
-             "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",line=\"32\"\}" \
-             "break-insert -r operation"
-
-    setup_xfail "*-*-*"
-    mi_gdb_test "133-break-insert -r callee2" \
-             "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\}" \
-             "insert breakpoint with regexp callee2"
-
-    setup_xfail "*-*-*"
-    mi_gdb_test "144-break-insert -r callee" \
-	    "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",line=\"27\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",line=\"17\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",line=\"8\"\}" \
-             "insert breakpoint with regexp callee"
-
-    setup_xfail "*-*-*"
-    mi_gdb_test "155-break-insert -r \.\*llee" \
-	    "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",line=\"27\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",line=\"17\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",line=\"8\"\}" \
-             "insert breakpoint with regexp .*llee"
-
-    setup_xfail "*-*-*"
-    mi_gdb_test "166-break-list" \
-	    "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\},.*\}\\\]\}" \
-                "list of breakpoints"
-
-    mi_gdb_test "177-break-delete" \
-	    "177\\^done" \
-	    "delete temp breakpoints"
-}
-
-test_tbreak_creation_and_listing
-test_rbreak_creation_and_listing
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-cli.exp b/gdb/testsuite/gdb.mi/mi2-cli.exp
deleted file mode 100644
index 10295a9..0000000
--- a/gdb/testsuite/gdb.mi/mi2-cli.exp
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# This file tests that GDB's console can be accessed via the MI.
-# Specifically, we are testing the "interpreter-exec" command and that
-# the commands that are executed via this command are properly executed.
-# Console commands executed via MI should use MI output wrappers, MI event
-# handlers, etc.
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_gdb_reinitialize_dir $srcdir/$subdir
-
-mi_gdb_test "-interpreter-exec" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
-  "-interpreter-exec with no arguments"
-
-mi_gdb_test "-interpreter-exec console" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
-  "-interpreter-exec with one argument"
-
-mi_gdb_test "-interpreter-exec bogus command" \
-  {\^error,msg="mi_cmd_interpreter_exec: could not find interpreter \\\"bogus\\\""} \
-  "-interpreter-exec with bogus interpreter"
-
-set msg {Undefined command: \\\"bogus\\\"\.  Try \\\"help\\\"\.}
-mi_gdb_test "-interpreter-exec console bogus" \
-    "&\\\"$msg\\\\n\\\".*\\^error,msg=\\\"$msg\\\".*" \
-  "-interpreter-exec console bogus"
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-interpreter-exec console \"file $binfile\"" \
-#   {(=.*)+\^done} \
-#   "-interpreter-exec console \"file \$binfile\""
-mi_gdb_test "-interpreter-exec console \"file $binfile\"" \
-  {\^done} \
-  "-interpreter-exec console \"file \$binfile\""
-
-mi_run_to_main
-
-mi_gdb_test "-interpreter-exec console \"set args foobar\"" \
-  {\^done} \
-  "-interpreter-exec console \"set args foobar\""
-
-mi_gdb_test "-interpreter-exec console \"show args\"" \
-  {\~"Argument list to give program being debugged when it is started is \\\"foobar\\\"\.\\n".*\^done} \
-  "-interpreter-exec console \"show args\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-interpreter-exec console \"break callee4\"" \
-#   {(&.*)*.*~"Breakpoint 2 at.*\\n".*=breakpoint-create,number="2".*\^done} \
-#   "-interpreter-exec console \"break callee4\""
-mi_gdb_test "-interpreter-exec console \"break callee4\"" \
-  {(&.*)*.*~"Breakpoint 2 at.*\\n".*\^done} \
-  "-interpreter-exec console \"break callee4\""
-
-mi_gdb_test "-interpreter-exec console \"info break\"" \
-  {\~"Num[ \t]*Type[ \t]*Disp[ \t]*Enb[ \t]*Address[ \t]*What\\n".*~"2[ \t]*breakpoint[ \t]*keep[ \t]*y[ \t]*0x[0-9A-Fa-f]+[ \t]*in callee4 at .*basics.c:[0-9]+\\n".*\^done} \
-  "-interpreter-exec console \"info break\""
-
-mi_gdb_test "-interpreter-exec console \"set listsize 1\"" \
-  {\^done} \
-  "-interpreter-exec console \"set listsize 1\""
-
-mi_gdb_test "-interpreter-exec console \"list\"" \
-  {.*\~"32[ \t(\\t)]*callee1.*\\n".*\^done} \
-  "-interpreter-exec console \"list\""
-
-# # NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-exec-continue" \
-#    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",line="8"\}} \
-#    "-interpreter-exec console \"continue to callee4\""
-send_gdb "999-exec-continue\n"
-gdb_expect {
-    -re "999\\^running\[\r\n\]+$mi_gdb_prompt.*999\\*stopped,reason=.breakpoint-hit.*$mi_gdb_prompt$" {
-	pass "continue to callee4"
-    }
-    timeout {
-	fail "continue to callee4 (timeout)"
-    }
-}
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "100-interpreter-exec console \"delete 2\"" \
-#   {.*=breakpoint-delete,number=\"2\".*\^done} \
-#   "-interpreter-exec console \"delete 2\""
-mi_gdb_test "100-interpreter-exec console \"delete 2\"" \
-  {100\^done} \
-  "-interpreter-exec console \"delete 2\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "200-interpreter-exec console \"up\"" \
-#   {.*=selected-frame-level-changed,level="1".*\^done} \
-#   "-interpreter-exec console \"up\""
-mi_gdb_test "200-interpreter-exec console \"up\"" \
-  {200\^done} \
-  "-interpreter-exec console \"up\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "300-interpreter-exec console \"down\"" \
-#   {.*=selected-frame-level-changed,level="0".*\^done} \
-#   "-interpreter-exec console \"down\""
-mi_gdb_test "300-interpreter-exec console \"down\"" \
-  {300\^done} \
-  "-interpreter-exec console \"down\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-interpreter-exec console \"frame 2\"" \
-#   {.*=selected-frame-level-changed,level="2".*\^done} \
-#   "-interpreter-exec console \"frame 2\""
-mi_gdb_test "400-interpreter-exec console \"frame 2\"" \
-  {400\^done} \
-  "-interpreter-exec console \"frame 2\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-stack-select-frame 0" \
-#   {.*=selected-frame-level-changed,level="0".*\^done} \
-#   "-stack-select-frame 0"
-mi_gdb_test "500-stack-select-frame 0" \
-  {500\^done} \
-  "-stack-select-frame 0"
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-break-insert -t basics.c:35" \
-#   {.*=breakpoint-create,number="3".*\^done} \
-#   "-break-insert -t basics.c:35"
-mi_gdb_test "600-break-insert -t basics.c:35" \
-	{600\^done,bkpt=.number="3",type="breakpoint".*\}} \
-	"-break-insert -t basics.c:35"
-
-# mi_gdb_test "-exec-continue" \
-#   {.*\*stopped.*,file=".*basics.c",line="35"\}} \
-#   "-exec-continue to line 35"
-send_gdb "700-exec-continue\n"
-gdb_expect {
-    -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.35.*$mi_gdb_prompt$" {
-	pass "-exec-continue to line 35"
-    }
-    timeout {
-	fail "-exec-continue to line 35"
-    }
-}
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-exec-next" \
-#   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="37"\}} \
-#   "-exec-next to line 37"
-send_gdb "800-exec-next\n"
-gdb_expect {
-    -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.37.*$mi_gdb_prompt$" {
-	pass "-exec-next to line 37"
-    }
-    timeout {
-	fail "-exec-next to line 37"
-    }
-}
-
-mi_gdb_test "-interpreter-exec console \"list\"" \
-  {\~"37[ \t(\\t)]*return 0;\\n".*\^done} \
-  "-interpreter-exec console \"list\" at basics.c:37"
-
-mi_gdb_test "-interpreter-exec console \"help set args\"" \
-  {\~"Set argument list to give program being debugged when it is started\.\\nFollow this command with any number of args, to be passed to the program\.".*\^done} \
-  "-interpreter-exec console \"help set args\""
-
-# NOTE: cagney/2003-02-03: Not yet.
-# mi_gdb_test "-interpreter-exec console \"set \$pc=0x0\"" \
-#   {.*=target-changed.*\^done} \
-#   "-interpreter-exec console \"set \$pc=0x0\""
-mi_gdb_test "888-interpreter-exec console \"set \$pc=0x0\"" \
-  {888\^done} \
-  "-interpreter-exec console \"set \$pc=0x0\""
-
-#mi_gdb_test "-interpreter-exec console \"\"" \
-  {} \
-  "-interpreter-exec console \"\""
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-console.exp b/gdb/testsuite/gdb.mi/mi2-console.exp
deleted file mode 100644
index 5e307b9..0000000
--- a/gdb/testsuite/gdb.mi/mi2-console.exp
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and perform basic
-# debugging activities like: insert breakpoints, run the program,
-# step, next, continue until it ends and, last but not least, quit.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-# This test only works when talking to a target that routes its output
-# through GDB.  Check that we're either talking to a simulator or a
-# remote target.
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "mi-console"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-mi_run_to_main
-
-# Next over the hello() call which will produce lots of output
-send_gdb "47-exec-next\n"
-gdb_expect {
-    -re "47\\^running\r\n$mi_gdb_prompt" {
-	pass "Started step over hello"
-    }
-    timeout {
-	fail "Started step over hello (timeout)"
-    }
-}
-
-gdb_expect {
-    -re "@\"H\"\r\n.*@\"e\"\r\n.*@\"l\"\r\n.*@\"l\"\r\n.*@\"o\"\r\n.*@\" \"\r\n.*@\"\\\\\\\\\"\r\n.*@\"\\\\\"\"\r\n.*@\"!\"\r\n.*@\"\\\\r\"\r\n.*@\"\\\\n\"\r\n" {
-	pass "Hello message"
-    }
-    -re "Hello" {
-
-	# Probably a native system where GDB doesn't have direct
-	# control over the inferior console.
-	# For this to work, GDB would need to run the inferior process
-	# under a PTY and then use the even-loops ability to wait on
-	# multiple event sources to channel the output back through the
-	# MI.
-
-	kfail "gdb/623" "Hello message"
-    }
-    timeout {
-	fail "Hello message (timeout)"
-    }
-}
-    
-gdb_expect {
-    -re "47\\*stopped.*$mi_gdb_prompt$" {
-	pass "Finished step over hello"
-    }
-    timeout {
-	fail "Finished step over hello (timeout)"
-    }
-}
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-disassemble.exp b/gdb/testsuite/gdb.mi/mi2-disassemble.exp
deleted file mode 100644
index 8cd76f9..0000000
--- a/gdb/testsuite/gdb.mi/mi2-disassemble.exp
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test Machine interface (MI) operations for disassembly.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_disassembly_only {} {
-    global mi_gdb_prompt
-    global hex
-    global decimal
-
-    # Test disassembly more only for the current function.
-    # Tests:
-    # -data-disassemble -s $pc -e "$pc+8" -- 0
-    # -data-disassembly -f basics.c -l 32 -- 0
-
-    mi_gdb_test "print/x \$pc" "" ""
-    mi_gdb_test "111-data-disassemble -s \$pc -e \"\$pc + 12\" -- 0" \
-	    "111\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\},\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\]" \
-             "data-disassemble from pc to pc+12 assembly only"
-
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -- 0" \
-	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
-              "data-disassemble file & line, assembly only"
-}
-
-proc test_disassembly_lines_limit {} {
-    global mi_gdb_prompt
-    global hex
-    global decimal
-
-    # Test disassembly more only for the current function.
-    # Tests:
-    # -data-disassembly -f basics.c -l 32 -n 20 -- 0
-    # -data-disassembly -f basics.c -l 32 -n 0 -- 0
-    # -data-disassembly -f basics.c -l 32 -n 50 -- 0
-
-    mi_gdb_test "print/x \$pc" "" ""
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 0" \
-	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
-              "data-disassemble file, line, number assembly only"
-
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 0" \
-	    "222\\^done,asm_insns=\\\[\\\]" \
-              "data-disassemble file, line, number (zero lines) assembly only"
-
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 0" \
-	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
-              "data-disassemble file, line, number (more than main lines) assembly only"
-}
-
-
-proc test_disassembly_mixed {} {
-    global mi_gdb_prompt
-    global hex
-    global decimal
-
-    # Test disassembly more only for the current function.
-    # Tests:
-    # -data-disassembly -f basics.c -l 21 -- 1
-    # -data-disassembly -s $pc -e "$pc+8" -- 1
-
-    mi_gdb_test "002-data-disassemble -f basics.c -l 21 -- 1" \
-	    "002\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"21\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"callee2\",offset=\"0\",inst=\".*\"\}.*\\\]\}.*,src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[.*\{address=\"$hex\",func-name=\"callee2\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\\\]" \
-             "data-disassemble file, line assembly mixed"
-
-    #
-    # In mixed mode, the lowest level of granularity is the source line.
-    # So we are going to get the disassembly for the source line at
-    # which we are now, even if we have specified that the range is only 2 insns.
-    #
-    mi_gdb_test "003-data-disassemble -s \$pc -e \"\$pc+4\" -- 1" \
-	    "003\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\\\]" \
-             "data-disassemble range assembly mixed"
-}
-
-proc test_disassembly_mixed_lines_limit {} {
-    global mi_gdb_prompt
-    global hex
-    global decimal
-
-    # Test disassembly more only for the current function.
-    # Tests:
-    # -data-disassembly -f basics.c -l 32 -n 20 -- 1
-    # -data-disassembly -f basics.c -l 32 -n 0 -- 1
-    # -data-disassembly -f basics.c -l 32 -n 50 -- 1
-
-    mi_gdb_test "print/x \$pc" "" ""
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 1" \
-	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\]" \
-              "data-disassemble file, line, number assembly mixed"
-
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 1" \
-	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"31\",file=\".*basics.c\",line_asm_insn=\\\[\\\]\}\\\]" \
-              "data-disassemble file, line, number (zero lines) assembly mixed"
-
-    mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 1" \
-	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\}.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\]" \
-              "data-disassemble file, line, number (more than main lines) assembly mixed"
-}
-
-proc test_disassembly_bogus_args {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Test that bogus input to disassembly command is rejected.
-    # Tests:
-    # -data-disassembly -f foo -l abc -n 0 -- 0
-    # -data-disassembly -s foo -e bar -- 0
-    # -data-disassembly -s $pc -f basics.c -- 0
-    # -data-disassembly -f basics.c -l 32 -- 9
-
-    mi_gdb_test "123-data-disassemble -f foo -l abc -n 0 -- 0" \
-             ".*123\\^error,msg=\"mi_cmd_disassemble: Invalid filename.\"" \
-             "data-disassemble bogus filename"
-
-    mi_gdb_test "321-data-disassemble -s foo -e bar -- 0" \
-             "321\\^error,msg=\"No symbol \\\\\"foo\\\\\" in current context.\"" \
-             "data-disassemble bogus address"
-
-    mi_gdb_test "456-data-disassemble -s \$pc -f basics.c -- 0" \
-             "456\\^error,msg=\"mi_cmd_disassemble: Usage: \\( .-f filename -l linenum .-n howmany.. | .-s startaddr -e endaddr.\\) .--. mixed_mode.\"" \
-             "data-disassemble mix different args"
-
-    mi_gdb_test "789-data-disassemble -f basics.c -l 32 -- 9" \
-             "789\\^error,msg=\"mi_cmd_disassemble: Mixed_mode argument must be 0 or 1.\"" \
-             "data-disassemble wrong mode arg"
-
-}
-
-mi_run_to_main
-test_disassembly_only
-test_disassembly_mixed
-test_disassembly_bogus_args
-test_disassembly_lines_limit
-test_disassembly_mixed_lines_limit
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-eval.exp b/gdb/testsuite/gdb.mi/mi2-eval.exp
deleted file mode 100644
index 85fd991..0000000
--- a/gdb/testsuite/gdb.mi/mi2-eval.exp
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify -data-evaluate-expression. There are really minimal tests.
-
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-mi_runto callee4
-mi_next_to "callee4" "" "basics.c" "9" "next at callee4"
-
-mi_gdb_test "211-data-evaluate-expression A" "211\\^done,value=\"1\"" "eval A"
-
-mi_gdb_test "311-data-evaluate-expression &A" "311\\^done,value=\"$hex\"" "eval &A"
-
-mi_gdb_test "411-data-evaluate-expression A+3" "411\\^done,value=\"4\"" "eval A+3"
-
-mi_gdb_test "511-data-evaluate-expression \"A + 3\"" "511\\^done,value=\"4\"" "eval A + 3"
-
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-file.exp b/gdb/testsuite/gdb.mi/mi2-file.exp
deleted file mode 100644
index fe75a93..0000000
--- a/gdb/testsuite/gdb.mi/mi2-file.exp
+++ /dev/null
@@ -1,65 +0,0 @@
-#   Copyright 1999 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and perform basic
-# debugging activities like: insert breakpoints, run the program,
-# step, next, continue until it ends and, last but not least, quit.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_tbreak_creation_and_listing {} {
-    global srcfile
-    global srcdir
-    global subdir
-    set srcfilepath [string_to_regexp ${srcdir}/${subdir}/${srcfile}]
-
-    # get the path and absolute path to the current executable
-    mi_gdb_test "111-file-list-exec-source-file" \
-	    "111\\\^done,line=\"23\",file=\"${srcfilepath}\",fullname=\"/.*/${srcfile}\"" \
-               "request path info of current source file (${srcfile})"
-}
-
-test_tbreak_creation_and_listing
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-hack-cli.exp b/gdb/testsuite/gdb.mi/mi2-hack-cli.exp
deleted file mode 100644
index 066eea2..0000000
--- a/gdb/testsuite/gdb.mi/mi2-hack-cli.exp
+++ /dev/null
@@ -1,40 +0,0 @@
-#   Copyright 1999 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-
-# Some basic checks for the CLI.
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-mi_gdb_test "show architecture" \
-	"&\"show architecture\\\\n\"\r\n~\"The target architecture.*\"\r\n\\^done" \
-	"show architecture"
-
-mi_gdb_test "47show architecture" \
-	"&\"show architecture\\\\n\"\r\n~\"The target architecture.*\"\r\n47\\^done" \
-	"47show architecture"
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-pthreads.exp b/gdb/testsuite/gdb.mi/mi2-pthreads.exp
deleted file mode 100644
index fe007e5..0000000
--- a/gdb/testsuite/gdb.mi/mi2-pthreads.exp
+++ /dev/null
@@ -1,221 +0,0 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# This file tests MI thread commands.
-# Specifically, we are testing the MI command set and the console (in MI)
-# command set ("interpreter-exec") and that the commands that are executed
-# via these command pathways are properly executed. Console commands
-# executed via MI should use MI output wrappers, MI event handlers, etc.
-
-# This only works with native configurations
-if {![isnative]} {
-  return
-}
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if {[mi_gdb_start]} {
-    continue
-}
-
-# The procs below dealing with parsing cli/mi output for the threadlist
-# is duplicated in gdb669.exp. Any changes here will probably need to
-# be made there as well.
-
-proc get_mi_thread_list {name} {
-  global expect_out
-
-  # MI will return a list of thread ids:
-  #
-  # -thread-list-ids
-  # ^done,thread-ids=[thread-id="1",thread-id="2",...],number-of-threads="N"
-  # (gdb)
-  mi_gdb_test "-thread-list-ids" \
-    {\^done,thread-ids={(thread-id="[0-9]+"(,)?)+},number-of-threads="[0-9]+"} \
-    "-thread_list_ids ($name)"
-
-  set output {}
-  if {[info exists expect_out(buffer)]} {
-    set output $expect_out(buffer)
-  }
-
-  set thread_list {}
-  if {![regexp {thread-ids=\{(thread-id="[0-9]+"(,)?)*\}} $output threads]} {
-    fail "finding threads in MI output ($name)"
-  } else {
-    pass "finding threads in MI output ($name)"
-
-    # Make list of console threads
-    set start [expr {[string first \{ $threads] + 1}]
-    set end   [expr {[string first \} $threads] - 1}]
-    set threads [string range $threads $start $end]
-    foreach thread [split $threads ,] {
-      if {[scan $thread {thread-id="%d"} num]} {
-	lappend thread_list $num
-      }
-    }
-  }
-
-  return $thread_list
-}
-
-# Check that MI and the console know of the same threads.
-# Appends NAME to all test names.
-proc check_mi_and_console_threads {name} {
-  global expect_out
-
-  mi_gdb_test "-thread-list-ids" \
-    {\^done,thread-ids={(thread-id="[0-9]+"(,)*)+},number-of-threads="[0-9]+"} \
-    "-thread-list-ids ($name)"
-  set mi_output {}
-  if {[info exists expect_out(buffer)]} {
-    set mi_output $expect_out(buffer)
-  }
-
-  # GDB will return a list of thread ids and some more info:
-  #
-  # (gdb) 
-  # -interpreter-exec console "info threads"
-  # ~"  4 Thread 2051 (LWP 7734)  0x401166b1 in __libc_nanosleep () at __libc_nanosleep:-1"
-  # ~"  3 Thread 1026 (LWP 7733)   () at __libc_nanosleep:-1"
-  # ~"  2 Thread 2049 (LWP 7732)  0x401411f8 in __poll (fds=0x804bb24, nfds=1, timeout=2000) at ../sysdeps/unix/sysv/linux/poll.c:63"
-  # ~"* 1 Thread 1024 (LWP 7731)  main (argc=1, argv=0xbfffdd94) at ../../../src/gdb/testsuite/gdb.mi/pthreads.c:160"
-  # FIXME: kseitz/2002-09-05: Don't use the hack-cli method.
-  mi_gdb_test "info threads" \
-    {.*(~".*"[\r\n]*)+.*} \
-    "info threads ($name)"
-  set console_output {}
-  if {[info exists $expect_out(buffer)]} {
-    set console_output $expect_out(buffer)
-  }
-
-  # Make a list of all known threads to console (gdb's thread IDs)
-  set console_thread_list {}
-  foreach line [split $console_output \n] {
-    if {[string index $line 0] == "~"} {
-      # This is a line from the console; trim off "~", " ", "*", and "\""
-      set line [string trim $line ~\ \"\*]
-      if {[scan $line "%d" id] == 1} {
-	lappend console_thread_list $id
-      }
-    }
-  }
-
-  # Now find the result string from MI
-  set mi_result ""
-  foreach line [split $mi_output \n] {
-    if {[string range $line 0 4] == "^done"} {
-      set mi_result $line
-    }
-  }
-  if {$mi_result == ""} {
-    fail "finding MI result string ($name)"
-  } else {
-    pass "finding MI result string ($name)"
-  }
-
-  # Finally, extract the thread ids and compare them to the console
-  set num_mi_threads_str ""
-  if {![regexp {number-of-threads="[0-9]+"} $mi_result num_mi_threads_str]} {
-    fail "finding number of threads in MI output ($name)"
-  } else {
-    pass "finding number of threads in MI output ($name)"
-
-    # Extract the number of threads from the MI result
-    if {![scan $num_mi_threads_str {number-of-threads="%d"} num_mi_threads]} {
-      fail "got number of threads from MI ($name)"
-    } else {
-      pass "got number of threads from MI ($name)"
-
-      # Check if MI and console have same number of threads
-      if {$num_mi_threads != [llength $console_thread_list]} {
-	fail "console and MI have same number of threads ($name)"
-      } else {
-	pass "console and MI have same number of threads ($name)"
-
-	# Get MI thread list
-	set mi_thread_list [get_mi_thread_list $name]
-
-	# Check if MI and console have the same threads
-	set fails 0
-	foreach ct [lsort $console_thread_list] mt [lsort $mi_thread_list] {
-	  if {$ct != $mt} {
-	    incr fails
-	  }
-	}
-	if {$fails > 0} {
-	  fail "MI and console have same threads ($name)"
-
-	  # Send a list of failures to the log
-	  send_log "Console has thread ids: $console_thread_list\n"
-	  send_log "MI has thread ids: $mi_thread_list\n"
-	} else {
-	  pass "MI and console have same threads ($name)"
-	}
-      }
-    }
-  }
-}
-
-# This procedure tests the various thread commands in MI.
-proc check_mi_thread_command_set {} {
-
-  mi_runto done_making_threads
-
-  set thread_list [get_mi_thread_list "in check_mi_thread_command_set"]
-  
-  mi_gdb_test "-thread-select" \
-    {\^error,msg="mi_cmd_thread_select: USAGE: threadnum."} \
-    "check_mi_thread_command_set: -thread-select"
-
-  mi_gdb_test "-thread-select 123456789" \
-    {\^error,msg="Thread ID 123456789 not known\."} \
-    "check_mi_thread_command_set: -thread-select 123456789"
-
-  foreach thread $thread_list {
-    # line and file are optional.
-    # many of the threads are blocked in libc calls,
-    # and many people have libc's with no symbols.
-    mi_gdb_test "-thread-select $thread" \
-      "\\^done,new-thread-id=\"$thread\",frame={.*}(,line=\"(-)?\[0-9\]+\",file=\".*\")?" \
-      "check_mi_thread_command_set: -thread-select $thread"
-  }
-}
-
-#
-# Start here
-#
-set testfile "pthreads"
-set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/$testfile"
-
-set options [list debug incdir=$objdir]
-if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
-    return -1
-}
-
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load $binfile
-
-check_mi_thread_command_set
-
-mi_gdb_exit
-
diff --git a/gdb/testsuite/gdb.mi/mi2-read-memory.exp b/gdb/testsuite/gdb.mi/mi2-read-memory.exp
deleted file mode 100644
index eee36a7..0000000
--- a/gdb/testsuite/gdb.mi/mi2-read-memory.exp
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# test basic Machine interface (MI) operations
-#
-# Verify that, using the MI, we can load a program and do
-# other basic things that are used by all test files through  mi_gdb_exit,
-# mi_gdb_start, mi_delete_breakpoints, mi_gdb_reinitialize_dir and
-# mi_gdb_load, so we can safely use those.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but the command syntax and correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "mi-read-memory"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-
-mi_run_to_main
-mi_next_to "main" "" "mi-read-memory.c" "20" "next at main"
-
-mi_gdb_test "1-data-read-memory" \
-	"1\\^error,msg=\".*\"" \
-	"no arguments"
-
-
-mi_gdb_test "2-data-read-memory bytes x 1 3 2" \
-	"2\\^done,addr=\"$hex\",nr-bytes=\"6\",total-bytes=\"6\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"0x00\",\"0x01\"\\\]},{addr=\"$hex\",data=\\\[\"0x02\",\"0x03\"\\\]},{addr=\"$hex\",data=\\\[\"0x04\",\"0x05\"\\\]}\\\]" \
-	"3x2, one byte"
-
-
-mi_gdb_test "9-data-read-memory -o -6 -- -0+bytes+6 x 1 3 2" \
-	"9\\^done,addr=\"$hex\",nr-bytes=\"6\",total-bytes=\"6\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"0x00\",\"0x01\"\\\]},{addr=\"$hex\",data=\\\[\"0x02\",\"0x03\"\\\]},{addr=\"$hex\",data=\\\[\"0x04\",\"0x05\"\\\]}\\\]" \
-	"3x2, one byte offset by -6"
-
-
-mi_gdb_test "3-data-read-memory \"(shorts + 128)\" x 2 1 2" \
-	"3\\^done,addr=\"$hex\",nr-bytes=\"4\",total-bytes=\"4\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"0x0100\",\"0x0102\"\\\]}\\\]" \
-	"expression in quotes"
-
-
-mi_gdb_test "4-data-read-memory bytes+16 x 1 8 4 x" \
-	"4\\^done,addr=\"$hex\",nr-bytes=\"32\",total-bytes=\"32\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"0x10\",\"0x11\",\"0x12\",\"0x13\"\\\],ascii=\"xxxx\"},{addr=\"$hex\",data=\\\[\"0x14\",\"0x15\",\"0x16\",\"0x17\"\\\],ascii=\"xxxx\"},{addr=\"$hex\",data=\\\[\"0x18\",\"0x19\",\"0x1a\",\"0x1b\"\\\],ascii=\"xxxx\"},{addr=\"$hex\",data=\\\[\"0x1c\",\"0x1d\",\"0x1e\",\"0x1f\"\\\],ascii=\"xxxx\"},{addr=\"$hex\",data=\\\[\"0x20\",\"0x21\",\"0x22\",\"0x23\"\\\],ascii=\" !\\\\\"#\"},{addr=\"$hex\",data=\\\[\"0x24\",\"0x25\",\"0x26\",\"0x27\"\\\],ascii=\"\\$%&'\"},{addr=\"$hex\",data=\\\[\"0x28\",\"0x29\",\"0x2a\",\"0x2b\"\\\],ascii=\"().+\"},{addr=\"$hex\",data=\\\[\"0x2c\",\"0x2d\",\"0x2e\",\"0x2f\"\\\],ascii=\",-\./\"}\\\]" \
-	"ascii and data"
-
-
-mi_gdb_test "5-data-read-memory shorts+64 d 2 1 1" \
-	"5\\^done,addr=\"$hex\",nr-bytes=\"2\",total-bytes=\"2\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"128\"\\\]}\\\]" \
-	"decimal"
-
-mi_gdb_test "6-data-read-memory shorts+64 o 2 1 1" \
-	"6\\^done,addr=\"$hex\",nr-bytes=\"2\",total-bytes=\"2\",next-row=\"$hex\",prev-row=\"$hex\",next-page=\"$hex\",prev-page=\"$hex\",memory=\\\[{addr=\"$hex\",data=\\\[\"0200\"\\\]}\\\]" \
-	"octal"
-
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-regs.exp b/gdb/testsuite/gdb.mi/mi2-regs.exp
deleted file mode 100644
index a14b241..0000000
--- a/gdb/testsuite/gdb.mi/mi2-regs.exp
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and look at registers.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc sparc_register_tests_no_exec { } {
-	# Test the generic IDT chip.
-	mi_gdb_test "111-data-list-register-values" \
-		".*111\\^error,msg=\"mi_cmd_data_list_register_values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
-		"wrong arguments"
-
-	mi_gdb_test "111-data-list-register-values x" \
-		".*111\\^error,msg=\"mi_cmd_data_list_register_values: No registers\.\"" \
-		"no executable"
-}
-
-# These tests exercise IDT-specific MIPS registers for several
-# different processor models.
-
-# This should detect the actual processor in use and change
-# the expected results appropriately.  FIXME
-
-proc sparc_register_tests { } {
-    global hex
-    global decimal
-    set octal "\[0-7\]+"
-    set binary "\[0-1\]+"
-    set float "\\-?((\[0-9\]+(\\.\[0-9\]+)?(e\[-+\]\[0-9\]+)?)|(nan\\($hex\\)))"
-    set float2 "\\-?\[0-9\]+"
-
-    mi_gdb_test "111-data-list-register-names" \
-	    "111\\^done,register-names=\\\[\"g0\",\"g1\",\"g2\",\"g3\",\"g4\",\"g5\",\"g6\",\"g7\",\"o0\",\"o1\",\"o2\",\"o3\",\"o4\",\"o5\",\"sp\",\"o7\",\"l0\",\"l1\",\"l2\",\"l3\",\"l4\",\"l5\",\"l6\",\"l7\",\"i0\",\"i1\",\"i2\",\"i3\",\"i4\",\"i5\",\"fp\",\"i7\",\"f0\",\"f1\",\"f2\",\"f3\",\"f4\",\"f5\",\"f6\",\"f7\",\"f8\",\"f9\",\"f10\",\"f11\",\"f12\",\"f13\",\"f14\",\"f15\",\"f16\",\"f17\",\"f18\",\"f19\",\"f20\",\"f21\",\"f22\",\"f23\",\"f24\",\"f25\",\"f26\",\"f27\",\"f28\",\"f29\",\"f30\",\"f31\",\"y\",\"psr\",\"wim\",\"tbr\",\"pc\",\"npc\",\"fpsr\",\"cpsr\"\\\]" \
-	    "list register names"
-
-    mi_gdb_test "222-data-list-register-values x" \
-	    "222\\^done,register-values=\\\[\{number=\"0\",value=\"$hex\"\}.*\{number=\"71\",value=\"$hex\"\}\\\]" \
-	    "register values x"
-
-    mi_gdb_test "333-data-list-register-values f" \
-	    "333\\^done,register-values=\\\[\{number=\"0\",value=\"$float\"\},\{number=\"1\",value=\"$float\"\},.*\{number=\"71\",value=\"$float\"\}\\\]" \
-	    "register values f"
-
-    mi_gdb_test "444-data-list-register-values d" \
-	    "444\\^done,register-values=\\\[\{number=\"0\",value=\"$decimal\"\}.*\{number=\"71\",value=\"$decimal\"\}\\\]" \
-	    "register values d"
-
-    mi_gdb_test "555-data-list-register-values o" \
-	    "555\\^done,register-values=\\\[\{number=\"0\",value=\"$octal\"\}.*\{number=\"71\",value=\"$octal\"\}\\\]" \
-	    "register values o"
-
-    mi_gdb_test "666-data-list-register-values t" \
-	    "666\\^done,register-values=\\\[\{number=\"0\",value=\"$binary\"\}.*\{number=\"71\",value=\"$binary\"\}\\\]" \
-	    "register values t"
-
-    # On the sparc, registers 0-31 are int, 32-63 float, 64-71 int
-
-    mi_gdb_test "777-data-list-register-values N" \
-	    "777\\^done,register-values=\\\[\{number=\"0\",value=\"$decimal\"\}.*\{number=\"31\",value=\"$decimal\"\},\{number=\"32\",value=\"$float\"\}.*\{number=\"63\",value=\"$float\"\},\{number=\"64\",value=\"$decimal\"\}.*\{number=\"71\",value=\"$decimal\"\}\\\]" \
-	    "register values N"
-
-    mi_gdb_test "888-data-list-register-values r" \
-	    "888\\^done,register-values=\\\[\{number=\"0\",value=\"$hex\"\}.*\{number=\"71\",value=\"$hex\"\}\\\]" \
-	    "register values r"
-
-    mi_gdb_test "999-data-list-register-names 68 69 70 71" \
-	    "999\\^done,register-names=\\\[\"pc\",\"npc\",\"fpsr\",\"cpsr\"\\\]" \
-	    "list names of some regs"
-
-    mi_gdb_test "001-data-list-register-values x 68 69 70 71" \
-	    "001\\^done,register-values=\\\[\{number=\"68\",value=\"$hex\"\},\{number=\"69\",value=\"$hex\"\},\{number=\"70\",value=\"$hex\"\},\{number=\"71\",value=\"$hex\"\}\\\]" \
-	    "list values of some regs"
-
-    mi_gdb_test "002-data-list-changed-registers" \
-	    "002\\^done,changed-registers=\\\[(\"${decimal}\"(,\"${decimal}\")*)?\\\]" \
-	    "list changed registers"
-}
-
-if [istarget "sparc-*-*"] then {
-    sparc_register_tests_no_exec
-    mi_run_to_main
-    sparc_register_tests
-} else {
-    verbose "mi-regs.exp tests ignored for this target"
-}
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-return.exp b/gdb/testsuite/gdb.mi/mi2-return.exp
deleted file mode 100644
index b54f15a..0000000
--- a/gdb/testsuite/gdb.mi/mi2-return.exp
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test Machine interface (MI) operations 
-# Verify that, using the MI, we can run a simple program and perform
-# exec-return.  
-
-# The goal is not to
-# test gdb functionality, which is done by other tests, but to verify
-# the correct output response to MI operations.  
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-
-proc test_return_simple {} {
-    global mi_gdb_prompt
-    global hex
-
-    send_gdb "111-exec-return\n"
-    gdb_expect {
-	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"18\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
-	-re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
-	timeout { fail "return from callee4 now (timeout)"
-	}
-    }
-}
-
-mi_runto callee4
-
-mi_gdb_test "205-break-delete" \
-	"205\\^done.*" \
-	"delete all breakpoints"
-
-test_return_simple
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-simplerun.exp b/gdb/testsuite/gdb.mi/mi2-simplerun.exp
deleted file mode 100644
index 93d4426..0000000
--- a/gdb/testsuite/gdb.mi/mi2-simplerun.exp
+++ /dev/null
@@ -1,199 +0,0 @@
-#   Copyright 1999, 2000 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and perform basic
-# debugging activities like: insert breakpoints, run the program,
-# step, next, continue until it ends and, last but not least, quit.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_breakpoints_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert some breakpoints and list them
-    # Also, disable some so they do not interfere with other tests
-    # Tests:
-    # -break-insert
-    # -break-list
-    # -break-disable
-    # -break-info
-
-    mi_gdb_test "200-break-insert main" \
-             "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\}" \
-             "break-insert operation"
-
-    mi_gdb_test "201-break-insert basics.c:callee2" \
-             "201\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"22\",times=\"0\"\}" \
-             "insert breakpoint at basics.c:callee2"
-
-    mi_gdb_test "202-break-insert basics.c:15" \
-             "202\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"15\",times=\"0\"\}" \
-             "insert breakpoint at basics.c:15 (callee3)"
-
-    mi_gdb_test "203-break-insert \"\\\"${srcfile}\\\":6\"" \
-             "203\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"6\",times=\"0\"\}" \
-             "insert breakpoint at \"<fullfilename>\":6 (callee4)"
-
-    mi_gdb_test "204-break-list" \
-	    "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\},.*\}\\\]\}" \
-                "list of breakpoints"
-
-    mi_gdb_test "205-break-disable 2 3 4" \
-                "205\\^done.*" \
-                "disabling of breakpoints"
-
-    mi_gdb_test "206-break-info 2" \
-	    "206\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"2\",.*,enabled=\"n\",.*\}\\\]\}" \
-                "list of breakpoints, 16 disabled"
-}
-
-proc test_running_the_program {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Run the program without args, then specify srgs and rerun the program
-    # Tests:
-    # -exec-run
-    # -gdb-set
-
-    # mi_gdb_test cannot be used for asynchronous commands because there are
-    # two prompts involved and this can lead to a race condition.
-    # The following is equivalent to a send_gdb "000-exec-run\n"
-    mi_run_cmd
-    gdb_expect {
-	-re "000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"32\"\}\r\n$mi_gdb_prompt$" {
-	    pass "run to main"
-	}
-	-re ".*$mi_gdb_prompt$" {
-	    fail "run to main (2)"
-	}
-	timeout {
-	    fail "run to main (timeout)"
-	}
-    }
-}
-
-proc test_controlled_execution {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Continue execution until a breakpoint is reached, step into calls, verifying
-    # if the arguments are correctly shown, continue to the end of a called
-    # function, step over a call (next).
-    # Tests:
-    # -exec-continue
-    # -exec-next
-    # -exec-step
-    # -exec-finish
-
-    mi_next_to "main" "" "basics.c" "33" "next at main"
-
-    # FIXME: A string argument is not printed right; should be fixed and
-    #        we should look for the right thing here.
-    # NOTE: The ``\\\\\"'' is for \".
-    mi_step_to "callee1" \
-	"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
-	"basics.c" "27" "step at main"
-
-    # FIXME: A string argument is not printed right; should be fixed and
-    #        we should look for the right thing here.
-    mi_execute_to "exec-step 3" "end-stepping-range" "callee4" "" \
-	"basics.c" "8" "" "step to callee4"
-
-    # FIXME: A string argument is not printed right; should be fixed and
-    #        we should look for the right thing here.
-    # NOTE: The ``.'' is part of ``gdb-result-var="$1"''
-    mi_finish_to "callee3" ".*" "basics.c" "18" ".1" "0" "exec-finish"
-}
-
-proc test_controlling_breakpoints {} {
-    global mi_gdb_prompt
-
-    # Enable, delete, set ignore counts in breakpoints
-    # (disable was already tested above)
-    # Tests:
-    # -break-delete
-    # -break-enable
-    # -break-after
-    # -break-condition
-
-}
-
-proc test_program_termination {} {
-    global mi_gdb_prompt
-
-    # Run to completion: normal and forced
-    # Tests:
-    # -exec-abort
-    # (normal termination of inferior)
-
-    # FIXME: "stopped" doesn't seem appropriate.
-    # mi_gdb_test cannot be used for asynchronous commands because there are
-    # two prompts involved and this can lead to a race condition.
-    send_gdb "999-exec-continue\n"
-    gdb_expect {
-      -re "999\\^running\r\n$mi_gdb_prompt" {
-        gdb_expect {
-          -re "999\\*stopped,reason=\"exited-normally\"\r\n$mi_gdb_prompt$" {
-            pass "continue to end"
-          }
-          -re ".*$mi_gdb_prompt$" {fail "continue to end (2)"}
-          timeout {fail "continue to end (timeout 2)"}
-        }
-      }
-      -re ".*$mi_gdb_prompt$" {fail "continue to end (1)"}
-      timeout {fail "continue to end (timeout 1)"}
-    }
-}
-
-test_breakpoints_creation_and_listing
-test_running_the_program
-test_controlled_execution
-test_controlling_breakpoints
-test_program_termination
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-stack.exp b/gdb/testsuite/gdb.mi/mi2-stack.exp
deleted file mode 100644
index f0a4a61..0000000
--- a/gdb/testsuite/gdb.mi/mi2-stack.exp
+++ /dev/null
@@ -1,203 +0,0 @@
-# Copyright 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that stack commands work.
-
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_stack_frame_listing {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Obtain a stack trace
-    # Tests:
-    # -stack-list-frames
-    # -stack-list-frames 1 1
-    # -stack-list-frames 1 3
-
-    mi_gdb_test "231-stack-list-frames" \
-	    "231\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4\",addr=\"$hex\",func=\"main\",.*\}\\\]" \
-                "stack frame listing"
-    mi_gdb_test "232-stack-list-frames 1 1" \
-	    "232\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\}\\\]" \
-                "stack frame listing 1 1"
-    mi_gdb_test "233-stack-list-frames 1 3" \
-	    "233\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
-                "stack frame listing 1 3"
-
-    mi_gdb_test "234-stack-list-frames 1" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
-	    "stack frame listing wrong"
-}
-
-proc test_stack_args_listing {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Obtain lists for args for the stack frames
-    # Tests:
-    # -stack-list-arguments 0
-    # -stack-list-arguments 0 1 1
-    # -stack-list-arguments 0 1 3
-    # -stack-list-arguments 1
-    # -stack-list-arguments 1 1 1
-    # -stack-list-arguments 1 1 3
-    # -stack-list-arguments 
-
-    mi_gdb_test "231-stack-list-arguments 0" \
-	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\\\]\},frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\},frame=\{level=\"2\",args=\\\[name=\"intarg\",name=\"strarg\"\\\]\},frame=\{level=\"3\",args=\\\[name=\"intarg\",name=\"strarg\",name=\"fltarg\"\\\]\},frame=\{level=\"4\",args=\\\[\\\]\}\\\]" \
-                "stack args listing 0"
-
-    mi_gdb_test "232-stack-list-arguments 0 1 1" \
-	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\}\\\]" \
-                "stack args listing 0 1 1"
-
-    mi_gdb_test "233-stack-list-arguments 0 1 3" \
-	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\},frame=\{level=\"2\",args=\\\[name=\"intarg\",name=\"strarg\"\\\]\},frame=\{level=\"3\",args=\\\[name=\"intarg\",name=\"strarg\",name=\"fltarg\"\\\]\}\\\]" \
-                "stack args listing 0 1 3"
-
-    mi_gdb_test "231-stack-list-arguments 1" \
-	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\\\]\},frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\},frame=\{level=\"4\",args=\\\[\\\]\}\\\]" \
-                "stack args listing 1"
-
-    mi_gdb_test "232-stack-list-arguments 1 1 1" \
-	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\}\\\]" \
-                "stack args listing 1 1 1"
-
-    mi_gdb_test "233-stack-list-arguments 1 1 3" \
-	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\}\\\]" \
-                "stack args listing 1 1 3"
-
-    mi_gdb_test "234-stack-list-arguments" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_args: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
-	    "stack args listing wrong"
-}
-
-proc test_stack_info_depth {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Obtain depth of stack
-    # Tests:
-    # -stack-info-depth
-    # -stack-info-depth 3
-    # -stack-info-depth 99
-
-    mi_gdb_test "231-stack-info-depth" \
-	    "231\\^done,depth=\"5\"" \
-                "stack info-depth"
-
-    mi_gdb_test "231-stack-info-depth 3" \
-	    "231\\^done,depth=\"3\"" \
-                "stack info-depth 3"
-
-    mi_gdb_test "231-stack-info-depth 99" \
-	    "231\\^done,depth=\"5\"" \
-                "stack info-depth 99"
-
-    mi_gdb_test "231-stack-info-depth 99 99" \
-	    "231\\^error,msg=\"mi_cmd_stack_info_depth: Usage: .MAX_DEPTH.\"" \
-                "stack info-depth wrong usage"
-}
-
-proc test_stack_locals_listing {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Obtain lists for locals for the stack frames
-    # Tests:
-    # -stack-list-locals 0
-    # -stack-list-locals 1
-    # -stack-list-arguments 
-
-    mi_gdb_test "232-stack-list-locals 0" \
-	    "232\\^done,locals=\\\[name=\"A\",name=\"B\",name=\"C\"\\\]" \
-                "stack locals listing 0"
-
-# step until A, B, C, have some reasonable values.
-send_gdb "-exec-next 3\n"
-gdb_expect {
-    -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"13\"\}\r\n$mi_gdb_prompt$" {
-	pass "next's in callee4"
-    }
-    timeout { fail "next in callee4 (timeout)" }
-}
-
-    mi_gdb_test "232-stack-list-locals 1" \
-	    "232\\^done,locals=\\\[\{name=\"A\",value=\"1\"\},\{name=\"B\",value=\"2\"\},\{name=\"C\",value=\"3\"\}\\\]" \
-                "stack locals listing 1"
-
-    mi_gdb_test "234-stack-list-locals" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_locals: Usage.*PRINT_VALUES.*\"" \
-	    "stack locals listing wrong"
-
-    mi_gdb_test "232-stack-select-frame 1" \
-	    "232\\^done" \
-                "stack select frame 1"
-
-    mi_gdb_test "232-stack-list-locals 1" \
-	    "232\\^done,locals=\\\[\\\]" \
-                "stack locals listing for new frame"
-
-# this should be a no-op
-
-    mi_gdb_test "232-stack-select-frame" \
-	    "232\\^done" \
-                "stack select same frame"
-
-    mi_gdb_test "232-stack-list-locals 1" \
-	    "232\\^done,locals=\\\[\\\]" \
-                "stack locals for same frame (level 1)"
-
-}
-
-mi_runto callee4
-test_stack_frame_listing
-test_stack_args_listing
-test_stack_locals_listing
-test_stack_info_depth
-
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-stepi.exp b/gdb/testsuite/gdb.mi/mi2-stepi.exp
deleted file mode 100644
index 208b9e2..0000000
--- a/gdb/testsuite/gdb.mi/mi2-stepi.exp
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test Machine interface (MI) operations 
-# Verify that, using the MI, we can run a simple program and perform
-# exec-step-instruction and exec-next-instruction.  
-
-# The goal is not to
-# test gdb functionality, which is done by other tests, but to verify
-# the correct output response to MI operations.  
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_stepi_nexti {} {
-    global mi_gdb_prompt
-    global hex
-
-    send_gdb "111-exec-step-instruction\n"
-    gdb_expect {
-	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"3.\"\}\r\n$mi_gdb_prompt$" {
-	    pass "step-instruction at main"
-	}
-	timeout {
-	    fail "step-instruction at main (timeout)"
-	}
-    }
-    send_gdb "222-exec-next-instruction\n"
-    gdb_expect {
-	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"3.\"\}\r\n$mi_gdb_prompt$" {
-	    pass "next-instruction at main"
-	}
-	timeout {
-	    fail "next-instruction at main (timeout)"
-	}
-    }
-    send_gdb "333-exec-next-instruction\n"
-    gdb_expect {
-	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"3.\"\}\r\n$mi_gdb_prompt$" {
-	    pass "next-instruction at main"
-	}
-	timeout {
-	    fail "next-instruction at main (timeout)"
-	}
-    }
-}
-
-mi_run_to_main
-test_stepi_nexti
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-syn-frame.exp b/gdb/testsuite/gdb.mi/mi2-syn-frame.exp
deleted file mode 100644
index 263bb39..0000000
--- a/gdb/testsuite/gdb.mi/mi2-syn-frame.exp
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test MI output with synthetic frames on the stack (call dummies,
-# signal handlers).
-
-if [target_info exists gdb,nosignals] {
-    verbose "Skipping mi-syn-frame.exp because of nosignals."
-    continue
-}
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-set testfile "mi-syn-frame"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-set my_mi_gdb_prompt "\\(gdb\\)\[ \]*\[\r\n\]*"
-
-mi_gdb_exit
-mi_gdb_start
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-mi_run_to_main
-
-mi_gdb_test "400-break-insert foo" "400\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}"
-
-
-#
-# Call foo() by hand, where we'll hit a breakpoint.
-#
-
-mi_gdb_test "401-data-evaluate-expression foo()" "\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(foo\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+401\\^error,msg=\"The program being debugged stopped while in a function called from GDB.*\"" "call inferior's function with a breakpoint set in it"
-
-mi_gdb_test "402-stack-list-frames" "402\\^done,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]" "backtrace from inferior function stopped at bp, showing gdb dummy frame"
-
-#
-# Continue back to main()
-#
-
-send_gdb "403-exec-continue\n"
-gdb_expect {
-  -re "403\\^running\[\r\n\]+${my_mi_gdb_prompt}hi in foo\[\r\n\]+403\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
-    pass "403-exec-continue"
-  }
-  timeout {
-    fail "403-exec-continue"
-  }
-}
-
-mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
-
-
-#
-# Call have_a_very_merry_interrupt() which will eventually raise a signal
-# that's caught by handler() which calls subroutine().
-
-mi_gdb_test "405-break-insert subroutine" "405\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}"
-
-mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" "Waiting to get a signal\[\r\n\]+\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+406\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\""
-
-# We should have both a signal handler and a call dummy frame
-# in this next output.
-
-mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
-
-
-send_gdb "408-exec-continue\n"
-gdb_expect {
-  -re "408\\^running\[\r\n\]+${my_mi_gdb_prompt}408\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
-    pass "408-exec-continue"
-  }
-  timeout {
-    fail "408-exec-continue"
-  }
-}
-
-mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
-
-#
-# Call bar() by hand, which should get an exception while running.
-# 
-
-mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
-
-mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
-
-mi_gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-until.exp b/gdb/testsuite/gdb.mi/mi2-until.exp
deleted file mode 100644
index 4ef296c..0000000
--- a/gdb/testsuite/gdb.mi/mi2-until.exp
+++ /dev/null
@@ -1,127 +0,0 @@
-#   Copyright 1999, 2000 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test Machine interface (MI) operations 
-# Verify that, using the MI, we can run a simple program and perform
-# exec-until.  
-
-# The goal is not to
-# test gdb functionality, which is done by other tests, but to verify
-# the correct output response to MI operations.  
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "until"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_running_to_foo {} {
-    global mi_gdb_prompt
-    global hex
-
-    mi_gdb_test "200-break-insert 10" \
-             "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*until.c\",line=\"10\",times=\"0\"\}" \
-             "break-insert operation"
-
-    mi_run_cmd
-
-    gdb_expect {
-	-re "000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"10\"\}\r\n$mi_gdb_prompt$" {
-	    pass "run to main"
-	}
-	-re ".*$mi_gdb_prompt$" {
-	    fail "run to main (2)"
-	}
-	timeout {
-	    fail "run to main (timeout)"
-	}
-    }
-
-    mi_gdb_test "100-break-delete 1" "100\\^done" "break-delete 1"
-
-}
-
-proc test_until {} {
-    global mi_gdb_prompt
-    global hex
-
-    send_gdb "111-exec-until\n"
-    gdb_expect {
-	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
-	    pass "until after while loop"
-	}
-	timeout {
-	    fail "until after while loop (timeout)"
-	}
-    }
-
-    send_gdb "222-exec-until 15\n"
-    gdb_expect {
-	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
-	    pass "until line number"
-	}
-	timeout {
-	    fail "until line number (timeout)"
-	}
-    }
-
-    send_gdb "333-exec-until until.c:17\n"
-    gdb_expect {
-	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
-	    pass "until line number:file"
-	}
-	timeout {
-	    fail "until line number:file (timeout)"
-	}
-    }
-
-    # This is supposed to NOT stop at line 25. It stops right after foo is over.
-
-    send_gdb "444-exec-until until.c:25\n"
-    gdb_expect {
-	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
-	    pass "until after current function"
-	}
-	timeout {
-	    fail "until after current function (timeout)"
-	}
-    }
-
-}
-
-test_running_to_foo
-test_until
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-var-block.exp b/gdb/testsuite/gdb.mi/mi2-var-block.exp
deleted file mode 100644
index 84bc1ff..0000000
--- a/gdb/testsuite/gdb.mi/mi2-var-block.exp
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-#
-# This Program Is Free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can create, update, delete variables.
-#
-
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "var-cmd"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-mi_runto do_block_tests
-
-# Test: c_variable-3.2
-# Desc: create cb and foo
-mi_gdb_test "-var-create cb * cb" \
-	"\\^done,name=\"cb\",numchild=\"0\",type=\"int\"" \
-	"create local variable cb"
-
-mi_gdb_test "-var-create foo * foo" \
-	"&\"mi_cmd_var_create: unable to create variable object\\\\n\".*\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
-	"create local variable foo"
-
-# step to "foo = 123;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "158" "step at do_block_test"
-
-
-# Be paranoid and assume 3.2 created foo
-mi_gdb_test "-var-delete foo" \
-	"&\"Variable object not found\\\\n\".*\\^error,msg=\"Variable object not found\"" \
-	"delete var foo"
-
-
-# Test: c_variable-3.3
-# Desc: create foo
-mi_gdb_test "-var-create foo * foo" \
-	"\\^done,name=\"foo\",numchild=\"0\",type=\"int\"" \
-	"create local variable foo"
-
-# step to "foo2 = 123;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "161" "step at do_block_test"
-
-# Test: c_variable-3.4
-# Desc: check foo, cb changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"foo\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"cb\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: cb foo changed"
-
-# step to "foo = 321;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "164" "step at do_block_test"
-
-# Test: c_variable-3.5
-# Desc: create inner block foo
-mi_gdb_test "-var-create inner_foo * foo" \
-	"\\^done,name=\"inner_foo\",numchild=\"0\",type=\"int\"" \
-	"create local variable inner_foo"
-
-# step to "foo2 = 0;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "166" "step at do_block_test"
-
-# Test: c_variable-3.6
-# Desc: create foo2
-mi_gdb_test "-var-create foo2 * foo2" \
-	"\\^done,name=\"foo2\",numchild=\"0\",type=\"int\"" \
-	"create local variable foo2"
-
-# Test: c_variable-3.7
-# Desc: check that outer foo in scope and inner foo out of scope
-# Note: also a known gdb problem
-setup_xfail *-*-*
-mi_gdb_test "-var-update inner_foo" \
-	"\\^done,changelist=\{FIXME\}" \
-	"update inner_foo: should be out of scope: KNOWN PROBLEM"
-clear_xfail *-*-*
-
-setup_xfail *-*-*
-mi_gdb_test "-var-evaluate-expression inner_foo" \
-	"\\^done,value=\{FIXME\}" \
-	"evaluate inner_foo: should be out of scope: KNOWN PROBLEM"
-clear_xfail *-*-*
-
-mi_gdb_test "-var-update foo" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update foo: did not change"
-
-mi_gdb_test "-var-delete inner_foo" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var inner_foo"
-
-# step to "foo = 0;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "168" "step at do_block_test"
-
-# Test: c_variable-3.8
-# Desc: check that foo2 out of scope (known gdb problem)
-setup_xfail *-*-*
-mi_gdb_test "-var-update foo2" \
-	"\\^done,changelist=\{FIXME\}" \
-	"update foo2: should be out of scope: KNOWN PROBLEM"
-clear_xfail *-*-*
-
-# step to "cb = 21;"
-mi_step_to "do_block_tests" "" "var-cmd.c" "171" "step at do_block_test"
-
-# Test: c_variable-3.9
-# Desc: check that only cb is in scope (known gdb problem)
-setup_xfail *-*-*
-mi_gdb_test "-var-update foo2" \
-	"\\^done,changelist=\\\[FIXME\\\]" \
-	"update foo2 should be out of scope: KNOWN PROBLEM"
-clear_xfail *-*-*
-setup_xfail *-*-*
-mi_gdb_test "-var-update foo" \
-	"\\^done,changelist=\{FIXME\}" \
-	"update foo should be out of scope: KNOWN PROBLEM"
-clear_xfail *-*-*
-mi_gdb_test "-var-update cb" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update cb"
-
-# Test: c_variable-3.10
-# Desc: names of editable variables
-#gdbtk_test c_variable-3.10 {names of editable variables} {
-#  editable_variables
-#} {{foo cb foo2} {}}
-
-# Done with block tests
-mi_gdb_test "-var-delete foo" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var foo"
-
-mi_gdb_test "-var-delete foo2" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var foo2"
-
-mi_gdb_test "-var-delete cb" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var cb"
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-var-child.exp b/gdb/testsuite/gdb.mi/mi2-var-child.exp
deleted file mode 100644
index 3f6a3fd..0000000
--- a/gdb/testsuite/gdb.mi/mi2-var-child.exp
+++ /dev/null
@@ -1,1203 +0,0 @@
-#   Copyright (C) 1999, 2000, 2002 Free Software Foundation
-
-# This Program Is Free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can create, update, delete variables.
-#
-
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "var-cmd"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-mi_runto do_children_tests
-
-#####        #####
-#                #
-# children tests #
-#                #
-#####        #####
-
-
-# Test: c_variable-4.2
-# Desc: create variable "struct_declarations"
-mi_gdb_test "-var-create struct_declarations * struct_declarations" \
-	"\\^done,name=\"struct_declarations\",numchild=\"11\",type=\"struct _struct_decl\"" \
-	"create local variable struct_declarations"
-
-# Test: c_variable-4.3
-# Desc: children of struct_declarations
-# STABS doesn't give us argument types for the func ptr structs, but
-# Dwarf 2 does.
-mi_gdb_test "-var-list-children struct_declarations" \
-	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"struct_declarations.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"struct_declarations.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"struct_declarations.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"struct_declarations.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void)?\\)\"\},child=\{name=\"struct_declarations.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"struct_declarations.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"struct_declarations.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
-	"get children of struct_declarations"
-
-#gdbtk_test c_variable-4.3 {children of struct_declarations} {
-#  get_children  struct_declarations
-#} {integer character char_ptr long_int int_ptr_ptr long_array func_ptr func_ptr_struct func_ptr_ptr u1 s2}
-
-# Test: c_variable-4.4
-# Desc: number of children of struct_declarations
-mi_gdb_test "-var-info-num-children struct_declarations" \
-	"\\^done,numchild=\"11\"" \
-	"get number of children of struct_declarations"
-
-# Test: c_variable-4.5
-# Desc: children of struct_declarations.integer
-mi_gdb_test "-var-list-children struct_declarations.integer" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.integer"
-
-# Test: c_variable-4.6
-# Desc: number of children of struct_declarations.integer
-mi_gdb_test "-var-info-num-children struct_declarations.integer" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.integer"
-
-# Test: c_variable-4.7
-# Desc: children of struct_declarations.character
-mi_gdb_test "-var-list-children struct_declarations.character" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.character"
-
-# Test: c_variable-4.8
-# Desc: number of children of struct_declarations.character
-mi_gdb_test "-var-info-num-children struct_declarations.character" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.character"
-
-# Test: c_variable-4.9
-# Desc: children of struct_declarations.char_ptr
-mi_gdb_test "-var-list-children struct_declarations.char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.char_ptr.\\*char_ptr\",exp=\"\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of struct_declarations.char_ptr"
-
-# Test: c_variable-4.10
-# Desc: number of children of struct_declarations.char_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of struct_declarations.char_ptr"
-
-# Test: c_variable-4.11
-# Desc: children of struct_declarations.long_int
-mi_gdb_test "-var-list-children struct_declarations.long_int" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_int"
-
-# Test: c_variable-4.12
-# Desc: number of children of struct_declarations.long_int
-mi_gdb_test "-var-info-num-children struct_declarations.long_int" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_int"
-
-# Test: c_variable-4.13
-# Desc: children of int_ptr_ptr
-mi_gdb_test "-var-list-children struct_declarations.int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",exp=\"\\*int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
-	"get children of struct_declarations.int_ptr_ptr"
-
-#gdbtk_test c_variable-4.13 {children of int_ptr_ptr} {
-#  get_children struct_declarations.int_ptr_ptr
-#} {*int_ptr_ptr}
-
-# Test: c_variable-4.14
-# Desc: number of children of int_ptr_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of struct_declarations.int_ptr_ptr"
-
-
-# Test: c_variable-4.15
-# Desc: children of struct_declarations.long_array
-mi_gdb_test "-var-list-children struct_declarations.long_array" \
-	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.long_array.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of struct_declarations.long_array"
-
-# Test: c_variable-4.16
-# Desc: number of children of struct_declarations.long_array
-mi_gdb_test "-var-info-num-children struct_declarations.long_array" \
-	"\\^done,numchild=\"10\"" \
-	"get number of children of struct_declarations.long_array"
-
-# Test: c_variable-4.17
-# Desc: children of struct_declarations.func_ptr
-mi_gdb_test "-var-list-children struct_declarations.func_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.func_ptr"
-
-
-# Test: c_variable-4.18
-# Desc: number of children of struct_declarations.func_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.func_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.func_ptr"
-
-
-# Test: c_variable-4.19
-# Desc: children of struct_declarations.func_ptr_struct
-mi_gdb_test "-var-list-children struct_declarations.func_ptr_struct" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.func_ptr_struct"
-
-# Test: c_variable-4.20
-# Desc: number of children of struct_declarations.func_ptr_struct
-mi_gdb_test "-var-info-num-children struct_declarations.func_ptr_struct" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.func_ptr_struct"
-
-
-# Test: c_variable-4.21
-# Desc: children of struct_declarations.func_ptr_ptr
-mi_gdb_test "-var-list-children struct_declarations.func_ptr_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.func_ptr_ptr"
-
-# Test: c_variable-4.22
-# Desc: number of children of struct_declarations.func_ptr_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.func_ptr_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.func_ptr_ptr"
-
-
-# Test: c_variable-4.23
-# Desc: children of struct_declarations.u1
-mi_gdb_test "-var-list-children struct_declarations.u1" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.u1.a\",exp=\"a\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.u1.b\",exp=\"b\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"struct_declarations.u1.c\",exp=\"c\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.u1.d\",exp=\"d\",numchild=\"0\",type=\"enum foo\"\}\\\]" \
-	"get children of struct_declarations.u1"
-
-# Test: c_variable-4.24
-# Desc: number of children of struct_declarations.u1
-mi_gdb_test "-var-info-num-children struct_declarations.u1" \
-	"\\^done,numchild=\"4\"" \
-	"get number of children of struct_declarations.u1"
-
-# Test: c_variable-4.25
-# Desc: children of struct_declarations.s2
-mi_gdb_test "-var-list-children struct_declarations.s2" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.s2.u2\",exp=\"u2\",numchild=\"3\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2.g\",exp=\"g\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.s2.h\",exp=\"h\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.i\",exp=\"i\",numchild=\"10\",type=\"long int \\\[10\\\]\"\}\\\]" \
-	"get children of struct_declarations.s2"
-#gdbtk_test c_variable-4.25 {children of struct_declarations.s2} {
-#  get_children struct_declarations.s2
-#} {u2 g h i}
-
-# Test: c_variable-4.26
-# Desc: number of children of struct_declarations.s2
-mi_gdb_test "-var-info-num-children struct_declarations.s2" \
-	"\\^done,numchild=\"4\"" \
-	"get number of children of struct_declarations.s2"
-
-
-# Test: c_variable-4.27
-# Desc: children of struct_declarations.long_array.1
-mi_gdb_test "-var-list-children struct_declarations.long_array.1" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.1"
-
-# Test: c_variable-4.28
-# Desc: number of children of struct_declarations.long_array.1
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.1" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.1"
-
-# Test: c_variable-4.29
-# Desc: children of struct_declarations.long_array.2
-mi_gdb_test "-var-list-children struct_declarations.long_array.2" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.2"
-
-# Test: c_variable-4.30
-# Desc: number of children of struct_declarations.long_array.2
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.2" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.2"
-
-# Test: c_variable-4.31
-# Desc: children of struct_declarations.long_array.3
-mi_gdb_test "-var-list-children struct_declarations.long_array.3" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.3"
-
-# Test: c_variable-4.32
-# Desc: number of children of struct_declarations.long_array.3
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.3" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.3"
-
-# Test: c_variable-4.33 
-# Desc: children of struct_declarations.long_array.4
-mi_gdb_test "-var-list-children struct_declarations.long_array.4" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.4"
-
-# Test: c_variable-4.34
-# Desc: number of children of struct_declarations.long_array.4
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.4" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.4"
-
-# Test: c_variable-4.35
-# Desc: children of struct_declarations.long_array.5
-mi_gdb_test "-var-list-children struct_declarations.long_array.5" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.5"
-
-# Test: c_variable-4.36
-# Desc: number of children of struct_declarations.long_array.5
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.5" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.5"
-
-# Test: c_variable-4.37
-# Desc: children of struct_declarations.long_array.6
-mi_gdb_test "-var-list-children struct_declarations.long_array.6" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.6"
-
-# Test: c_variable-4.38
-# Desc: number of children of struct_declarations.long_array.6
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.6" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.6"
-
-# Test: c_variable-4.39
-# Desc: children of struct_declarations.long_array.7
-mi_gdb_test "-var-list-children struct_declarations.long_array.7" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.7"
-
-# Test: c_variable-4.40
-# Desc: number of children of struct_declarations.long_array.7
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.7" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.7"
-
-# Test: c_variable-4.41
-# Desc: children of struct_declarations.long_array.8
-mi_gdb_test "-var-list-children struct_declarations.long_array.8" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.8"
-
-# Test: c_variable-4.42
-# Desc: number of children of struct_declarations.long_array.8
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.8" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.8"
-
-
-# Test: c_variable-4.43
-# Desc: children of struct_declarations.long_array.9
-mi_gdb_test "-var-list-children struct_declarations.long_array.9" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.long_array.9"
-
-# Test: c_variable-4.44
-# Desc: number of children of struct_declarations.long_array.9
-mi_gdb_test "-var-info-num-children struct_declarations.long_array.9" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.long_array.9"
-
-# Test: c_variable-4.45
-# Desc: children of struct_declarations.u1.a
-mi_gdb_test "-var-list-children struct_declarations.u1.a" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.u1.a"
-
-# Test: c_variable-4.46
-# Desc: number of children of struct_declarations.u1.a
-mi_gdb_test "-var-info-num-children struct_declarations.u1.a" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.u1.a"
-
-# Test: c_variable-4.47
-# Desc: children of struct_declarations.u1.b
-mi_gdb_test "-var-list-children struct_declarations.u1.b" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.u1.b.\\*b\",exp=\"\\*b\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of struct_declarations.u1.b"
-
-# Test: c_variable-4.48
-# Desc: number of children of struct_declarations.u1.b
-mi_gdb_test "-var-info-num-children struct_declarations.u1.b" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of struct_declarations.u1.b"
-
-# Test: c_variable-4.49
-# Desc: children of struct_declarations.u1.c
-mi_gdb_test "-var-list-children struct_declarations.u1.c" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.u1.c"
-
-# Test: c_variable-4.50
-# Desc: number of children of struct_declarations.u1.c
-mi_gdb_test "-var-info-num-children struct_declarations.u1.c" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.u1.c"
-
-# Test: c_variable-4.51
-# Desc: children of struct_declarations.u1.d
-mi_gdb_test "-var-list-children struct_declarations.u1.d" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.u1.d"
-
-
-# Test: c_variable-4.52
-# Desc: number of children of struct_declarations.u1.d
-mi_gdb_test "-var-info-num-children struct_declarations.u1.d" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.u1.d"
-
-
-# Test: c_variable-4.53
-# Desc: children of struct_declarations.s2.u2
-mi_gdb_test "-var-list-children struct_declarations.s2.u2" \
-	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1\",exp=\"u1s1\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2.u2.f\",exp=\"f\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.u2.u1s2\",exp=\"u1s2\",numchild=\"2\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
-	"get children of struct_declarations.s2.u2"
-
-# Test: c_variable-4.54
-# Desc: number of children of struct_declarations.s2.u2
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2" \
-	"\\^done,numchild=\"3\"" \
-	"get number of children of struct_declarations.s2.u2"
-
-# Test: c_variable-4.55
-# Desc: children of struct_declarations.s2.g
-mi_gdb_test "-var-list-children struct_declarations.s2.g" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.g"
-
-# Test: c_variable-4.56
-# Desc: number of children of struct_declarations.s2.g
-mi_gdb_test "-var-info-num-children struct_declarations.s2.g" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.g"
-
-
-# Test: c_variable-4.57
-# Desc: children of struct_declarations.s2.h
-mi_gdb_test "-var-list-children struct_declarations.s2.h" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.h"
-
-# Test: c_variable-4.58
-# Desc: number of children of struct_declarations.s2.h
-mi_gdb_test "-var-info-num-children struct_declarations.s2.h" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.h"
-
-
-# Test: c_variable-4.59
-# Desc: children of struct_declarations.s2.i
-mi_gdb_test "-var-list-children struct_declarations.s2.i" \
-	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.s2.i.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of struct_declarations.s2.i"
-
-# Test: c_variable-4.60
-# Desc: number of children of struct_declarations.s2.i
-mi_gdb_test "-var-info-num-children struct_declarations.s2.i" \
-	"\\^done,numchild=\"10\"" \
-	"get number of children of struct_declarations.s2.i"
-
-# Test: c_variable-4.61
-# Desc: children of struct_declarations.s2.u2.u1s1
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1.d\",exp=\"d\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e\",exp=\"e\",numchild=\"10\",type=\"char \\\[10\\\]\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.func\",exp=\"func\",numchild=\"0\",type=\"int \\*\\(\\*\\)\\((void)?\\)\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.foo\",exp=\"foo\",numchild=\"0\",type=\"efoo\"\}\\\]" \
-	"get children of struct_declarations.s2.u2.u1s1"
-
-# Test: c_variable-4.62
-# Desc: number of children of struct_declarations.s2.u2.u1s1
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1" \
-	"\\^done,numchild=\"4\"" \
-	"get number of children of struct_declarations.s2.u2.u1s1"
-
-# Test: c_variable-4.63
-# Desc: children of struct_declarations.s2.u2.f
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.f" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.u2.f"
-
-# Test: c_variable-4.64
-# Desc: number of children of struct_declarations.s2.u2.f
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.f" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.u2.f"
-
-# Test: c_variable-4.65
-# Desc: children of struct_declarations.s2.u2.u1s2
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2" \
-	"\\^done,numchild=\"2\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s2.array_ptr\",exp=\"array_ptr\",numchild=\"2\",type=\"char \\\[2\\\]\"\},child=\{name=\"struct_declarations.s2.u2.u1s2.func\",exp=\"func\",numchild=\"0\",type=\"int \\(\\*\\)\\((int, char \\*)?\\)\"\}\\\]" \
-	"get children of struct_declarations.s2.u2.u1s2"
-
-# Test: c_variable-4.66
-# Desc: number of children of struct_declarations.s2.u2.u1s2
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2" \
-	"\\^done,numchild=\"2\"" \
-	"get number of children of struct_declarations.s2.u2.u1s2"
-
-# Test: c_variable-4.67
-# Desc: children of struct_declarations.s2.u2.u1s1.d
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.d" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.u2.u1s1.d"
-
-# Test: c_variable-4.68
-# Desc: number of children of struct_declarations.s2.u2.u1s1.d
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.d" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.u2.u1s1.d"
-
-# Test: c_variable-4.69
-# Desc: children of struct_declarations.s2.u2.u1s1.e
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.e" \
-	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1.e.0\",exp=\"0\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.1\",exp=\"1\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.2\",exp=\"2\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.s2.u2.u1s1.e.3\",exp=\"3\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.4\",exp=\"4\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.5\",exp=\"5\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.6\",exp=\"6\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.7\",exp=\"7\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.8\",exp=\"8\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.9\",exp=\"9\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of struct_declarations.s2.u2.u1s1.e"
-
-# Test: c_variable-4.70
-# Desc: number of children of struct_declarations.s2.u2.u1s1.e
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.e" \
-	"\\^done,numchild=\"10\"" \
-	"get number of children of struct_declarations.s2.u2.u1s1.e"
-
-
-# Test: c_variable-4.71
-# Desc: children of struct_declarations.s2.u2.u1s1.func
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.func" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.u2.u1s1.func"
-
-# Test: c_variable-4.72
-# Desc: number of children of struct_declarations.s2.u2.u1s1.func
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.func" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.u2.u1s1.func"
-
-
-# Test: c_variable-4.73
-# Desc: children of struct_declarations.s2.u2.u1s1.foo
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.foo" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.u2.u1s1.foo"
-
-# Test: c_variable-4.74
-# Desc: number of children of struct_declarations.s2.u2.u1s1.foo
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.foo" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.u2.u1s1.foo"
-
-
-# Test: c_variable-4.75
-# Desc: children of struct_declarations.s2.u2.u1s2.array_ptr
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2.array_ptr" \
-	"\\^done,numchild=\"2\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s2.array_ptr.0\",exp=\"0\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.s2.u2.u1s2.array_ptr.1\",exp=\"1\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of struct_declarations.s2.u2.u1s2.array_ptr"
-
-# Test: c_variable-4.76
-# Desc: number of children of struct_declarations.s2.u2.u1s2.array_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2.array_ptr" \
-	"\\^done,numchild=\"2\"" \
-	"get number of children of struct_declarations.s2.u2.u1s2.array_ptr"
-
-# Test: c_variable-4.77
-# Desc: children of struct_declarations.s2.u2.u1s2.func
-mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2.func" \
-	"\\^done,numchild=\"0\"" \
-	"get children of struct_declarations.s2.u2.u1s2.func"
-
-# Test: c_variable-4.78
-# Desc: number of children of struct_declarations.s2.u2.u1s2.func
-mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2.func" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of struct_declarations.s2.u2.u1s2.func"
-
-# Test: c_variable-4.79
-# Desc: children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
-mi_gdb_test "-var-list-children struct_declarations.int_ptr_ptr.*int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",exp=\"\\*\\*int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
-	"get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr"
-#} {**int_ptr_ptr}
-
-# Test: c_variable-4.80
-# Desc: Number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
-mi_gdb_test "-var-info-num-children struct_declarations.int_ptr_ptr.*int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr"
-
-
-# Step to "struct_declarations.integer = 123;"
-set line 192
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step to line $line"
-
-# Test: c_variable-4.81
-# Desc: create local variable "weird"
-mi_gdb_test "-var-create weird * weird" \
-	"\\^done,name=\"weird\",numchild=\"11\",type=\"weird_struct \\*\"" \
-	"create local variable weird"
-
-# Test: c_variable-4.82
-# Desc: children of weird
-mi_gdb_test "-var-list-children weird" \
-	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child=\{name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void)?\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
-	"get children of weird"
-
-# Test: c_variable-4.83
-# Desc: number of children of weird
-mi_gdb_test "-var-info-num-children weird" \
-	"\\^done,numchild=\"11\"" \
-	"get number of children of weird"
-
-
-# Test: c_variable-4.84
-# Desc: children of weird->long_array
-mi_gdb_test "-var-list-children weird.long_array" \
-	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"weird.long_array.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of weird.long_array"
-#gdbtk_test c_variable-4.84 {children of weird->long_array} {
-#  get_children weird.long_array
-#} {0 1 2 3 4 5 6 7 8 9}
-
-# Test: c_variable-4.85
-# Desc: number of children of weird.long_array
-mi_gdb_test "-var-info-num-children weird.long_array" \
-	"\\^done,numchild=\"10\"" \
-	"get number of children of weird.long_array"
-
-# Test: c_variable-4.86
-# Desc: children of weird.int_ptr_ptr
-mi_gdb_test "-var-list-children weird.int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird.int_ptr_ptr.\\*int_ptr_ptr\",exp=\"\\*int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
-	"get children of weird.int_ptr_ptr"
-#gdbtk_test c_variable-4.86 {children of weird->int_ptr_ptr} {
-#  get_children weird.int_ptr_ptr
-#} {*int_ptr_ptr}
-
-# Test: c_variable-4.87
-# Desc: number of children of weird.int_ptr_ptr
-mi_gdb_test "-var-info-num-children weird.int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of weird.int_ptr_ptr"
-
-# Test: c_variable-4.88
-# Desc: children of *weird->int_ptr_ptr
-mi_gdb_test "-var-list-children weird.int_ptr_ptr.*int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",exp=\"\\*\\*int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
-	"get children of weird.int_ptr_ptr.*int_ptr_ptr"
-#gdbtk_test c_variable-4.88 {children of *weird->int_ptr_ptr} {
-#  get_children weird.int_ptr_ptr.*int_ptr_ptr
-#} {**int_ptr_ptr}
-
-# Test: c_variable-4.89
-# Desc: number of children *weird->int_ptr_ptr
-mi_gdb_test "-var-info-num-children weird.int_ptr_ptr.*int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of weird.int_ptr_ptr.*int_ptr_ptr"
-
-# Test: c_variable-4.90
-# Desc: create weird->int_ptr_ptr
-mi_gdb_test "-var-create weird->int_ptr_ptr * weird->int_ptr_ptr" \
-	"\\^done,name=\"weird->int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"" \
-	"create local variable weird->int_ptr_ptr"
-
-# Test: c_variable-4.91
-# Desc: children of weird->int_ptr_ptr
-mi_gdb_test "-var-list-children weird->int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",exp=\"\\*weird->int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
-	"get children of weird->int_ptr_ptr"
-
-
-# Test: c_variable-4.92
-# Desc: number of children of (weird->int_ptr_ptr)
-mi_gdb_test "-var-info-num-children weird->int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of weird->int_ptr_ptr"
-
-# Test: c_variable-4.93
-# Desc: children of *(weird->int_ptr_ptr)
-mi_gdb_test "-var-list-children weird->int_ptr_ptr.*weird->int_ptr_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",exp=\"\\*\\*weird->int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
-	"get children of weird->int_ptr_ptr.*weird->int_ptr_ptr"
-
-# Test: c_variable-4.94
-# Desc: number of children of *(weird->int_ptr_ptr)
-mi_gdb_test "-var-info-num-children weird->int_ptr_ptr.*weird->int_ptr_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr"
-
-# Test: c_variable-4.95
-# Desc: children of *(*(weird->int_ptr_ptr))
-mi_gdb_test "-var-list-children weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr"
-
-# Test: c_variable-4.96
-# Desc: number of children of *(*(weird->int_ptr_ptr))
-mi_gdb_test "-var-info-num-children weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr"
-
-# Test: c_variable-4.97
-# Desc: is weird editable
-mi_gdb_test "-var-show-attributes weird" \
-	"\\^done,attr=\"editable\"" \
-	"is weird editable"
-
-# Test: c_variable-4.98
-# Desc: is weird->int_ptr_ptr editable
-mi_gdb_test "-var-show-attributes weird->int_ptr_ptr" \
-	"\\^done,attr=\"editable\"" \
-	"is weird->int_ptr_ptr editable"
-
-# Test: c_variable-4.99
-# Desc: is *(weird->int_ptr_ptr) editable
-mi_gdb_test "-var-show-attributes weird.int_ptr_ptr.*int_ptr_ptr" \
-	"\\^done,attr=\"editable\"" \
-	"is weird.int_ptr_ptr.*int_ptr_ptr editable"
-
-# Test: c_variable-4.100
-# Desc: is *(*(weird->int_ptr_ptr)) editable
-mi_gdb_test "-var-show-attributes weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr" \
-	"\\^done,attr=\"editable\"" \
-	"is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable"
-
-# Test: c_variable-4.101
-# Desc: is weird->u1 editable
-mi_gdb_test "-var-show-attributes weird.u1" \
-	"\\^done,attr=\"noneditable\"" \
-	"is weird.u1 editable"
-
-# Test: c_variable-4.102
-# Desc: is weird->s2 editable
-mi_gdb_test "-var-show-attributes weird.s2" \
-	"\\^done,attr=\"noneditable\"" \
-	"is weird.s2 editable"
-
-# Test: c_variable-4.103
-# Desc: is struct_declarations.u1.a editable
-mi_gdb_test "-var-show-attributes struct_declarations.u1.a" \
-	"\\^done,attr=\"editable\"" \
-	"is struct_declarations.u1.a editable"
-
-# Test: c_variable-4.104
-# Desc: is struct_declarations.u1.b editable
-mi_gdb_test "-var-show-attributes struct_declarations.u1.b" \
-	"\\^done,attr=\"editable\"" \
-	"is struct_declarations.u1.b editable"
-
-# Test: c_variable-4.105
-# Desc: is struct_declarations.u1.c editable
-mi_gdb_test "-var-show-attributes struct_declarations.u1.c" \
-	"\\^done,attr=\"editable\"" \
-	"is struct_declarations.u1.c editable"
-
-# Test: c_variable-4.106
-# Desc: is struct_declarations.long_array editable
-mi_gdb_test "-var-show-attributes struct_declarations.long_array" \
-	"\\^done,attr=\"noneditable\"" \
-	"is struct_declarations.long_array editable"
-
-# Test: c_variable-4.107
-# Desc: is struct_declarations.long_array[0] editable
-mi_gdb_test "-var-show-attributes struct_declarations.long_array.0" \
-	"\\^done,attr=\"editable\"" \
-	"is struct_declarations.long_array.0 editable"
-
-# Test: c_variable-4.108
-# Desc: is struct_declarations editable
-mi_gdb_test "-var-show-attributes struct_declarations" \
-	"\\^done,attr=\"noneditable\"" \
-	"is struct_declarations editable"
-
-mi_gdb_test "-var-delete weird" \
-	"\\^done,ndeleted=\"24\"" \
-	"delete var weird"
-
-#####                         #####
-#                                 #
-# children and update tests #
-#                                 #
-#####                         #####
-
-# Test: c_variable-5.1
-# Desc: check that nothing changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update all vars. None changed"
-
-# Step over "struct_declarations.integer = 123;"
-set line 193
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.2
-# Desc: check that integer changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.integer\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.integer"
-
-# Step over:
-#    weird->char_ptr = "hello";
-#    bar = 2121;
-#    foo = &bar;
-set line 196
-mi_execute_to "exec-step 3" "end-stepping-range" do_children_tests {} {.*var-cmd.c} $line {} "step $line"
-
-# Test: c_variable-5.3
-# Desc: check that char_ptr changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.char_ptr"
-
-# Step over "struct_declarations.int_ptr_ptr = &foo;"
-set line 197
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.4
-# Desc: check that int_ptr_ptr and children changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars int_ptr_ptr and children changed"
-
-# Step over "weird->long_array[0] = 1234;"
-set line 198
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.5
-# Desc: check that long_array[0] changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.0\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.long_array.0 changed"
-
-# Step over "struct_declarations.long_array[1] = 2345;"
-set line 199
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.6
-# Desc: check that long_array[1] changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.1\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.long_array.1 changed"
-
-# Step over "weird->long_array[2] = 3456;"
-set line 200
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.7
-# Desc: check that long_array[2] changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.2\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.long_array.2 changed"
-
-# Step over:
-#    struct_declarations.long_array[3] = 4567;
-#    weird->long_array[4] = 5678;
-#    struct_declarations.long_array[5] = 6789;
-#    weird->long_array[6] = 7890;
-#    struct_declarations.long_array[7] = 8901;
-#    weird->long_array[8] = 9012;
-#    struct_declarations.long_array[9] = 1234;
-set line 208
-mi_execute_to "exec-step 7" "end-stepping-range" do_children_tests {} {.*var-cmd.c} $line {} "step $line"
-
-# Test: c_variable-5.8
-# Desc: check that long_array[3-9] changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.3\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.4\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.5\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.6\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.7\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.8\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.9\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.long_array.3-9 changed"
-
-
-# Step over "weird->func_ptr = nothing;"
-set line 211
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.9
-# Desc: check that func_ptr changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"struct_declarations.func_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars struct_declarations.func_ptr changed"
-
-# Delete all variables
-mi_gdb_test "-var-delete struct_declarations" \
-	"\\^done,ndeleted=\"65\"" \
-	"delete var struct_declarations"
-
-mi_gdb_test "-var-delete weird->int_ptr_ptr" \
-	"\\^done,ndeleted=\"3\"" \
-	"delete var weird->int_ptr_ptr"
-
-# Step over all lines:
-# ...
-#   psnp = &snp0;
-set line 254
-mi_execute_to "exec-step 43" "end-stepping-range" do_children_tests {} {.*var-cmd.c} $line {} "step $line"
-
-# Test: c_variable-5.10
-# Desc: create psnp->char_ptr
-mi_gdb_test "-var-create  psnp->char_ptr *  psnp->char_ptr" \
-	"\\^done,name=\"psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"" \
-	"create local variable  psnp->char_ptr"
-
-# Test: c_variable-5.11
-# Desc: children of psnp->char_ptr
-mi_gdb_test "-var-list-children psnp->char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",exp=\"\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
-	"get children of psnp->char_ptr"
-
-# Test: c_variable-5.12
-# Desc: number of children of psnp->char_ptr
-mi_gdb_test "-var-info-num-children psnp->char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->char_ptr"
-
-# Test: c_variable-5.13
-# Desc: children of *(psnp->char_ptr)
-mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",exp=\"\\*\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
-	"get children of psnp->char_ptr.*psnp->char_ptr"
-
-# Test: c_variable-5.14
-# Desc: number of children of *(psnp->char_ptr)
-mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->char_ptr.*psnp->char_ptr"
-
-# Test: c_variable-5.15
-# Desc: children of *(*(psnp->char_ptr))
-mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\"\}\\\]" \
-	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
-
-# Test: c_variable-5.15B
-# Desc: children of *(*(*(psnp->char_ptr)))
-mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*\\*psnp->char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
-
-# Test: c_variable-5.16
-# Desc: number of children of *(*(psnp->char_ptr))
-mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
-
-# Test: c_variable-5.17
-# Desc: children of *(*(*(psnp->char_ptr)))
-mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*\\*psnp->char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
-
-# Test: c_variable-5.18
-# Desc: number of children of *(*(*(psnp->char_ptr)))
-mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
-
-# Test: c_variable-5.17B
-# Desc: children of *(*(*(*(psnp->char_ptr))))
-mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
-
-# Test: c_variable-5.18B
-# Desc: number of children of *(*(*(*(psnp->char_ptr))))
-mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
-
-
-# Test: c_variable-5.19
-# Desc: create psnp->long_ptr
-mi_gdb_test "-var-create  psnp->long_ptr *  psnp->long_ptr" \
-	"\\^done,name=\"psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"" \
-	"create local variable  psnp->long_ptr"
-
-# Test: c_variable-5.20
-# Desc: children of psnp->long_ptr
-mi_gdb_test "-var-list-children psnp->long_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",exp=\"\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\"\}\\\]" \
-	"get children of psnp->long_ptr"
-
-# Test: c_variable-5.21
-# Desc: number of children of psnp->long_ptr
-mi_gdb_test "-var-info-num-children psnp->long_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->long_ptr"
-
-# Test: c_variable-5.22
-# Desc: children of *(psnp->long_ptr)
-mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",exp=\"\\*\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\"\}\\\]" \
-	"get children of psnp->long_ptr.*psnp->long_ptr"
-
-
-# Test: c_variable-5.23
-# Desc: number of children of *(psnp->long_ptr)
-mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->long_ptr.*psnp->long_ptr"
-
-# Test: c_variable-5.24
-# Desc: children of *(*(psnp->long_ptr))
-mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",exp=\"\\*\\*\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\"\}\\\]" \
-	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
-
-# Test: c_variable-5.25
-# Desc: number of children of *(*(psnp->long_ptr))
-mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
-
-# Test: c_variable-5.26
-# Desc: children of *(*(*(psnp->long_ptr)))
-mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",exp=\"\\*\\*\\*\\*psnp->long_ptr\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
-
-# Test: c_variable-5.27
-# Desc: number of children of *(*(*(psnp->long_ptr)))
-mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
-
-# Test: c_variable-5.28
-# Desc: children of *(*(*(*(psnp->long_ptr))))
-mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
-
-# Test: c_variable-5.29
-# Desc: number of children of *(*(*(*(psnp->long_ptr))))
-mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
-
-# Test: c_variable-5.30
-# Desc: create psnp->ptrs
-mi_gdb_test "-var-create  psnp->ptrs *  psnp->ptrs" \
-	"\\^done,name=\"psnp->ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"" \
-	"create local variable  psnp->ptrs"
-
-# Test: c_variable-5.31
-# Desc: children of psnp->ptrs
-mi_gdb_test "-var-list-children psnp->ptrs" \
-	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"psnp->ptrs.0\",exp=\"0\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.1\",exp=\"1\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.2\",exp=\"2\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
-	"get children of psnp->ptrs"
-
-# Test: c_variable-5.32
-# Desc: number of children of psnp->ptrs
-mi_gdb_test "-var-info-num-children psnp->ptrs" \
-	"\\^done,numchild=\"3\"" \
-	"get number of children of psnp->ptrs"
-
-# Test: c_variable-5.33
-# Desc: children of psnp->ptrs[0]
-mi_gdb_test "-var-list-children psnp->ptrs.0" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
-	"get children of psnp->ptrs.0"
-
-# Test: c_variable-5.34
-# Desc: number of children of psnp->ptrs[0]
-mi_gdb_test "-var-info-num-children psnp->ptrs.0" \
-	"\\^done,numchild=\"4\"" \
-	"get number of children of psnp->ptrs.0"
-
-# Test: c_variable-5.35
-# Desc: children of psnp->ptrs[0]->next
-mi_gdb_test "-var-list-children psnp->ptrs.0.next" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next"
-
-#} {char_ptr long_ptr ptrs next}
-
-# Test: c_variable-5.36
-# Desc: number of children of psnp->ptrs[0]->next
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next" \
-	"\\^done,numchild=\"4\"" \
-	"get number of children of psnp->ptrs.0.next"
-
-
-# Test: c_variable-5.37
-# Desc: children of psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",exp=\"\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.char_ptr"
-
-#gdbtk_test c_variable-5.37 {children of psnp->ptrs[0]->next->char_ptr} {
-#  get_children psnp->ptrs.0.next.char_ptr
-#} {*char_ptr}
-
-# Test: c_variable-5.38
-# Desc: number of children of psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->ptrs.0.next.char_ptr"
-
-# Test: c_variable-5.39
-# Desc: children of *psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",exp=\"\\*\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr"
-
-# Test: c_variable-5.40
-# Desc: number of children of *psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr"
-
-# Test: c_variable-5.41
-# Desc: children of **psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*char_ptr\",numchild=\"1\",type=\"char \\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
-
-# Test: c_variable-5.41B
-# Desc: children of ***psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
-
-# Test: c_variable-5.42
-# Desc: number of children of **psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
-
-# Test: c_variable-5.43
-# Desc: children of ***psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
-	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
-
-# Test: c_variable-5.44
-# Desc: number of children of ***psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
-	"\\^done,numchild=\"1\"" \
-	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
-
-# Test: c_variable-5.43B
-# Desc: children of ****psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
-
-# Test: c_variable-5.44B
-# Desc: number of children of ****psnp->ptrs[0]->next->char_ptr
-mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
-
-# Test: c_variable-5.45
-# Desc: children of psnp->ptrs[0]->next->next
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.next" \
-	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.next.next.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.next.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next.next.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.next"
-
-# Test: c_variable-5.46
-# Desc: children of psnp->ptrs[0]->next->next->ptrs
-mi_gdb_test "-var-list-children psnp->ptrs.0.next.next.ptrs" \
-	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"psnp->ptrs.0.next.next.ptrs.0\",exp=\"0\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs.1\",exp=\"1\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs.2\",exp=\"2\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
-	"get children of psnp->ptrs.0.next.next.ptrs"
-
-#  Step over "snp0.char_ptr = &b3;"
-set line 255
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.47
-# Desc: check that psnp->char_ptr (and [0].char_ptr) changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->char_ptr (and 0.char_ptr) changed"
-
-#  Step over "snp1.char_ptr = &c3;"
-set line 256
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.48
-# Desc: check that psnp->next->char_ptr (and [1].char_ptr) changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->next->char_ptr (and 1.char_ptr) changed"
-
-
-#  Step over "snp2.char_ptr = &a3;"
-set line 257
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.49
-# Desc: check that psnp->next->next->char_ptr (and [2].char_ptr) changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed"
-
-
-#  Step over "snp0.long_ptr = &y3;"
-set line 258
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.50
-# Desc: check that psnp->long_ptr (and [0].long_ptr) changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->long_ptr (and 0.long_ptr) changed"
-
-
-#  Step over "snp1.long_ptr = &x3;"
-set line 259
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.51
-# Desc: check that psnp->next->long_ptr (and [1].long_ptr) changed
-# Why does this have a FIXME?
-setup_xfail *-*-*
-mi_gdb_test "-var-update *" \
-	"FIXME\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->next->long_ptr (and 1.long_ptr) changed"
-clear_xfail *-*-*
-
-# This command produces this error message:
-# &"warning: varobj_list: assertion failed - mycount <> 0\n"
-#
-
-#  Step over "snp2.long_ptr = &z3;"
-set line 260
-mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
-
-# Test: c_variable-5.52
-# Desc: check that psnp->next->next->long_ptr (and [2].long_ptr) changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed"
-
-
-
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-var-cmd.exp b/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
deleted file mode 100644
index 25326df..0000000
--- a/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
+++ /dev/null
@@ -1,560 +0,0 @@
-# Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-#
-# This Program Is Free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can create, update, delete variables.
-#
-
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "var-cmd"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-
-#####                   #####
-#                           #
-#  Variable Creation tests  #
-#                           #
-#####                   #####
-
-# Test:  c_variable-1.1
-# Desc:  Create global variable
-
-mi_gdb_test "111-var-create global_simple * global_simple" \
-	"111\\^done,name=\"global_simple\",numchild=\"6\",type=\"simpleton\"" \
-	"create global variable"
-
-# Test: c_variable-1.2
-# Desc: Create non-existent variable
-
-mi_gdb_test "112-var-create bogus_unknown_variable * bogus_unknown_variable" \
-	"&\"mi_cmd_var_create: unable to create variable object\\\\n\".*112\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
-	"create non-existent variable"
-
-# Test: c_variable-1.3
-# Desc: Create out of scope variable
-
-mi_gdb_test "113-var-create argc * argc" \
-	"&\"mi_cmd_var_create: unable to create variable object\\\\n\".*113\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
-	"create out of scope variable"
-
-mi_runto do_locals_tests
-
-# Test: c_variable-1.4
-# Desc: create local variables
-
-mi_gdb_test "-var-create linteger * linteger" \
-	"\\^done,name=\"linteger\",numchild=\"0\",type=\"int\"" \
-	"create local variable linteger"
-
-mi_gdb_test "-var-create lpinteger * lpinteger" \
-	"\\^done,name=\"lpinteger\",numchild=\"1\",type=\"int \\*\"" \
-	"create local variable lpinteger"
-
-mi_gdb_test "-var-create lcharacter * lcharacter" \
-	"\\^done,name=\"lcharacter\",numchild=\"0\",type=\"char\"" \
-	"create local variablelcharacter "
-
-mi_gdb_test "-var-create lpcharacter * lpcharacter" \
-	"\\^done,name=\"lpcharacter\",numchild=\"1\",type=\"char \\*\"" \
-	"create local variable lpcharacter"
-
-mi_gdb_test "-var-create llong * llong" \
-	"\\^done,name=\"llong\",numchild=\"0\",type=\"long int\"" \
-	"create local variable llong"
-
-mi_gdb_test "-var-create lplong * lplong" \
-	"\\^done,name=\"lplong\",numchild=\"1\",type=\"long int \\*\"" \
-	"create local variable lplong"
-
-mi_gdb_test "-var-create lfloat * lfloat" \
-	"\\^done,name=\"lfloat\",numchild=\"0\",type=\"float\"" \
-	"create local variable lfloat"
-
-mi_gdb_test "-var-create lpfloat * lpfloat" \
-	"\\^done,name=\"lpfloat\",numchild=\"1\",type=\"float \\*\"" \
-	"create local variable lpfloat"
-
-mi_gdb_test "-var-create ldouble * ldouble" \
-	"\\^done,name=\"ldouble\",numchild=\"0\",type=\"double\"" \
-	"create local variable ldouble"
-
-mi_gdb_test "-var-create lpdouble * lpdouble" \
-	"\\^done,name=\"lpdouble\",numchild=\"1\",type=\"double \\*\"" \
-	"create local variable lpdouble"
-
-mi_gdb_test "-var-create lsimple * lsimple" \
-	"\\^done,name=\"lsimple\",numchild=\"6\",type=\"struct _simple_struct\"" \
-	"create local variable lsimple"
-
-mi_gdb_test "-var-create lpsimple * lpsimple" \
-	"\\^done,name=\"lpsimple\",numchild=\"6\",type=\"struct _simple_struct \\*\"" \
-	"create local variable lpsimple"
-
-mi_gdb_test "-var-create func * func" \
-	"\\^done,name=\"func\",numchild=\"0\",type=\"void \\(\\*\\)\\((void|)\\)\"" \
-	"create local variable func"
-
-# Test: c_variable-1.5
-# Desc: create lsimple.character
-mi_gdb_test "-var-create lsimple.character * lsimple.character" \
-	"\\^done,name=\"lsimple.character\",numchild=\"0\",type=\"char\"" \
-	"create lsimple.character"
-
-# Test: c_variable-1.6
-# Desc: create lpsimple->integer
-mi_gdb_test "-var-create lsimple->integer * lsimple->integer" \
-	"\\^done,name=\"lsimple->integer\",numchild=\"0\",type=\"int\"" \
-	"create lsimple->integer"
-
-# Test: c_variable-1.7
-# Desc: ceate lsimple.integer
-mi_gdb_test "-var-create lsimple.integer * lsimple.integer" \
-	"\\^done,name=\"lsimple.integer\",numchild=\"0\",type=\"int\"" \
-	"create lsimple->integer"
-
-
-# Test: c_variable-1.9
-# Desc: create type name
-#    Type names (like int, long, etc..) are all proper expressions to gdb.
-#    make sure variable code does not allow users to create variables, though.
-mi_gdb_test "-var-create int * int" \
-	"&\"Attempt to use a type name as an expression.mi_cmd_var_create: unable to create variable object\\\\n\".*\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
-	"create int"
-
-
-#####             #####
-#                     #
-# Value changed tests #
-#                     #
-#####             #####
-
-# Test: c_variable-2.1
-# Desc: check whether values changed at do_block_tests
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update all vars"
-
-# Step over "linteger = 1234;"
-mi_step_to "do_locals_tests" "" "var-cmd.c" "107" "step at do_locals_test"
-
-# Test: c_variable-2.2
-# Desc: check whether only linteger changed values
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: linteger changed"
-
-# Step over "lpinteger = &linteger;"
-mi_step_to "do_locals_tests" "" "var-cmd.c" 108 "step at do_locals_tests (2)"
-
-# Test: c_variable-2.3
-# Desc: check whether only lpinteger changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: lpinteger changed"
-
-# Step over "lcharacter = 'a';"
-mi_step_to "do_locals_tests" "" "var-cmd.c" "109" "step at do_locals_tests (3)"
-
-# Test: c_variable-2.4
-# Desc: check whether only lcharacter changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: lcharacter changed"
-
-# Step over "lpcharacter = &lcharacter;"
-mi_step_to "do_locals_tests" "" "var-cmd.c" "110" "step at do_locals_tests (4)"
-
-# Test: c_variable-2.5
-# Desc: check whether only lpcharacter changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lpcharacter\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: lpcharacter changed"
-
-
-# Step over:
-#  llong = 2121L;
-#  lplong = &llong;
-#  lfloat = 2.1;
-#  lpfloat = &lfloat;
-#  ldouble = 2.718281828459045;
-#  lpdouble = &ldouble;
-#  lsimple.integer = 1234;
-#  lsimple.unsigned_integer = 255;
-#  lsimple.character = 'a';
-
-mi_execute_to "exec-step 9" "end-stepping-range" "do_locals_tests" "" \
-	"var-cmd.c" "119" "" "step at do_locals_tests (5)"
-
-# Test: c_variable-2.6
-# Desc: check whether llong, lplong, lfloat, lpfloat, ldouble, lpdouble, lsimple.integer,
-#       lsimple.unsigned_character lsimple.integer lsimple.character changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpdouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"ldouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lplong\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: many changed"
-
-# Step over:
-#  lsimple.signed_character = 21;
-#  lsimple.char_ptr = &lcharacter;
-#  lpsimple = &lsimple;
-#  func = nothing;
-
-mi_execute_to "exec-step 4" "end-stepping-range" "do_locals_tests" "" \
-	"var-cmd.c" "125" "" "step at do_locals_tests (6)"
-
-# Test: c_variable-2.7
-# Desc: check whether (lsimple.signed_character, lsimple.char_ptr) lpsimple, func changed
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"func\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpsimple\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: func and lpsimple changed"
-
-# Step over
-#  linteger = 4321;
-#  lcharacter = 'b';
-#  llong = 1212L;
-#  lfloat = 1.2;
-#  ldouble = 5.498548281828172;
-#  lsimple.integer = 255;
-#  lsimple.unsigned_integer = 4321;
-#  lsimple.character = 'b';
-
-mi_execute_to "exec-step 8" "end-stepping-range" "do_locals_tests" "" \
-	"var-cmd.c" "133" "" "step at do_locals_tests (7)"
-
-# Test: c_variable-2.8
-# Desc: check whether linteger, lcharacter, llong, lfoat, ldouble, lsimple.integer,
-#       lpsimple.integer lsimple.character changed
-# Note: this test also checks that lpsimple->integer and lsimple.integer have
-#       changed (they are the same)
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"ldouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: func and lpsimple changed"
-
-
-### 
-#
-# Test assignment to variables. More tests on assignment are in other files.
-#
-###
-mi_gdb_test "-var-assign global_simple 0" \
-	"&\"mi_cmd_var_assign: Variable object is not editable\\\\n\".*\\^error,msg=\"mi_cmd_var_assign: Variable object is not editable\"" \
-	"assign to global_simple"
-
-mi_gdb_test "-var-assign linteger 3333" \
-	"\\^done,value=\"3333\"" \
-	"assign to linteger"
-
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: linteger changed after assign"
-
-mi_gdb_test "-var-assign linteger 3333" \
-	"\\^done,value=\"3333\"" \
-	"assign to linteger again, same value"
-
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update all vars: linteger not changed after same assign"
-
-mi_gdb_test "-var-evaluate-expression linteger" \
-	"\\^done,value=\"3333\"" \
-	"eval linteger"
-
-mi_gdb_test "-var-assign lpinteger \"&linteger + 3\"" \
-	"\\^done,value=\"$hex\"" \
-	"assign to lpinteger"
-
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: lpinteger changed after assign"
-
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\\\]" \
-	"update all vars: no changes on second update"
-
-mi_gdb_test "-var-evaluate-expression lpinteger" \
-	"\\^done,value=\"$hex\"" \
-	"eval lpinteger"
-
-# reset the values to the original ones so that the rest of the file doesn't suffer.
-
-mi_gdb_test "-var-assign linteger 4321" \
-	"\\^done,value=\"4321\"" \
-	"assign to linteger"
-
-mi_gdb_test "-var-assign lpinteger &linteger" \
-	"\\^done,value=\"$hex\"" \
-	"assign to lpinteger"
-
-mi_gdb_test "-var-assign lcharacter 'z'" \
-	"\\^done,value=\"122 'z'\"" \
-	"assign to lcharacter"
-
-mi_gdb_test "-var-evaluate-expression lcharacter" \
-	"\\^done,value=\"122 'z'\"" \
-	"eval lcharacter"
-
-mi_gdb_test "-var-assign llong 1313L" \
-	"\\^done,value=\"1313\"" \
-	"assign to llong"
-mi_gdb_test "-var-evaluate-expression llong" \
-	"\\^done,value=\"1313\"" \
-	"eval llong"
-mi_gdb_test "-var-assign llong 1212L" \
-	"\\^done,value=\"1212\"" \
-	"assign to llong"
-
-mi_gdb_test "-var-assign lplong &llong+4" \
-	"\\^done,value=\"$hex\"" \
-	"assign to lplong"
-mi_gdb_test "-var-evaluate-expression lplong" \
-	"\\^done,value=\"$hex\"" \
-	"eval lplong"
-mi_gdb_test "-var-assign lplong &llong" \
-	"\\^done,value=\"$hex\"" \
-	"assign to lplong"
-
-mi_gdb_test "-var-assign lfloat 3.4567" \
-	"\\^done,value=\"3.45.*\"" \
-	"assign to lfloat"
-mi_gdb_test "-var-evaluate-expression lfloat" \
-	"\\^done,value=\"3.45.*\"" \
-	"eval lfloat"
-mi_gdb_test "-var-assign lfloat 1.2345" \
-	"\\^done,value=\"1.23.*\"" \
-	"assign to lfloat"
-
-mi_gdb_test "-var-assign lpfloat &lfloat+4" \
-	"\\^done,value=\"$hex\"" \
-	"assign to lpfloat"
-
-mi_gdb_test "-var-assign ldouble 5.333318284590435" \
-	"\\^done,value=\"5.333318284590435\"" \
-	"assign to ldouble"
-
-mi_gdb_test "-var-assign func do_block_tests" \
-	"\\^done,value=\"$hex <do_block_tests>\"" \
-	"assign to func"
-
-mi_gdb_test "-var-assign lsimple.character 'd'" \
-	"\\^done,value=\"100 'd'\"" \
-	"assign to lsimple.character"
-
-mi_gdb_test "-var-assign  lsimple->integer 222" \
-	"\\^done,value=\"222\"" \
-	"assign to lsimple->integer"
-
-mi_gdb_test "-var-assign lsimple.integer 333" \
-	"\\^done,value=\"333\"" \
-	"assign to lsimple.integer"
-
-######
-# End of assign tests 
-#####
-
-mi_gdb_test "-break-insert subroutine1" \
-	"\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine1\",file=\".*var-cmd.c\",line=\"146\",times=\"0\"\}" \
-	"break-insert subroutine1"
-mi_continue_to "2" "subroutine1" \
-	"\{name=\"i\",value=\"4321\"\},\{name=\"l\",value=\"$hex\"\}" \
-	"var-cmd.c" "146" "continue to subroutine1"
-
-# Test: c_variable-2.10
-# Desc: create variable for locals i,l in subroutine1
-mi_gdb_test "-var-create i  * i" \
-	"\\^done,name=\"i\",numchild=\"0\",type=\"int\"" \
-	"create i"
-
-mi_gdb_test "-var-create l * l" \
-	"\\^done,name=\"l\",numchild=\"1\",type=\"long int \\*\"" \
-	"create l"
-
-# Test: c_variable-2.11
-# Desc: create do_locals_tests local in subroutine1
-mi_gdb_test "-var-create linteger * linteger" \
-	"&\"mi_cmd_var_create: unable to create variable object\\\\n\".*\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
-	"create linteger"
-
-mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \
-	"var-cmd.c" "147" "step at subroutine1"
-
-# Test: c_variable-2.12
-# Desc: change global_simple.integer
-# Note: This also tests whether we are reporting changes in structs properly.
-#       gdb normally would say that global_simple has changed, but we
-#       special case that, since it is not what a human expects to
-#       see.
-
-setup_xfail *-*-*
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\{FIXME: WHAT IS CORRECT HERE\}" \
-	"update all vars: changed FIXME"
-clear_xfail *-*-*
-
-mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \
-	"var-cmd.c" "148" "step at subroutine1 (2)"
-
-# Test: c_variable-2.13
-# Desc: change subroutine1 local i
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"i\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: i changed"
-
-mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \
-	"var-cmd.c" "149" "step at subroutine1 (3)"
-
-# Test: c_variable-2.14
-# Desc: change do_locals_tests local llong
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
-	"update all vars: llong changed"
-
-mi_next_to "do_locals_tests" ""	"var-cmd.c" "136" "next out of subroutine1"
-
-# Test: c_variable-2.15
-# Desc: check for out of scope subroutine1 locals
-mi_gdb_test "-var-update *" \
-	"\\^done,changelist=\\\[\{name=\"l\",in_scope=\"false\"\},\{name=\"i\",in_scope=\"false\"\}\\\]" \
-	"update all vars: all now out of scope"
-
-# Done with locals/globals tests. Erase all variables
-#delete_all_variables
-mi_gdb_test "-var-delete global_simple" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var"
-
-mi_gdb_test "-var-delete linteger" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var linteger"
-
-mi_gdb_test "-var-delete lpinteger" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lpinteger"
-
-mi_gdb_test "-var-delete lcharacter" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lcharacter"
-
-mi_gdb_test "-var-delete lpcharacter" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lpcharacter"
-
-mi_gdb_test "-var-delete llong" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var llong"
-
-mi_gdb_test "-var-delete lplong" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lplong"
-
-mi_gdb_test "-var-delete lfloat" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lfloat"
-
-mi_gdb_test "-var-delete lpfloat" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lpfloat"
-
-mi_gdb_test "-var-delete ldouble" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var ldouble"
-
-mi_gdb_test "-var-delete lpdouble" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lpdouble"
-
-mi_gdb_test "-var-delete lsimple" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lsimple"
-
-mi_gdb_test "-var-delete lpsimple" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lpsimple"
-
-mi_gdb_test "-var-delete func" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var func"
-
-mi_gdb_test "-var-delete lsimple.character" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lsimple.character"
-
-mi_gdb_test "-var-delete  lsimple->integer" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var  lsimple->integer"
-
-mi_gdb_test "-var-delete lsimple.integer" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var lsimple.integer"
-
-mi_gdb_test "-var-delete i" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var i"
-
-mi_gdb_test "-var-delete l" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var l"
-
-# Test whether we can follow the name of a variable through multiple
-# stack frames.
-mi_gdb_test "-break-insert do_special_tests" \
-  {\^done,bkpt=.*} \
-  "set breakpoint at do_special_tests"
-
-mi_continue_to {.*} do_special_tests {.*} {.*var-cmd.c} {.*} {stop in do_special_tests}
-
-mi_gdb_test "-var-create selected_a @ a" \
-  {\^done,name="selected_a",numchild="0",type="int"} \
-  "create selected_a"
-
-mi_gdb_test "-break-insert incr_a" \
-  {\^done,bkpt=.*} \
-  "set breakpoint at incr_a"
-
-mi_continue_to {.*} incr_a {.*} {.*var-cmd.c} {.*} {stop in incr_a}
-
-mi_gdb_test "-var-update selected_a" \
-	"\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",new_type=\"char\",new_num_children=\"0\"\}\\\]" \
-	"update selected_a in incr_a"
-
-mi_next "step a line in incr_a"
-mi_next "return from incr_a to do_special_tests"
-
-mi_gdb_test "-var-update selected_a" \
-	"\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",new_type=\"int\",new_num_children=\"0\"\}\\\]" \
-	"update selected_a in do_special_tests"
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-var-display.exp b/gdb/testsuite/gdb.mi/mi2-var-display.exp
deleted file mode 100644
index 3b0990d..0000000
--- a/gdb/testsuite/gdb.mi/mi2-var-display.exp
+++ /dev/null
@@ -1,627 +0,0 @@
-#   Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-#
-# This Program Is Free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can create, update, delete variables.
-#
-
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "var-cmd"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-mi_gdb_test "200-break-insert 260" \
-	"200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_children_tests\",file=\".*var-cmd.c\",line=\"260\",times=\"0\"\}" \
-	"break-insert operation"
-
-mi_run_cmd
-# The running part has been checked already by mi_run_cmd
-gdb_expect {
-    -re "\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"260\"\}\r\n$mi_gdb_prompt$" {
-	pass "run to do_children_tests"
-    }
-    -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
-    timeout {fail "run to do_children_tests (timeout 2)"}
-}
-
-#####       #####
-#               #
-# Display tests #
-#               #
-#####       #####
-
-# Test: c_variable-6.1
-# Desc: create variable bar
-mi_gdb_test "-var-create bar * bar" \
-	"\\^done,name=\"bar\",numchild=\"0\",type=\"int\"" \
-	"create local variable bar"
-
-# Test: c_variable-6.2
-# Desc: type of variable bar
-mi_gdb_test "-var-info-type bar" \
-	"\\^done,type=\"int\"" \
-	"info type variable bar"
-
-# Test: c_variable-6.3
-# Desc: format of variable bar
-mi_gdb_test "-var-show-format bar" \
-	"\\^done,format=\"natural\"" \
-	"show format variable bar"
-
-# Test: c_variable-6.4
-# Desc: value of variable bar
-mi_gdb_test "-var-evaluate-expression bar" \
-	"\\^done,value=\"2121\"" \
-	"eval variable bar"
-
-# Test: c_variable-6.5
-# Desc: change format of bar to hex
-mi_gdb_test "-var-set-format bar hexadecimal" \
-	"\\^done,format=\"hexadecimal\"" \
-	"set format variable bar"
-
-# Test: c_variable-6.6
-# Desc: value of bar with new format
-mi_gdb_test "-var-evaluate-expression bar" \
-	"\\^done,value=\"0x849\"" \
-	"eval variable bar with new format"
-
-# Test: c_variable-6.7
-# Desc: change value of bar
-mi_gdb_test "-var-assign bar 3" \
-	"\\^done,value=\"0x3\"" \
-	"assing to variable bar"
-
-mi_gdb_test "-var-set-format bar decimal" \
-	"\\^done,format=\"decimal\"" \
-	"set format variable bar"
-
-mi_gdb_test "-var-evaluate-expression bar" \
-	"\\^done,value=\"3\"" \
-	"eval variable bar with new value"
-
-mi_gdb_test "-var-delete bar" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var bar"
-
-# Test: c_variable-6.11
-# Desc: create variable foo
-mi_gdb_test "-var-create foo * foo" \
-	"\\^done,name=\"foo\",numchild=\"1\",type=\"int \\*\"" \
-	"create local variable foo"
-
-# Test: c_variable-6.12
-# Desc: type of variable foo
-mi_gdb_test "-var-info-type foo" \
-	"\\^done,type=\"int \\*\"" \
-	"info type variable foo"
-
-# Test: c_variable-6.13
-# Desc: format of variable foo
-mi_gdb_test "-var-show-format foo" \
-	"\\^done,format=\"natural\"" \
-	"show format variable foo"
-
-# Test: c_variable-6.14
-# Desc: value of variable foo
-mi_gdb_test "-var-evaluate-expression foo" \
-	"\\^done,value=\"$hex\"" \
-	"eval variable foo"
-
-# Test: c_variable-6.15
-# Desc: change format of var to octal
-mi_gdb_test "-var-set-format foo octal" \
-	"\\^done,format=\"octal\"" \
-	"set format variable foo"
-
-mi_gdb_test "-var-show-format foo" \
-	"\\^done,format=\"octal\"" \
-	"show format variable foo"
-
-# Test: c_variable-6.16
-# Desc: value of foo with new format
-mi_gdb_test "-var-evaluate-expression foo" \
-	"\\^done,value=\"\[0-7\]+\"" \
-	"eval variable foo"
-
-# Test: c_variable-6.17
-# Desc: change value of foo
-mi_gdb_test "-var-assign foo 3" \
-	"\\^done,value=\"03\"" \
-	"assing to variable foo"
-
-mi_gdb_test "-var-set-format foo decimal" \
-	"\\^done,format=\"decimal\"" \
-	"set format variable foo"
-
-# Test: c_variable-6.18
-# Desc: check new value of foo
-mi_gdb_test "-var-evaluate-expression foo" \
-	"\\^done,value=\"3\"" \
-	"eval variable foo"
-
-mi_gdb_test "-var-delete foo" \
-	"\\^done,ndeleted=\"1\"" \
-	"delete var foo"
-
-# Test: c_variable-6.21
-# Desc: create variable weird and children
-mi_gdb_test "-var-create weird * weird" \
-	"\\^done,name=\"weird\",numchild=\"11\",type=\"weird_struct \\*\"" \
-	"create local variable weird"
-
-mi_gdb_test "-var-list-children weird" \
-	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void|)\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int|)\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
-	"get children local variable weird"
-
-
-# Test: c_variable-6.23
-# Desc: change format of weird.func_ptr and weird.func_ptr_ptr
-mi_gdb_test "-var-set-format weird.func_ptr hexadecimal" \
-	"\\^done,format=\"hexadecimal\"" \
-	"set format variable weird.func_ptr"
-
-mi_gdb_test "-var-show-format weird.func_ptr" \
-	"\\^done,format=\"hexadecimal\"" \
-	"show format variable weird.func_ptr"
-
-mi_gdb_test "-var-set-format weird.func_ptr_ptr hexadecimal" \
-	"\\^done,format=\"hexadecimal\"" \
-	"set format variable weird.func_ptr_ptr"
-
-mi_gdb_test "-var-show-format weird.func_ptr_ptr" \
-	"\\^done,format=\"hexadecimal\"" \
-	"show format variable weird.func_ptr_ptr"
-
-# Test: c_variable-6.24
-# Desc: format of weird and children
-mi_gdb_test "-var-set-format weird natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird"
-
-mi_gdb_test "-var-set-format weird.integer natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.integer"
-
-mi_gdb_test "-var-set-format weird.character natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.character"
-
-mi_gdb_test "-var-set-format weird.char_ptr natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.char_ptr"
-
-mi_gdb_test "-var-set-format weird.long_int natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.long_int"
-
-mi_gdb_test "-var-set-format weird.int_ptr_ptr natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.int_ptr_ptr"
-
-mi_gdb_test "-var-set-format weird.long_array natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.long_array"
-
-mi_gdb_test "-var-set-format weird.func_ptr hexadecimal" \
-	"\\^done,format=\"hexadecimal\"" \
-	"set format variable weird.func_ptr"
-
-mi_gdb_test "-var-set-format weird.func_ptr_struct hexadecimal" \
-	"\\^done,format=\"hexadecimal\"" \
-	"set format variable weird.func_ptr_struct"
-
-mi_gdb_test "-var-set-format weird.func_ptr_ptr natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.func_ptr_ptr"
-
-mi_gdb_test "-var-set-format weird.u1 natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.u1"
-
-mi_gdb_test "-var-set-format weird.s2 natural" \
-	"\\^done,format=\"natural\"" \
-	"set format variable weird.s2"
-
-# Test: c_variable-6.25
-# Desc: value of weird and children
-#gdbtk_test c_variable-6.25 {value of weird and children} {
-#  set values {}
-#  foreach v [lsort [array names var]] f [list x "" "" x x x x d d d d d] {
-#    lappend values [value $v $f]
-#  }
-
-#  set values
-#} {ok ok ok ok ok ok ok ok weird.long_array ok weird.s2 weird.u1}
-
-# Test: c_variable-6.26
-# Desc: change format of weird and children to octal
-#gdbtk_test c_variable-6.26 {change format of weird and children to octal} {
-#  set formats {}
-#  foreach v [lsort [array names var]] {
-#    $var($v) format octal
-#    lappend formats [$var($v) format]
-#  }
-
-#  set formats
-#} {octal octal octal octal octal octal octal octal octal octal octal octal}
-
-# Test: c_variable-6.27
-# Desc: value of weird and children with new format
-#gdbtk_test c_variable-6.27 {value of foo with new format} {
-#  set values {}
-#  foreach v [lsort [array names var]] {
-#    lappend values [value $v o]
-#  }
-
-#  set values
-#} {ok ok ok ok ok ok ok ok weird.long_array ok weird.s2 weird.u1}
-
-# Test: c_variable-6.30
-# Desc: create more children of weird
-#gdbtk_test c_variable-6.30 {create more children of weird} {
-#  foreach v [array names var] {
-#    get_children $v
-#  }
-
-#  # Do it twice to get more children
-#  foreach v [array names var] {
-#    get_children $v
-#  }
-
-#  lsort [array names var]
-#} {weird weird.char_ptr weird.character weird.func_ptr weird.func_ptr_ptr weird.func_ptr_struct weird.int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr weird.integer weird.long_array weird.long_array.0 weird.long_array.1 weird.long_array.2 weird.long_array.3 weird.long_array.4 weird.long_array.5 weird.long_array.6 weird.long_array.7 weird.long_array.8 weird.long_array.9 weird.long_int weird.s2 weird.s2.g weird.s2.h weird.s2.i weird.s2.i.0 weird.s2.i.1 weird.s2.i.2 weird.s2.i.3 weird.s2.i.4 weird.s2.i.5 weird.s2.i.6 weird.s2.i.7 weird.s2.i.8 weird.s2.i.9 weird.s2.u2 weird.s2.u2.f weird.s2.u2.u1s1 weird.s2.u2.u1s2 weird.u1 weird.u1.a weird.u1.b weird.u1.c weird.u1.d}
-
-# Test: c_variable-6.31
-# Desc: check that all children of weird change
-#       Ok, obviously things like weird.s2 and weird.u1 will not change!
-#gdbtk_test *c_variable-6.31 {check that all children of weird change (ops, we are now reporting array names as changed in this case - seems harmless though)} {
-#  $var(weird) value 0x2121
-#  check_update
-#} {{weird.integer weird.character weird.char_ptr weird.long_int weird.int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr weird.long_array.0 weird.long_array.1 weird.long_array.2 weird.long_array.3 weird.long_array.4 weird.long_array.5 weird.long_array.6 weird.long_array.7 weird.long_array.8 weird.long_array.9 weird.func_ptr weird.func_ptr_struct weird.func_ptr_ptr weird.u1.a weird.u1.b weird.u1.c weird.u1.d weird.s2.u2.f weird.s2.g weird.s2.h weird.s2.i.0 weird.s2.i.1 weird.s2.i.2 weird.s2.i.3 weird.s2.i.4 weird.s2.i.5 weird.s2.i.6 weird.s2.i.7 weird.s2.i.8 weird.s2.i.9} {weird.s2.i weird.s2.u2 weird weird.s2.u2.u1s1 weird.s2.u2.u1s2 weird.s2 weird.long_array weird.u1} {}}
-
-mi_gdb_test "-var-delete weird" \
-	"\\^done,ndeleted=\"12\"" \
-	"delete var weird"
-
-
-#####               #####
-#                       #
-# Special Display Tests #
-#                       #
-#####               #####
-
-# Stop in "do_special_tests"
-mi_gdb_test "200-break-insert do_special_tests" \
-	"200\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_special_tests\",file=\".*var-cmd.c\",line=\"282\",times=\"0\"\}" \
-	"break-insert operation"
-
-send_gdb "-exec-continue\n"
-gdb_expect {
-    -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"282\"\}\r\n$mi_gdb_prompt$" {
-	pass "continue to do_special_tests"
-    }
-    timeout {
-	fail "continue to do_special_tests (timeout)"
-    }
-}
-
-# Test: c_variable-7.10
-# Desc: create union u
-mi_gdb_test "-var-create u * u" \
-	"\\^done,name=\"u\",numchild=\"2\",type=\"union named_union\"" \
-	"create local variable u"
-
-# Test: c_variable-7.11
-# Desc: value of u
-mi_gdb_test "-var-evaluate-expression u" \
-	"\\^done,value=\"\{\\.\\.\\.\}\"" \
-	"eval variable u"
-
-# Test: c_variable-7.12
-# Desc: type of u
-mi_gdb_test "-var-info-type u" \
-	"\\^done,type=\"union named_union\"" \
-	"info type variable u"
-
-# Test: c_variable-7.13
-# Desc: is u editable
-mi_gdb_test "-var-show-attributes u" \
-	"\\^done,attr=\"noneditable\"" \
-	"is u editable"
-
-# Test: c_variable-7.14
-# Desc: number of children of u
-mi_gdb_test "-var-info-num-children u" \
-	"\\^done,numchild=\"2\"" \
-	"get number of children of u"
-
-# Test: c_variable-7.15
-# Desc: children of u
-mi_gdb_test "-var-list-children u" \
-	"\\^done,numchild=\"2\",children=\\\[child=\{name=\"u.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"u.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\}\\\]" \
-	"get children of u"
-
-# Test: c_variable-7.20
-# Desc: create anonu
-mi_gdb_test "-var-create anonu * anonu" \
-	"\\^done,name=\"anonu\",numchild=\"3\",type=\"union \{\\.\\.\\.\}\"" \
-	"create local variable anonu"
-
-# Test: c_variable-7.21
-# Desc: value of anonu
-mi_gdb_test "-var-evaluate-expression anonu" \
-	"\\^done,value=\"\{\\.\\.\\.\}\"" \
-	"eval variable anonu"
-
-# Test: c_variable-7.22
-# Desc: type of anonu
-mi_gdb_test "-var-info-type anonu" \
-	"\\^done,type=\"union \{\\.\\.\\.\}\"" \
-	"info type variable anonu"
-
-# Test: c_variable-7.23
-# Desc: is anonu editable
-mi_gdb_test "-var-show-attributes anonu" \
-	"\\^done,attr=\"noneditable\"" \
-	"is anonu editable"
-
-# Test: c_variable-7.24
-# Desc: number of children of anonu
-mi_gdb_test "-var-info-num-children anonu" \
-	"\\^done,numchild=\"3\"" \
-	"get number of children of anonu"
-
-# Test: c_variable-7.25
-# Desc: children of anonu
-mi_gdb_test "-var-list-children anonu" \
-	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"anonu.a\",exp=\"a\",numchild=\"0\",type=\"int\"\},child=\{name=\"anonu.b\",exp=\"b\",numchild=\"0\",type=\"char\"\},child=\{name=\"anonu.c\",exp=\"c\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of anonu"
-
-# Test: c_variable-7.30
-# Desc: create struct s
-mi_gdb_test "-var-create s * s" \
-	"\\^done,name=\"s\",numchild=\"6\",type=\"struct _simple_struct\"" \
-	"create local variable s"
-
-
-# Test: c_variable-7.31
-# Desc: value of s
-mi_gdb_test "-var-evaluate-expression s" \
-	"\\^done,value=\"\{\\.\\.\\.\}\"" \
-	"eval variable s"
-
-# Test: c_variable-7.32
-# Desc: type of s
-mi_gdb_test "-var-info-type s" \
-	"\\^done,type=\"struct _simple_struct\"" \
-	"info type variable s"
-
-# Test: c_variable-7.33
-# Desc: is s editable
-mi_gdb_test "-var-show-attributes s" \
-	"\\^done,attr=\"noneditable\"" \
-	"is s editable"
-
-# Test: c_variable-7.34
-# Desc: number of children of s
-mi_gdb_test "-var-info-num-children s" \
-	"\\^done,numchild=\"6\"" \
-	"get number of children of s"
-
-# Test: c_variable-7.35
-# Desc: children of s
-mi_gdb_test "-var-list-children s" \
-	"\\^done,numchild=\"6\",children=\\\[child=\{name=\"s.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"s.unsigned_integer\",exp=\"unsigned_integer\",numchild=\"0\",type=\"unsigned int\"\},child=\{name=\"s.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child=\{name=\"s.signed_character\",exp=\"signed_character\",numchild=\"0\",type=\"signed char\"\},child=\{name=\"s.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"s.array_of_10\",exp=\"array_of_10\",numchild=\"10\",type=\"int \\\[10\\\]\"\}\\\]" \
-	"get children of s"
-#} {integer unsigned_integer character signed_character char_ptr array_of_10}
-
-# Test: c_variable-7.40
-# Desc: create anons
-mi_gdb_test "-var-create anons * anons" \
-	"\\^done,name=\"anons\",numchild=\"3\",type=\"struct \{\\.\\.\\.\}\"" \
-	"create local variable anons"
-
-# Test: c_variable-7.41
-# Desc: value of anons
-mi_gdb_test "-var-evaluate-expression anons" \
-	"\\^done,value=\"\{\\.\\.\\.\}\"" \
-	"eval variable anons"
-
-# Test: c_variable-7.42
-# Desc: type of anons
-mi_gdb_test "-var-info-type anons" \
-	"\\^done,type=\"struct \{\\.\\.\\.\}\"" \
-	"info type variable anons"
-
-# Test: c_variable-7.43
-# Desc: is anons editable
-mi_gdb_test "-var-show-attributes anons" \
-	"\\^done,attr=\"noneditable\"" \
-	"is anons editable"
-
-# Test: c_variable-7.44
-# Desc: number of children of anons
-mi_gdb_test "-var-info-num-children anons" \
-	"\\^done,numchild=\"3\"" \
-	"get number of children of anons"
-
-# Test: c_variable-7.45
-# Desc: children of anons
-mi_gdb_test "-var-list-children anons" \
-	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"anons.a\",exp=\"a\",numchild=\"0\",type=\"int\"\},child=\{name=\"anons.b\",exp=\"b\",numchild=\"0\",type=\"char\"\},child=\{name=\"anons.c\",exp=\"c\",numchild=\"0\",type=\"long int\"\}\\\]" \
-	"get children of anons"
-
-
-# Test: c_variable-7.50
-# Desc: create enum e
-mi_gdb_test "-var-create e * e" \
-	"\\^done,name=\"e\",numchild=\"0\",type=\"enum foo\"" \
-	"create local variable e"
-
-setup_xfail "*-*-*"
-# Test: c_variable-7.51
-# Desc: value of e
-mi_gdb_test "-var-evaluate-expression e" \
-	"\\^done,value=\"FIXME\"" \
-	"eval variable e"
-clear_xfail "*-*-*"
-
-# Test: c_variable-7.52
-# Desc: type of e
-mi_gdb_test "-var-info-type e" \
-	"\\^done,type=\"enum foo\"" \
-	"info type variable e"
-
-# Test: c_variable-7.53
-# Desc: is e editable
-mi_gdb_test "-var-show-attributes e" \
-	"\\^done,attr=\"editable\"" \
-	"is e editable"
-
-# Test: c_variable-7.54
-# Desc: number of children of e
-mi_gdb_test "-var-info-num-children e" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of e"
-
-# Test: c_variable-7.55
-# Desc: children of e
-mi_gdb_test "-var-list-children e" \
-	"\\^done,numchild=\"0\"" \
-	"get children of e"
-
-# Test: c_variable-7.60
-# Desc: create anone
-mi_gdb_test "-var-create anone * anone" \
-	"\\^done,name=\"anone\",numchild=\"0\",type=\"enum \{\\.\\.\\.\}\"" \
-	"create local variable anone"
-
-setup_xfail "*-*-*"
-# Test: c_variable-7.61
-# Desc: value of anone
-mi_gdb_test "-var-evaluate-expression anone" \
-	"\\^done,value=\"A\"" \
-	"eval variable anone"
-clear_xfail "*-*-*"
-
-
-# Test: c_variable-7.70
-# Desc: create anone
-mi_gdb_test "-var-create anone * anone" \
-	"&\"Duplicate variable object name\\\\n\".*\\^error,msg=\"Duplicate variable object name\"" \
-	"create duplicate local variable anone"
-
-
-# Test: c_variable-7.72
-# Desc: type of anone
-mi_gdb_test "-var-info-type anone" \
-	"\\^done,type=\"enum \{\\.\\.\\.\}\"" \
-	"info type variable anone"
-
-
-# Test: c_variable-7.73
-# Desc: is anone editable
-mi_gdb_test "-var-show-attributes anone" \
-	"\\^done,attr=\"editable\"" \
-	"is anone editable"
-
-# Test: c_variable-7.74
-# Desc: number of children of anone
-mi_gdb_test "-var-info-num-children anone" \
-	"\\^done,numchild=\"0\"" \
-	"get number of children of anone"
-
-# Test: c_variable-7.75
-# Desc: children of anone
-mi_gdb_test "-var-list-children anone" \
-	"\\^done,numchild=\"0\"" \
-	"get children of anone"
-
-
-# Record fp
-
-send_gdb "p/x \$fp\n"
-gdb_expect {
-    -re ".*($hex).*\\^done\r\n$mi_gdb_prompt$" { 
-	pass "print FP register"
-	set fp $expect_out(1,string) 
-    }
-#    -re ".*" { fail "print FP register"}
-    timeout { fail "print FP register (timeout)"}
-}
-
-mi_gdb_test "200-break-insert incr_a" \
-	"200\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"incr_a\",file=\".*var-cmd.c\",line=\"85\",times=\"0\"\}" \
-	"break-insert operation"
-send_gdb "-exec-continue\n"
-gdb_expect {
-    -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"85\"\}\r\n$mi_gdb_prompt$" {
-	pass "continue to incr_a"
-    }
-    -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"8\[345\]\"\}\r\n$mi_gdb_prompt$" {
-	fail "continue to incr_a (compiler debug info incorrect)"
-    }
-    -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
-	fail "continue to incr_a (unknown output)"
-    }
-    timeout {
-	fail "continue to incr_a (timeout)"
-    }
-}
-
-# Test: c_variable-7.81
-# Desc: Create variables in different scopes
-mi_gdb_test "-var-create a1 * a" \
-	"\\^done,name=\"a1\",numchild=\"0\",type=\"char\"" \
-	"create local variable a1"
-
-mi_gdb_test "-var-create a2 $fp a" \
-	"\\^done,name=\"a2\",numchild=\"0\",type=\"int\"" \
-	"create variable a2 in different scope"
-
-#gdbtk_test c_variable-7.81 {create variables in different scopes} {
-#  set a1 [gdb_variable create -expr a]
-#  set a2 [gdb_variable create -expr a -frame $fp]
-
-#  set vals {}
-#  lappend vals [$a1 value]
-#  lappend vals [$a2 value]
-#  set vals
-#} {2 1}
-
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/mi2-watch.exp b/gdb/testsuite/gdb.mi/mi2-watch.exp
deleted file mode 100644
index ba7df2b..0000000
--- a/gdb/testsuite/gdb.mi/mi2-watch.exp
+++ /dev/null
@@ -1,166 +0,0 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# Test essential Machine interface (MI) operations
-#
-# Verify that, using the MI, we can run a simple program and perform basic
-# debugging activities like: insert breakpoints, run the program,
-# step, next, continue until it ends and, last but not least, quit.
-#
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi2"
-
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
-set testfile "basics"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-}
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-proc test_watchpoint_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert a watchpoint and list
-    # Tests:
-    # -break-watch C
-    # -break-list
-
-    mi_gdb_test "111-break-watch C" \
-             "111\\^done,wpt=\{number=\"2\",exp=\"C\"\}" \
-             "break-watch operation"
-
-    mi_gdb_test "222-break-list" \
-	    "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\",times=\"1\"\},bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \
-                "list of watchpoints"
-
-}
-
-# UNUSED at the time
-proc test_awatch_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert an access watchpoint and list it
-    # Tests:
-    # -break-watch -a A
-    # -break-list
-
-    mi_gdb_test "333-break-watch -a A" \
-             "333\\^done,bkpt=\{number=\"1\",addr=\"$hex\",file=\".*basics.c\",line=\"32\"\}" \
-             "break-watch -a operation"
-
-    mi_gdb_test "444-break-list" \
-	    "444\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"3\",type=\"watchpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\},.*\}\\\]\}" \
-                "list of watchpoints awatch"
-
-    mi_gdb_test "777-break-delete 3" \
-	    "777\\^done" \
-	    "delete access watchpoint"
-}
-
-# UNUSED at the time
-proc test_rwatch_creation_and_listing {} {
-    global mi_gdb_prompt
-    global srcfile
-    global hex
-
-    # Insert a read watchpoint and list it.
-    # Tests:
-    # -break-insert -r B
-    # -break-list
-
-    mi_gdb_test "200-break-watch -r C" \
-             "200\\^done,bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"32\",times=\"0\"\}" \
-             "break-insert -r operation"
-
-    mi_gdb_test "300-break-list" \
-	    "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\},.*\}\\\}\}" \
-                "list of breakpoints"
-
-    mi_gdb_test "177-break-delete 4" \
-	    "177\\^done" \
-	    "delete read watchpoint"
-}
-
-proc test_watchpoint_triggering {} {
-    global mi_gdb_prompt
-    global hex
-
-    # Continue execution until the watchpoint is reached,  continue again, 
-    # to see the watchpoint go out of scope.
-    # Does:
-    # -exec-continue (Here wp triggers)
-    # -exec-continue (Here wp goes out of scope)
-
-    send_gdb "222-exec-continue\n"
-    gdb_expect {
-      -re "222\\^running\r\n$mi_gdb_prompt" {
-        gdb_expect {
-	    -re "222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"13\"\}\r\n$mi_gdb_prompt$" {
-            pass "watchpoint trigger"
-          }
-          -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
-          timeout {fail "watchpoint trigger (timeout 2)"}
-        }
-      }
-      -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (1)"}
-      timeout {fail "watchpoint trigger (timeout 1)"}
-    }
-
-    send_gdb "223-exec-continue\n"
-    gdb_expect {
-      -re "223\\^running\r\n$mi_gdb_prompt" {
-        gdb_expect {
-	    -re "\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"18\"\}\r\n$mi_gdb_prompt$" {
-            pass "wp out of scope"
-          }
-          -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
-          timeout {fail "wp out of scope (timeout 2)"}
-        }
-      }
-      -re ".*$mi_gdb_prompt$" {fail "wp out of scope (1)"}
-      timeout {fail "wp out of scope (timeout 1)"}
-    }
-}
-
-mi_runto callee4
-test_watchpoint_creation_and_listing
-#test_rwatch_creation_and_listing
-#test_awatch_creation_and_listing
-test_watchpoint_triggering
-
-mi_gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c
index 1ba5a15..c3e17bc 100644
--- a/gdb/testsuite/gdb.mi/pthreads.c
+++ b/gdb/testsuite/gdb.mi/pthreads.c
@@ -1,4 +1,26 @@
 #include <stdio.h>
+
+#include "config.h"
+
+#ifndef HAVE_PTHREAD_H
+
+/* Don't even try to compile.  In fact, cause a syntax error that we can
+   look for as a compiler error message and know that we have no pthread
+   support.  In that case we can just suppress the test completely. */
+
+#error "no posix threads support"
+
+#else
+
+/* OK.  We have the right header.  If we try to compile this and fail, then
+   there is something wrong and the user should know about it so the testsuite
+   should issue an ERROR result.. */
+
+#ifdef __linux__
+#define  _MIT_POSIX_THREADS 1	/* GNU/Linux (or at least RedHat 4.0)
+                                   needs this */
+#endif
+
 #include <pthread.h>
 
 /* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
@@ -55,3 +77,4 @@
   return 0;
 }
 
+#endif /* ifndef HAVE_PTHREAD_H */
diff --git a/gdb/testsuite/gdb.threads/gcore-thread.exp b/gdb/testsuite/gdb.threads/gcore-thread.exp
index 5cb80bd..8184fa5 100644
--- a/gdb/testsuite/gdb.threads/gcore-thread.exp
+++ b/gdb/testsuite/gdb.threads/gcore-thread.exp
@@ -103,10 +103,9 @@
 gdb_breakpoint "thread2"
 gdb_test "continue" "Continuing.*Breakpoint.* thread2 .*" "thread 2 is running"
 
-set escapedfilename [string_to_regexp ${objdir}/${subdir}/gcore.test]
 # Drop corefile
 gdb_test "gcore ${objdir}/${subdir}/gcore.test" \
-	"Saved corefile ${escapedfilename}" \
+	"Saved corefile ${objdir}/${subdir}/gcore.test" \
 	"save a corefile"
 
 # Now restart gdb and load the corefile.
diff --git a/gdb/testsuite/gdb.threads/pthreads.c b/gdb/testsuite/gdb.threads/pthreads.c
index fdc0324..b8f126d 100644
--- a/gdb/testsuite/gdb.threads/pthreads.c
+++ b/gdb/testsuite/gdb.threads/pthreads.c
@@ -1,4 +1,26 @@
 #include <stdio.h>
+
+#include "config.h"
+
+#ifndef HAVE_PTHREAD_H
+
+/* Don't even try to compile.  In fact, cause a syntax error that we can
+   look for as a compiler error message and know that we have no pthread
+   support.  In that case we can just suppress the test completely. */
+
+#error "no posix threads support"
+
+#else
+
+/* OK.  We have the right header.  If we try to compile this and fail, then
+   there is something wrong and the user should know about it so the testsuite
+   should issue an ERROR result.. */
+
+#ifdef __linux__
+#define  _MIT_POSIX_THREADS 1	/* GNU/Linux (or at least RedHat 4.0)
+                                   needs this */
+#endif
+
 #include <pthread.h>
 
 /* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
@@ -146,3 +168,4 @@
   exit(0);
 }
 
+#endif	/* ifndef HAVE_PTHREAD_H */
diff --git a/gdb/testsuite/gdb.trace/save-trace.exp b/gdb/testsuite/gdb.trace/save-trace.exp
index a5b7cf0..b461ad8 100644
--- a/gdb/testsuite/gdb.trace/save-trace.exp
+++ b/gdb/testsuite/gdb.trace/save-trace.exp
@@ -145,10 +145,9 @@
 
 # 10.3 repeat with a path to the file
 
-set escapedfilename [string_to_regexp $objdir/savetrace.tr]
 remote_file host delete $objdir/savetrace.tr
 gdb_test "save-tracepoints $objdir/savetrace.tr" \
-	"Tracepoints saved to file '${escapedfilename}'." \
+	"Tracepoints saved to file '$objdir/savetrace.tr'." \
 	"10.3: save tracepoint definitions, full path"
 
 gdb_delete_tracepoints
diff --git a/gdb/top.c b/gdb/top.c
index 7ac5dd8..e4f9642 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1388,13 +1388,267 @@
 
 /* get_prompt: access method for the GDB prompt string.  */
 
+#define MAX_PROMPT_SIZE 256
+
+/*
+ * int get_prompt_1 (char * buf);
+ *
+ * Work-horse for get_prompt (called via catch_errors).
+ * Argument is buffer to hold the formatted prompt.
+ *
+ * Returns: 1 for success (use formatted prompt)
+ *          0 for failure (use gdb_prompt_string).
+ */
+
+static int gdb_prompt_escape;
+
+static int
+get_prompt_1 (void *data)
+{
+  char *formatted_prompt = data;
+  char *local_prompt;
+
+  if (event_loop_p)
+    local_prompt = PROMPT (0);
+  else
+    local_prompt = gdb_prompt_string;
+
+
+  if (gdb_prompt_escape == 0)
+    {
+      return 0;			/* do no formatting */
+    }
+  else
+    /* formatted prompt */
+    {
+      char fmt[40], *promptp, *outp, *tmp;
+      struct value *arg_val;
+      DOUBLEST doubleval;
+      LONGEST longval;
+      CORE_ADDR addrval;
+
+      int i, len;
+      struct type *arg_type, *elt_type;
+
+      promptp = local_prompt;
+      outp = formatted_prompt;
+
+      while (*promptp != '\0')
+	{
+	  int available = MAX_PROMPT_SIZE - (outp - formatted_prompt) - 1;
+
+	  if (*promptp != gdb_prompt_escape)
+	    {
+	      if (available >= 1)	/* overflow protect */
+		*outp++ = *promptp++;
+	    }
+	  else
+	    {
+	      /* GDB prompt string contains escape char.  Parse for arg.
+	         Two consecutive escape chars followed by arg followed by
+	         a comma means to insert the arg using a default format.
+	         Otherwise a printf format string may be included between
+	         the two escape chars.  eg:
+	         %%foo, insert foo using default format
+	         %2.2f%foo,     insert foo using "%2.2f" format
+	         A mismatch between the format string and the data type
+	         of "foo" is an error (which we don't know how to protect
+	         against).  */
+
+	      fmt[0] = '\0';	/* assume null format string */
+	      if (promptp[1] == gdb_prompt_escape)	/* double esc char */
+		{
+		  promptp += 2;	/* skip past two escape chars. */
+		}
+	      else
+		{
+		  /* extract format string from between two esc chars */
+		  i = 0;
+		  do
+		    {
+		      fmt[i++] = *promptp++;	/* copy format string */
+		    }
+		  while (i < sizeof (fmt) - 1 &&
+			 *promptp != gdb_prompt_escape &&
+			 *promptp != '\0');
+
+		  if (*promptp != gdb_prompt_escape)
+		    error ("Syntax error at prompt position %d",
+			   (int) (promptp - local_prompt));
+		  else
+		    {
+		      promptp++;	/* skip second escape char */
+		      fmt[i++] = '\0';	/* terminate the format string */
+		    }
+		}
+
+	      arg_val = parse_to_comma_and_eval (&promptp);
+	      if (*promptp == ',')
+		promptp++;	/* skip past the comma */
+	      arg_type = check_typedef (VALUE_TYPE (arg_val));
+	      switch (TYPE_CODE (arg_type))
+		{
+		case TYPE_CODE_ARRAY:
+		  elt_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
+		  if (TYPE_LENGTH (arg_type) > 0 &&
+		      TYPE_LENGTH (elt_type) == 1 &&
+		      TYPE_CODE (elt_type) == TYPE_CODE_INT)
+		    {
+		      int len = TYPE_LENGTH (arg_type);
+
+		      if (VALUE_LAZY (arg_val))
+			value_fetch_lazy (arg_val);
+		      tmp = VALUE_CONTENTS (arg_val);
+
+		      if (len > available)
+			len = available;	/* overflow protect */
+
+		      /* FIXME: how to protect GDB from crashing
+		         from bad user-supplied format string? */
+		      if (fmt[0] != 0)
+			sprintf (outp, fmt, tmp);
+		      else
+			strncpy (outp, tmp, len);
+		      outp[len] = '\0';
+		    }
+		  break;
+		case TYPE_CODE_PTR:
+		  elt_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
+		  addrval = value_as_address (arg_val);
+
+		  if (TYPE_LENGTH (elt_type) == 1 &&
+		      TYPE_CODE (elt_type) == TYPE_CODE_INT &&
+		      addrval != 0)
+		    {
+		      /* display it as a string */
+		      char *default_fmt = "%s";
+		      char *tmp;
+		      int err = 0;
+
+		      /* Limiting the number of bytes that the following call
+		         will read protects us from sprintf overflow later. */
+		      i = target_read_string (addrval,	/* src */
+					      &tmp,	/* dest */
+					      available,	/* len */
+					      &err);
+		      if (err)	/* read failed */
+			error ("%s on target_read", safe_strerror (err));
+
+		      tmp[i] = '\0';	/* force-terminate string */
+		      /* FIXME: how to protect GDB from crashing
+		         from bad user-supplied format string? */
+		      sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
+			       tmp);
+		      xfree (tmp);
+		    }
+		  else
+		    {
+		      /* display it as a pointer */
+		      char *default_fmt = "0x%x";
+
+		      /* FIXME: how to protect GDB from crashing
+		         from bad user-supplied format string? */
+		      if (available >= 16 /*? */ )	/* overflow protect */
+			sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
+				 (long) addrval);
+		    }
+		  break;
+		case TYPE_CODE_FLT:
+		  {
+		    char *default_fmt = "%g";
+
+		    doubleval = value_as_double (arg_val);
+		    /* FIXME: how to protect GDB from crashing
+		       from bad user-supplied format string? */
+		    if (available >= 16 /*? */ )	/* overflow protect */
+		      sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
+			       (double) doubleval);
+		    break;
+		  }
+		case TYPE_CODE_INT:
+		  {
+		    char *default_fmt = "%d";
+
+		    longval = value_as_long (arg_val);
+		    /* FIXME: how to protect GDB from crashing
+		       from bad user-supplied format string? */
+		    if (available >= 16 /*? */ )	/* overflow protect */
+		      sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
+			       (long) longval);
+		    break;
+		  }
+		case TYPE_CODE_BOOL:
+		  {
+		    /* no default format for bool */
+		    longval = value_as_long (arg_val);
+		    if (available >= 8 /*? */ )		/* overflow protect */
+		      {
+			if (longval)
+			  strcpy (outp, "<true>");
+			else
+			  strcpy (outp, "<false>");
+		      }
+		    break;
+		  }
+		case TYPE_CODE_ENUM:
+		  {
+		    /* no default format for enum */
+		    longval = value_as_long (arg_val);
+		    len = TYPE_NFIELDS (arg_type);
+		    /* find enum name if possible */
+		    for (i = 0; i < len; i++)
+		      if (TYPE_FIELD_BITPOS (arg_type, i) == longval)
+			break;	/* match -- end loop */
+
+		    if (i < len)	/* enum name found */
+		      {
+			char *name = TYPE_FIELD_NAME (arg_type, i);
+
+			strncpy (outp, name, available);
+			/* in casel available < strlen (name), */
+			outp[available] = '\0';
+		      }
+		    else
+		      {
+			if (available >= 16 /*? */ )	/* overflow protect */
+			  sprintf (outp, "%ld", (long) longval);
+		      }
+		    break;
+		  }
+		case TYPE_CODE_VOID:
+		  *outp = '\0';
+		  break;	/* void type -- no output */
+		default:
+		  error ("bad data type at prompt position %d",
+			 (int) (promptp - local_prompt));
+		  break;
+		}
+	      outp += strlen (outp);
+	    }
+	}
+      *outp++ = '\0';		/* terminate prompt string */
+      return 1;
+    }
+}
+
 char *
 get_prompt (void)
 {
-  if (event_loop_p)
-    return PROMPT (0);
+  static char buf[MAX_PROMPT_SIZE];
+
+  if (catch_errors (get_prompt_1, buf, "bad formatted prompt: ",
+		    RETURN_MASK_ALL))
+    {
+      return &buf[0];		/* successful formatted prompt */
+    }
   else
-    return gdb_prompt_string;
+    {
+      /* Prompt could not be formatted.  */
+      if (event_loop_p)
+	return PROMPT (0);
+      else
+	return gdb_prompt_string;
+    }
 }
 
 void
@@ -1692,6 +1946,7 @@
       if (annotation_level > 1)
         set_async_annotation_level (NULL, 0, NULL);
     }
+  gdb_prompt_escape = 0;	/* default to none.  */
 
   /* Set the important stuff up for command editing.  */
   command_editing_p = 1;
@@ -1731,6 +1986,13 @@
       set_cmd_sfunc (c, set_async_prompt);
     }
 
+  add_show_from_set
+    (add_set_cmd ("prompt-escape-char", class_support, var_zinteger,
+		  (char *) &gdb_prompt_escape,
+		  "Set escape character for formatting of gdb's prompt",
+		  &setlist),
+     &showlist);
+
   add_com ("dont-repeat", class_support, dont_repeat_command, "Don't repeat this command.\n\
 Primarily used inside of user-defined commands that should not be repeated when\n\
 hitting return.");
diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
index f397f5d..d73813b 100644
--- a/gdb/trad-frame.c
+++ b/gdb/trad-frame.c
@@ -111,7 +111,7 @@
     }
   else if (trad_frame_realreg_p (this_saved_regs, regnum))
     {
-      /* Ask the next frame to return the value of the register.  */
+      /* As the next frame to return the value of the register.  */
       frame_register_unwind (next_frame, this_saved_regs[regnum].realreg,
 			     optimizedp, lvalp, addrp, realregp, bufferp);
     }
diff --git a/gdb/utils.c b/gdb/utils.c
index ae28c04..a7c22ee 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -1178,17 +1178,6 @@
 /* Like asprintf/vasprintf but get an internal_error if the call
    fails. */
 
-char *
-xstrprintf (const char *format, ...)
-{
-  char *ret;
-  va_list args;
-  va_start (args, format);
-  xvasprintf (&ret, format, args);
-  va_end (args);
-  return ret;
-}
-
 void
 xasprintf (char **ret, const char *format, ...)
 {
diff --git a/gdb/version.in b/gdb/version.in
index 2efc51c..e6e8418 100644
--- a/gdb/version.in
+++ b/gdb/version.in
@@ -1 +1 @@
-2003-08-21-cvs
+2003-08-05-cvs
diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c
index 66a1b68..87b69c9 100644
--- a/gdb/x86-64-linux-nat.c
+++ b/gdb/x86-64-linux-nat.c
@@ -25,7 +25,6 @@
 #include "inferior.h"
 #include "gdbcore.h"
 #include "regcache.h"
-#include "linux-nat.h"
 
 #include "gdb_assert.h"
 #include "gdb_string.h"
@@ -348,9 +347,3 @@
   return PS_ERR;               /* ptrace failed.  */
 }
 
-void
-child_post_startup_inferior (ptid_t ptid)
-{
-  i386_cleanup_dregs ();
-  linux_child_post_startup_inferior (ptid);
-}
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index 78d06d3..a2ae631 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -144,7 +144,7 @@
 static int x86_64_dwarf_regmap[] =
 {
   /* General Purpose Registers RAX, RDX, RCX, RBX, RSI, RDI.  */
-  X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, 2, 1,
+  X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, 3, 2, 
   4, X86_64_RDI_REGNUM,
 
   /* Frame Pointer Register RBP.  */
@@ -172,7 +172,7 @@
   X86_64_XMM0_REGNUM + 14, X86_64_XMM0_REGNUM + 15,
 
   /* Floating Point Registers 0-7.  */
-  X86_64_ST0_REGNUM + 0, X86_64_ST0_REGNUM + 1,
+  X86_64_ST0_REGNUM + 0, X86_64_ST0_REGNUM + 1,	
   X86_64_ST0_REGNUM + 2, X86_64_ST0_REGNUM + 3,
   X86_64_ST0_REGNUM + 4, X86_64_ST0_REGNUM + 5,
   X86_64_ST0_REGNUM + 6, X86_64_ST0_REGNUM + 7
@@ -613,7 +613,6 @@
   int stack_values_count = 0;
   int *stack_values;
   stack_values = alloca (nargs * sizeof (int));
-
   for (i = 0; i < nargs; i++)
     {
       enum x86_64_reg_class class[MAX_CLASSES];
@@ -1196,14 +1195,6 @@
   return frame_id_build (fp + 16, frame_pc_unwind (next_frame));
 }
 
-/* 16 byte align the SP per frame requirements.  */
-
-static CORE_ADDR
-x86_64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
-{
-  return sp & -(CORE_ADDR)16;
-}
-
 void
 x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
@@ -1247,8 +1238,6 @@
 
   /* Call dummy code.  */
   set_gdbarch_push_dummy_call (gdbarch, x86_64_push_dummy_call);
-  set_gdbarch_frame_align (gdbarch, x86_64_frame_align);
-  set_gdbarch_frame_red_zone_size (gdbarch, 128);
 
   set_gdbarch_convert_register_p (gdbarch, x86_64_convert_register_p);
   set_gdbarch_register_to_value (gdbarch, i387_register_to_value);
diff --git a/gdb/x86-64-tdep.h b/gdb/x86-64-tdep.h
index 608219c..7ad6990 100644
--- a/gdb/x86-64-tdep.h
+++ b/gdb/x86-64-tdep.h
@@ -60,11 +60,5 @@
    reserved bits in *FXSAVE.  */
 
 void x86_64_fill_fxsave (char *fxsave, int regnum);
-
-
-/* Variables exported from amd64fbsd-tdep.c.  */
-extern CORE_ADDR amd64fbsd_sigtramp_start;
-extern CORE_ADDR amd64fbsd_sigtramp_end;
-extern int amd64fbsd_sc_reg_offset[];
 
 #endif /* x86-64-tdep.h */
diff --git a/include/ChangeLog b/include/ChangeLog
index 971de50..5145a48 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,17 +1,3 @@
-2003-08-20  Nick Clifton  <nickc@redhat.com>
-
-	* bfdlink.h (enum report_method): New enum.  Describes how to
-	report something.
-        (struct bfd_link_info): Delete fields 'no_undefined' and
-	'allow_shlib_undefined'.  Replace with
-	'unresolved_symbols_in_objects' and
-	'unresolved_symbols_in_shared_libs'.
-        
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* bfdlink.h: Remove PARAMS macro.  Replace PTR with void *.
-	* dis-asm.h: Likewise.
-
 2003-07-09  Bob Wilson  <bob.wilson@acm.org>
 
 	* xtensa-config.h: Undef all macros before defining them.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index c174dcd..10746ee 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -171,26 +171,26 @@
    follows bfd_link_hash_indirect and bfd_link_hash_warning links to
    the real symbol.  */
 extern struct bfd_link_hash_entry *bfd_link_hash_lookup
-  (struct bfd_link_hash_table *, const char *, bfd_boolean create,
-   bfd_boolean copy, bfd_boolean follow);
+  PARAMS ((struct bfd_link_hash_table *, const char *, bfd_boolean create,
+	   bfd_boolean copy, bfd_boolean follow));
 
 /* Look up an entry in the main linker hash table if the symbol might
    be wrapped.  This should only be used for references to an
    undefined symbol, not for definitions of a symbol.  */
 
 extern struct bfd_link_hash_entry *bfd_wrapped_link_hash_lookup
-  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-   bfd_boolean, bfd_boolean);
+  PARAMS ((bfd *, struct bfd_link_info *, const char *, bfd_boolean,
+	   bfd_boolean, bfd_boolean));
 
 /* Traverse a link hash table.  */
 extern void bfd_link_hash_traverse
-  (struct bfd_link_hash_table *,
-    bfd_boolean (*) (struct bfd_link_hash_entry *, void *),
-    void *);
+  PARAMS ((struct bfd_link_hash_table *,
+	   bfd_boolean (*) (struct bfd_link_hash_entry *, PTR),
+	   PTR));
 
 /* Add an entry to the undefs list.  */
 extern void bfd_link_add_undef
-  (struct bfd_link_hash_table *, struct bfd_link_hash_entry *);
+  PARAMS ((struct bfd_link_hash_table *, struct bfd_link_hash_entry *));
 
 struct bfd_sym_chain
 {
@@ -198,19 +198,6 @@
   const char *name;
 };
 
-/* How to handle unresolved symbols.
-   There are four possibilities which are enumerated below:  */
-enum report_method
-{
-  /* This is the initial value when then link_info structure is created.
-     It allows the various stages of the linker to determine whether they
-     allowed to set the value.  */
-  RM_NOT_YET_SET = 0,
-  RM_IGNORE,
-  RM_GENERATE_WARNING,
-  RM_GENERATE_ERROR
-};
-
 /* This structure holds all the information needed to communicate
    between BFD and the linker when doing a link.  */
 
@@ -251,6 +238,24 @@
      need much more time and therefore must be explicitly selected.  */
   unsigned int optimize: 1;
 
+  /* TRUE if BFD should generate errors for undefined symbols
+     even if generating a shared object.  */
+  unsigned int no_undefined: 1;
+
+  /* TRUE if BFD should allow undefined symbols in shared objects even
+     when no_undefined is set to disallow undefined symbols.  The net
+     result will be that undefined symbols in regular objects will
+     still trigger an error, but undefined symbols in shared objects
+     will be ignored.  The implementation of no_undefined makes the
+     assumption that the runtime linker will choke on undefined
+     symbols.  However there is at least one system (BeOS) where
+     undefined symbols in shared libraries is normal since the kernel
+     patches them at load time to select which function is most
+     appropriate for the current architecture.  I.E. dynamically
+     select an appropriate memset function.  Apparently it is also
+     normal for HPPA shared libraries to have undefined symbols.  */
+  unsigned int allow_shlib_undefined: 1;
+
   /* TRUE if ok to have multiple definition.  */
   unsigned int allow_multiple_definition: 1;
 
@@ -300,17 +305,6 @@
      flags.  */
   unsigned int noexecstack: 1;
 
-  /* What to do with unresolved symbols in an object file.
-     When producing static binaries the default is GENERATE_ERROR.
-     When producing dynamic binaries the default is IGNORE.  The
-     assumption with dynamic binaries is that the reference will be
-     resolved at load/execution time.  */
-  enum report_method unresolved_syms_in_objects;
-
-  /* What to do with unresolved symbols in a shared library.
-     The same defaults apply.  */
-  enum report_method unresolved_syms_in_shared_libs;
-
   /* Which symbols to strip.  */
   enum bfd_link_strip strip;
 
@@ -356,7 +350,7 @@
   struct bfd_sym_chain *gc_sym_list;
 
   /* If a base output file is wanted, then this points to it */
-  void *base_file;
+  PTR base_file;
 
   /* The function to call when the executable or shared object is
      loaded.  */
@@ -405,7 +399,7 @@
      name of the symbol which caused the archive element to be pulled
      in.  */
   bfd_boolean (*add_archive_element)
-    (struct bfd_link_info *, bfd *abfd, const char *name);
+    PARAMS ((struct bfd_link_info *, bfd *abfd, const char *name));
   /* A function which is called when a symbol is found with multiple
      definitions.  NAME is the symbol which is defined multiple times.
      OBFD is the old BFD, OSEC is the old section, OVAL is the old
@@ -413,9 +407,9 @@
      the new value.  OBFD may be NULL.  OSEC and NSEC may be
      bfd_com_section or bfd_ind_section.  */
   bfd_boolean (*multiple_definition)
-    (struct bfd_link_info *, const char *name,
-     bfd *obfd, asection *osec, bfd_vma oval,
-     bfd *nbfd, asection *nsec, bfd_vma nval);
+    PARAMS ((struct bfd_link_info *, const char *name,
+	     bfd *obfd, asection *osec, bfd_vma oval,
+	     bfd *nbfd, asection *nsec, bfd_vma nval));
   /* A function which is called when a common symbol is defined
      multiple times.  NAME is the symbol appearing multiple times.
      OBFD is the BFD of the existing symbol; it may be NULL if this is
@@ -428,9 +422,9 @@
      bfd_link_hash_indirect.  If NTYPE is bfd_link_hash_common, NSIZE
      is the size of the new symbol.  */
   bfd_boolean (*multiple_common)
-    (struct bfd_link_info *, const char *name,
-     bfd *obfd, enum bfd_link_hash_type otype, bfd_vma osize,
-     bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize);
+    PARAMS ((struct bfd_link_info *, const char *name,
+	     bfd *obfd, enum bfd_link_hash_type otype, bfd_vma osize,
+	     bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize));
   /* A function which is called to add a symbol to a set.  ENTRY is
      the link hash table entry for the set itself (e.g.,
      __CTOR_LIST__).  RELOC is the relocation to use for an entry in
@@ -438,8 +432,9 @@
      get the size of the entry when generating an executable file.
      ABFD, SEC and VALUE identify the value to add to the set.  */
   bfd_boolean (*add_to_set)
-    (struct bfd_link_info *, struct bfd_link_hash_entry *entry,
-     bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec, bfd_vma value);
+    PARAMS ((struct bfd_link_info *, struct bfd_link_hash_entry *entry,
+	     bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec,
+	     bfd_vma value));
   /* A function which is called when the name of a g++ constructor or
      destructor is found.  This is only called by some object file
      formats.  CONSTRUCTOR is TRUE for a constructor, FALSE for a
@@ -447,8 +442,8 @@
      relocatable file.  NAME is the name of the symbol found.  ABFD,
      SECTION and VALUE are the value of the symbol.  */
   bfd_boolean (*constructor)
-    (struct bfd_link_info *, bfd_boolean constructor, const char *name,
-     bfd *abfd, asection *sec, bfd_vma value);
+    PARAMS ((struct bfd_link_info *, bfd_boolean constructor,
+	     const char *name, bfd *abfd, asection *sec, bfd_vma value));
   /* A function which is called to issue a linker warning.  For
      example, this is called when there is a reference to a warning
      symbol.  WARNING is the warning to be issued.  SYMBOL is the name
@@ -457,16 +452,16 @@
      which trigerred the warning; either ABFD or SECTION or both may
      be NULL if the location is not known.  */
   bfd_boolean (*warning)
-    (struct bfd_link_info *, const char *warning, const char *symbol,
-     bfd *abfd, asection *section, bfd_vma address);
+    PARAMS ((struct bfd_link_info *, const char *warning, const char *symbol,
+	     bfd *abfd, asection *section, bfd_vma address));
   /* A function which is called when a relocation is attempted against
      an undefined symbol.  NAME is the symbol which is undefined.
      ABFD, SECTION and ADDRESS identify the location from which the
      reference is made. FATAL indicates whether an undefined symbol is
      a fatal error or not. In some cases SECTION may be NULL.  */
   bfd_boolean (*undefined_symbol)
-    (struct bfd_link_info *, const char *name, bfd *abfd,
-     asection *section, bfd_vma address, bfd_boolean fatal);
+    PARAMS ((struct bfd_link_info *, const char *name, bfd *abfd,
+	     asection *section, bfd_vma address, bfd_boolean fatal));
   /* A function which is called when a reloc overflow occurs.  NAME is
      the name of the symbol or section the reloc is against,
      RELOC_NAME is the name of the relocation, and ADDEND is any
@@ -475,8 +470,8 @@
      bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
      ABFD will be NULL.  */
   bfd_boolean (*reloc_overflow)
-    (struct bfd_link_info *, const char *name, const char *reloc_name,
-     bfd_vma addend, bfd *abfd, asection *section, bfd_vma address);
+    PARAMS ((struct bfd_link_info *, const char *name, const char *reloc_name,
+	     bfd_vma addend, bfd *abfd, asection *section, bfd_vma address));
   /* A function which is called when a dangerous reloc is performed.
      The canonical example is an a29k IHCONST reloc which does not
      follow an IHIHALF reloc.  MESSAGE is an appropriate message.
@@ -485,8 +480,8 @@
      bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
      ABFD will be NULL.  */
   bfd_boolean (*reloc_dangerous)
-    (struct bfd_link_info *, const char *message,
-     bfd *abfd, asection *section, bfd_vma address);
+    PARAMS ((struct bfd_link_info *, const char *message,
+	     bfd *abfd, asection *section, bfd_vma address));
   /* A function which is called when a reloc is found to be attached
      to a symbol which is not being written out.  NAME is the name of
      the symbol.  ABFD, SECTION and ADDRESS identify the location of
@@ -494,20 +489,20 @@
      bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
      ABFD will be NULL.  */
   bfd_boolean (*unattached_reloc)
-    (struct bfd_link_info *, const char *name,
-     bfd *abfd, asection *section, bfd_vma address);
+    PARAMS ((struct bfd_link_info *, const char *name,
+	     bfd *abfd, asection *section, bfd_vma address));
   /* A function which is called when a symbol in notice_hash is
      defined or referenced.  NAME is the symbol.  ABFD, SECTION and
      ADDRESS are the value of the symbol.  If SECTION is
      bfd_und_section, this is a reference.  */
   bfd_boolean (*notice)
-    (struct bfd_link_info *, const char *name,
-     bfd *abfd, asection *section, bfd_vma address);
+    PARAMS ((struct bfd_link_info *, const char *name,
+	     bfd *abfd, asection *section, bfd_vma address));
   /* A function which is called for reporting a linker error. ID is the
      error identifier. The remaining input is the same as einfo () in
      ld.  */
   bfd_boolean (*error_handler)
-    (int id, const char *fmt, ...);
+    PARAMS ((int id, const char * fmt, ...));
 
 /* Identifiers of linker error messages used by error_handler.  */
 #define LD_DEFINITION_IN_DISCARDED_SECTION	1
@@ -610,7 +605,7 @@
 };
 
 /* Allocate a new link_order for a section.  */
-extern struct bfd_link_order *bfd_new_link_order (bfd *, asection *);
+extern struct bfd_link_order *bfd_new_link_order PARAMS ((bfd *, asection *));
 
 /* These structures are used to describe version information for the
    ELF linker.  These structures could be manipulated entirely inside
@@ -626,7 +621,7 @@
   /* Regular expression.  */
   const char *pattern;
   /* Matching function.  */
-  int (*match) (struct bfd_elf_version_expr *, const char *);
+  int (*match) PARAMS ((struct bfd_elf_version_expr *, const char *));
   /* Defined by ".symver".  */
   unsigned int symver: 1;
   /* Defined by version script.  */
diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog
index 35988e3..f9e1fea 100644
--- a/include/coff/ChangeLog
+++ b/include/coff/ChangeLog
@@ -1,10 +1,3 @@
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* ti.h (GET_SCNHDR_NRELOC): Rename PTR param to LOC.
-	(PUT_SCNHDR_NRELOC, GET_SCNHDR_NLNNO, PUT_SCNHDR_NLNNO): Likewise.
-	(GET_SCNHDR_FLAGS, PUT_SCNHDR_FLAGS): Likewise.
-	(GET_SCNHDR_PAGE, PUT_SCNHDR_PAGE): Likewise.
-
 2003-07-17  Jeff Muizelaar  <muizelaar@rogers.com>
 
 	* pe.h: (IMAGE_FILE_NET_RUN_FROM_SWAP): Define.
diff --git a/include/coff/ti.h b/include/coff/ti.h
index a15fe71..8df1522 100644
--- a/include/coff/ti.h
+++ b/include/coff/ti.h
@@ -2,7 +2,7 @@
    customized in a target-specific file, and then this file included (see
    tic54x.h for an example).
    
-   Copyright 2001, 2003 Free Software Foundation, Inc.
+   Copyright 2001 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
@@ -215,25 +215,25 @@
    Assume we're dealing with the COFF2 scnhdr structure, and adjust
    accordingly 
  */
-#define GET_SCNHDR_NRELOC(ABFD, LOC) \
-  (COFF2_P (ABFD) ? H_GET_32 (ABFD, LOC) : H_GET_16 (ABFD, LOC))
-#define PUT_SCNHDR_NRELOC(ABFD, VAL, LOC) \
-  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, LOC) : H_PUT_16 (ABFD, VAL, LOC))
-#define GET_SCNHDR_NLNNO(ABFD, LOC) \
-  (COFF2_P (ABFD) ? H_GET_32 (ABFD, LOC) : H_GET_16 (ABFD, (LOC) - 2))
-#define PUT_SCNHDR_NLNNO(ABFD, VAL, LOC) \
-  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, LOC) : H_PUT_16 (ABFD, VAL, (LOC) - 2))
-#define GET_SCNHDR_FLAGS(ABFD, LOC) \
-  (COFF2_P (ABFD) ? H_GET_32 (ABFD, LOC) : H_GET_16 (ABFD, (LOC) - 4))
-#define PUT_SCNHDR_FLAGS(ABFD, VAL, LOC) \
-  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, LOC) : H_PUT_16 (ABFD, VAL, (LOC) - 4))
-#define GET_SCNHDR_PAGE(ABFD, LOC) \
-  (COFF2_P (ABFD) ? H_GET_16 (ABFD, LOC) : (unsigned) H_GET_8 (ABFD, (LOC) - 7))
+#define GET_SCNHDR_NRELOC(ABFD, PTR) \
+  (COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, PTR))
+#define PUT_SCNHDR_NRELOC(ABFD, VAL, PTR) \
+  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, PTR))
+#define GET_SCNHDR_NLNNO(ABFD, PTR) \
+  (COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, (PTR) -2))
+#define PUT_SCNHDR_NLNNO(ABFD, VAL, PTR) \
+  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, (PTR) -2))
+#define GET_SCNHDR_FLAGS(ABFD, PTR) \
+  (COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, (PTR) -4))
+#define PUT_SCNHDR_FLAGS(ABFD, VAL, PTR) \
+  (COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, (PTR) -4))
+#define GET_SCNHDR_PAGE(ABFD, PTR) \
+  (COFF2_P (ABFD) ? H_GET_16 (ABFD, PTR) : (unsigned) H_GET_8 (ABFD, (PTR) -7))
 /* on output, make sure that the "reserved" field is zero */
-#define PUT_SCNHDR_PAGE(ABFD, VAL, LOC) \
+#define PUT_SCNHDR_PAGE(ABFD, VAL, PTR) \
   (COFF2_P (ABFD) \
-   ? H_PUT_16 (ABFD, VAL, LOC) \
-   : H_PUT_8 (ABFD, VAL, (LOC) - 7), H_PUT_8 (ABFD, 0, (LOC) - 8))
+   ? H_PUT_16 (ABFD, VAL, PTR) \
+   : H_PUT_8 (ABFD, VAL, (PTR) -7), H_PUT_8 (ABFD, 0, (PTR) -8))
 
 /* TI COFF stores section size as number of bytes (address units, not octets),
    so adjust to be number of octets, which is what BFD expects */ 
diff --git a/include/dis-asm.h b/include/dis-asm.h
index 1d67ae4..392cbf9 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -1,6 +1,6 @@
 /* Interface between the opcode library and its callers.
 
-   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2001, 2002 Free Software Foundation, Inc.
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -34,7 +34,7 @@
 #include <stdio.h>
 #include "bfd.h"
 
-typedef int (*fprintf_ftype) (void *, const char*, ...);
+typedef int (*fprintf_ftype) PARAMS((PTR, const char*, ...));
 
 enum dis_insn_type {
   dis_noninsn,			/* Not a valid instruction */
@@ -59,8 +59,8 @@
 
 typedef struct disassemble_info {
   fprintf_ftype fprintf_func;
-  void *stream;
-  void *application_data;
+  PTR stream;
+  PTR application_data;
 
   /* Target description.  We could replace this with a pointer to the bfd,
      but that would require one.  There currently isn't any such requirement
@@ -98,7 +98,7 @@
      The bottom 16 bits are for the internal use of the disassembler.  */
   unsigned long flags;
 #define INSN_HAS_RELOC	0x80000000
-  void *private_data;
+  PTR private_data;
 
   /* Function used to get bytes to disassemble.  MEMADDR is the
      address of the stuff to be disassembled, MYADDR is the address to
@@ -106,19 +106,19 @@
      INFO is a pointer to this struct.
      Returns an errno value or 0 for success.  */
   int (*read_memory_func)
-    (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
-     struct disassemble_info *info);
+    PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
+	     struct disassemble_info *info));
 
   /* Function which should be called if we get an error that we can't
      recover from.  STATUS is the errno value from read_memory_func and
      MEMADDR is the address that we were trying to read.  INFO is a
      pointer to this struct.  */
   void (*memory_error_func)
-    (int status, bfd_vma memaddr, struct disassemble_info *info);
+    PARAMS ((int status, bfd_vma memaddr, struct disassemble_info *info));
 
   /* Function called to print ADDR.  */
   void (*print_address_func)
-    (bfd_vma addr, struct disassemble_info *info);
+    PARAMS ((bfd_vma addr, struct disassemble_info *info));
 
   /* Function called to determine if there is a symbol at the given ADDR.
      If there is, the function returns 1, otherwise it returns 0.
@@ -128,7 +128,7 @@
      address, (normally because there is a symbol associated with
      that address), but sometimes we want to mask out the overlay bits.  */
   int (* symbol_at_address_func)
-    (bfd_vma addr, struct disassemble_info * info);
+    PARAMS ((bfd_vma addr, struct disassemble_info * info));
 
   /* These are for buffer_read_memory.  */
   bfd_byte *buffer;
@@ -177,88 +177,88 @@
 
 /* Standard disassemblers.  Disassemble one instruction at the given
    target address.  Return number of octets processed.  */
-typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
+typedef int (*disassembler_ftype)
+     PARAMS((bfd_vma, disassemble_info *));
 
-extern int print_insn_big_mips		(bfd_vma, disassemble_info *);
-extern int print_insn_little_mips	(bfd_vma, disassemble_info *);
-extern int print_insn_i386		(bfd_vma, disassemble_info *);
-extern int print_insn_i386_att		(bfd_vma, disassemble_info *);
-extern int print_insn_i386_intel	(bfd_vma, disassemble_info *);
-extern int print_insn_ia64		(bfd_vma, disassemble_info *);
-extern int print_insn_i370		(bfd_vma, disassemble_info *);
-extern int print_insn_m68hc11		(bfd_vma, disassemble_info *);
-extern int print_insn_m68hc12		(bfd_vma, disassemble_info *);
-extern int print_insn_m68k		(bfd_vma, disassemble_info *);
-extern int print_insn_z8001		(bfd_vma, disassemble_info *);
-extern int print_insn_z8002		(bfd_vma, disassemble_info *);
-extern int print_insn_h8300		(bfd_vma, disassemble_info *);
-extern int print_insn_h8300h		(bfd_vma, disassemble_info *);
-extern int print_insn_h8300s		(bfd_vma, disassemble_info *);
-extern int print_insn_h8500		(bfd_vma, disassemble_info *);
-extern int print_insn_alpha		(bfd_vma, disassemble_info *);
-extern int print_insn_big_arm		(bfd_vma, disassemble_info *);
-extern int print_insn_little_arm	(bfd_vma, disassemble_info *);
-extern int print_insn_sparc		(bfd_vma, disassemble_info *);
-extern int print_insn_big_a29k		(bfd_vma, disassemble_info *);
-extern int print_insn_little_a29k	(bfd_vma, disassemble_info *);
-extern int print_insn_avr		(bfd_vma, disassemble_info *);
-extern int print_insn_d10v		(bfd_vma, disassemble_info *);
-extern int print_insn_d30v		(bfd_vma, disassemble_info *);
-extern int print_insn_dlx 		(bfd_vma, disassemble_info *);
-extern int print_insn_fr30		(bfd_vma, disassemble_info *);
-extern int print_insn_hppa		(bfd_vma, disassemble_info *);
-extern int print_insn_i860		(bfd_vma, disassemble_info *);
-extern int print_insn_i960		(bfd_vma, disassemble_info *);
-extern int print_insn_ip2k		(bfd_vma, disassemble_info *);
-extern int print_insn_m32r		(bfd_vma, disassemble_info *);
-extern int print_insn_m88k		(bfd_vma, disassemble_info *);
-extern int print_insn_mcore		(bfd_vma, disassemble_info *);
-extern int print_insn_mmix		(bfd_vma, disassemble_info *);
-extern int print_insn_mn10200		(bfd_vma, disassemble_info *);
-extern int print_insn_mn10300		(bfd_vma, disassemble_info *);
-extern int print_insn_msp430		(bfd_vma, disassemble_info *);
-extern int print_insn_ns32k		(bfd_vma, disassemble_info *);
-extern int print_insn_openrisc		(bfd_vma, disassemble_info *);
-extern int print_insn_big_or32		(bfd_vma, disassemble_info *);
-extern int print_insn_little_or32	(bfd_vma, disassemble_info *);
-extern int print_insn_pdp11		(bfd_vma, disassemble_info *);
-extern int print_insn_pj		(bfd_vma, disassemble_info *);
-extern int print_insn_big_powerpc	(bfd_vma, disassemble_info *);
-extern int print_insn_little_powerpc	(bfd_vma, disassemble_info *);
-extern int print_insn_rs6000		(bfd_vma, disassemble_info *);
-extern int print_insn_s390		(bfd_vma, disassemble_info *); 
-extern int print_insn_sh		(bfd_vma, disassemble_info *);
-extern int print_insn_tic30		(bfd_vma, disassemble_info *);
-extern int print_insn_tic4x		(bfd_vma, disassemble_info *);
-extern int print_insn_tic54x		(bfd_vma, disassemble_info *);
-extern int print_insn_tic80		(bfd_vma, disassemble_info *);
-extern int print_insn_v850		(bfd_vma, disassemble_info *);
-extern int print_insn_vax		(bfd_vma, disassemble_info *);
-extern int print_insn_w65		(bfd_vma, disassemble_info *);
-extern int print_insn_xstormy16		(bfd_vma, disassemble_info *);
-extern int print_insn_xtensa		(bfd_vma, disassemble_info *);
-extern int print_insn_sh64		(bfd_vma, disassemble_info *);
-extern int print_insn_sh64x_media	(bfd_vma, disassemble_info *);
-extern int print_insn_frv		(bfd_vma, disassemble_info *);
-extern int print_insn_iq2000		(bfd_vma, disassemble_info *);
+extern int print_insn_big_mips		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_mips	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i386		PARAMS ((bfd_vma, disassemble_info *));
+extern int print_insn_i386_att		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i386_intel	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_ia64		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i370		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m68hc11		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m68hc12		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m68k		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_z8001		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_z8002		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_h8300		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_h8300h		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_h8300s		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_h8500		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_alpha		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_big_arm		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_arm	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_sparc		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_big_a29k		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_a29k	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_avr		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_d10v		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_d30v		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_dlx 		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_fr30		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_hppa		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i860		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i960		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_ip2k		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m32r		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m88k		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_mcore		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_mmix		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_mn10200		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_mn10300		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_msp430		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_ns32k		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_openrisc		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_big_or32          PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_or32       PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_pdp11		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_pj		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_big_powerpc	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_powerpc	PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_rs6000		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_s390              PARAMS ((bfd_vma, disassemble_info*)); 
+extern int print_insn_sh		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_tic30		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_tic4x		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_tic54x		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_tic80		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_v850		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_vax		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_w65		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_xstormy16		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_xtensa		PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_sh64		PARAMS ((bfd_vma, disassemble_info *));
+extern int print_insn_sh64x_media	PARAMS ((bfd_vma, disassemble_info *));
+extern int print_insn_frv		PARAMS ((bfd_vma, disassemble_info *));
+extern int print_insn_iq2000            PARAMS ((bfd_vma, disassemble_info *));
 
-extern disassembler_ftype arc_get_disassembler (void *);
-extern disassembler_ftype cris_get_disassembler (bfd *);
+extern disassembler_ftype arc_get_disassembler PARAMS ((void *));
+extern disassembler_ftype cris_get_disassembler PARAMS ((bfd *));
 
-extern void print_mips_disassembler_options (FILE *);
-extern void print_ppc_disassembler_options (FILE *);
-extern void print_arm_disassembler_options (FILE *);
-extern void parse_arm_disassembler_option (char *);
-extern int get_arm_regname_num_options (void);
-extern int set_arm_regname_option (int);
-extern int get_arm_regnames
-  (int, const char **, const char **, const char ***);
+extern void print_mips_disassembler_options PARAMS ((FILE *));
+extern void print_ppc_disassembler_options PARAMS ((FILE *));
+extern void print_arm_disassembler_options PARAMS ((FILE *));
+extern void parse_arm_disassembler_option  PARAMS ((char *));
+extern int  get_arm_regname_num_options    PARAMS ((void));
+extern int  set_arm_regname_option         PARAMS ((int));
+extern int  get_arm_regnames               PARAMS ((int, const char **, const char **, const char ***));
 
 /* Fetch the disassembler for a given BFD, if that support is available.  */
-extern disassembler_ftype disassembler (bfd *);
+extern disassembler_ftype disassembler	PARAMS ((bfd *));
 
 /* Document any target specific options available from the disassembler.  */
-extern void disassembler_usage (FILE *);
+extern void disassembler_usage          PARAMS ((FILE *));
 
 
 /* This block of definitions is for particular callers who read instructions
@@ -267,22 +267,22 @@
 /* Here is a function which callers may wish to use for read_memory_func.
    It gets bytes from a buffer.  */
 extern int buffer_read_memory
-  (bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *);
+  PARAMS ((bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *));
 
 /* This function goes with buffer_read_memory.
    It prints a message using info->fprintf_func and info->stream.  */
-extern void perror_memory (int, bfd_vma, struct disassemble_info *);
+extern void perror_memory PARAMS ((int, bfd_vma, struct disassemble_info *));
 
 
 /* Just print the address in hex.  This is included for completeness even
    though both GDB and objdump provide their own (to print symbolic
    addresses).  */
 extern void generic_print_address
-  (bfd_vma, struct disassemble_info *);
+  PARAMS ((bfd_vma, struct disassemble_info *));
 
 /* Always true.  */
 extern int generic_symbol_at_address
-  (bfd_vma, struct disassemble_info *);
+  PARAMS ((bfd_vma, struct disassemble_info *));
 
 /* Macro to initialize a disassemble_info struct.  This should be called
    by all applications creating such a struct.  */
@@ -302,7 +302,7 @@
 
 #define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
   (INFO).fprintf_func = (fprintf_ftype)(FPRINTF_FUNC), \
-  (INFO).stream = (STREAM), \
+  (INFO).stream = (PTR)(STREAM), \
   (INFO).section = NULL, \
   (INFO).symbols = NULL, \
   (INFO).num_symbols = 0, \
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index f538951..6b0a8c5 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,18 +1,3 @@
-2003-08-21  James Cownie <jcownie@etnus.com>
-
-	* dwarf2.h: Add PGI dwarf extensions.
-	
-2003-08-08 Dmitry Diky <diwil@mail.ru>
-	
-	* msp430.h: Add xW42 and xE42 parts. Sort MPU list according to
-	gcc order.
-
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* reloc-macros.h (START_RELOC_NUMBERS) : Remove PARAMS macro.  Use
-	C90 function definition.  Formatting.
-	(RELOC_NUMBER): Remove !__STDC__ code.
-
 2003-07-28  Eric Christopher  <echristo@redhat.com>
 
 	* ppc.h (R_PPC_RELAX32): New. Fake relocation.
@@ -53,6 +38,10 @@
 	* mmix.h: Convert to ISO C90 prototypes.
 	* mips.h: Likewise.
 
+	* reloc-macros.h (START_RELOC_NUMBERS): Convert to ISO C90
+	prototype.
+	(RELOC_NUMBER): Remove !__STDC__ code.
+
 2003-06-13  Robert Millan <zeratul2@wanadoo.es>
 
 	* common.h (GNU_ABI_TAG_NETBSD): New tag.
diff --git a/include/elf/dwarf2.h b/include/elf/dwarf2.h
index 26d2dea..9c8ce4e 100644
--- a/include/elf/dwarf2.h
+++ b/include/elf/dwarf2.h
@@ -1,7 +1,7 @@
 /* Declarations and definitions of codes relating to the DWARF2 symbolic
    debugging information format.
-   Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
-   2003 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002
+   Free Software Foundation, Inc.
 
    Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
    Office (AJPO), Florida State Unviversity and Silicon Graphics Inc.
@@ -198,10 +198,7 @@
     /* Extensions for UPC.  See: http://upc.gwu.edu/~upc.  */
     DW_TAG_upc_shared_type = 0x8765,
     DW_TAG_upc_strict_type = 0x8766,
-    DW_TAG_upc_relaxed_type = 0x8767,
-    /* PGI (STMicroelectronics) extensions.  No documentation available.  */
-    DW_TAG_PGI_kanji_type      = 0xA000,
-    DW_TAG_PGI_interface_block = 0xA020
+    DW_TAG_upc_relaxed_type = 0x8767
   };
 
 #define DW_TAG_lo_user	0x4080
@@ -339,11 +336,7 @@
     /* VMS extensions.  */
     DW_AT_VMS_rtnbeg_pd_address = 0x2201,
     /* UPC extension.  */
-    DW_AT_upc_threads_scaled = 0x3210,
-    /* PGI (STMicroelectronics) extensions.  */
-    DW_AT_PGI_lbase    = 0x3a00,
-    DW_AT_PGI_soffset  = 0x3a01,
-    DW_AT_PGI_lstride  = 0x3a02
+    DW_AT_upc_threads_scaled = 0x3210
   };
 
 #define DW_AT_lo_user	0x2000	/* Implementation-defined range start.  */
diff --git a/include/elf/msp430.h b/include/elf/msp430.h
index 912ded7..cb3f241 100644
--- a/include/elf/msp430.h
+++ b/include/elf/msp430.h
@@ -26,20 +26,19 @@
 /* Processor specific flags for the ELF header e_flags field.  */
 #define EF_MSP430_MACH 		0xff
 
-#define E_MSP430_MACH_MSP430x11  11
 #define E_MSP430_MACH_MSP430x11x1  110
+#define E_MSP430_MACH_MSP430x11  11
 #define E_MSP430_MACH_MSP430x12  12
 #define E_MSP430_MACH_MSP430x13  13
 #define E_MSP430_MACH_MSP430x14  14
-#define E_MSP430_MACH_MSP430x15  15
-#define E_MSP430_MACH_MSP430x16  16
 #define E_MSP430_MACH_MSP430x31  31
 #define E_MSP430_MACH_MSP430x32  32
 #define E_MSP430_MACH_MSP430x33  33
 #define E_MSP430_MACH_MSP430x41  41
-#define E_MSP430_MACH_MSP430x42  42
 #define E_MSP430_MACH_MSP430x43  43
 #define E_MSP430_MACH_MSP430x44  44
+#define E_MSP430_MACH_MSP430x15  15
+#define E_MSP430_MACH_MSP430x16  16
 
 /* Relocations.  */
 START_RELOC_NUMBERS (elf_msp430_reloc_type)
diff --git a/include/elf/reloc-macros.h b/include/elf/reloc-macros.h
index 4a3a60f..9ad346c 100644
--- a/include/elf/reloc-macros.h
+++ b/include/elf/reloc-macros.h
@@ -1,5 +1,5 @@
 /* Generic relocation support for BFD.
-   Copyright 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -46,9 +46,10 @@
    If RELOC_MACROS_GEN_FUNC *is* defined, then instead the
    following function will be generated:
 
-   	static const char *foo (unsigned long rtype);
+   	static const char * foo PARAMS ((unsigned long rtype));
    	static const char *
-   	foo (unsigned long rtype)
+   	foo (rtype)
+   	    unsigned long rtype;
    	{
    	   switch (rtype)
    	   {
@@ -69,22 +70,26 @@
    the relocation is not recognised, NULL is returned.  */
 
 #define START_RELOC_NUMBERS(name)   				\
-static const char *name (unsigned long rtype);			\
+static const char * name    PARAMS ((unsigned long rtype)); 	\
 static const char *						\
-name (unsigned long rtype)					\
+name (rtype)							\
+	unsigned long rtype;					\
 {								\
   switch (rtype)						\
-    {
+  {
 
-#define RELOC_NUMBER(name, number) \
-    case number: return #name;
+#if defined (__STDC__) || defined (ALMOST_STDC)
+#define RELOC_NUMBER(name, number)  case number : return #name ;
+#else
+#define RELOC_NUMBER(name, number)  case number : return "name" ;
+#endif
 
 #define FAKE_RELOC(name, number)
 #define EMPTY_RELOC(name)
 
 #define END_RELOC_NUMBERS(name)	\
     default: return NULL;	\
-    }				\
+  }				\
 }
 
 
diff --git a/include/nlm/ChangeLog b/include/nlm/ChangeLog
index b3c9529..979b162 100644
--- a/include/nlm/ChangeLog
+++ b/include/nlm/ChangeLog
@@ -1,7 +1,3 @@
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* internal.h (Nlm_Internal_Custom_Header): Replace PTR with void *.
-
 2001-10-02  Alan Modra  <amodra@bigpond.net.au>
 
 	* common.h (NLM_CAT, NLM_CAT3): Don't define.
diff --git a/include/nlm/internal.h b/include/nlm/internal.h
index f61c42d..cae93f8 100644
--- a/include/nlm/internal.h
+++ b/include/nlm/internal.h
@@ -1,5 +1,5 @@
 /* NLM (NetWare Loadable Module) support for BFD.
-   Copyright 1993, 1994, 2003 Free Software Foundation, Inc.
+   Copyright 1993, 1994 Free Software Foundation, Inc.
 
    Written by Fred Fish @ Cygnus Support.
 
@@ -282,7 +282,7 @@
   file_ptr dataOffset;
   bfd_size_type dataLength;
   char dataStamp[8];
-  void *hdr;
+  PTR hdr;
 } Nlm_Internal_Custom_Header;
 
 #define nlm32_internal_custom_header nlm_internal_custom_header
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 8aa8453..5b27060 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,38 +1,3 @@
-2003-08-19  Alan Modra  <amodra@bigpond.net.au>
-
-	* ppc.h (PPC_OPCODE_440): Define.  Formatting.  Use hex for other
-	PPC_OPCODE_* defines.
-
-2003-08-16  Jason Eckhardt  <jle@rice.edu>
-
-	* i860.h (fmov.ds): Expand as famov.ds.
-	(fmov.sd): Expand as famov.sd.
-	(pfmov.ds): Expand as pfamov.ds.
-
-2003-08-07  Michael Meissner  <gnu@the-meissners.org>
-
-	* cgen.h: Remove PARAM macro usage in all prototypes.
-	(CGEN_EXTRACT_INFO): Use void * instead of PTR.
-	(cgen_print_fn): Ditto.
-	(CGEN_HW_ENTRY): Ditto.
-	(CGEN_MAYBE_MULTI_IFLD): Ditto.
-	(struct cgen_insn): Ditto.
-	(CGEN_CPU_TABLE): Ditto.
-
-2003-08-07  Alan Modra  <amodra@bigpond.net.au>
-
-	* alpha.h: Remove PARAMS macro.
-	* arc.h: Likewise.
-	* d10v.h: Likewise.
-	* d30v.h: Likewise.
-	* i370.h: Likewise.
-	* or32.h: Likewise.
-	* pj.h: Likewise.
-	* ppc.h: Likewise.
-	* sparc.h: Likewise.
-	* tic80.h: Likewise.
-	* v850.h: Likewise.
-
 2003-07-18  Michael Snyder  <msnyder@redhat.com>
 
 	* include/opcode/h8sx.h (DO_MOVA1, DO_MOVA2): Reformatting.
diff --git a/include/opcode/alpha.h b/include/opcode/alpha.h
index efe1626..487b696 100644
--- a/include/opcode/alpha.h
+++ b/include/opcode/alpha.h
@@ -1,5 +1,5 @@
 /* alpha.h -- Header file for Alpha opcode table
-   Copyright 1996, 1999, 2001, 2003 Free Software Foundation, Inc.
+   Copyright 1996, 1999 Free Software Foundation, Inc.
    Contributed by Richard Henderson <rth@tamu.edu>,
    patterned after the PPC opcode table written by Ian Lance Taylor.
 
@@ -108,7 +108,8 @@
      string (the operand will be inserted in any case).  If the
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
-  unsigned (*insert) (unsigned instruction, int op, const char **errmsg);
+  unsigned (*insert) PARAMS ((unsigned instruction, int op,
+			      const char **errmsg));
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -127,7 +128,7 @@
      non-zero if this operand type can not actually be extracted from
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
-  int (*extract) (unsigned instruction, int *invalid);
+  int (*extract) PARAMS ((unsigned instruction, int *invalid));
 };
 
 /* Elements in the table are retrieved by indexing with values from
diff --git a/include/opcode/arc.h b/include/opcode/arc.h
index 629979d..3da68ec 100644
--- a/include/opcode/arc.h
+++ b/include/opcode/arc.h
@@ -1,6 +1,5 @@
 /* Opcode table for the ARC.
-   Copyright 1994, 1995, 1997, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+   Copyright 1994, 1995, 1997, 2001 Free Software Foundation, Inc.
    Contributed by Doug Evans (dje@cygnus.com).
 
    This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
@@ -18,8 +17,7 @@
 
    You should have received a copy of the GNU General Public License
    along with GAS or GDB; see the file COPYING.	If not, write to
-   the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.  */
+   the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 
 /* List of the various cpu types.
@@ -228,9 +226,10 @@
 
    REG is non-NULL when inserting a register value.  */
 
-  arc_insn (*insert)
-    (arc_insn insn, const struct arc_operand *operand, int mods,
-     const struct arc_operand_value *reg, long value, const char **errmsg);
+  arc_insn (*insert) PARAMS ((arc_insn insn,
+			      const struct arc_operand *operand, int mods,
+			      const struct arc_operand_value *reg, long value,
+			      const char **errmsg));
 
 /* Extraction function.  This is used by the disassembler.  To
    extract this operand type from an instruction, check this field.
@@ -256,9 +255,10 @@
    Operands that have a printable form like registers and suffixes have
    their struct arc_operand_value pointer stored in OPVAL.  */
 
-  long (*extract)
-    (arc_insn *insn, const struct arc_operand *operand, int mods,
-     const struct arc_operand_value **opval, int *invalid);
+  long (*extract) PARAMS ((arc_insn *insn,
+			   const struct arc_operand *operand,
+			   int mods, const struct arc_operand_value **opval,
+			   int *invalid));
 };
 
 /* Bits that say what version of cpu we have. These should be passed to
@@ -302,22 +302,22 @@
 extern unsigned char arc_operand_map[];
 
 /* Utility fns in arc-opc.c.  */
-int arc_get_opcode_mach (int, int);
+int arc_get_opcode_mach PARAMS ((int, int));
 
 /* `arc_opcode_init_tables' must be called before `arc_xxx_supported'.  */
-void arc_opcode_init_tables (int);
-void arc_opcode_init_insert (void);
-void arc_opcode_init_extract (void);
-const struct arc_opcode *arc_opcode_lookup_asm (const char *);
-const struct arc_opcode *arc_opcode_lookup_dis (unsigned int);
-int arc_opcode_limm_p (long *);
+void arc_opcode_init_tables PARAMS ((int));
+void arc_opcode_init_insert PARAMS ((void));
+void arc_opcode_init_extract PARAMS ((void));
+const struct arc_opcode *arc_opcode_lookup_asm PARAMS ((const char *));
+const struct arc_opcode *arc_opcode_lookup_dis PARAMS ((unsigned int));
+int arc_opcode_limm_p PARAMS ((long *));
 const struct arc_operand_value *arc_opcode_lookup_suffix
-  (const struct arc_operand *type, int value);
-int arc_opcode_supported (const struct arc_opcode *);
-int arc_opval_supported (const struct arc_operand_value *);
-int arc_limm_fixup_adjust (arc_insn);
-int arc_insn_is_j (arc_insn);
-int arc_insn_not_jl (arc_insn);
-int arc_operand_type (int);
-struct arc_operand_value *get_ext_suffix (char *);
-int arc_get_noshortcut_flag (void);
+  PARAMS ((const struct arc_operand *type, int value));
+int arc_opcode_supported PARAMS ((const struct arc_opcode *));
+int arc_opval_supported PARAMS ((const struct arc_operand_value *));
+int arc_limm_fixup_adjust PARAMS ((arc_insn));
+int arc_insn_is_j PARAMS ((arc_insn));
+int arc_insn_not_jl PARAMS ((arc_insn));
+int arc_operand_type PARAMS ((int));
+struct arc_operand_value *get_ext_suffix PARAMS ((char *));
+int arc_get_noshortcut_flag PARAMS ((void));
diff --git a/include/opcode/cgen.h b/include/opcode/cgen.h
index 16366fd..76a0af4 100644
--- a/include/opcode/cgen.h
+++ b/include/opcode/cgen.h
@@ -242,9 +242,9 @@
 
 typedef struct {
   /* A pointer to the disassemble_info struct.
-     We don't require dis-asm.h so we use void * for the type here.
+     We don't require dis-asm.h so we use PTR for the type here.
      If NULL, BYTES is full of valid data (VALID == -1).  */
-  void *dis_info;
+  PTR dis_info;
   /* Points to a working buffer of sufficient size.  */
   unsigned char *insn_bytes;
   /* Mask of bytes that are valid in INSN_BYTES.  */
@@ -265,8 +265,8 @@
    If not it is left alone.
    The result is NULL if success or an error message.  */
 typedef const char * (cgen_parse_fn)
-  (CGEN_CPU_DESC, const CGEN_INSN *insn_,
-   const char **strp_, CGEN_FIELDS *fields_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *insn_,
+	      const char **strp_, CGEN_FIELDS *fields_));
 
 /* Insert handler.
    CD is a cpu table descriptor.
@@ -279,9 +279,9 @@
 
 #ifdef __BFD_H_SEEN__
 typedef const char * (cgen_insert_fn)
-  (CGEN_CPU_DESC, const CGEN_INSN *insn_,
-   CGEN_FIELDS *fields_, CGEN_INSN_BYTES_PTR insnp_,
-   bfd_vma pc_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *insn_,
+	      CGEN_FIELDS *fields_, CGEN_INSN_BYTES_PTR insnp_,
+	      bfd_vma pc_));
 #else
 typedef const char * (cgen_insert_fn) ();
 #endif
@@ -300,9 +300,9 @@
 
 #ifdef __BFD_H_SEEN__
 typedef int (cgen_extract_fn)
-  (CGEN_CPU_DESC, const CGEN_INSN *insn_,
-   CGEN_EXTRACT_INFO *ex_info_, CGEN_INSN_INT base_insn_,
-   CGEN_FIELDS *fields_, bfd_vma pc_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *insn_,
+	      CGEN_EXTRACT_INFO *ex_info_, CGEN_INSN_INT base_insn_,
+	      CGEN_FIELDS *fields_, bfd_vma pc_));
 #else
 typedef int (cgen_extract_fn) ();
 #endif
@@ -319,8 +319,8 @@
 
 #ifdef __BFD_H_SEEN__
 typedef void (cgen_print_fn)
-  (CGEN_CPU_DESC, void * info_, const CGEN_INSN *insn_,
-   CGEN_FIELDS *fields_, bfd_vma pc_, int len_);
+     PARAMS ((CGEN_CPU_DESC, PTR info_, const CGEN_INSN *insn_,
+	      CGEN_FIELDS *fields_, bfd_vma pc_, int len_));
 #else
 typedef void (cgen_print_fn) ();
 #endif
@@ -384,9 +384,9 @@
 
 #ifdef __BFD_H_SEEN__ /* Don't require bfd.h unnecessarily.  */
 typedef const char * (cgen_parse_operand_fn)
-  (CGEN_CPU_DESC,
-   enum cgen_parse_operand_type, const char **, int, int,
-   enum cgen_parse_operand_result *, bfd_vma *);
+     PARAMS ((CGEN_CPU_DESC,
+	      enum cgen_parse_operand_type, const char **, int, int,
+	      enum cgen_parse_operand_result *, bfd_vma *));
 #else
 typedef const char * (cgen_parse_operand_fn) ();
 #endif
@@ -394,11 +394,11 @@
 /* Set the cgen_parse_operand_fn callback.  */
 
 extern void cgen_set_parse_operand_fn
-  (CGEN_CPU_DESC, cgen_parse_operand_fn);
+     PARAMS ((CGEN_CPU_DESC, cgen_parse_operand_fn));
 
 /* Called before trying to match a table entry with the insn.  */
 
-extern void cgen_init_parse_operand (CGEN_CPU_DESC);
+extern void cgen_init_parse_operand PARAMS ((CGEN_CPU_DESC));
 
 /* Operand values (keywords, integers, symbols, etc.)  */
 
@@ -422,7 +422,7 @@
   /* There is currently no example where both index specs and value specs
      are required, so for now both are clumped under "asm_data".  */
   enum cgen_asm_type asm_type;
-  void *asm_data;
+  PTR asm_data;
 #ifndef CGEN_HW_NBOOL_ATTRS
 #define CGEN_HW_NBOOL_ATTRS 1
 #endif
@@ -453,9 +453,9 @@
 } CGEN_HW_TABLE;
 
 extern const CGEN_HW_ENTRY * cgen_hw_lookup_by_name
-  (CGEN_CPU_DESC, const char *);
+     PARAMS ((CGEN_CPU_DESC, const char *));
 extern const CGEN_HW_ENTRY * cgen_hw_lookup_by_num
-  (CGEN_CPU_DESC, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, unsigned int));
 
 /* This struct is used to describe things like register names, etc.  */
 
@@ -543,41 +543,41 @@
 /* Lookup a keyword from its name.  */
 
 const CGEN_KEYWORD_ENTRY *cgen_keyword_lookup_name
-  (CGEN_KEYWORD *, const char *);
+  PARAMS ((CGEN_KEYWORD *, const char *));
 
 /* Lookup a keyword from its value.  */
 
 const CGEN_KEYWORD_ENTRY *cgen_keyword_lookup_value
-  (CGEN_KEYWORD *, int);
+  PARAMS ((CGEN_KEYWORD *, int));
 
 /* Add a keyword.  */
 
-void cgen_keyword_add (CGEN_KEYWORD *, CGEN_KEYWORD_ENTRY *);
+void cgen_keyword_add PARAMS ((CGEN_KEYWORD *, CGEN_KEYWORD_ENTRY *));
 
 /* Keyword searching.
    This can be used to retrieve every keyword, or a subset.  */
 
 CGEN_KEYWORD_SEARCH cgen_keyword_search_init
-  (CGEN_KEYWORD *, const char *);
+  PARAMS ((CGEN_KEYWORD *, const char *));
 const CGEN_KEYWORD_ENTRY *cgen_keyword_search_next
-  (CGEN_KEYWORD_SEARCH *);
+  PARAMS ((CGEN_KEYWORD_SEARCH *));
 
 /* Operand value support routines.  */
 
 extern const char *cgen_parse_keyword
-  (CGEN_CPU_DESC, const char **, CGEN_KEYWORD *, long *);
+     PARAMS ((CGEN_CPU_DESC, const char **, CGEN_KEYWORD *, long *));
 #ifdef __BFD_H_SEEN__ /* Don't require bfd.h unnecessarily.  */
 extern const char *cgen_parse_signed_integer
-  (CGEN_CPU_DESC, const char **, int, long *);
+     PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
 extern const char *cgen_parse_unsigned_integer
-  (CGEN_CPU_DESC, const char **, int, unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *));
 extern const char *cgen_parse_address
-  (CGEN_CPU_DESC, const char **, int, int,
-   enum cgen_parse_operand_result *, bfd_vma *);
+     PARAMS ((CGEN_CPU_DESC, const char **, int, int,
+	      enum cgen_parse_operand_result *, bfd_vma *));
 extern const char *cgen_validate_signed_integer
-  (long, long, long);
+     PARAMS ((long, long, long));
 extern const char *cgen_validate_unsigned_integer
-  (unsigned long, unsigned long, unsigned long);
+     PARAMS ((unsigned long, unsigned long, unsigned long));
 #endif
 
 /* Operand modes.  */
@@ -621,7 +621,7 @@
 		n: indexed by array of more cgen_maybe_multi_ifields.  */
   union
   {
-    const void *p;
+    const PTR p;
     const struct cgen_maybe_multi_ifield * multi;
     const struct cgen_ifld * leaf;
   } val;
@@ -705,9 +705,9 @@
 } CGEN_OPERAND_TABLE;
 
 extern const CGEN_OPERAND * cgen_operand_lookup_by_name
-  (CGEN_CPU_DESC, const char *);
+     PARAMS ((CGEN_CPU_DESC, const char *));
 extern const CGEN_OPERAND * cgen_operand_lookup_by_num
-  (CGEN_CPU_DESC, int);
+     PARAMS ((CGEN_CPU_DESC, int));
 
 /* Instruction operand instances.
 
@@ -1061,8 +1061,8 @@
 
 /* Return number of instructions.  This includes any added at run-time.  */
 
-extern int cgen_insn_count (CGEN_CPU_DESC);
-extern int cgen_macro_insn_count (CGEN_CPU_DESC);
+extern int cgen_insn_count PARAMS ((CGEN_CPU_DESC));
+extern int cgen_macro_insn_count PARAMS ((CGEN_CPU_DESC));
 
 /* Macros to access the other insn elements not recorded in CGEN_IBASE.  */
 
@@ -1126,10 +1126,9 @@
      If the expansion fails (e.g. "no match") NULL is returned.
      Space for the expansion is obtained with malloc.
      It is up to the caller to free it.  */
-  const char * (* fn)
-     (const struct cgen_minsn_expansion *,
-      const char *, const char **, int *,
-      CGEN_OPERAND **);
+  const char * (* fn) PARAMS ((const struct cgen_minsn_expansion *,
+			       const char *, const char **, int *,
+			       CGEN_OPERAND **));
 #define CGEN_MIEXPN_FN(ex) ((ex)->fn)
 
   /* Instruction(s) the macro expands to.
@@ -1147,15 +1146,15 @@
    may contain further macro invocations.  */
 
 extern const char * cgen_expand_macro_insn
-  (CGEN_CPU_DESC, const struct cgen_minsn_expansion *,
-   const char *, const char **, int *, CGEN_OPERAND **);
+     PARAMS ((CGEN_CPU_DESC, const struct cgen_minsn_expansion *,
+	      const char *, const char **, int *, CGEN_OPERAND **));
 
 /* The assembler insn table is hashed based on some function of the mnemonic
    (the actually hashing done is up to the target, but we provide a few
    examples like the first letter or a function of the entire mnemonic).  */
 
 extern CGEN_INSN_LIST * cgen_asm_lookup_insn
-  (CGEN_CPU_DESC, const char *);
+     PARAMS ((CGEN_CPU_DESC, const char *));
 #define CGEN_ASM_LOOKUP_INSN(cd, string) cgen_asm_lookup_insn ((cd), (string))
 #define CGEN_ASM_NEXT_INSN(insn) ((insn)->next)
 
@@ -1163,7 +1162,7 @@
    instruction (the actually hashing done is up to the target).  */
 
 extern CGEN_INSN_LIST * cgen_dis_lookup_insn
-  (CGEN_CPU_DESC, const char *, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, const char *, CGEN_INSN_INT));
 /* FIXME: delete these two */
 #define CGEN_DIS_LOOKUP_INSN(cd, buf, value) cgen_dis_lookup_insn ((cd), (buf), (value))
 #define CGEN_DIS_NEXT_INSN(insn) ((insn)->next)
@@ -1247,24 +1246,25 @@
   int int_insn_p;
 
   /* Called to rebuild the tables after something has changed.  */
-  void (*rebuild_tables) (CGEN_CPU_DESC);
+  void (*rebuild_tables) PARAMS ((CGEN_CPU_DESC));
 
   /* Operand parser callback.  */
   cgen_parse_operand_fn * parse_operand_fn;
 
   /* Parse/insert/extract/print cover fns for operands.  */
   const char * (*parse_operand)
-    (CGEN_CPU_DESC, int opindex_, const char **, CGEN_FIELDS *fields_);
+     PARAMS ((CGEN_CPU_DESC, int opindex_, const char **,
+	      CGEN_FIELDS *fields_));
 #ifdef __BFD_H_SEEN__
   const char * (*insert_operand)
-    (CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_,
-     CGEN_INSN_BYTES_PTR, bfd_vma pc_);
+     PARAMS ((CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_,
+	      CGEN_INSN_BYTES_PTR, bfd_vma pc_));
   int (*extract_operand)
-    (CGEN_CPU_DESC, int opindex_, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-     CGEN_FIELDS *fields_, bfd_vma pc_);
+     PARAMS ((CGEN_CPU_DESC, int opindex_, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      CGEN_FIELDS *fields_, bfd_vma pc_));
   void (*print_operand)
-    (CGEN_CPU_DESC, int opindex_, void * info_, CGEN_FIELDS * fields_,
-     void const *attrs_, bfd_vma pc_, int length_);
+     PARAMS ((CGEN_CPU_DESC, int opindex_, PTR info_, CGEN_FIELDS * fields_,
+	      void const *attrs_, bfd_vma pc_, int length_));
 #else
   const char * (*insert_operand) ();
   int (*extract_operand) ();
@@ -1280,19 +1280,19 @@
 #define CGEN_CPU_SIZEOF_FIELDS(cd) ((cd)->sizeof_fields)
 
   /* Set the bitsize field.  */
-  void (*set_fields_bitsize) (CGEN_FIELDS *fields_, int size_);
+  void (*set_fields_bitsize) PARAMS ((CGEN_FIELDS *fields_, int size_));
 #define CGEN_CPU_SET_FIELDS_BITSIZE(cd) ((cd)->set_fields_bitsize)
 
   /* CGEN_FIELDS accessors.  */
   int (*get_int_operand)
-    (CGEN_CPU_DESC, int opindex_, const CGEN_FIELDS *fields_);
+       PARAMS ((CGEN_CPU_DESC, int opindex_, const CGEN_FIELDS *fields_));
   void (*set_int_operand)
-    (CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_, int value_);
+       PARAMS ((CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_, int value_));
 #ifdef __BFD_H_SEEN__
   bfd_vma (*get_vma_operand)
-    (CGEN_CPU_DESC, int opindex_, const CGEN_FIELDS *fields_);
+       PARAMS ((CGEN_CPU_DESC, int opindex_, const CGEN_FIELDS *fields_));
   void (*set_vma_operand)
-    (CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_, bfd_vma value_);
+       PARAMS ((CGEN_CPU_DESC, int opindex_, CGEN_FIELDS *fields_, bfd_vma value_));
 #else
   long (*get_vma_operand) ();
   void (*set_vma_operand) ();
@@ -1314,19 +1314,19 @@
 #define CGEN_PRINT_FN(cd, insn)   (cd->print_handlers[(insn)->opcode->handlers.print])
 
   /* Return non-zero if insn should be added to hash table.  */
-  int (* asm_hash_p) (const CGEN_INSN *);
+  int (* asm_hash_p) PARAMS ((const CGEN_INSN *));
 
   /* Assembler hash function.  */
-  unsigned int (* asm_hash) (const char *);
+  unsigned int (* asm_hash) PARAMS ((const char *));
 
   /* Number of entries in assembler hash table.  */
   unsigned int asm_hash_size;
 
   /* Return non-zero if insn should be added to hash table.  */
-  int (* dis_hash_p) (const CGEN_INSN *);
+  int (* dis_hash_p) PARAMS ((const CGEN_INSN *));
 
   /* Disassembler hash function.  */
-  unsigned int (* dis_hash) (const char *, CGEN_INSN_INT);
+  unsigned int (* dis_hash) PARAMS ((const char *, CGEN_INSN_INT));
 
   /* Number of entries in disassembler hash table.  */
   unsigned int dis_hash_size;
@@ -1381,80 +1381,81 @@
 
 /* Cover fn to handle simple case.  */
 
-extern CGEN_CPU_DESC CGEN_SYM (cpu_open_1)
-   (const char *mach_name_, enum cgen_endian endian_);
+extern CGEN_CPU_DESC CGEN_SYM (cpu_open_1) PARAMS ((const char *mach_name_,
+						    enum cgen_endian endian_));
 
 /* Close it.  */
 
-extern void CGEN_SYM (cpu_close) (CGEN_CPU_DESC);
+extern void CGEN_SYM (cpu_close) PARAMS ((CGEN_CPU_DESC));
 
 /* Initialize the opcode table for use.
    Called by init_asm/init_dis.  */
 
-extern void CGEN_SYM (init_opcode_table) (CGEN_CPU_DESC cd_);
+extern void CGEN_SYM (init_opcode_table) PARAMS ((CGEN_CPU_DESC cd_));
 
 /* build the insn selection regex.
    called by init_opcode_table */
 
-extern char * CGEN_SYM(build_insn_regex) (CGEN_INSN *insn_);
+extern char * CGEN_SYM(build_insn_regex) PARAMS ((CGEN_INSN *insn_));
 
 /* Initialize the ibld table for use.
    Called by init_asm/init_dis.  */
 
-extern void CGEN_SYM (init_ibld_table) (CGEN_CPU_DESC cd_);
+extern void CGEN_SYM (init_ibld_table) PARAMS ((CGEN_CPU_DESC cd_));
 
 /* Initialize an cpu table for assembler or disassembler use.
    These must be called immediately after cpu_open.  */
 
-extern void CGEN_SYM (init_asm) (CGEN_CPU_DESC);
-extern void CGEN_SYM (init_dis) (CGEN_CPU_DESC);
+extern void CGEN_SYM (init_asm) PARAMS ((CGEN_CPU_DESC));
+extern void CGEN_SYM (init_dis) PARAMS ((CGEN_CPU_DESC));
 
 /* Initialize the operand instance table for use.  */
 
-extern void CGEN_SYM (init_opinst_table) (CGEN_CPU_DESC cd_);
+extern void CGEN_SYM (init_opinst_table) PARAMS ((CGEN_CPU_DESC cd_));
 
 /* Assemble an instruction.  */
 
 extern const CGEN_INSN * CGEN_SYM (assemble_insn)
-  (CGEN_CPU_DESC, const char *, CGEN_FIELDS *,
-   CGEN_INSN_BYTES_PTR, char **);
+     PARAMS ((CGEN_CPU_DESC, const char *, CGEN_FIELDS *,
+	      CGEN_INSN_BYTES_PTR, char **));
 
 extern const CGEN_KEYWORD CGEN_SYM (operand_mach);
-extern int CGEN_SYM (get_mach) (const char *);
+extern int CGEN_SYM (get_mach) PARAMS ((const char *));
 
 /* Operand index computation.  */
 extern const CGEN_INSN * cgen_lookup_insn
-  (CGEN_CPU_DESC, const CGEN_INSN * insn_,
-   CGEN_INSN_INT int_value_, unsigned char *bytes_value_,
-   int length_, CGEN_FIELDS *fields_, int alias_p_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN * insn_,
+	      CGEN_INSN_INT int_value_, unsigned char *bytes_value_,
+	      int length_, CGEN_FIELDS *fields_, int alias_p_));
 extern void cgen_get_insn_operands
-  (CGEN_CPU_DESC, const CGEN_INSN * insn_,
-   const CGEN_FIELDS *fields_, int *indices_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN * insn_,
+	      const CGEN_FIELDS *fields_, int *indices_));
 extern const CGEN_INSN * cgen_lookup_get_insn_operands
-  (CGEN_CPU_DESC, const CGEN_INSN *insn_,
-   CGEN_INSN_INT int_value_, unsigned char *bytes_value_,
-   int length_, int *indices_, CGEN_FIELDS *fields_);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *insn_,
+	      CGEN_INSN_INT int_value_, unsigned char *bytes_value_,
+	      int length_, int *indices_, CGEN_FIELDS *fields_));
 
 /* Cover fns to bfd_get/set.  */
 
 extern CGEN_INSN_INT cgen_get_insn_value
-  (CGEN_CPU_DESC, unsigned char *, int);
+     PARAMS ((CGEN_CPU_DESC, unsigned char *, int));
 extern void cgen_put_insn_value
-  (CGEN_CPU_DESC, unsigned char *, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, unsigned char *, int, CGEN_INSN_INT));
 
 /* Read in a cpu description file.
    ??? For future concerns, including adding instructions to the assembler/
    disassembler at run-time.  */
 
-extern const char * cgen_read_cpu_file (CGEN_CPU_DESC, const char * filename_);
+extern const char * cgen_read_cpu_file
+     PARAMS ((CGEN_CPU_DESC, const char * filename_));
 
 /* Allow signed overflow of instruction fields.  */
-extern void cgen_set_signed_overflow_ok (CGEN_CPU_DESC);
+extern void cgen_set_signed_overflow_ok PARAMS ((CGEN_CPU_DESC));
 
 /* Generate an error message if a signed field in an instruction overflows.  */
-extern void cgen_clear_signed_overflow_ok (CGEN_CPU_DESC);
+extern void cgen_clear_signed_overflow_ok PARAMS ((CGEN_CPU_DESC));
 
 /* Will an error message be generated if a signed field in an instruction overflows ? */
-extern unsigned int cgen_signed_overflow_ok_p (CGEN_CPU_DESC);
+extern unsigned int cgen_signed_overflow_ok_p PARAMS ((CGEN_CPU_DESC));
 
 #endif /* CGEN_H */
diff --git a/include/opcode/d10v.h b/include/opcode/d10v.h
index 74d9006..cc27850 100644
--- a/include/opcode/d10v.h
+++ b/include/opcode/d10v.h
@@ -1,6 +1,5 @@
 /* d10v.h -- Header file for D10V opcode table
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003
-   Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    Written by Martin Hunt (hunt@cygnus.com), Cygnus Support
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -199,7 +198,7 @@
 };
 
 extern const struct pd_reg d10v_predefined_registers[];
-int d10v_reg_name_cnt (void);
+int d10v_reg_name_cnt PARAMS ((void));
 
 /* an expressionS only has one register type, so we fake it */
 /* by setting high bits to indicate type */
diff --git a/include/opcode/d30v.h b/include/opcode/d30v.h
index 809bdeb..c18874b 100644
--- a/include/opcode/d30v.h
+++ b/include/opcode/d30v.h
@@ -1,5 +1,5 @@
 /* d30v.h -- Header file for D30V opcode table
-   Copyright 1997, 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+   Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    Written by Martin Hunt (hunt@cygnus.com), Cygnus Solutions
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -32,7 +32,7 @@
 };
 
 extern const struct pd_reg pre_defined_registers[];
-int reg_name_cnt (void);
+int reg_name_cnt PARAMS ((void));
 
 /* the number of control registers */
 #define MAX_CONTROL_REG	64
diff --git a/include/opcode/i370.h b/include/opcode/i370.h
index e317f23..155a3cf 100644
--- a/include/opcode/i370.h
+++ b/include/opcode/i370.h
@@ -1,5 +1,5 @@
 /* i370.h -- Header file for S/390 opcode table
-   Copyright 1994, 1995, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+   Copyright 1994, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
    PowerPC version written by Ian Lance Taylor, Cygnus Support
    Rewritten for i370 ESA/390 support, Linas Vepstas <linas@linas.org>
 
@@ -159,8 +159,8 @@
      string (the operand will be inserted in any case).  If the
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
-  i370_insn_t (*insert)
-    (i370_insn_t instruction, long op, const char **errmsg);
+  i370_insn_t (*insert) PARAMS ((i370_insn_t instruction, long op,
+				   const char **errmsg));
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -179,7 +179,7 @@
      non-zero if this operand type can not actually be extracted from
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
-  long (*extract) (i370_insn_t instruction, int *invalid);
+  long (*extract) PARAMS ((i370_insn_t instruction, int *invalid));
 
   /* One bit syntax flags.  */
   unsigned long flags;
diff --git a/include/opcode/i860.h b/include/opcode/i860.h
index b46a5e5..6e2a683 100644
--- a/include/opcode/i860.h
+++ b/include/opcode/i860.h
@@ -494,9 +494,9 @@
 /* Floating point pseudo-instructions.  */
 { "fmov.ss",	0x48000049, 0xb7e005b6, "e,g", 0 },	/* fiadd.ss fsrc1,f0,fdest */
 { "fmov.dd",	0x480001c9, 0xb7e00436, "e,g", 0 },	/* fiadd.dd fsrc1,f0,fdest */
-{ "fmov.sd",	0x480000b3, 0xb400054c, "e,g", 0 },	/* famov.sd fsrc1,fdest */
-{ "fmov.ds",	0x48000133, 0xb40004cc, "e,g", 0 },	/* famov.ds fsrc1,fdest */
-{ "pfmov.ds",	0x48000533, 0xb40000cc, "e,g", 0 },	/* pfamov.ds fsrc1,fdest */
+{ "fmov.sd",	0x480000b0, 0xb7e0054f, "e,g", 0 },	/* fadd.sd fsrc1,f0,fdest */
+{ "fmov.ds",	0x48000130, 0xb7e004cf, "e,g", 0 },	/* fadd.ds fsrc1,f0,fdest */
+{ "pfmov.ds",	0x48000530, 0xb73000cf, "e,g", 0 },	/* pfadd.ds fsrc1,f0,fdest */
 { "pfmov.dd",	0x480005c9, 0xb7e00036, "e,g", 0 },	/* pfiadd.dd fsrc1,f0,fdest */
 { 0, 0, 0, 0, 0 },
 
diff --git a/include/opcode/or32.h b/include/opcode/or32.h
index d72b9bd..4609a48 100644
--- a/include/opcode/or32.h
+++ b/include/opcode/or32.h
@@ -1,5 +1,5 @@
 /* Table of opcodes for the OpenRISC 1000 ISA.
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2002 Free Software Foundation, Inc.
    Contributed by Damjan Lampret (lampret@opencores.org).
    
    This file is part of or1k_gen_isa, or1ksim, GDB and GAS.
@@ -27,6 +27,10 @@
 #define NUM_UNSIGNED (0)
 #define NUM_SIGNED (1)
 
+#ifndef PARAMS
+#define PARAMS(x) x
+#endif
+
 #define MAX_GPRS 32
 #define PAGE_SIZE 4096
 #undef __HALF_WORD_INSN__
@@ -67,7 +71,7 @@
   
   /* Opcode and operand encoding.  */
   char *encoding;
-  void (*exec) (void);
+  void (*exec) PARAMS ((void));
   unsigned int flags;
 };
 
@@ -89,59 +93,59 @@
 } **op_start;
 
 #ifdef HAS_EXECUTION
-extern void l_invalid (void);
-extern void l_sfne    (void);
-extern void l_bf      (void);
-extern void l_add     (void);
-extern void l_sw      (void);
-extern void l_sb      (void);
-extern void l_sh      (void);
-extern void l_lwz     (void);
-extern void l_lbs     (void);
-extern void l_lbz     (void);
-extern void l_lhs     (void);
-extern void l_lhz     (void);
-extern void l_movhi   (void);
-extern void l_and     (void);
-extern void l_or      (void);
-extern void l_xor     (void);
-extern void l_sub     (void);
-extern void l_mul     (void);
-extern void l_div     (void);
-extern void l_divu    (void);
-extern void l_sll     (void);
-extern void l_sra     (void);
-extern void l_srl     (void);
-extern void l_j       (void);
-extern void l_jal     (void);
-extern void l_jalr    (void);
-extern void l_jr      (void);
-extern void l_rfe     (void);
-extern void l_nop     (void);
-extern void l_bnf     (void);
-extern void l_sfeq    (void);
-extern void l_sfgts   (void);
-extern void l_sfges   (void);
-extern void l_sflts   (void);
-extern void l_sfles   (void);
-extern void l_sfgtu   (void);
-extern void l_sfgeu   (void);
-extern void l_sfltu   (void);
-extern void l_sfleu   (void);
-extern void l_mtspr   (void);
-extern void l_mfspr   (void);
-extern void l_sys     (void);
-extern void l_trap    (void); /* CZ 21/06/01.  */
-extern void l_macrc   (void);
-extern void l_mac     (void);
-extern void l_msb     (void);
-extern void l_invalid (void);
-extern void l_cust1   (void);
-extern void l_cust2   (void);
-extern void l_cust3   (void);
-extern void l_cust4   (void);
+extern void l_invalid PARAMS ((void));
+extern void l_sfne    PARAMS ((void));
+extern void l_bf      PARAMS ((void));
+extern void l_add     PARAMS ((void));
+extern void l_sw      PARAMS ((void));
+extern void l_sb      PARAMS ((void));
+extern void l_sh      PARAMS ((void));
+extern void l_lwz     PARAMS ((void));
+extern void l_lbs     PARAMS ((void));
+extern void l_lbz     PARAMS ((void));
+extern void l_lhs     PARAMS ((void));
+extern void l_lhz     PARAMS ((void));
+extern void l_movhi   PARAMS ((void));
+extern void l_and     PARAMS ((void));
+extern void l_or      PARAMS ((void));
+extern void l_xor     PARAMS ((void));
+extern void l_sub     PARAMS ((void));
+extern void l_mul     PARAMS ((void));
+extern void l_div     PARAMS ((void));
+extern void l_divu    PARAMS ((void));
+extern void l_sll     PARAMS ((void));
+extern void l_sra     PARAMS ((void));
+extern void l_srl     PARAMS ((void));
+extern void l_j       PARAMS ((void));
+extern void l_jal     PARAMS ((void));
+extern void l_jalr    PARAMS ((void));
+extern void l_jr      PARAMS ((void));
+extern void l_rfe     PARAMS ((void));
+extern void l_nop     PARAMS ((void));
+extern void l_bnf     PARAMS ((void));
+extern void l_sfeq    PARAMS ((void));
+extern void l_sfgts   PARAMS ((void));
+extern void l_sfges   PARAMS ((void));
+extern void l_sflts   PARAMS ((void));
+extern void l_sfles   PARAMS ((void));
+extern void l_sfgtu   PARAMS ((void));
+extern void l_sfgeu   PARAMS ((void));
+extern void l_sfltu   PARAMS ((void));
+extern void l_sfleu   PARAMS ((void));
+extern void l_mtspr   PARAMS ((void));
+extern void l_mfspr   PARAMS ((void));
+extern void l_sys     PARAMS ((void));
+extern void l_trap    PARAMS ((void)); /* CZ 21/06/01.  */
+extern void l_macrc   PARAMS ((void));
+extern void l_mac     PARAMS ((void));
+extern void l_msb     PARAMS ((void));
+extern void l_invalid PARAMS ((void));
+extern void l_cust1   PARAMS ((void));
+extern void l_cust2   PARAMS ((void));
+extern void l_cust3   PARAMS ((void));
+extern void l_cust4   PARAMS ((void));
 #endif
-extern void l_none    (void);
+extern void l_none    PARAMS ((void));
 
 extern const struct or32_letter or32_letters[];
 
@@ -150,31 +154,31 @@
 extern const unsigned int or32_num_opcodes;
 
 /* Calculates instruction length in bytes.  Always 4 for OR32.  */
-extern int insn_len (int);
+extern int insn_len PARAMS ((int));
 
 /* Is individual insn's operand signed or unsigned?  */
-extern int letter_signed (char);
+extern int letter_signed PARAMS ((char));
 
 /* Number of letters in the individual lettered operand.  */
-extern int letter_range (char);
+extern int letter_range PARAMS ((char));
 
 /* MM: Returns index of given instruction name.  */
-extern int insn_index (char *);
+extern int insn_index PARAMS ((char *));
 
 /* MM: Returns instruction name from index.  */
-extern const char *insn_name (int);
+extern const char *insn_name PARAMS ((int));
 
 /* MM: Constructs new FSM, based on or32_opcodes.  */ 
-extern void build_automata (void);
+extern void build_automata PARAMS ((void));
 
 /* MM: Destructs FSM.  */ 
-extern void destruct_automata (void);
+extern void destruct_automata PARAMS ((void));
 
 /* MM: Decodes instruction using FSM.  Call build_automata first.  */
-extern int insn_decode (unsigned int);
+extern int insn_decode PARAMS ((unsigned int));
 
 /* Disassemble one instruction from insn to disassemble.
    Return the size of the instruction.  */
-int disassemble_insn (unsigned long);
+int disassemble_insn PARAMS ((unsigned long));
 
 #endif
diff --git a/include/opcode/pj.h b/include/opcode/pj.h
index f9e44db..5779507 100644
--- a/include/opcode/pj.h
+++ b/include/opcode/pj.h
@@ -1,5 +1,5 @@
 /* Definitions for decoding the picoJava opcode table.
-   Copyright 1999, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 1999 Free Software Foundation, Inc.
    Contributed by Steve Chamberlain of Transmeta (sac@pobox.com).
 
 This program is free software; you can redistribute it and/or modify
@@ -44,6 +44,6 @@
   unsigned char arg[2];
   union {
     const char *name;
-    void (*func) (struct pj_opc_info_t *, char *);
+    void (*func) PARAMS ((struct pj_opc_info_t *, char *));
   } u;
 } pj_opc_info_t;
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 342237e..c4adf71 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -59,80 +59,77 @@
 /* Values defined for the flags field of a struct powerpc_opcode.  */
 
 /* Opcode is defined for the PowerPC architecture.  */
-#define PPC_OPCODE_PPC			 1
+#define PPC_OPCODE_PPC (01)
 
 /* Opcode is defined for the POWER (RS/6000) architecture.  */
-#define PPC_OPCODE_POWER		 2
+#define PPC_OPCODE_POWER (02)
 
 /* Opcode is defined for the POWER2 (Rios 2) architecture.  */
-#define PPC_OPCODE_POWER2		 4
+#define PPC_OPCODE_POWER2 (04)
 
 /* Opcode is only defined on 32 bit architectures.  */
-#define PPC_OPCODE_32			 8
+#define PPC_OPCODE_32 (010)
 
 /* Opcode is only defined on 64 bit architectures.  */
-#define PPC_OPCODE_64		      0x10
+#define PPC_OPCODE_64 (020)
 
 /* Opcode is supported by the Motorola PowerPC 601 processor.  The 601
    is assumed to support all PowerPC (PPC_OPCODE_PPC) instructions,
    but it also supports many additional POWER instructions.  */
-#define PPC_OPCODE_601		      0x20
+#define PPC_OPCODE_601 (040)
 
 /* Opcode is supported in both the Power and PowerPC architectures
    (ie, compiler's -mcpu=common or assembler's -mcom).  */
-#define PPC_OPCODE_COMMON	      0x40
+#define PPC_OPCODE_COMMON (0100)
 
 /* Opcode is supported for any Power or PowerPC platform (this is
    for the assembler's -many option, and it eliminates duplicates).  */
-#define PPC_OPCODE_ANY		      0x80
+#define PPC_OPCODE_ANY (0200)
 
 /* Opcode is supported as part of the 64-bit bridge.  */
-#define PPC_OPCODE_64_BRIDGE	     0x100
+#define PPC_OPCODE_64_BRIDGE (0400)
 
 /* Opcode is supported by Altivec Vector Unit */
-#define PPC_OPCODE_ALTIVEC	     0x200
+#define PPC_OPCODE_ALTIVEC (01000)
 
 /* Opcode is supported by PowerPC 403 processor.  */
-#define PPC_OPCODE_403		     0x400
+#define PPC_OPCODE_403 (02000)
 
 /* Opcode is supported by PowerPC BookE processor.  */
-#define PPC_OPCODE_BOOKE	     0x800
+#define PPC_OPCODE_BOOKE (04000)
 
 /* Opcode is only supported by 64-bit PowerPC BookE processor.  */
-#define PPC_OPCODE_BOOKE64	    0x1000
-
-/* Opcode is supported by PowerPC 440 processor.  */
-#define PPC_OPCODE_440		    0x2000
+#define PPC_OPCODE_BOOKE64 (010000)
 
 /* Opcode is only supported by Power4 architecture.  */
-#define PPC_OPCODE_POWER4	    0x4000
+#define PPC_OPCODE_POWER4 (020000)
 
 /* Opcode isn't supported by Power4 architecture.  */
-#define PPC_OPCODE_NOPOWER4	    0x8000
+#define PPC_OPCODE_NOPOWER4 (040000)
 
 /* Opcode is only supported by POWERPC Classic architecture.  */
-#define PPC_OPCODE_CLASSIC	   0x10000
+#define PPC_OPCODE_CLASSIC (0100000)
 
 /* Opcode is only supported by e500x2 Core.  */
-#define PPC_OPCODE_SPE		   0x20000
+#define PPC_OPCODE_SPE     (0200000)
 
 /* Opcode is supported by e500x2 Integer select APU.  */
-#define PPC_OPCODE_ISEL		   0x40000
+#define PPC_OPCODE_ISEL     (0400000)
 
 /* Opcode is an e500 SPE floating point instruction.  */
-#define PPC_OPCODE_EFS		   0x80000
+#define PPC_OPCODE_EFS      (01000000)
 
 /* Opcode is supported by branch locking APU.  */
-#define PPC_OPCODE_BRLOCK	  0x100000
+#define PPC_OPCODE_BRLOCK   (02000000)
 
 /* Opcode is supported by performance monitor APU.  */
-#define PPC_OPCODE_PMR		  0x200000
+#define PPC_OPCODE_PMR      (04000000)
 
 /* Opcode is supported by cache locking APU.  */
-#define PPC_OPCODE_CACHELCK	  0x400000
+#define PPC_OPCODE_CACHELCK (010000000)
 
 /* Opcode is supported by machine check APU.  */
-#define PPC_OPCODE_RFMCI	  0x800000
+#define PPC_OPCODE_RFMCI    (020000000)
 
 /* A macro to extract the major opcode from an instruction.  */
 #define PPC_OP(i) (((i) >> 26) & 0x3f)
@@ -163,8 +160,9 @@
      string (the operand will be inserted in any case).  If the
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
-  unsigned long (*insert)
-    (unsigned long instruction, long op, int dialect, const char **errmsg);
+  unsigned long (*insert) PARAMS ((unsigned long instruction, long op,
+				   int dialect,
+				   const char **errmsg));
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -183,7 +181,8 @@
      non-zero if this operand type can not actually be extracted from
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
-  long (*extract) (unsigned long instruction, int dialect, int *invalid);
+  long (*extract) PARAMS ((unsigned long instruction, int dialect,
+			   int *invalid));
 
   /* One bit syntax flags.  */
   unsigned long flags;
diff --git a/include/opcode/sparc.h b/include/opcode/sparc.h
index c336493..c412923 100644
--- a/include/opcode/sparc.h
+++ b/include/opcode/sparc.h
@@ -1,6 +1,6 @@
 /* Definitions for opcode table for the sparc.
-   Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2002,
-   2003 Free Software Foundation, Inc.
+   Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2002
+   Free Software Foundation, Inc.
 
 This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
 the GNU Binutils.
@@ -74,7 +74,8 @@
 extern const struct sparc_opcode_arch sparc_opcode_archs[];
 
 /* Given architecture name, look up it's sparc_opcode_arch_val value.  */
-extern enum sparc_opcode_arch_val sparc_opcode_lookup_arch (const char *);
+extern enum sparc_opcode_arch_val sparc_opcode_lookup_arch
+  PARAMS ((const char *));
 
 /* Return the bitmask of supported architectures for ARCH.  */
 #define SPARC_OPCODE_SUPPORTED(ARCH) (sparc_opcode_archs[ARCH].supported)
@@ -222,14 +223,14 @@
 extern const struct sparc_opcode sparc_opcodes[];
 extern const int sparc_num_opcodes;
 
-extern int sparc_encode_asi (const char *);
-extern const char *sparc_decode_asi (int);
-extern int sparc_encode_membar (const char *);
-extern const char *sparc_decode_membar (int);
-extern int sparc_encode_prefetch (const char *);
-extern const char *sparc_decode_prefetch (int);
-extern int sparc_encode_sparclet_cpreg (const char *);
-extern const char *sparc_decode_sparclet_cpreg (int);
+extern int sparc_encode_asi PARAMS ((const char *));
+extern const char *sparc_decode_asi PARAMS ((int));
+extern int sparc_encode_membar PARAMS ((const char *));
+extern const char *sparc_decode_membar PARAMS ((int));
+extern int sparc_encode_prefetch PARAMS ((const char *));
+extern const char *sparc_decode_prefetch PARAMS ((int));
+extern int sparc_encode_sparclet_cpreg PARAMS ((const char *));
+extern const char *sparc_decode_sparclet_cpreg PARAMS ((int));
 
 /*
  * Local Variables:
diff --git a/include/opcode/tic80.h b/include/opcode/tic80.h
index c6a79df..01159e4 100644
--- a/include/opcode/tic80.h
+++ b/include/opcode/tic80.h
@@ -1,5 +1,5 @@
 /* tic80.h -- Header file for TI TMS320C80 (MV) opcode table
-   Copyright 1996, 1997, 2003 Free Software Foundation, Inc.
+   Copyright 1996, 1997 Free Software Foundation, Inc.
    Written by Fred Fish (fnf@cygnus.com), Cygnus Support
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -90,8 +90,8 @@
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
 
-  unsigned long (*insert)
-    (unsigned long instruction, long op, const char **errmsg);
+  unsigned long (*insert) PARAMS ((unsigned long instruction, long op,
+				   const char **errmsg));
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -111,7 +111,7 @@
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
 
-  long (*extract) (unsigned long instruction, int *invalid);
+  long (*extract) PARAMS ((unsigned long instruction, int *invalid));
 
   /* One bit syntax flags.  */
 
@@ -265,18 +265,13 @@
 #define PDS_NAME(pdsp) ((pdsp) -> name)
 #define PDS_VALUE(pdsp) ((pdsp) -> value)
 
-/* Translation array.  */
-extern const struct predefined_symbol tic80_predefined_symbols[];
-/* How many members in the array.  */
-extern const int tic80_num_predefined_symbols;
+extern const struct predefined_symbol tic80_predefined_symbols[];	/* Translation array */
+extern const int tic80_num_predefined_symbols;				/* How many members in the array */
 
-/* Translate value to symbolic name.  */
-const char *tic80_value_to_symbol (int val, int class);
+const char *tic80_value_to_symbol PARAMS ((int val, int class));	/* Translate value to symbolic name */
+int tic80_symbol_to_value PARAMS ((char *name, int class));		/* Translate symbolic name to value */
 
-/* Translate symbolic name to value.  */
-int tic80_symbol_to_value (char *name, int class);
-
-const struct predefined_symbol *tic80_next_predefined_symbol
-  (const struct predefined_symbol *);
+const struct predefined_symbol *
+tic80_next_predefined_symbol PARAMS ((const struct predefined_symbol *));
 
 #endif /* TIC80_H */
diff --git a/include/opcode/v850.h b/include/opcode/v850.h
index f6a1eb4..2183bc8 100644
--- a/include/opcode/v850.h
+++ b/include/opcode/v850.h
@@ -1,5 +1,5 @@
 /* v850.h -- Header file for NEC V850 opcode table
-   Copyright 1996, 1997, 2001, 2003 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 2001 Free Software Foundation, Inc.
    Written by J.T. Conklin, Cygnus Support
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -95,8 +95,8 @@
      string (the operand will be inserted in any case).  If the
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
-  unsigned long (* insert)
-    (unsigned long instruction, long op, const char ** errmsg);
+  unsigned long (* insert) PARAMS ((unsigned long instruction, long op,
+				   const char ** errmsg));
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -114,7 +114,7 @@
      non-zero if this operand type can not actually be extracted from
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
-  unsigned long (* extract) (unsigned long instruction, int * invalid);
+  unsigned long (* extract) PARAMS ((unsigned long instruction, int * invalid));
 
   /* One bit syntax flags.  */
   int flags;
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 031b7f1..f26593f 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,7 +1,3 @@
-2003-08-12  Nathanael Nerode  <neroden@gcc.gnu.org>
-
-        * cp-demangle.c: Clarify what package(s) this is part of.
-
 2003-07-05  Danny Smith  <dannysmith@users.sourceforge.net>
 
 	* pex-win32.c (pexecute): Mark parameters this_pname and
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index bd48822..5dcce55 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -2,9 +2,9 @@
    Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
    Written by Alex Samuel <samuel@codesourcery.com>. 
 
-   This file is part of the libiberty library, which is part of GCC.
+   This file is part of GNU CC.
 
-   This file is free software; you can redistribute it and/or modify
+   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.
diff --git a/mmalloc/ChangeLog b/mmalloc/ChangeLog
index a1e3ad0..a46ca36 100644
--- a/mmalloc/ChangeLog
+++ b/mmalloc/ChangeLog
@@ -1,8 +1,3 @@
-2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (install-info): Create dest dir. Support DESTDIR.
-	(install): Likewise.
-
 2002-11-28  Elena Zannoni  <ezannoni@redhat.com>
 
 	* Makefile.in (install): Move install-info to here...
diff --git a/mmalloc/Makefile.in b/mmalloc/Makefile.in
index b05aea7..06fbd9c 100644
--- a/mmalloc/Makefile.in
+++ b/mmalloc/Makefile.in
@@ -113,7 +113,6 @@
 	rm -f mmalloc.?? mmalloc.??s mmalloc.log mmalloc.aux mmalloc.toc
 
 install-info: info
-	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(infodir)
 	@list='$(INFO_DEPS)'; \
 	for file in $$list; do \
 	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
@@ -157,10 +156,9 @@
 #	./a.out
 
 install:	all install-info
-		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir)
-		$(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(TARGETLIB)n
-		$(RANLIB) $(DESTDIR)$(libdir)/$(TARGETLIB)n
-		mv -f $(DESTDIR)$(libdir)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(TARGETLIB)
+		$(INSTALL_DATA) $(TARGETLIB) $(libdir)/$(TARGETLIB)n
+		$(RANLIB) $(libdir)/$(TARGETLIB)n
+		mv -f $(libdir)/$(TARGETLIB)n $(libdir)/$(TARGETLIB)
 
 uninstall:	uninstall-info
 
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 077c4ed..7c8edbd 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,143 +1,3 @@
-2003-08-19  Nick Clifton  <nickc@redhat.com>
-
-	* arm-dis.c (print_insn_arm: case 'A'): Add code to
-	disassemble unindexed form of Addressing Mode 5.
-
-2003-08-19  Alan Modra  <amodra@bigpond.net.au>
-
-	* ppc-opc.c (PPC440): Define.
-	(powerpc_opcodes): Allow mac*, mul*, nmac*, dccci, dcread, iccci,
-	icread instructions when PPC440.  Add dlmzb instruction.
-
-2003-08-14  Alan Modra  <amodra@bigpond.net.au>
-
-	* dep-in.sed: Remove libintl.h.
-	* Makefile.am (POTFILES.in): Unset LC_COLLATE.
-	Run "make dep-am".
-	* Makefile.in: Regenerate.
-
-2003-08-07  Michael Meissner  <gnu@the-meissners.org>
-
-	* cgen-asm.c (hash_insn_array): Remove PARAMS macro.
-	(hash_insn_list): Ditto.
-	(build_asm_hash_table): Ditto.
-	(cgen_set_parse_operand_fn): Prototype definition.
-	(cgen_init_parse_operand): Ditto.
-	(hash_insn_array): Ditto.
-	(hash_insn_list): Ditto.
-	(build_asm_hash_table): Ditto.
-	(cgen_asm_lookup_insn): Ditto.
-	(cgen_parse_keyword): Ditto.
-	(cgen_parse_signed_integer): Ditto.
-	(cgen_parse_unsigned_integer): Ditto.
-	(cgen_parse_address): Ditto.
-	(cgen_validate_signed_integer): Ditto.
-	(cgen_validate_unsigned_integer): Ditto.
-
-	* cgen-opc.c (hash_keyword_name): Remove PARAMS macro.
-	(hash_keyword_value): Ditto.
-	(build_keyword_hash_tables): Ditto.
-	(cgen_keyword_lookup_name): Prototype definition.
-	(cgen_keyword_lookup_value): Ditto.
-	(cgen_keyword_add): Ditto.
-	(cgen_keyword_search_init): Ditto.
-	(cgen_keyword_search_next): Ditto.
-	(hash_keyword_name): Ditto.
-	(hash_keyword_value): Ditto.
-	(build_keyword_hash_tables): Ditto.
-	(cgen_hw_lookup_by_name): Ditto.
-	(cgen_hw_lookup_by_num): Ditto.
-	(cgen_operand_lookup_by_name): Ditto.
-	(cgen_operand_lookup_by_num): Ditto.
-	(cgen_insn_count): Ditto.
-	(cgen_macro_insn_count): Ditto.
-	(cgen_get_insn_value): Ditto.
-	(cgen_put_insn_value): Ditto.
-	(cgen_lookup_insn): Ditto.
-	(cgen_get_insn_operands): Ditto.
-	(cgen_lookup_get_insn_operands): Ditto.
-	(cgen_set_signed_overflow_ok): Ditto.
-	(cgen_clear_signed_overflow_ok): Ditto.
-	(cgen_signed_overflow_ok_p): Ditto.
-
-	* cgen-dis.c (hash_insn_array): Remove PARAMS macro.
-	(hash_insn_list): Ditto.
-	(build_dis_hash_table): Ditto.
-	(count_decodable_bits): Ditto.
-	(add_insn_to_hash_chain): Ditto.
-	(count_decodable_bits): Prototype definition.
-	(add_insn_to_hash_chain): Ditto.
-	(hash_insn_array): Ditto.
-	(hash_insn_list): Ditto.
-	(build_dis_hash_table): Ditto.
-	(cgen_dis_lookup_insn): Ditto.
-
-	* cgen-asm.in (parse_insn_normal): Remove PARAMS macro.
-	(@arch@_cgen_build_insn_regex): Prototype definition.
-	(parse_insn_normal): Ditto.
-	(@arch@_cgen_assemble_insn): Ditto.
-	(@arch@_cgen_asm_hash_keywords): Ditto.
-
-	* cgen-dis.in (print_normal): Remove PARAMS macro.  Use void *
-	instead of PTR.
-	(print_address): Ditto.
-	(print_keyword): Ditto.
-	(print_insn_normal): Ditto.
-	(print_insn): Ditto.
-	(default_print_insn): Ditto.
-	(read_insn): Ditto.
-	(print_normal): Prototype definition.  Use void * instead of PTR.
-	(print_address): Ditto.
-	(print_keyword): Ditto.
-	(print_insn_normal): Ditto.
-	(read_insn): Ditto.
-	(print_insn): Ditto.
-	(default_print_insn): Ditto.
-	(print_insn_@arch@): Ditto.
-
-	* cgen-ibld.in (insert_normal): Remove PARAMS macro.
-	(insn_insn_normal): Ditto.
-	(extract_normal): Ditto.
-	(extract_insn_normal): Ditto.
-	(put_insn_int_value): Ditto.
-	(insert_1): Ditto.
-	(fill_cache): Ditto.
-	(extract_1): Ditto.
-	(insert_1): Prototype definition.
-	(insert_normal): Ditto.
-	(insert_insn_normal): Ditto.
-	(put_insn_int_value): Ditto.
-	(fill_cache): Ditto.
-	(extract_1): Ditto.
-	(extract_normal): Ditto.
-	(extract_insn_normal): Ditto.
-
-	* fr30-asm.c: Regenerate.
-	* fr30-dis.c: Ditto.
-	* fr30-ibld.c: Ditto.
-	* frv-asm.c: Ditto.
-	* frv-dis.c: Ditto.
-	* frv-ibld.c: Ditto.
-	* ip2k-asm.c: Ditto.
-	* ip2k-dis.c: Ditto.
-	* ip2k-ibld.c: Ditto.
-	* iq2000-asm.c: Ditto.
-	* iq2000-dis.c: Ditto.
-	* iq2000-ibld.c: Ditto.
-	* m32r-asm.c: Ditto.
-	* m32r-dis.c: Ditto.
-	* m32r-ibld.c: Ditto.
-	* openrisc-asm.c: Ditto.
-	* openrisc-dis.c: Ditto.
-	* openrisc-ibld.c: Ditto.
-	* xstormy16-asm.c: Ditto.
-	* xstormy16-dis.c: Ditto.
-	* xstormy16-ibld.c: Ditto.
-
-2003-08-06  Nick Clifton  <nickc@redhat.com>
-
-	* po/fr.po: Updated French translation.
-
 2003-08-05  Nick Clifton  <nickc@redhat.com>
 
 	* configure.in (ALL_LINGUAS): Add nl.
diff --git a/opcodes/Makefile.am b/opcodes/Makefile.am
index ae03afc..7097be0 100644
--- a/opcodes/Makefile.am
+++ b/opcodes/Makefile.am
@@ -306,7 +306,7 @@
 
 POTFILES = $(HFILES) $(CFILES)
 po/POTFILES.in: @MAINT@ Makefile
-	for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
+	for file in $(POTFILES); do echo $$file; done | sort > tmp \
 	  && mv tmp $(srcdir)/po/POTFILES.in
 
 # We should reconfigure whenever bfd/configure.in changes, because
@@ -515,9 +515,9 @@
 arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h arm-opc.h \
   $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
-  opintl.h $(INCDIR)/safe-ctype.h $(BFDDIR)/elf-bfd.h \
-  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
-  $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h
+  opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/arm.h \
+  $(INCDIR)/elf/reloc-macros.h
 avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \
   $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h
@@ -624,7 +624,7 @@
   $(INCDIR)/safe-ctype.h sysdep.h config.h $(INCDIR)/getopt.h \
   ia64-opc.h $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
   ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
-  ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
+  ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c ../intl/libintl.h
 ia64-asmtab.lo: ia64-asmtab.c
 ip2k-asm.lo: ip2k-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(BFD_H) $(INCDIR)/symcat.h ip2k-desc.h $(INCDIR)/opcode/cgen.h \
diff --git a/opcodes/Makefile.in b/opcodes/Makefile.in
index 065293e..a9875a1 100644
--- a/opcodes/Makefile.in
+++ b/opcodes/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
 # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
@@ -467,7 +467,7 @@
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = libopcodes.a.c $(libopcodes_la_SOURCES)
 OBJECTS = libopcodes.a.$(OBJEXT) $(libopcodes_la_OBJECTS)
@@ -840,7 +840,7 @@
 
 libopcodes.a: stamp-lib ; @true
 po/POTFILES.in: @MAINT@ Makefile
-	for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
+	for file in $(POTFILES); do echo $$file; done | sort > tmp \
 	  && mv tmp $(srcdir)/po/POTFILES.in
 
 # We should reconfigure whenever bfd/configure.in changes, because
@@ -1011,9 +1011,9 @@
 arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h arm-opc.h \
   $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
-  opintl.h $(INCDIR)/safe-ctype.h $(BFDDIR)/elf-bfd.h \
-  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
-  $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h
+  opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/arm.h \
+  $(INCDIR)/elf/reloc-macros.h
 avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \
   $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h
@@ -1120,7 +1120,7 @@
   $(INCDIR)/safe-ctype.h sysdep.h config.h $(INCDIR)/getopt.h \
   ia64-opc.h $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
   ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
-  ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
+  ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c ../intl/libintl.h
 ia64-asmtab.lo: ia64-asmtab.c
 ip2k-asm.lo: ip2k-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
   $(BFD_H) $(INCDIR)/symcat.h ip2k-desc.h $(INCDIR)/opcode/cgen.h \
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index ac36e88..97ec842 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -445,11 +445,9 @@
 
 		    case 'A':
 		      func (stream, "[%s", arm_regnames [(given >> 16) & 0xf]);
-
-		      if ((given & (1 << 24)) != 0)
+		      if ((given & 0x01000000) != 0)
 			{
 			  int offset = given & 0xff;
-
 			  if (offset)
 			    func (stream, ", %s#%d]%s",
 				  ((given & 0x00800000) == 0 ? "-" : ""),
@@ -461,18 +459,12 @@
 		      else
 			{
 			  int offset = given & 0xff;
-
-			  func (stream, "]");
-
-			  if (given & (1 << 21))
-			    {
-			      if (offset)
-				func (stream, ", %s#%d",
-				      ((given & 0x00800000) == 0 ? "-" : ""),
-				      offset * 4);
-			    }
+			  if (offset)
+			    func (stream, "], %s#%d",
+				  ((given & 0x00800000) == 0 ? "-" : ""),
+				  offset * 4);
 			  else
-			    func (stream, ", {%d}", offset);
+			    func (stream, "]");
 			}
 		      break;
 
diff --git a/opcodes/cgen-asm.c b/opcodes/cgen-asm.c
index 7231e2d..c71c70de 100644
--- a/opcodes/cgen-asm.c
+++ b/opcodes/cgen-asm.c
@@ -28,14 +28,16 @@
 #include "opcode/cgen.h"
 #include "opintl.h"
 
-static CGEN_INSN_LIST *  hash_insn_array      (CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
-static CGEN_INSN_LIST *  hash_insn_list       (CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
-static void              build_asm_hash_table (CGEN_CPU_DESC);
+static CGEN_INSN_LIST *  hash_insn_array      PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
+static CGEN_INSN_LIST *  hash_insn_list       PARAMS ((CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
+static void              build_asm_hash_table PARAMS ((CGEN_CPU_DESC));
 
 /* Set the cgen_parse_operand_fn callback.  */
 
 void
-cgen_set_parse_operand_fn (CGEN_CPU_DESC cd, cgen_parse_operand_fn fn)
+cgen_set_parse_operand_fn (cd, fn)
+     CGEN_CPU_DESC cd;
+     cgen_parse_operand_fn fn;
 {
   cd->parse_operand_fn = fn;
 }
@@ -43,7 +45,8 @@
 /* Called whenever starting to parse an insn.  */
 
 void
-cgen_init_parse_operand (CGEN_CPU_DESC cd)
+cgen_init_parse_operand (cd)
+     CGEN_CPU_DESC cd;
 {
   /* This tells the callback to re-initialize.  */
   (void) (* cd->parse_operand_fn)
@@ -63,12 +66,13 @@
    list and we want earlier ones to be prefered.  */
 
 static CGEN_INSN_LIST *
-hash_insn_array (CGEN_CPU_DESC cd,
-		 const CGEN_INSN *insns,
-		 int count,
-		 int entsize ATTRIBUTE_UNUSED,
-		 CGEN_INSN_LIST **htable,
-		 CGEN_INSN_LIST *hentbuf)
+hash_insn_array (cd, insns, count, entsize, htable, hentbuf)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insns;
+     int count;
+     int entsize ATTRIBUTE_UNUSED;
+     CGEN_INSN_LIST **htable;
+     CGEN_INSN_LIST *hentbuf;
 {
   int i;
 
@@ -93,10 +97,11 @@
    in a list.  */
 
 static CGEN_INSN_LIST *
-hash_insn_list (CGEN_CPU_DESC cd,
-		const CGEN_INSN_LIST *insns,
-		CGEN_INSN_LIST **htable,
-		CGEN_INSN_LIST *hentbuf)
+hash_insn_list (cd, insns, htable, hentbuf)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN_LIST *insns;
+     CGEN_INSN_LIST **htable;
+     CGEN_INSN_LIST *hentbuf;
 {
   const CGEN_INSN_LIST *ilist;
 
@@ -118,7 +123,8 @@
 /* Build the assembler instruction hash table.  */
 
 static void
-build_asm_hash_table (CGEN_CPU_DESC cd)
+build_asm_hash_table (cd)
+     CGEN_CPU_DESC cd;
 {
   int count = cgen_insn_count (cd) + cgen_macro_insn_count (cd);
   CGEN_INSN_TABLE *insn_table = &cd->insn_table;
@@ -173,7 +179,9 @@
 /* Return the first entry in the hash list for INSN.  */
 
 CGEN_INSN_LIST *
-cgen_asm_lookup_insn (CGEN_CPU_DESC cd, const char *insn)
+cgen_asm_lookup_insn (cd, insn)
+     CGEN_CPU_DESC cd;
+     const char *insn;
 {
   unsigned int hash;
 
@@ -193,10 +201,11 @@
    recording something in the keyword table].  */
 
 const char *
-cgen_parse_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    const char **strp,
-		    CGEN_KEYWORD *keyword_table,
-		    long *valuep)
+cgen_parse_keyword (cd, strp, keyword_table, valuep)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     const char **strp;
+     CGEN_KEYWORD *keyword_table;
+     long *valuep;
 {
   const CGEN_KEYWORD_ENTRY *ke;
   char buf[256];
@@ -253,10 +262,11 @@
    cgen_parse_address.  */
 
 const char *
-cgen_parse_signed_integer (CGEN_CPU_DESC cd,
-			   const char **strp,
-			   int opindex,
-			   long *valuep)
+cgen_parse_signed_integer (cd, strp, opindex, valuep)
+     CGEN_CPU_DESC cd;
+     const char **strp;
+     int opindex;
+     long *valuep;
 {
   bfd_vma value;
   enum cgen_parse_operand_result result;
@@ -277,10 +287,11 @@
    cgen_parse_address.  */
 
 const char *
-cgen_parse_unsigned_integer (CGEN_CPU_DESC cd,
-			     const char **strp,
-			     int opindex,
-			     unsigned long *valuep)
+cgen_parse_unsigned_integer (cd, strp, opindex, valuep)
+     CGEN_CPU_DESC cd;
+     const char **strp;
+     int opindex;
+     unsigned long *valuep;
 {
   bfd_vma value;
   enum cgen_parse_operand_result result;
@@ -298,12 +309,13 @@
 /* Address parser.  */
 
 const char *
-cgen_parse_address (CGEN_CPU_DESC cd,
-		    const char **strp,
-		    int opindex,
-		    int opinfo,
-		    enum cgen_parse_operand_result *resultp,
-		    bfd_vma *valuep)
+cgen_parse_address (cd, strp, opindex, opinfo, resultp, valuep)
+     CGEN_CPU_DESC cd;
+     const char **strp;
+     int opindex;
+     int opinfo;
+     enum cgen_parse_operand_result *resultp;
+     bfd_vma *valuep;
 {
   bfd_vma value;
   enum cgen_parse_operand_result result_type;
@@ -325,7 +337,8 @@
 /* Signed integer validation routine.  */
 
 const char *
-cgen_validate_signed_integer (long value, long min, long max)
+cgen_validate_signed_integer (value, min, max)
+     long value, min, max;
 {
   if (value < min || value > max)
     {
@@ -345,9 +358,8 @@
    cases where min != 0 (and max > LONG_MAX).  */
 
 const char *
-cgen_validate_unsigned_integer (unsigned long value,
-				unsigned long min,
-				unsigned long max)
+cgen_validate_unsigned_integer (value, min, max)
+     unsigned long value, min, max;
 {
   if (value < min || value > max)
     {
diff --git a/opcodes/cgen-asm.in b/opcodes/cgen-asm.in
index 420f640..1ea0768 100644
--- a/opcodes/cgen-asm.in
+++ b/opcodes/cgen-asm.in
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -60,7 +60,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-@arch@_cgen_build_insn_regex (CGEN_INSN *insn)
+@arch@_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -183,10 +184,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -324,11 +326,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-@arch@_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+@arch@_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -432,7 +435,9 @@
    FIXME: Not currently used.  */
 
 void
-@arch@_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+@arch@_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/cgen-dis.c b/opcodes/cgen-dis.c
index ca621de..881ee14 100644
--- a/opcodes/cgen-dis.c
+++ b/opcodes/cgen-dis.c
@@ -27,18 +27,19 @@
 #include "symcat.h"
 #include "opcode/cgen.h"
 
-static CGEN_INSN_LIST *  hash_insn_array        (CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
-static CGEN_INSN_LIST *  hash_insn_list         (CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
-static void              build_dis_hash_table   (CGEN_CPU_DESC);
-static int		 count_decodable_bits   (const CGEN_INSN *);
-static void		 add_insn_to_hash_chain (CGEN_INSN_LIST *,
-						 const CGEN_INSN *,
-						 CGEN_INSN_LIST **,
-						 unsigned int);
+static CGEN_INSN_LIST *  hash_insn_array      PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
+static CGEN_INSN_LIST *  hash_insn_list       PARAMS ((CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
+static void              build_dis_hash_table PARAMS ((CGEN_CPU_DESC));
+static int		 count_decodable_bits PARAMS ((const CGEN_INSN *));
+static void		 add_insn_to_hash_chain PARAMS ((CGEN_INSN_LIST *,
+							 const CGEN_INSN *,
+							 CGEN_INSN_LIST **,
+							 unsigned int));
 
 /* Return the number of decodable bits in this insn.  */
 static int
-count_decodable_bits (const CGEN_INSN *insn)
+count_decodable_bits (insn)
+  const CGEN_INSN *insn;
 {
   unsigned mask = CGEN_INSN_BASE_MASK (insn);
   int bits = 0;
@@ -53,10 +54,11 @@
 
 /* Add an instruction to the hash chain.  */     
 static void
-add_insn_to_hash_chain (CGEN_INSN_LIST *hentbuf,
-			const CGEN_INSN *insn,
-			CGEN_INSN_LIST **htable,
-			unsigned int hash)
+add_insn_to_hash_chain (hentbuf, insn, htable, hash)
+     CGEN_INSN_LIST *hentbuf;
+     const CGEN_INSN *insn;
+     CGEN_INSN_LIST **htable;
+     unsigned int hash;
 {
   CGEN_INSN_LIST *current_buf;
   CGEN_INSN_LIST *previous_buf;
@@ -98,12 +100,13 @@
    list and we want earlier ones to be prefered.  */
 
 static CGEN_INSN_LIST *
-hash_insn_array (CGEN_CPU_DESC cd,
-		 const CGEN_INSN * insns,
-		 int count,
-		 int entsize ATTRIBUTE_UNUSED,
-		 CGEN_INSN_LIST ** htable,
-		 CGEN_INSN_LIST * hentbuf)
+hash_insn_array (cd, insns, count, entsize, htable, hentbuf)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insns;
+     int count;
+     int entsize ATTRIBUTE_UNUSED;
+     CGEN_INSN_LIST ** htable;
+     CGEN_INSN_LIST * hentbuf;
 {
   int big_p = CGEN_CPU_ENDIAN (cd) == CGEN_ENDIAN_BIG;
   int i;
@@ -138,10 +141,11 @@
    in a list.  */
 
 static CGEN_INSN_LIST *
-hash_insn_list (CGEN_CPU_DESC cd,
-		const CGEN_INSN_LIST *insns,
-		CGEN_INSN_LIST **htable,
-		CGEN_INSN_LIST *hentbuf)
+hash_insn_list (cd, insns, htable, hentbuf)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN_LIST *insns;
+     CGEN_INSN_LIST **htable;
+     CGEN_INSN_LIST *hentbuf;
 {
   int big_p = CGEN_CPU_ENDIAN (cd) == CGEN_ENDIAN_BIG;
   const CGEN_INSN_LIST *ilist;
@@ -173,7 +177,8 @@
 /* Build the disassembler instruction hash table.  */
 
 static void
-build_dis_hash_table (CGEN_CPU_DESC cd)
+build_dis_hash_table (cd)
+     CGEN_CPU_DESC cd;
 {
   int count = cgen_insn_count (cd) + cgen_macro_insn_count (cd);
   CGEN_INSN_TABLE *insn_table = & cd->insn_table;
@@ -228,7 +233,10 @@
 /* Return the first entry in the hash list for INSN.  */
 
 CGEN_INSN_LIST *
-cgen_dis_lookup_insn (CGEN_CPU_DESC cd, const char * buf, CGEN_INSN_INT value)
+cgen_dis_lookup_insn (cd, buf, value)
+     CGEN_CPU_DESC cd;
+     const char * buf;
+     CGEN_INSN_INT value;
 {
   unsigned int hash;
 
diff --git a/opcodes/cgen-dis.in b/opcodes/cgen-dis.in
index 1a3c0fa..9203b71 100644
--- a/opcodes/cgen-dis.in
+++ b/opcodes/cgen-dis.in
@@ -41,32 +41,34 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -86,12 +88,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -115,11 +118,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -133,16 +137,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -174,13 +179,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -204,11 +210,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -313,7 +320,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -352,7 +362,9 @@
 } cpu_desc_list;
 
 int
-print_insn_@arch@ (bfd_vma pc, disassemble_info *info)
+print_insn_@arch@ (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/cgen-ibld.in b/opcodes/cgen-ibld.in
index 316f183..d2bfd02 100644
--- a/opcodes/cgen-ibld.in
+++ b/opcodes/cgen-ibld.in
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/cgen-opc.c b/opcodes/cgen-opc.c
index 882b348..06544ca 100644
--- a/opcodes/cgen-opc.c
+++ b/opcodes/cgen-opc.c
@@ -33,11 +33,11 @@
 #endif
 
 static unsigned int hash_keyword_name
-  (const CGEN_KEYWORD *, const char *, int);
+  PARAMS ((const CGEN_KEYWORD *, const char *, int));
 static unsigned int hash_keyword_value
-  (const CGEN_KEYWORD *, unsigned int);
+  PARAMS ((const CGEN_KEYWORD *, unsigned int));
 static void build_keyword_hash_tables
-  (CGEN_KEYWORD *);
+  PARAMS ((CGEN_KEYWORD *));
 
 /* Return number of hash table entries to use for N elements.  */
 #define KEYWORD_HASH_SIZE(n) ((n) <= 31 ? 17 : 31)
@@ -46,7 +46,9 @@
    The result is the keyword entry or NULL if not found.  */
 
 const CGEN_KEYWORD_ENTRY *
-cgen_keyword_lookup_name (CGEN_KEYWORD *kt, const char *name)
+cgen_keyword_lookup_name (kt, name)
+     CGEN_KEYWORD *kt;
+     const char *name;
 {
   const CGEN_KEYWORD_ENTRY *ke;
   const char *p,*n;
@@ -85,7 +87,9 @@
    The result is the keyword entry or NULL if not found.  */
 
 const CGEN_KEYWORD_ENTRY *
-cgen_keyword_lookup_value (CGEN_KEYWORD *kt, int value)
+cgen_keyword_lookup_value (kt, value)
+     CGEN_KEYWORD *kt;
+     int value;
 {
   const CGEN_KEYWORD_ENTRY *ke;
 
@@ -107,7 +111,9 @@
 /* Add an entry to a keyword table.  */
 
 void
-cgen_keyword_add (CGEN_KEYWORD *kt, CGEN_KEYWORD_ENTRY *ke)
+cgen_keyword_add (kt, ke)
+     CGEN_KEYWORD *kt;
+     CGEN_KEYWORD_ENTRY *ke;
 {
   unsigned int hash;
   size_t i;
@@ -153,7 +159,9 @@
    It is passed to each call to cgen_keyword_search_next.  */
 
 CGEN_KEYWORD_SEARCH
-cgen_keyword_search_init (CGEN_KEYWORD *kt, const char *spec)
+cgen_keyword_search_init (kt, spec)
+     CGEN_KEYWORD *kt;
+     const char *spec;
 {
   CGEN_KEYWORD_SEARCH search;
 
@@ -175,7 +183,8 @@
    The result is the next entry or NULL if there are no more.  */
 
 const CGEN_KEYWORD_ENTRY *
-cgen_keyword_search_next (CGEN_KEYWORD_SEARCH *search)
+cgen_keyword_search_next (search)
+     CGEN_KEYWORD_SEARCH *search;
 {
   /* Has search finished?  */
   if (search->current_hash == search->table->hash_table_size)
@@ -209,9 +218,10 @@
    If CASE_SENSITIVE_P is non-zero, return a case sensitive hash.  */
 
 static unsigned int
-hash_keyword_name (const CGEN_KEYWORD *kt,
-		   const char *name,
-		   int case_sensitive_p)
+hash_keyword_name (kt, name, case_sensitive_p)
+     const CGEN_KEYWORD *kt;
+     const char *name;
+     int case_sensitive_p;
 {
   unsigned int hash;
 
@@ -227,7 +237,9 @@
 /* Return first entry in hash chain for VALUE.  */
 
 static unsigned int
-hash_keyword_value (const CGEN_KEYWORD *kt, unsigned int value)
+hash_keyword_value (kt, value)
+     const CGEN_KEYWORD *kt;
+     unsigned int value;
 {
   return value % kt->hash_table_size;
 }
@@ -237,7 +249,8 @@
    we're using the disassembler, but we keep things simple.  */
 
 static void
-build_keyword_hash_tables (CGEN_KEYWORD *kt)
+build_keyword_hash_tables (kt)
+     CGEN_KEYWORD *kt;
 {
   int i;
   /* Use the number of compiled in entries as an estimate for the
@@ -265,7 +278,9 @@
    mach/isa.  */
 
 const CGEN_HW_ENTRY *
-cgen_hw_lookup_by_name (CGEN_CPU_DESC cd, const char *name)
+cgen_hw_lookup_by_name (cd, name)
+     CGEN_CPU_DESC cd;
+     const char *name;
 {
   unsigned int i;
   const CGEN_HW_ENTRY **hw = cd->hw_table.entries;
@@ -283,7 +298,9 @@
    Returns NULL if HWNUM is not supported by the currently selected mach.  */
 
 const CGEN_HW_ENTRY *
-cgen_hw_lookup_by_num (CGEN_CPU_DESC cd, unsigned int hwnum)
+cgen_hw_lookup_by_num (cd, hwnum)
+     CGEN_CPU_DESC cd;
+     unsigned int hwnum;
 {
   unsigned int i;
   const CGEN_HW_ENTRY **hw = cd->hw_table.entries;
@@ -303,7 +320,9 @@
    mach/isa.  */
 
 const CGEN_OPERAND *
-cgen_operand_lookup_by_name (CGEN_CPU_DESC cd, const char *name)
+cgen_operand_lookup_by_name (cd, name)
+     CGEN_CPU_DESC cd;
+     const char *name;
 {
   unsigned int i;
   const CGEN_OPERAND **op = cd->operand_table.entries;
@@ -322,7 +341,9 @@
    mach/isa.  */
 
 const CGEN_OPERAND *
-cgen_operand_lookup_by_num (CGEN_CPU_DESC cd, int opnum)
+cgen_operand_lookup_by_num (cd, opnum)
+     CGEN_CPU_DESC cd;
+     int opnum;
 {
   return cd->operand_table.entries[opnum];
 }
@@ -332,7 +353,8 @@
 /* Return number of instructions.  This includes any added at runtime.  */
 
 int
-cgen_insn_count (CGEN_CPU_DESC cd)
+cgen_insn_count (cd)
+     CGEN_CPU_DESC cd;
 {
   int count = cd->insn_table.num_init_entries;
   CGEN_INSN_LIST *rt_insns = cd->insn_table.new_entries;
@@ -347,7 +369,8 @@
    This includes any added at runtime.  */
 
 int
-cgen_macro_insn_count (CGEN_CPU_DESC cd)
+cgen_macro_insn_count (cd)
+     CGEN_CPU_DESC cd;
 {
   int count = cd->macro_insn_table.num_init_entries;
   CGEN_INSN_LIST *rt_insns = cd->macro_insn_table.new_entries;
@@ -361,7 +384,10 @@
 /* Cover function to read and properly byteswap an insn value.  */
 
 CGEN_INSN_INT
-cgen_get_insn_value (CGEN_CPU_DESC cd, unsigned char *buf, int length)
+cgen_get_insn_value (cd, buf, length)
+     CGEN_CPU_DESC cd;
+     unsigned char *buf;
+     int length;
 {
   int big_p = (cd->insn_endian == CGEN_ENDIAN_BIG);
   int insn_chunk_bitsize = cd->insn_chunk_bitsize;
@@ -397,10 +423,11 @@
 /* Cover function to store an insn value properly byteswapped.  */
 
 void
-cgen_put_insn_value (CGEN_CPU_DESC cd,
-		     unsigned char *buf,
-		     int length,
-		     CGEN_INSN_INT value)
+cgen_put_insn_value (cd, buf, length, value)
+     CGEN_CPU_DESC cd;
+     unsigned char *buf;
+     int length;
+     CGEN_INSN_INT value;
 {
   int big_p = (cd->insn_endian == CGEN_ENDIAN_BIG);
   int insn_chunk_bitsize = cd->insn_chunk_bitsize;
@@ -445,14 +472,16 @@
 /* ??? Will need to be revisited for VLIW architectures.  */
 
 const CGEN_INSN *
-cgen_lookup_insn (CGEN_CPU_DESC cd,
-		  const CGEN_INSN *insn,
-		  CGEN_INSN_INT insn_int_value,
-		  /* ??? CGEN_INSN_BYTES would be a nice type name to use here.  */
-		  unsigned char *insn_bytes_value,
-		  int length,
-		  CGEN_FIELDS *fields,
-		  int alias_p)
+cgen_lookup_insn (cd, insn, insn_int_value, insn_bytes_value, length, fields,
+		  alias_p)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_INSN_INT insn_int_value;
+     /* ??? CGEN_INSN_BYTES would be a nice type name to use here.  */
+     unsigned char *insn_bytes_value;
+     int length;
+     CGEN_FIELDS *fields;
+     int alias_p;
 {
   unsigned char *buf;
   CGEN_INSN_INT base_insn;
@@ -542,10 +571,11 @@
    in.  */
 
 void
-cgen_get_insn_operands (CGEN_CPU_DESC cd,
-			const CGEN_INSN *insn,
-			const CGEN_FIELDS *fields,
-			int *indices)
+cgen_get_insn_operands (cd, insn, fields, indices)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const CGEN_FIELDS *fields;
+     int *indices;
 {
   const CGEN_OPINST *opinst;
   int i;
@@ -573,14 +603,16 @@
    recognized.  */
 
 const CGEN_INSN *
-cgen_lookup_get_insn_operands (CGEN_CPU_DESC cd,
-			       const CGEN_INSN *insn,
-			       CGEN_INSN_INT insn_int_value,
-			       /* ??? CGEN_INSN_BYTES would be a nice type name to use here.  */
-			       unsigned char *insn_bytes_value,
-			       int length,
-			       int *indices,
-			       CGEN_FIELDS *fields)
+cgen_lookup_get_insn_operands (cd, insn, insn_int_value, insn_bytes_value,
+			       length, indices, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_INSN_INT insn_int_value;
+     /* ??? CGEN_INSN_BYTES would be a nice type name to use here.  */
+     unsigned char *insn_bytes_value;
+     int length;
+     int *indices;
+     CGEN_FIELDS *fields;
 {
   /* Pass non-zero for ALIAS_P only if INSN != NULL.
      If INSN == NULL, we want a real insn.  */
@@ -595,21 +627,24 @@
 
 /* Allow signed overflow of instruction fields.  */
 void
-cgen_set_signed_overflow_ok (CGEN_CPU_DESC cd)
+cgen_set_signed_overflow_ok (cd)
+     CGEN_CPU_DESC cd;
 {
   cd->signed_overflow_ok_p = 1;
 }
 
 /* Generate an error message if a signed field in an instruction overflows.  */
 void
-cgen_clear_signed_overflow_ok (CGEN_CPU_DESC cd)
+cgen_clear_signed_overflow_ok (cd)
+     CGEN_CPU_DESC cd;
 {
   cd->signed_overflow_ok_p = 0;
 }
 
 /* Will an error message be generated if a signed field in an instruction overflows ? */
 unsigned int
-cgen_signed_overflow_ok_p (CGEN_CPU_DESC cd)
+cgen_signed_overflow_ok_p (cd)
+     CGEN_CPU_DESC cd;
 {
   return cd->signed_overflow_ok_p;
 }
diff --git a/opcodes/dep-in.sed b/opcodes/dep-in.sed
index 94da2ad..e373d4c 100644
--- a/opcodes/dep-in.sed
+++ b/opcodes/dep-in.sed
@@ -10,7 +10,6 @@
 s!@BFDDIR@!$(BFDDIR)!g
 s!@TOPDIR@/bfd!$(BFDDIR)!g
 s!@SRCDIR@/!!g
-s! \.\./intl/libintl\.h!!g
 
 s/\\\n */ /g
 
diff --git a/opcodes/fr30-asm.c b/opcodes/fr30-asm.c
index f1c18a1..8e7c7b8 100644
--- a/opcodes/fr30-asm.c
+++ b/opcodes/fr30-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -356,7 +356,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-fr30_cgen_build_insn_regex (CGEN_INSN *insn)
+fr30_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -479,10 +480,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -620,11 +622,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-fr30_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+fr30_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -728,7 +731,9 @@
    FIXME: Not currently used.  */
 
 void
-fr30_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+fr30_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/fr30-dis.c b/opcodes/fr30-dis.c
index 0b99a4a..ef7b37a 100644
--- a/opcodes/fr30-dis.c
+++ b/opcodes/fr30-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -342,12 +343,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -367,12 +369,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -396,11 +399,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -414,16 +418,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -455,13 +460,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -485,11 +491,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -594,7 +601,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -633,7 +643,9 @@
 } cpu_desc_list;
 
 int
-print_insn_fr30 (bfd_vma pc, disassemble_info *info)
+print_insn_fr30 (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/fr30-ibld.c b/opcodes/fr30-ibld.c
index b01e483..9637461 100644
--- a/opcodes/fr30-ibld.c
+++ b/opcodes/fr30-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/frv-asm.c b/opcodes/frv-asm.c
index 5fe28d3..0e3d8dd 100644
--- a/opcodes/frv-asm.c
+++ b/opcodes/frv-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -659,7 +659,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-frv_cgen_build_insn_regex (CGEN_INSN *insn)
+frv_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -782,10 +783,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -923,11 +925,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-frv_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+frv_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -1031,7 +1034,9 @@
    FIXME: Not currently used.  */
 
 void
-frv_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+frv_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/frv-dis.c b/opcodes/frv-dis.c
index 8b1e4da..dfe053d 100644
--- a/opcodes/frv-dis.c
+++ b/opcodes/frv-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -393,12 +394,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -418,12 +420,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -447,11 +450,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -465,16 +469,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -506,13 +511,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -536,11 +542,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -645,7 +652,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -684,7 +694,9 @@
 } cpu_desc_list;
 
 int
-print_insn_frv (bfd_vma pc, disassemble_info *info)
+print_insn_frv (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/frv-ibld.c b/opcodes/frv-ibld.c
index 15bc827..bac1837 100644
--- a/opcodes/frv-ibld.c
+++ b/opcodes/frv-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/ip2k-asm.c b/opcodes/ip2k-asm.c
index 593db9d..524f256 100644
--- a/opcodes/ip2k-asm.c
+++ b/opcodes/ip2k-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -607,7 +607,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-ip2k_cgen_build_insn_regex (CGEN_INSN *insn)
+ip2k_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -730,10 +731,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -871,11 +873,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-ip2k_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+ip2k_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -979,7 +982,9 @@
    FIXME: Not currently used.  */
 
 void
-ip2k_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+ip2k_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/ip2k-dis.c b/opcodes/ip2k-dis.c
index 00e764c..f33fcc0 100644
--- a/opcodes/ip2k-dis.c
+++ b/opcodes/ip2k-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -351,12 +352,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -376,12 +378,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -405,11 +408,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -423,16 +427,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -464,13 +469,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -494,11 +500,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -603,7 +610,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -642,7 +652,9 @@
 } cpu_desc_list;
 
 int
-print_insn_ip2k (bfd_vma pc, disassemble_info *info)
+print_insn_ip2k (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/ip2k-ibld.c b/opcodes/ip2k-ibld.c
index e0c5309..22e2d8d 100644
--- a/opcodes/ip2k-ibld.c
+++ b/opcodes/ip2k-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/iq2000-asm.c b/opcodes/iq2000-asm.c
index 62d03f8..7fb795e 100644
--- a/opcodes/iq2000-asm.c
+++ b/opcodes/iq2000-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -493,7 +493,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-iq2000_cgen_build_insn_regex (CGEN_INSN *insn)
+iq2000_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -616,10 +617,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -757,11 +759,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-iq2000_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+iq2000_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -865,7 +868,9 @@
    FIXME: Not currently used.  */
 
 void
-iq2000_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+iq2000_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/iq2000-dis.c b/opcodes/iq2000-dis.c
index c20e978..b1bfa0e 100644
--- a/opcodes/iq2000-dis.c
+++ b/opcodes/iq2000-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -214,12 +215,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -239,12 +241,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -268,11 +271,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -286,16 +290,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -327,13 +332,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -357,11 +363,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -466,7 +473,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -505,7 +515,9 @@
 } cpu_desc_list;
 
 int
-print_insn_iq2000 (bfd_vma pc, disassemble_info *info)
+print_insn_iq2000 (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/iq2000-ibld.c b/opcodes/iq2000-ibld.c
index f0640f0..4917d9f 100644
--- a/opcodes/iq2000-ibld.c
+++ b/opcodes/iq2000-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/m32r-asm.c b/opcodes/m32r-asm.c
index a8c9485..2bd751a 100644
--- a/opcodes/m32r-asm.c
+++ b/opcodes/m32r-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -358,7 +358,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-m32r_cgen_build_insn_regex (CGEN_INSN *insn)
+m32r_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -481,10 +482,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -622,11 +624,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-m32r_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+m32r_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -730,7 +733,9 @@
    FIXME: Not currently used.  */
 
 void
-m32r_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+m32r_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/m32r-dis.c b/opcodes/m32r-dis.c
index e8abbc6..5688049 100644
--- a/opcodes/m32r-dis.c
+++ b/opcodes/m32r-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -273,12 +274,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -298,12 +300,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -327,11 +330,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -345,16 +349,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -386,13 +391,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -416,11 +422,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -525,7 +532,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -564,7 +574,9 @@
 } cpu_desc_list;
 
 int
-print_insn_m32r (bfd_vma pc, disassemble_info *info)
+print_insn_m32r (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/m32r-ibld.c b/opcodes/m32r-ibld.c
index 2a8d104..ef1ee0e 100644
--- a/opcodes/m32r-ibld.c
+++ b/opcodes/m32r-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/openrisc-asm.c b/opcodes/openrisc-asm.c
index 9f6ee32..26b2625 100644
--- a/opcodes/openrisc-asm.c
+++ b/opcodes/openrisc-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -277,7 +277,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-openrisc_cgen_build_insn_regex (CGEN_INSN *insn)
+openrisc_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -400,10 +401,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -541,11 +543,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-openrisc_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+openrisc_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -649,7 +652,9 @@
    FIXME: Not currently used.  */
 
 void
-openrisc_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+openrisc_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/openrisc-dis.c b/opcodes/openrisc-dis.c
index 6b721e2..5c4da5f 100644
--- a/opcodes/openrisc-dis.c
+++ b/opcodes/openrisc-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -160,12 +161,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -185,12 +187,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -214,11 +217,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -232,16 +236,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -273,13 +278,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -303,11 +309,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -412,7 +419,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -451,7 +461,9 @@
 } cpu_desc_list;
 
 int
-print_insn_openrisc (bfd_vma pc, disassemble_info *info)
+print_insn_openrisc (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/openrisc-ibld.c b/opcodes/openrisc-ibld.c
index 751ac07..c2e5156 100644
--- a/opcodes/openrisc-ibld.c
+++ b/opcodes/openrisc-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/opcodes/po/fr.po b/opcodes/po/fr.po
index 7ec06af..08ae661 100644
--- a/opcodes/po/fr.po
+++ b/opcodes/po/fr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: opcodes 2.14rel030712\n"
 "POT-Creation-Date: 2003-07-11 13:56+0930\n"
-"PO-Revision-Date: 2003-08-05 08:00-0500\n"
+"PO-Revision-Date: 2003-07-22 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -66,12 +66,12 @@
 #: iq2000-ibld.c:195 m32r-ibld.c:195 openrisc-ibld.c:195 xstormy16-ibld.c:195
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
-msgstr "opérande hors limite (%ld n'est pas entre %ld et %ld)"
+msgstr "opérande hors gamme (%ld n'est pas entre %ld et %ld)"
 
 #: cgen-asm.c:369
 #, c-format
 msgid "operand out of range (%lu not between %lu and %lu)"
-msgstr "opérande hors limite (%lu n'est pas entre %lu et %lu)"
+msgstr "opérande hors gamme (%lu n'est pas entre %lu et %lu)"
 
 #: d30v-dis.c:312
 #, c-format
@@ -87,7 +87,7 @@
 #: dis-buf.c:62
 #, c-format
 msgid "Address 0x%x is out of bounds.\n"
-msgstr "Adresse 0x%x est hors limite.\n"
+msgstr "Adresse 0x%x est hors gamme.\n"
 
 #: fr30-asm.c:323 frv-asm.c:626 ip2k-asm.c:574 iq2000-asm.c:460 m32r-asm.c:325
 #: openrisc-asm.c:261 xstormy16-asm.c:284
@@ -161,13 +161,13 @@
 #: m32r-ibld.c:166 openrisc-ibld.c:166 xstormy16-ibld.c:166
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
-msgstr "opérande hors limite (%ld n'est pas entre %ld et %lu)"
+msgstr "opérande hors gamme (%ld n'est pas entre %ld et %lu)"
 
 #: fr30-ibld.c:179 frv-ibld.c:179 ip2k-ibld.c:179 iq2000-ibld.c:179
 #: m32r-ibld.c:179 openrisc-ibld.c:179 xstormy16-ibld.c:179
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
-msgstr "opérande hors limite (%lu n'est pas entre 0 et %lu)"
+msgstr "opérande hors gamme (%lu n'est pas entre 0 et %lu)"
 
 #: fr30-ibld.c:730 frv-ibld.c:829 ip2k-ibld.c:607 iq2000-ibld.c:713
 #: m32r-ibld.c:659 openrisc-ibld.c:633 xstormy16-ibld.c:678
@@ -358,13 +358,13 @@
 #. of range.
 #: ip2k-asm.c:175
 msgid "(DP) offset out of range."
-msgstr "décalage (DP) est hors limite."
+msgstr "décalage (DP) est hors gamme."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
 #: ip2k-asm.c:221
 msgid "(SP) offset out of range."
-msgstr "décalage (SP) est hors limite."
+msgstr "décalage (SP) est hors gamme."
 
 #: ip2k-asm.c:241
 msgid "illegal use of parentheses"
@@ -372,7 +372,7 @@
 
 #: ip2k-asm.c:248
 msgid "operand out of range (not between 1 and 255)"
-msgstr "opérande hors limite (n'est pas entre 1 et 255)"
+msgstr "opérande hors gamme (n'est pas entre 1 et 255)"
 
 #. Something is very wrong. opindex has to be one of the above.
 #: ip2k-asm.c:273
@@ -402,11 +402,11 @@
 
 #: iq2000-asm.c:120 iq2000-asm.c:151
 msgid "immediate value out of range"
-msgstr "valeur immédiate est hors limite"
+msgstr "valeur immédiate est hors gamme"
 
 #: iq2000-asm.c:180
 msgid "21-bit offset out of range"
-msgstr "décalage de 21 bits est hors limite"
+msgstr "décalage de 21 bits est hors gamme"
 
 #: iq2000-asm.c:205 iq2000-asm.c:235 iq2000-asm.c:272 iq2000-asm.c:305
 #: openrisc-asm.c:96 openrisc-asm.c:155
@@ -647,7 +647,7 @@
 
 #: ppc-opc.c:1192
 msgid "value out of range"
-msgstr "valeur hors limite"
+msgstr "valeur hors gamme"
 
 #: ppc-opc.c:1262
 msgid "index register in load range"
@@ -706,11 +706,11 @@
 #. specific command line option is given to GAS.
 #: v850-opc.c:68
 msgid "displacement value is not in range and is not aligned"
-msgstr "La valeur de déplacement est hors limite et n'est pas alignée."
+msgstr "La valeur de déplacement est hors gamme et n'est pas alignée."
 
 #: v850-opc.c:69
 msgid "displacement value is out of range"
-msgstr "valeur de déplacement est hors limite"
+msgstr "valeur de déplacement est hors gamme"
 
 #: v850-opc.c:70
 msgid "displacement value is not aligned"
@@ -718,15 +718,15 @@
 
 #: v850-opc.c:72
 msgid "immediate value is out of range"
-msgstr "valeur immédiate est hors limite"
+msgstr "valeur immédiate est hors gamme"
 
 #: v850-opc.c:83
 msgid "branch value not in range and to odd offset"
-msgstr "valeur de branchement est hors limite et a un décalage impair"
+msgstr "valeur de branchement est hors gamme et a un décalage impair"
 
 #: v850-opc.c:85 v850-opc.c:117
 msgid "branch value out of range"
-msgstr "valeur de branchement hors limite"
+msgstr "valeur de branchement hors gamme"
 
 #: v850-opc.c:88 v850-opc.c:120
 msgid "branch to odd offset"
@@ -734,7 +734,7 @@
 
 #: v850-opc.c:115
 msgid "branch value not in range and to an odd offset"
-msgstr "valeur de branchement est hors limite et a un décalage impair"
+msgstr "valeur de branchement est hors gamme et a un décalage impair"
 
 #: v850-opc.c:346
 msgid "invalid register for stack adjustment"
@@ -742,7 +742,7 @@
 
 #: v850-opc.c:370
 msgid "immediate value not in range and not even"
-msgstr "valeur immédiate est hors limite et est impaire"
+msgstr "valeur immédiate est hors gamme et est impaire"
 
 #: v850-opc.c:375
 msgid "immediate value must be even"
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 7fd2977..0f04cfb 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -1771,7 +1771,6 @@
 #define PPCONLY	PPC_OPCODE_PPC
 #define PPC403	PPC_OPCODE_403
 #define PPC405	PPC403
-#define PPC440	PPC_OPCODE_440
 #define PPC750	PPC
 #define PPC860	PPC
 #define PPCVEC	PPC_OPCODE_ALTIVEC | PPC_OPCODE_ANY | PPC_OPCODE_PPC
@@ -1864,90 +1863,90 @@
 { "twi",     OP(3),	OP_MASK,	PPCCOM,		{ TO, RA, SI } },
 { "ti",      OP(3),	OP_MASK,	PWRCOM,		{ TO, RA, SI } },
 
-{ "macchw",	XO(4,172,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchw.",	XO(4,172,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwo",	XO(4,172,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwo.",	XO(4,172,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchws",	XO(4,236,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchws.",	XO(4,236,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwso",	XO(4,236,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwso.",	XO(4,236,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwsu",	XO(4,204,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwsu.",	XO(4,204,0,1), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwsuo",	XO(4,204,1,0), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwsuo.",	XO(4,204,1,1), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwu",	XO(4,140,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwu.",	XO(4,140,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwuo",	XO(4,140,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "macchwuo.",	XO(4,140,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhw",	XO(4,44,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhw.",	XO(4,44,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwo",	XO(4,44,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwo.",	XO(4,44,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhws",	XO(4,108,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhws.",	XO(4,108,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwso",	XO(4,108,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwso.",	XO(4,108,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwsu",	XO(4,76,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwsu.",	XO(4,76,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwsuo",	XO(4,76,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwsuo.",	XO(4,76,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwu",	XO(4,12,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwu.",	XO(4,12,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwuo",	XO(4,12,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "machhwuo.",	XO(4,12,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhw",	XO(4,428,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhw.",	XO(4,428,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwo",	XO(4,428,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwo.",	XO(4,428,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhws",	XO(4,492,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhws.",	XO(4,492,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwso",	XO(4,492,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwso.",	XO(4,492,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwsu",	XO(4,460,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwsu.",	XO(4,460,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwsuo",	XO(4,460,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwsuo.",	XO(4,460,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwu",	XO(4,396,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwu.",	XO(4,396,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwuo",	XO(4,396,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "maclhwuo.",	XO(4,396,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulchw",	XRC(4,168,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulchw.",	XRC(4,168,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulchwu",	XRC(4,136,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulchwu.",	XRC(4,136,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulhhw",	XRC(4,40,0),   X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulhhw.",	XRC(4,40,1),   X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulhhwu",	XRC(4,8,0),    X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mulhhwu.",	XRC(4,8,1),    X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mullhw",	XRC(4,424,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mullhw.",	XRC(4,424,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mullhwu",	XRC(4,392,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "mullhwu.",	XRC(4,392,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchw",	XO(4,174,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchw.",	XO(4,174,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchwo",	XO(4,174,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchwo.",	XO(4,174,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchws",	XO(4,238,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchws.",	XO(4,238,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchwso",	XO(4,238,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmacchwso.",	XO(4,238,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhw",	XO(4,46,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhw.",	XO(4,46,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhwo",	XO(4,46,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhwo.",	XO(4,46,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhws",	XO(4,110,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhws.",	XO(4,110,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhwso",	XO(4,110,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmachhwso.",	XO(4,110,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhw",	XO(4,430,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhw.",	XO(4,430,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhwo",	XO(4,430,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhwo.",	XO(4,430,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhws",	XO(4,494,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhws.",	XO(4,494,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhwso",	XO(4,494,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
-{ "nmaclhwso.",	XO(4,494,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
+{ "macchw",	XO(4,172,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchw.",	XO(4,172,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwo",	XO(4,172,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwo.",	XO(4,172,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchws",	XO(4,236,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchws.",	XO(4,236,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwso",	XO(4,236,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwso.",	XO(4,236,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwsu",	XO(4,204,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwsu.",	XO(4,204,0,1), XO_MASK, PPC405,		{ RT, RA, RB } },
+{ "macchwsuo",	XO(4,204,1,0), XO_MASK, PPC405,		{ RT, RA, RB } },
+{ "macchwsuo.",	XO(4,204,1,1), XO_MASK, PPC405,		{ RT, RA, RB } },
+{ "macchwu",	XO(4,140,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwu.",	XO(4,140,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwuo",	XO(4,140,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "macchwuo.",	XO(4,140,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhw",	XO(4,44,0,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhw.",	XO(4,44,0,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwo",	XO(4,44,1,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwo.",	XO(4,44,1,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhws",	XO(4,108,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhws.",	XO(4,108,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwso",	XO(4,108,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwso.",	XO(4,108,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwsu",	XO(4,76,0,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwsu.",	XO(4,76,0,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwsuo",	XO(4,76,1,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwsuo.",	XO(4,76,1,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwu",	XO(4,12,0,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwu.",	XO(4,12,0,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwuo",	XO(4,12,1,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "machhwuo.",	XO(4,12,1,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhw",	XO(4,428,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhw.",	XO(4,428,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwo",	XO(4,428,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwo.",	XO(4,428,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhws",	XO(4,492,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhws.",	XO(4,492,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwso",	XO(4,492,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwso.",	XO(4,492,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwsu",	XO(4,460,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwsu.",	XO(4,460,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwsuo",	XO(4,460,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwsuo.",	XO(4,460,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwu",	XO(4,396,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwu.",	XO(4,396,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwuo",	XO(4,396,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "maclhwuo.",	XO(4,396,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulchw",	XRC(4,168,0),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulchw.",	XRC(4,168,1),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulchwu",	XRC(4,136,0),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulchwu.",	XRC(4,136,1),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulhhw",	XRC(4,40,0),   X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulhhw.",	XRC(4,40,1),   X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulhhwu",	XRC(4,8,0),    X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mulhhwu.",	XRC(4,8,1),    X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mullhw",	XRC(4,424,0),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mullhw.",	XRC(4,424,1),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mullhwu",	XRC(4,392,0),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "mullhwu.",	XRC(4,392,1),  X_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchw",	XO(4,174,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchw.",	XO(4,174,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchwo",	XO(4,174,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchwo.",	XO(4,174,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchws",	XO(4,238,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchws.",	XO(4,238,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchwso",	XO(4,238,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmacchwso.",	XO(4,238,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhw",	XO(4,46,0,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhw.",	XO(4,46,0,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhwo",	XO(4,46,1,0),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhwo.",	XO(4,46,1,1),  XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhws",	XO(4,110,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhws.",	XO(4,110,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhwso",	XO(4,110,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmachhwso.",	XO(4,110,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhw",	XO(4,430,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhw.",	XO(4,430,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhwo",	XO(4,430,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhwo.",	XO(4,430,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhws",	XO(4,494,0,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhws.",	XO(4,494,0,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhwso",	XO(4,494,1,0), XO_MASK,	PPC405,		{ RT, RA, RB } },
+{ "nmaclhwso.",	XO(4,494,1,1), XO_MASK,	PPC405,		{ RT, RA, RB } },
 { "mfvscr",  VX(4, 1540), VX_MASK,	PPCVEC,		{ VD } },
 { "mtvscr",  VX(4, 1604), VX_MASK,	PPCVEC,		{ VB } },
 { "vaddcuw", VX(4,  384), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
@@ -3315,9 +3314,6 @@
 { "mulhw",   XO(31,75,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
 { "mulhw.",  XO(31,75,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
 
-{ "dlmzb",   XRC(31,78,0),  X_MASK,	PPC403|PPC440,	{ RA, RS, RB } },
-{ "dlmzb.",  XRC(31,78,1),  X_MASK,	PPC403|PPC440,	{ RA, RS, RB } },
-
 { "mtsrd",   X(31,82),	XRB_MASK|(1<<20), PPC64,	{ SR, RS } },
 
 { "mfmsr",   X(31,83),	XRARB_MASK,	COM,		{ RT } },
@@ -3787,7 +3783,7 @@
 { "dstst",   XDSS(31,374,0), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
 { "dststt",  XDSS(31,374,1), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
 
-{ "dccci",   X(31,454),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
+{ "dccci",   X(31,454),	XRT_MASK,	PPC403,		{ RA, RB } },
 
 { "abs",     XO(31,360,0,0), XORB_MASK, M601,		{ RT, RA } },
 { "abs.",    XO(31,360,0,1), XORB_MASK, M601,		{ RT, RA } },
@@ -4069,7 +4065,7 @@
 
 { "dcbie",   X(31,478),	XRT_MASK,	BOOKE64,	{ RA, RB } },
 
-{ "dcread",  X(31,486),	X_MASK,		PPC403|PPC440,	{ RT, RA, RB }},
+{ "dcread",  X(31,486),	X_MASK,		PPC403,		{ RT, RA, RB }},
 
 { "mtpmr",   X(31,462),	X_MASK,		PPCPMR,		{ PMR, RS }},
 
@@ -4292,7 +4288,7 @@
 
 { "stduxe",  X(31,959),	X_MASK,		BOOKE64,	{ RS, RAS, RB } },
 
-{ "iccci",   X(31,966),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
+{ "iccci",   X(31,966),	XRT_MASK,	PPC403,		{ RA, RB } },
 
 { "tlbwe",   X(31,978),	X_MASK,		BOOKE,		{ 0 } },
 
@@ -4309,7 +4305,7 @@
 { "extsw",   XRC(31,986,0), XRB_MASK,	PPC64 | BOOKE64,{ RA, RS } },
 { "extsw.",  XRC(31,986,1), XRB_MASK,	PPC64,		{ RA, RS } },
 
-{ "icread",  X(31,998),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
+{ "icread",  X(31,998),	XRT_MASK,	PPC403,		{ RA, RB } },
 
 { "icbie",   X(31,990),	XRT_MASK,	BOOKE64,	{ RA, RB } },
 { "stfiwxe", X(31,991),	X_MASK,		BOOKE64,	{ FRS, RA, RB } },
diff --git a/opcodes/xstormy16-asm.c b/opcodes/xstormy16-asm.c
index 618e33b..810938c 100644
--- a/opcodes/xstormy16-asm.c
+++ b/opcodes/xstormy16-asm.c
@@ -43,7 +43,7 @@
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
 static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *));
 
 /* -- assembler routines inserted here.  */
 
@@ -317,7 +317,8 @@
    Returns NULL for success, an error message for failure.  */
 
 char * 
-xstormy16_cgen_build_insn_regex (CGEN_INSN *insn)
+xstormy16_cgen_build_insn_regex (insn)
+     CGEN_INSN *insn;
 {  
   CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
   const char *mnem = CGEN_INSN_MNEMONIC (insn);
@@ -440,10 +441,11 @@
    Returns NULL for success, an error message for failure.  */
 
 static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
+parse_insn_normal (cd, insn, strp, fields)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     const char **strp;
+     CGEN_FIELDS *fields;
 {
   /* ??? Runtime added insns not handled yet.  */
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
@@ -581,11 +583,12 @@
    mind helps keep the design clean.  */
 
 const CGEN_INSN *
-xstormy16_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
+xstormy16_cgen_assemble_insn (cd, str, fields, buf, errmsg)
+     CGEN_CPU_DESC cd;
+     const char *str;
+     CGEN_FIELDS *fields;
+     CGEN_INSN_BYTES_PTR buf;
+     char **errmsg;
 {
   const char *start;
   CGEN_INSN_LIST *ilist;
@@ -689,7 +692,9 @@
    FIXME: Not currently used.  */
 
 void
-xstormy16_cgen_asm_hash_keywords (CGEN_CPU_DESC cd, CGEN_KEYWORD *opvals)
+xstormy16_cgen_asm_hash_keywords (cd, opvals)
+     CGEN_CPU_DESC cd;
+     CGEN_KEYWORD *opvals;
 {
   CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL);
   const CGEN_KEYWORD_ENTRY * ke;
diff --git a/opcodes/xstormy16-dis.c b/opcodes/xstormy16-dis.c
index 54af257..17c54a6 100644
--- a/opcodes/xstormy16-dis.c
+++ b/opcodes/xstormy16-dis.c
@@ -41,20 +41,21 @@
 #define UNKNOWN_INSN_MSG _("*unknown*")
 
 static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int));
 static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int));
 static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int);
+     PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int));
 static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+     PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *,
+	      bfd_vma, int));
 static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma,  disassemble_info *, char *, unsigned));
 static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *));
 static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
+     PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int,
+	      CGEN_EXTRACT_INFO *, unsigned long *));
 
 /* -- disassembler routines inserted here */
 
@@ -193,12 +194,13 @@
 /* Default print handler.  */
 
 static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
+print_normal (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     long value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -218,12 +220,13 @@
 /* Default address handler.  */
 
 static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
+print_address (cd, dis_info, value, attrs, pc, length)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     bfd_vma value;
+     unsigned int attrs;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -247,11 +250,12 @@
 /* Keyword print handler.  */
 
 static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
+print_keyword (cd, dis_info, keyword_table, value, attrs)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     PTR dis_info;
+     CGEN_KEYWORD *keyword_table;
+     long value;
+     unsigned int attrs ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -265,16 +269,17 @@
 
 /* Default insn printer.
 
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
+   DIS_INFO is defined as `PTR' so the disassembler needn't know anything
    about disassemble_info.  */
 
 static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
+print_insn_normal (cd, dis_info, insn, fields, pc, length)
+     CGEN_CPU_DESC cd;
+     PTR dis_info;
+     const CGEN_INSN *insn;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
+     int length;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   disassemble_info *info = (disassemble_info *) dis_info;
@@ -306,13 +311,14 @@
    Returns 0 if all is well, non-zero otherwise.  */
 
 static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   char *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
+read_insn (cd, pc, info, buf, buflen, ex_info, insn_value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     int buflen;
+     CGEN_EXTRACT_INFO *ex_info;
+     unsigned long *insn_value;
 {
   int status = (*info->read_memory_func) (pc, buf, buflen, info);
   if (status != 0)
@@ -336,11 +342,12 @@
    been called).  */
 
 static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    char *buf,
-	    unsigned int buflen)
+print_insn (cd, pc, info, buf, buflen)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
+     char *buf;
+     unsigned int buflen;
 {
   CGEN_INSN_INT insn_value;
   const CGEN_INSN_LIST *insn_list;
@@ -445,7 +452,10 @@
 #endif
 
 static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+default_print_insn (cd, pc, info)
+     CGEN_CPU_DESC cd;
+     bfd_vma pc;
+     disassemble_info *info;
 {
   char buf[CGEN_MAX_INSN_SIZE];
   int buflen;
@@ -484,7 +494,9 @@
 } cpu_desc_list;
 
 int
-print_insn_xstormy16 (bfd_vma pc, disassemble_info *info)
+print_insn_xstormy16 (pc, info)
+     bfd_vma pc;
+     disassemble_info *info;
 {
   static cpu_desc_list *cd_list = 0;
   cpu_desc_list *cl = 0;
diff --git a/opcodes/xstormy16-ibld.c b/opcodes/xstormy16-ibld.c
index 13433e0..0e4876a 100644
--- a/opcodes/xstormy16-ibld.c
+++ b/opcodes/xstormy16-ibld.c
@@ -44,29 +44,30 @@
 #define FLD(f) (fields->f)
 
 static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+     PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR));
 static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *,
+	      CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma));
 static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+	      unsigned int, unsigned int, unsigned int, unsigned int,
+	      unsigned int, unsigned int, bfd_vma, long *));
 static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+	      CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma));
 #if CGEN_INT_INSN_P
 static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+     PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT));
 #endif
 #if ! CGEN_INT_INSN_P
 static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+     PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *));
 static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma));
 static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+     PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int,
+	      unsigned char *, bfd_vma));
 #endif
 
 /* Operand insertion.  */
@@ -76,12 +77,11 @@
 /* Subroutine of insert_normal.  */
 
 static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
+insert_1 (cd, value, start, length, word_length, bufp)
+     CGEN_CPU_DESC cd;
+     unsigned long value;
+     int start,length,word_length;
+     unsigned char *bufp;
 {
   unsigned long x,mask;
   int shift;
@@ -118,15 +118,13 @@
    necessary.  */
 
 static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
+insert_normal (cd, value, attrs, word_offset, start, length, word_length,
+	       total_length, buffer)
+     CGEN_CPU_DESC cd;
+     long value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
+     CGEN_INSN_BYTES_PTR buffer;
 {
   static char errbuf[100];
   /* Written this way to avoid undefined behaviour.  */
@@ -234,11 +232,12 @@
    The result is an error message or NULL if success.  */
 
 static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
+insert_insn_normal (cd, insn, fields, buffer, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN * insn;
+     CGEN_FIELDS * fields;
+     CGEN_INSN_BYTES_PTR buffer;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   unsigned long value;
@@ -289,11 +288,12 @@
  because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
 
 static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
+put_insn_int_value (cd, buf, length, insn_length, value)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_INSN_BYTES_PTR buf;
+     int length;
+     int insn_length;
+     CGEN_INSN_INT value;
 {
   /* For architectures with insns smaller than the base-insn-bitsize,
      length may be too big.  */
@@ -320,11 +320,11 @@
    Returns 1 for success, 0 for failure.  */
 
 static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
+fill_cache (cd, ex_info, offset, bytes, pc)
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
+     CGEN_EXTRACT_INFO *ex_info;
+     int offset, bytes;
+     bfd_vma pc;
 {
   /* It's doubtful that the middle part has already been fetched so
      we don't optimize that case.  kiss.  */
@@ -364,13 +364,12 @@
 /* Subroutine of extract_normal.  */
 
 static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
+extract_1 (cd, ex_info, start, length, word_length, bufp, pc)
+     CGEN_CPU_DESC cd;
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
+     int start,length,word_length;
+     unsigned char *bufp;
+     bfd_vma pc ATTRIBUTE_UNUSED;
 {
   unsigned long x;
   int shift;
@@ -409,25 +408,23 @@
    necessary.  */
 
 static int
-extract_normal (CGEN_CPU_DESC cd,
+extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length,
+		word_length, total_length, pc, valuep)
+     CGEN_CPU_DESC cd;
 #if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
+     CGEN_EXTRACT_INFO *ex_info;
 #else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+     CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED;
 #endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
+     CGEN_INSN_INT insn_value;
+     unsigned int attrs;
+     unsigned int word_offset, start, length, word_length, total_length;
 #if ! CGEN_INT_INSN_P
-		bfd_vma pc,
+     bfd_vma pc;
 #else
-		bfd_vma pc ATTRIBUTE_UNUSED,
+     bfd_vma pc ATTRIBUTE_UNUSED;
 #endif
-		long *valuep)
+     long *valuep;
 {
   long value, mask;
 
@@ -508,12 +505,13 @@
    been called).  */
 
 static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
+extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+     CGEN_EXTRACT_INFO *ex_info;
+     CGEN_INSN_INT insn_value;
+     CGEN_FIELDS *fields;
+     bfd_vma pc;
 {
   const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
   const CGEN_SYNTAX_CHAR_TYPE *syn;
diff --git a/sim/ChangeLog b/sim/ChangeLog
index f4c616e..c51cddd 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,13 +1,3 @@
-2003-08-10  Ben Elliston  <bje@wasabisystems.com>
-
-	* MAINTAINERS: Update my mail address.
-
-2003-08-09  Andrew Cagney  <cagney@redhat.com>
-
-	* MAINTAINERS: Andrew Cagney (mips) and Geoff Keating (ppc) drop
-	maintenance.  List igen and sh maintainers.  Mention that target
-	and global maintainers pick up the slack.
-
 2003-07-09  Michael Snyder  <msnyder@redhat.com>
 
 	* configure.in: Add testsuite to extra_subdirs for sh.
diff --git a/sim/MAINTAINERS b/sim/MAINTAINERS
index 3e94cda..e54adb5 100644
--- a/sim/MAINTAINERS
+++ b/sim/MAINTAINERS
@@ -10,16 +10,10 @@
 	Maintainers for particular sims:
 
 arm	        Nick Clifton <nickc@redhat.com>
-igen		(igen simulators)
 ppc		Andrew Cagney <ac131313@redhat.com>
-m68hc11		Stephane Carrez <stcarrez@nerim.fr>
-mips		Chris Demetriou <cgd@broadcom.com>
-sh		(global maintainers)
-common		Ben Elliston <bje@wasabisystems.com>
-common		Frank Ch. Eigler <fche@redhat.com>
-*		(target, then global maintainers)
-
-	Past sim maintainers:
-
-mips		Andrew Cagney <ac131313@redhat.com>
 ppc		Geoff Keating <geoffk@geoffk.org>
+m68hc11		Stephane Carrez <stcarrez@nerim.fr>
+mips		Andrew Cagney <ac131313@redhat.com>
+mips		Chris Demetriou <cgd@broadcom.com>
+common		Ben Elliston <bje@redhat.com>
+common		Frank Ch. Eigler <fche@redhat.com>
diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog
index 3d019d7..9c34d47 100644
--- a/sim/m68hc11/ChangeLog
+++ b/sim/m68hc11/ChangeLog
@@ -1,57 +1,3 @@
-2003-08-08  Stephane Carrez  <stcarrez@nerim.fr>
-
-	* dv-m68hc11tim.c (cycle_to_string): Add flags parameter to better
-	control the translation.
-	(m68hc11tim_print_timer): Update cycle_to_string conversion.
-	(m68hc11tim_timer_event): Fix handling of output
-	compare register with its interrupts.
-	(m68hc11tim_io_write_buffer): Check output compare
-	after setting M6811_TMSK1.
-	(m68hc11tim_io_read_buffer): Fix compilation warning.
-	* dv-m68hc11.c (m68hc11_option_handler): Likewise.
-	* dv-m68hc11spi.c (m68hc11spi_info): Likewise.
-	* dv-m68hc11sio.c (m68hc11sio_info): Likewise.
-	* interrupts.c (interrupts_info): Likewise.
-	(interrupts_reset): Recognize bootstrap mode.
-	* sim-main.h (PRINT_CYCLE, PRINT_TIME): New defines.
-	(_sim_cpu): Add cpu_start_mode.
-	(cycle_to_string): Add flags member.
-	* m68hc11_sim.c (OPTION_CPU_BOOTSTRAP): New option.
-	(cpu_options): Declare new option bootstrap.
-	(cpu_option_handler): Handle it.
-	(cpu_info): Update call to cycle_to_string.
-
-2003-08-08  Stephane Carrez  <stcarrez@nerim.fr>
-
-	* sim-main.h (phys_to_virt): Use memory bank parameters to translate
-	the physical address in virtual address.
-	(struct _sim_cpu): Add memory bank members.
-	* m68hc11_sim.c (cpu_initialize): Clear memory bank parameters.
-	* interp.c (sim_hw_configure): Create memory bank according to memory
-	bank parameters.
-	(sim_get_bank_parameters): New function to obtain memory bank config
-	from the symbol table.
-	(sim_prepare_for_program): Call it to obtain the memory bank parameters.
-	(sim_open): Call sim_prepare_for_program.
-	* dv-m68hc11.c (m68hc11cpu_io_write_buffer): Use memory bank parameters
-	to check if address is within bank window.
-	(m68hc11cpu_io_read_buffer): Likewise.
-	(attach_m68hc11_regs): Map the memory bank according to memory bank
-	parameters.
-
-2003-08-08  Stephane Carrez  <stcarrez@nerim.fr>,
-
-	* sim-main.h (PAGE_REGNUM, Z_REGNUM): Use same numbering as gdb.
-
-2003-08-08  Stephane Carrez  <stcarrez@nerim.fr>,
-	    Gary Piercey <gpiercey@northstar-technical.com>
-
-	* m68hc11_sim.c (print_io_word): New function to print 16-bit value.
-	* sim-main.h (print_io_word): Declare.
-	* dv-m68hc11tim.c (tmsk1_desc): New description table for TMSK1.
-	(tflg1_desc): Likewise for TFLG1.
-	(m68hc11tim_info): Print input and output compare registers
-
 2003-03-02  Stephane Carrez  <stcarrez@nerim.fr>
 
 	* Makefile.in (SIM_EXTRA_CFLAGS): Set WITH_TARGET_ADDRESS_BITSIZE
diff --git a/sim/m68hc11/dv-m68hc11.c b/sim/m68hc11/dv-m68hc11.c
index 5cc7161..669a045 100644
--- a/sim/m68hc11/dv-m68hc11.c
+++ b/sim/m68hc11/dv-m68hc11.c
@@ -1,5 +1,5 @@
 /*  dv-m68hc11.c -- CPU 68HC11&68HC12 as a device.
-    Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+    Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
     Written by Stephane Carrez (stcarrez@nerim.fr)
     (From a driver model Contributed by Cygnus Solutions.)
     
@@ -324,8 +324,8 @@
   if (hw_find_property (me, "use_bank") != NULL)
     hw_attach_address (hw_parent (me), 0,
                        exec_map,
-                       cpu->bank_start,
-                       cpu->bank_end - cpu->bank_start,
+                       0x08000,
+                       0x04000,
                        me);
 
   cpu_mode = "expanded";
@@ -808,15 +808,13 @@
                                "      %d       %d    %35.35s\n",
                                osc->name, freq,
                                cur_value, next_value,
-                               cycle_to_string (cpu, t,
-                                                PRINT_TIME | PRINT_CYCLE));
+                               cycle_to_string (cpu, t));
               else
                 sim_io_printf (sd, " %4.4s  %8.8s hz "
                                "      %d       %d    %35.35s\n",
                                osc->name, freq,
                                cur_value, next_value,
-                               cycle_to_string (cpu, t,
-                                                PRINT_TIME | PRINT_CYCLE));
+                               cycle_to_string (cpu, t));
             }
         }
       break;      
@@ -845,7 +843,7 @@
   sd  = hw_system (me);
   cpu = STATE_CPU (sd, 0);
 
-  if (base >= cpu->bank_start && base < cpu->bank_end)
+  if (base >= 0x8000 && base < 0xc000)
     {
       address_word virt_addr = phys_to_virt (cpu, base);
       if (virt_addr != base)
@@ -866,7 +864,7 @@
 	break;
 
       memcpy (dest, &cpu->ios[base], 1);
-      dest = (char*) dest + 1;
+      dest++;
       base++;
       byte++;
       nr_bytes--;
@@ -1093,7 +1091,7 @@
   sd = hw_system (me); 
   cpu = STATE_CPU (sd, 0);  
 
-  if (base >= cpu->bank_start && base < cpu->bank_end)
+  if (base >= 0x8000 && base < 0xc000)
     {
       address_word virt_addr = phys_to_virt (cpu, base);
       if (virt_addr != base)
@@ -1115,7 +1113,7 @@
 
       val = *((uint8*) source);
       m68hc11cpu_io_write (me, cpu, base, val);
-      source = (char*) source + 1;
+      source++;
       base++;
       byte++;
       nr_bytes--;
diff --git a/sim/m68hc11/dv-m68hc11sio.c b/sim/m68hc11/dv-m68hc11sio.c
index 655a6db..ec7a46d 100644
--- a/sim/m68hc11/dv-m68hc11sio.c
+++ b/sim/m68hc11/dv-m68hc11sio.c
@@ -463,8 +463,7 @@
       n = (clock_cycle - t) / controller->baud_cycle;
       n = controller->data_length - n;
       sim_io_printf (sd, "  Transmit finished in %s (%d bit%s)\n",
-		     cycle_to_string (cpu, t, PRINT_TIME | PRINT_CYCLE),
-                     n, (n > 1 ? "s" : ""));
+		     cycle_to_string (cpu, t), n, (n > 1 ? "s" : ""));
     }
   if (controller->rx_poll_event)
     {
@@ -472,7 +471,7 @@
 
       t = hw_event_remain_time (me, controller->rx_poll_event);
       sim_io_printf (sd, "  Receive finished in %s\n",
-		     cycle_to_string (cpu, t, PRINT_TIME | PRINT_CYCLE));
+		     cycle_to_string (cpu, t));
     }
   
 }
diff --git a/sim/m68hc11/dv-m68hc11spi.c b/sim/m68hc11/dv-m68hc11spi.c
index 619a2d3..5f5e0bb 100644
--- a/sim/m68hc11/dv-m68hc11spi.c
+++ b/sim/m68hc11/dv-m68hc11spi.c
@@ -1,6 +1,6 @@
 /*  dv-m68hc11spi.c -- Simulation of the 68HC11 SPI
-    Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
-    Written by Stephane Carrez (stcarrez@nerim.fr)
+    Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+    Written by Stephane Carrez (stcarrez@worldnet.fr)
     (From a driver model Contributed by Cygnus Solutions.)
 
     This file is part of the program GDB, the GNU debugger.
@@ -358,11 +358,11 @@
                      controller->tx_bit + 1);
       t = hw_event_remain_time (me, controller->spi_event);
       sim_io_printf (sd, "  SPI current bit-cycle finished in %s\n",
-		     cycle_to_string (cpu, t, PRINT_TIME | PRINT_CYCLE));
+		     cycle_to_string (cpu, t));
 
       t += (controller->tx_bit + 1) * 2 * controller->clock;
       sim_io_printf (sd, "  SPI operation finished in %s\n",
-		     cycle_to_string (cpu, t, PRINT_TIME | PRINT_CYCLE));
+		     cycle_to_string (cpu, t));
     }
 }
 
diff --git a/sim/m68hc11/dv-m68hc11tim.c b/sim/m68hc11/dv-m68hc11tim.c
index 0456f67..3edcac0 100644
--- a/sim/m68hc11/dv-m68hc11tim.c
+++ b/sim/m68hc11/dv-m68hc11tim.c
@@ -1,6 +1,6 @@
 /*  dv-m68hc11tim.c -- Simulation of the 68HC11 timer devices.
-    Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
-    Written by Stephane Carrez (stcarrez@nerim.fr)
+    Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+    Written by Stephane Carrez (stcarrez@worldnet.fr)
     (From a driver model Contributed by Cygnus Solutions.)
 
     This file is part of the program GDB, the GNU debugger.
@@ -25,7 +25,7 @@
 #include "sim-main.h"
 #include "hw-main.h"
 #include "sim-assert.h"
-#include <limits.h>
+
 
 /* DEVICE
 
@@ -250,9 +250,7 @@
   unsigned mask;
   unsigned flags;
   unsigned long tcnt_internal;
-  unsigned long tcnt, tcnt_prev;
-  signed64 tcnt_insn_end;
-  signed64 tcnt_insn_start;
+  unsigned long tcnt;
   int i;
   sim_events *events;
   
@@ -291,8 +289,11 @@
       break;
 
     case OVERFLOW_EVENT:
-      /* Compute the 68HC11 internal free running counter.  */
-      tcnt_internal = (cpu->cpu_absolute_cycle - controller->tcnt_adjust);
+      /* Compute the 68HC11 internal free running counter.
+         There may be 'nr_ticks_to_process' pending cycles that are
+         not (yet) taken into account by 'sim_events_time'.  */
+      tcnt_internal = sim_events_time (sd) - controller->tcnt_adjust;
+      tcnt_internal += events->nr_ticks_to_process;
 
       /* We must take into account the prescaler that comes
          before the counter (it's a power of 2).  */
@@ -315,22 +316,22 @@
       break;
 
     case COMPARE_EVENT:
-      /* Compute value of TCNT register (64-bit precision) at beginning
-         and end of instruction.  */
-      tcnt_insn_end = (cpu->cpu_absolute_cycle - controller->tcnt_adjust);
-      tcnt_insn_start = (tcnt_insn_end - cpu->cpu_current_cycle);
+      eventp = &controller->cmp_timer_event;
 
-      /* TCNT value at beginning of current instruction.  */
-      tcnt_prev = (tcnt_insn_start / controller->clock_prescaler) & 0x0ffff;
-
-      /* TCNT value at end of current instruction.  */
-      tcnt = (tcnt_insn_end / controller->clock_prescaler) & 0x0ffff;
+      /* Compute the 68HC11 internal free running counter.
+         There may be 'nr_ticks_to_process' pending cycles that are
+         not (yet) taken into account by 'sim_events_time'.  */
+      events = STATE_EVENTS (sd);
+      tcnt_internal = sim_events_time (sd) - controller->tcnt_adjust;
+      tcnt_internal += events->nr_ticks_to_process;
 
       /* We must take into account the prescaler that comes
          before the counter (it's a power of 2).  */
-      tcnt_internal = tcnt_insn_end;
       tcnt_internal &= 0x0ffff * controller->clock_prescaler;
 
+      /* Get current visible TCNT register value.  */
+      tcnt = tcnt_internal / controller->clock_prescaler;
+      
       flags = cpu->ios[M6811_TMSK1];
       mask  = 0x80;
       delay = 65536 * controller->clock_prescaler;
@@ -341,28 +342,12 @@
       for (i = M6811_TOC1; i <= M6811_TOC5; i += 2, mask >>= 1)
         {
           unsigned long compare;
-
-          compare = (cpu->ios[i] << 8) + cpu->ios[i + 1];
-
-          /* See if compare is reached; handle wrap arround.  */
-          if ((compare >= tcnt_prev && compare <= tcnt && tcnt_prev < tcnt)
-              || (compare >= tcnt_prev && tcnt_prev > tcnt)
-              || (compare < tcnt && tcnt_prev > tcnt))
+          
+          compare = (cpu->ios[i] << 8) + cpu->ios[i+1];
+          if (compare == tcnt && (flags & mask))
             {
-              unsigned dt;
-
-              if (compare > tcnt)
-                dt = 0x10000 - compare - tcnt;
-              else
-                dt = tcnt - compare;
-
               cpu->ios[M6811_TFLG1] |= mask;
-
-              /* Raise interrupt now at the correct CPU cycle so that
-                 we can find the interrupt latency.  */
-              cpu->cpu_absolute_cycle -= dt;
-              interrupts_update_pending (&cpu->cpu_interrupts);
-              cpu->cpu_absolute_cycle += dt;
+              check_interrupt++;
             }
 
           /* Compute how many times for the next match.
@@ -374,18 +359,14 @@
           else
             compare = compare - tcnt_internal
               + 65536 * controller->clock_prescaler;
-
+          
           if (compare < delay)
             delay = compare;
         }
 
       /* Deactivate the compare timer if no output compare is enabled.  */
-      if ((flags & 0xF8) == 0)
+      if ((flags & 0xF0) == 0)
         delay = 0;
-      else
-        delay += events->nr_ticks_to_process;
-
-      eventp = &controller->cmp_timer_event;
       break;
 
     default:
@@ -413,30 +394,6 @@
 
 /* Descriptions of the Timer I/O ports.  These descriptions are only used to
    give information of the Timer device under GDB.  */
-io_reg_desc tmsk1_desc[] = {
-  { M6811_OC1I,  "OC1I ", "Timer Output Compare 1 Interrupt Enable" },
-  { M6811_OC2I,  "OC2I ", "Timer Output Compare 2 Interrupt Enable" },
-  { M6811_OC3I,  "OC3I ", "Timer Output Compare 3 Interrupt Enable" },
-  { M6811_OC4I,  "OC4I ", "Timer Output Compare 4 Interrupt Enable" },
-  { M6811_OC5I,  "OC5I ", "Timer Input Capture 4 / Output Compare 5 Enable" },
-  { M6811_IC1I,  "IC1I ", "Timer Input Capture 1 Interrupt Enable" },
-  { M6811_IC2I,  "IC2I ", "Timer Input Capture 2 Interrupt Enable" },
-  { M6811_IC3I,  "IC3I ", "Timer Input Capture 3 Interrupt Enable" },
-  { 0, 0, 0 }
-};
-
-io_reg_desc tflg1_desc[] = {
-  { M6811_OC1F,  "OC1F ", "Timer Output Compare 1 Interrupt Flag" },
-  { M6811_OC2F,  "OC2F ", "Timer Output Compare 2 Interrupt Flag" },
-  { M6811_OC3F,  "OC3F ", "Timer Output Compare 3 Interrupt Flag" },
-  { M6811_OC4F,  "OC4F ", "Timer Output Compare 4 Interrupt Flag" },
-  { M6811_OC5F,  "OC5F ", "Timer Input Capture 4 / Output Compare 5 Flag" },
-  { M6811_IC1F,  "IC1F ", "Timer Input Capture 1 Interrupt Flag" },
-  { M6811_IC2F,  "IC2F ", "Timer Input Capture 2 Interrupt Flag" },
-  { M6811_IC3F,  "IC3F ", "Timer Input Capture 3 Interrupt Flag" },
-  { 0, 0, 0 }
-};
-
 io_reg_desc tmsk2_desc[] = {
   { M6811_TOI,    "TOI   ", "Timer Overflow Interrupt Enable" },
   { M6811_RTII,   "RTII  ", "RTI Interrupt Enable" },
@@ -476,35 +433,22 @@
 }
 
 const char*
-cycle_to_string (sim_cpu *cpu, signed64 t, int flags)
+cycle_to_string (sim_cpu *cpu, signed64 t)
 {
-  char time_buf[32];
-  char cycle_buf[32];
+  double dt;
+  char tbuf[32];
   static char buf[64];
 
-  time_buf[0] = 0;
-  cycle_buf[0] = 0;
-  if (flags & PRINT_TIME)
-    {
-      double dt;
-
-      dt = to_realtime (cpu, t);
-      if (dt < 0.001)
-        sprintf (time_buf, " (%3.1f us)", dt * 1000000.0);
-      else if (dt < 1.0)
-        sprintf (time_buf, " (%3.1f ms)", dt * 1000.0);
-      else
-        sprintf (time_buf, " (%3.1f s)", dt);
-    }
-
-  if (flags & PRINT_CYCLE)
-    sprintf (cycle_buf, " cycle%s",
-             (t > 1 ? "s" : ""));
-
-  if (t < LONG_MAX)
-    sprintf (buf, "%9lu%s%s", (unsigned long) t, cycle_buf, time_buf);
+  dt = to_realtime (cpu, t);
+  if (dt < 0.001)
+    sprintf (tbuf, "(%3.1f us)", dt * 1000000.0);
+  else if (dt < 1.0)
+    sprintf (tbuf, "(%3.1f ms)", dt * 1000.0);
   else
-    sprintf (buf, "%llu%s%s", t, cycle_buf, time_buf);
+    sprintf (tbuf, "(%3.1f s)", dt);
+
+  sprintf (buf, "%llu cycle%s %10.10s", t,
+             (t > 1 ? "s" : ""), tbuf);
   return buf;
 }
 
@@ -528,7 +472,7 @@
 
       t  = hw_event_remain_time (me, event);
       sim_io_printf (sd, "  Next %s interrupt in %s\n",
-                     name, cycle_to_string (cpu, t, PRINT_TIME | PRINT_CYCLE));
+                     name, cycle_to_string (cpu, t));
     }
 }
 
@@ -540,7 +484,6 @@
   sim_cpu *cpu;
   struct m68hc11tim *controller;
   uint8 val;
-  uint16 val16;
   
   sd = hw_system (me);
   cpu = STATE_CPU (sd, 0);
@@ -550,56 +493,6 @@
 
   base = cpu_get_io_base (cpu);
 
-  /* Info for TIC1 */
-  val16  = (cpu->ios[M6811_TIC1_H] << 8) + cpu->ios[M6811_TIC1_L];
-  print_io_word (sd, "TIC1 ", 0, val16, base + M6811_TIC1);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TIC2 */
-  val16  = (cpu->ios[M6811_TIC2_H] << 8) + cpu->ios[M6811_TIC2_L];
-  print_io_word (sd, "TIC2 ", 0, val16, base + M6811_TIC2);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TIC3 */
-  val16  = (cpu->ios[M6811_TIC3_H] << 8) + cpu->ios[M6811_TIC3_L];
-  print_io_word (sd, "TIC3 ", 0, val16, base + M6811_TIC3);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TOC1 */
-  val16  = (cpu->ios[M6811_TOC1_H] << 8) + cpu->ios[M6811_TOC1_L];
-  print_io_word (sd, "TOC1 ", 0, val16, base + M6811_TOC1);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TOC2 */
-  val16  = (cpu->ios[M6811_TOC2_H] << 8) + cpu->ios[M6811_TOC2_L];
-  print_io_word (sd, "TOC2 ", 0, val16, base + M6811_TOC2);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TOC3 */
-  val16  = (cpu->ios[M6811_TOC3_H] << 8) + cpu->ios[M6811_TOC3_L];
-  print_io_word (sd, "TOC3 ", 0, val16, base + M6811_TOC3);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TOC4 */
-  val16  = (cpu->ios[M6811_TOC4_H] << 8) + cpu->ios[M6811_TOC4_L];
-  print_io_word (sd, "TOC4 ", 0, val16, base + M6811_TOC4);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TOC5 */
-  val16  = (cpu->ios[M6811_TOC5_H] << 8) + cpu->ios[M6811_TOC5_L];
-  print_io_word (sd, "TOC5 ", 0, val16, base + M6811_TOC5);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TMSK1 */
-  val  = cpu->ios[M6811_TMSK1];
-  print_io_byte (sd, "TMSK1 ", tmsk1_desc, val, base + M6811_TMSK1);
-  sim_io_printf (sd, "\n");
-
-  /* Info for TFLG1 */
-  val = cpu->ios[M6811_TFLG1];
-  print_io_byte (sd, "TFLG1", tflg1_desc, val, base + M6811_TFLG1);
-  sim_io_printf (sd, "\n");
-
   val  = cpu->ios[M6811_TMSK2];
   print_io_byte (sd, "TMSK2 ", tmsk2_desc, val, base + M6811_TMSK2);
   sim_io_printf (sd, "\n");
@@ -675,7 +568,7 @@
           break;
         }
       *((unsigned8*) dest) = val;
-      dest = (char*) dest + 1;
+      dest++;
       base++;
       nr_bytes--;
       cnt++;
@@ -786,7 +679,6 @@
         case M6811_TMSK1:
           cpu->ios[M6811_TMSK1] = val;
           interrupts_update_pending (&cpu->cpu_interrupts);
-          reset_compare = 1;
           break;
 
         case M6811_TFLG1:
@@ -803,7 +695,7 @@
           cpu->ios[base] = val;
           reset_compare = 1;
           break;
-
+      
         case M6811_TCTL1:
         case M6811_TCTL2:
           cpu->ios[base] = val;
@@ -817,7 +709,7 @@
       base++;
       nr_bytes--;
       cnt++;
-      source = (char*) source + 1;
+      source++;
     }
 
   /* Re-compute the next timer compare event.  */
diff --git a/sim/m68hc11/interp.c b/sim/m68hc11/interp.c
index b80bc94..3da382d 100644
--- a/sim/m68hc11/interp.c
+++ b/sim/m68hc11/interp.c
@@ -1,5 +1,5 @@
 /* interp.c -- Simulator for Motorola 68HC11/68HC12
-   Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Written by Stephane Carrez (stcarrez@nerim.fr)
 
 This file is part of GDB, the GNU debugger.
@@ -25,7 +25,6 @@
 #include "hw-tree.h"
 #include "hw-device.h"
 #include "hw-ports.h"
-#include "elf32-m68hc1x.h"
 
 #ifndef MONITOR_BASE
 # define MONITOR_BASE (0x0C000)
@@ -195,17 +194,8 @@
 	  sim_do_commandf (sd, "memory region 0x000@%d,0x8000",
 			   M6811_RAM_LEVEL);
 	  sim_hw_parse (sd, "/m68hc11/reg 0x1000 0x03F");
-          if (cpu->bank_start < cpu->bank_end)
-            {
-              sim_do_commandf (sd, "memory region 0x%lx@%d,0x100000",
-                               cpu->bank_virtual, M6811_RAM_LEVEL);
-              sim_hw_parse (sd, "/m68hc11/use_bank 1");
-            }
 	}
-      if (cpu->cpu_start_mode)
-        {
-          sim_hw_parse (sd, "/m68hc11/mode %s", cpu->cpu_start_mode);
-        }
+
       if (hw_tree_find_property (device_tree, "/m68hc11/m68hc11sio/reg") == 0)
 	{
 	  sim_hw_parse (sd, "/m68hc11/m68hc11sio/reg 0x2b 0x5");
@@ -252,16 +242,14 @@
 	{
 	  /* Allocate core external memory.  */
 	  sim_do_commandf (sd, "memory region 0x%lx@%d,0x%lx",
-			   0x8000, M6811_RAM_LEVEL, 0x8000);
+			   0xC000, M6811_RAM_LEVEL, 0x4000);
 	  sim_do_commandf (sd, "memory region 0x000@%d,0x8000",
 			   M6811_RAM_LEVEL);
-          if (cpu->bank_start < cpu->bank_end)
-            {
-              sim_do_commandf (sd, "memory region 0x%lx@%d,0x100000",
-                               cpu->bank_virtual, M6811_RAM_LEVEL);
-              sim_hw_parse (sd, "/m68hc12/use_bank 1");
-            }
+	  sim_do_commandf (sd, "memory region 0x01000000@%d,0x100000",
+			   M6811_RAM_LEVEL);
+
 	  sim_hw_parse (sd, "/m68hc12/reg 0x0 0x3FF");
+	  sim_hw_parse (sd, "/m68hc12/use_bank 1");
 	}
 
       if (!hw_tree_find_property (device_tree, "/m68hc12/m68hc12sio@1/reg"))
@@ -306,77 +294,19 @@
   return 1;
 }
 
-/* Get the memory bank parameters by looking at the global symbols
-   defined by the linker.  */
 static int
-sim_get_bank_parameters (SIM_DESC sd, bfd* abfd)
+sim_prepare_for_program (SIM_DESC sd, struct bfd* abfd)
 {
   sim_cpu *cpu;
-  long symsize;
-  long symbol_count, i;
-  unsigned size;
-  asymbol** asymbols;
-  asymbol** current;
 
   cpu = STATE_CPU (sd, 0);
 
-  symsize = bfd_get_symtab_upper_bound (abfd);
-  if (symsize < 0)
-    {
-      sim_io_eprintf (sd, "Cannot read symbols of program");
-      return 0;
-    }
-  asymbols = (asymbol **) xmalloc (symsize);
-  symbol_count = bfd_canonicalize_symtab (abfd, asymbols);
-  if (symbol_count < 0)
-    {
-      sim_io_eprintf (sd, "Cannot read symbols of program");
-      return 0;
-    }
-
-  size = 0;
-  for (i = 0, current = asymbols; i < symbol_count; i++, current++)
-    {
-      const char* name = bfd_asymbol_name (*current);
-
-      if (strcmp (name, BFD_M68HC11_BANK_START_NAME) == 0)
-        {
-          cpu->bank_start = bfd_asymbol_value (*current);
-        }
-      else if (strcmp (name, BFD_M68HC11_BANK_SIZE_NAME) == 0)
-        {
-          size = bfd_asymbol_value (*current);
-        }
-      else if (strcmp (name, BFD_M68HC11_BANK_VIRTUAL_NAME) == 0)
-        {
-          cpu->bank_virtual = bfd_asymbol_value (*current);
-        }
-    }
-  free (asymbols);
-
-  cpu->bank_end = cpu->bank_start + size;
-  cpu->bank_shift = 0;
-  for (; size > 1; size >>= 1)
-    cpu->bank_shift++;
-
-  return 0;
-}
-
-static int
-sim_prepare_for_program (SIM_DESC sd, bfd* abfd)
-{
-  sim_cpu *cpu;
-  int elf_flags = 0;
-
-  cpu = STATE_CPU (sd, 0);
+  if (!sim_hw_configure (sd))
+    return SIM_RC_FAIL;
 
   if (abfd != NULL)
     {
       asection *s;
-
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-        elf_flags = elf_elfheader (abfd)->e_flags;
-
       cpu->cpu_elf_start = bfd_get_start_address (abfd);
       /* See if any section sets the reset address */
       cpu->cpu_use_elf_start = 1;
@@ -401,17 +331,8 @@
                 }
             }
         }
-
-      if (elf_flags & E_M68HC12_BANKS)
-        {
-          if (sim_get_bank_parameters (sd, abfd) != 0)
-            sim_io_eprintf (sd, "Memory bank parameters are not initialized\n");
-        }
     }
 
-  if (!sim_hw_configure (sd))
-    return SIM_RC_FAIL;
-
   /* reset all state information */
   sim_board_reset (sd);
 
@@ -420,7 +341,7 @@
 
 SIM_DESC
 sim_open (SIM_OPEN_KIND kind, host_callback *callback,
-          bfd *abfd, char **argv)
+          struct bfd *abfd, char **argv)
 {
   SIM_DESC sd;
   sim_cpu *cpu;
@@ -477,11 +398,8 @@
       free_state (sd);
       return 0;
     }
-  if (sim_prepare_for_program (sd, abfd) != SIM_RC_OK)
-    {
-      free_state (sd);
-      return 0;
-    }      
+
+  sim_hw_configure (sd);
 
   /* Fudge our descriptor.  */
   return sd;
diff --git a/sim/m68hc11/interrupts.c b/sim/m68hc11/interrupts.c
index b466d69..5844c74 100644
--- a/sim/m68hc11/interrupts.c
+++ b/sim/m68hc11/interrupts.c
@@ -1,6 +1,6 @@
 /* interrupts.c -- 68HC11 Interrupts Emulation
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-   Written by Stephane Carrez (stcarrez@nerim.fr)
+   Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Written by Stephane Carrez (stcarrez@worldnet.fr)
 
 This file is part of GDB, GAS, and the GNU binutils.
 
@@ -166,20 +166,6 @@
 
   memset (interrupts->interrupts, 0,
           sizeof (interrupts->interrupts));
-
-  /* In bootstrap mode, initialize the vector table to point
-     to the RAM location.  */
-  if (interrupts->cpu->cpu_mode == M6811_SMOD)
-    {
-      bfd_vma addr = interrupts->vectors_addr;
-      uint16 vector = 0x0100 - 3 * (M6811_INT_NUMBER - 1);
-      for (i = 0; i < M6811_INT_NUMBER; i++)
-        {
-          memory_write16 (interrupts->cpu, addr, vector);
-          addr += 2;
-          vector += 3;
-        }
-    }
 }
 
 static int
@@ -531,7 +517,7 @@
 void
 interrupts_info (SIM_DESC sd, struct interrupts *interrupts)
 {
-  signed64 t, prev_interrupt;
+  signed64 t;
   int i;
   
   sim_io_printf (sd, "Interrupts Info:\n");
@@ -547,25 +533,21 @@
         interrupts->max_mask_cycles = t;
 
       sim_io_printf (sd, "  Current interrupts masked sequence:   %s\n",
-                     cycle_to_string (interrupts->cpu, t,
-                                      PRINT_TIME | PRINT_CYCLE));
+                     cycle_to_string (interrupts->cpu, t));
     }
   t = interrupts->min_mask_cycles == CYCLES_MAX ?
     interrupts->max_mask_cycles :
     interrupts->min_mask_cycles;
   sim_io_printf (sd, "  Shortest interrupts masked sequence:  %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
 
   t = interrupts->max_mask_cycles;
   sim_io_printf (sd, "  Longest interrupts masked sequence:   %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
 
   t = interrupts->last_mask_cycles;
   sim_io_printf (sd, "  Last interrupts masked sequence:      %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
   
   if (interrupts->xirq_start_mask_cycle >= 0)
     {
@@ -576,26 +558,22 @@
         interrupts->xirq_max_mask_cycles = t;
 
       sim_io_printf (sd, "  XIRQ Current interrupts masked sequence: %s\n",
-                     cycle_to_string (interrupts->cpu, t,
-                                      PRINT_TIME | PRINT_CYCLE));
+                     cycle_to_string (interrupts->cpu, t));
     }
 
   t = interrupts->xirq_min_mask_cycles == CYCLES_MAX ?
     interrupts->xirq_max_mask_cycles :
     interrupts->xirq_min_mask_cycles;
   sim_io_printf (sd, "  XIRQ Min interrupts masked sequence:  %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
 
   t = interrupts->xirq_max_mask_cycles;
   sim_io_printf (sd, "  XIRQ Max interrupts masked sequence:  %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
 
   t = interrupts->xirq_last_mask_cycles;
   sim_io_printf (sd, "  XIRQ Last interrupts masked sequence: %s\n",
-                 cycle_to_string (interrupts->cpu, t,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (interrupts->cpu, t));
 
   if (interrupts->pending_mask)
     {
@@ -612,9 +590,6 @@
       sim_io_printf (sd, "\n");
     }
 
-  prev_interrupt = 0;
-  sim_io_printf (sd, "N  Interrupt     Cycle Taken         Latency"
-                 "   Delta between interrupts\n");
   for (i = 0; i < MAX_INT_HISTORY; i++)
     {
       int which;
@@ -629,18 +604,10 @@
         break;
 
       dt = h->taken_cycle - h->raised_cycle;
-      sim_io_printf (sd, "%2d %-9.9s %15.15s ", i,
+      sim_io_printf (sd, "%2d %-10.10s %30.30s ", i,
                      interrupt_names[h->type],
-                     cycle_to_string (interrupts->cpu, h->taken_cycle, 0));
-      sim_io_printf (sd, "%15.15s",
-                     cycle_to_string (interrupts->cpu, dt, 0));
-      if (prev_interrupt)
-        {
-          dt = prev_interrupt - h->taken_cycle;
-          sim_io_printf (sd, " %s",
-                         cycle_to_string (interrupts->cpu, dt, PRINT_TIME));
-        }
-      sim_io_printf (sd, "\n");
-      prev_interrupt = h->taken_cycle;
+                     cycle_to_string (interrupts->cpu, h->taken_cycle));
+      sim_io_printf (sd, "%s\n",
+                     cycle_to_string (interrupts->cpu, dt));
     }
 }
diff --git a/sim/m68hc11/m68hc11_sim.c b/sim/m68hc11/m68hc11_sim.c
index 444147b..fe5985f 100644
--- a/sim/m68hc11/m68hc11_sim.c
+++ b/sim/m68hc11/m68hc11_sim.c
@@ -1,5 +1,5 @@
 /* m6811_cpu.c -- 68HC11&68HC12 CPU Emulation
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Written by Stephane Carrez (stcarrez@nerim.fr)
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -27,7 +27,6 @@
   OPTION_CPU_RESET = OPTION_START,
   OPTION_EMUL_OS,
   OPTION_CPU_CONFIG,
-  OPTION_CPU_BOOTSTRAP,
   OPTION_CPU_MODE
 };
 
@@ -47,10 +46,6 @@
       '\0', NULL, "Specify the initial CPU configuration register",
       cpu_option_handler },
 
-  { {"bootstrap", no_argument, NULL, OPTION_CPU_BOOTSTRAP },
-      '\0', NULL, "Start the processing in bootstrap mode",
-      cpu_option_handler },
-
   { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL }
 };
 
@@ -82,11 +77,7 @@
       else
         cpu->cpu_use_local_config = 0;
       break;
-
-    case OPTION_CPU_BOOTSTRAP:
-       cpu->cpu_start_mode = "bootstrap";
-       break;
-
+      
     case OPTION_CPU_MODE:
       break;
     }
@@ -473,9 +464,6 @@
   cpu->cpu_use_elf_start = 0;
   cpu->cpu_elf_start     = 0;
   cpu->cpu_use_local_config = 0;
-  cpu->bank_start = 0;
-  cpu->bank_end   = 0;
-  cpu->bank_shift = 0;
   cpu->cpu_config        = M6811_NOSEC | M6811_NOCOP | M6811_ROMON |
     M6811_EEON;
   interrupts_initialize (sd, cpu);
@@ -594,15 +582,6 @@
 }
 
 void
-print_io_word (SIM_DESC sd, const char *name, io_reg_desc *desc,
-	       uint16 val, uint16 addr)
-{
-  sim_io_printf (sd, "  %-9.9s @ 0x%04x 0x%04x ", name, addr, val);
-  if (desc)
-    print_io_reg_desc (sd, desc, val, 0);
-}
-
-void
 cpu_ccr_update_tst8 (sim_cpu *proc, uint8 val)
 {
   cpu_set_ccr_V (proc, 0);
@@ -1058,8 +1037,7 @@
 {
   sim_io_printf (sd, "CPU info:\n");
   sim_io_printf (sd, "  Absolute cycle: %s\n",
-                 cycle_to_string (cpu, cpu->cpu_absolute_cycle,
-                                  PRINT_TIME | PRINT_CYCLE));
+                 cycle_to_string (cpu, cpu->cpu_absolute_cycle));
   
   sim_io_printf (sd, "  Syscall emulation: %s\n",
                  cpu->cpu_emul_syscall ? "yes, via 0xcd <n>" : "no");
diff --git a/sim/m68hc11/sim-main.h b/sim/m68hc11/sim-main.h
index a4bd3a6..c8933a0 100644
--- a/sim/m68hc11/sim-main.h
+++ b/sim/m68hc11/sim-main.h
@@ -1,5 +1,5 @@
 /* sim-main.h -- Simulator for Motorola 68HC11 & 68HC12
-   Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Written by Stephane Carrez (stcarrez@nerim.fr)
 
 This file is part of GDB, the GNU debugger.
@@ -79,8 +79,8 @@
 #define A_REGNUM        5
 #define B_REGNUM        6
 #define PSW_REGNUM 	7
-#define PAGE_REGNUM     8
-#define Z_REGNUM        9
+#define Z_REGNUM        8
+#define PAGE_REGNUM     9
 
 typedef struct m6811_regs {
     unsigned short      d;
@@ -108,8 +108,6 @@
 			       int mode);
 extern void print_io_byte (SIM_DESC sd, const char *name,
 			   io_reg_desc *desc, uint8 val, uint16 addr);
-extern void print_io_word (SIM_DESC sd, const char *name,
-			   io_reg_desc *desc, uint16 val, uint16 addr);
 
 
 /* List of special 68HC11&68HC12 instructions that are not handled by the
@@ -200,7 +198,6 @@
 
   /* The mode in which the CPU is configured (MODA and MODB pins).  */
   unsigned int          cpu_mode;
-  const char*           cpu_start_mode;
 
   /* The cpu being configured.  */
   enum cpu_type         cpu_type;
@@ -211,14 +208,6 @@
   
   uint8                 ios[MAX_PORTS];
 
-  /* Memory bank parameters which describe how the memory bank window
-     is mapped in memory and how to convert it in virtual address.  */
-  uint16                bank_start;
-  uint16                bank_end;
-  address_word          bank_virtual;
-  unsigned              bank_shift;
-  
-
   struct hw            *hw_cpu;
 
   /* ... base type ... */
@@ -246,7 +235,7 @@
 #define cpu_get_sp(PROC)           ((PROC)->cpu_regs.sp)
 #define cpu_get_a(PROC)            ((PROC->cpu_regs.d >> 8) & 0x0FF)
 #define cpu_get_b(PROC)            ((PROC->cpu_regs.d) & 0x0FF)
-#define cpu_get_page(PROC)         ((PROC)->cpu_regs.page)
+#define cpu_get_page(PROC)         (PROC->cpu_regs.page)
 
 /* 68HC12 specific and Motorola internal registers.  */
 #define cpu_get_tmp3(PROC)         (0)
@@ -255,7 +244,7 @@
 #define cpu_set_d(PROC,VAL)        (((PROC)->cpu_regs.d) = (VAL))
 #define cpu_set_x(PROC,VAL)        (((PROC)->cpu_regs.ix) = (VAL))
 #define cpu_set_y(PROC,VAL)        (((PROC)->cpu_regs.iy) = (VAL))
-#define cpu_set_page(PROC,VAL)     (((PROC)->cpu_regs.page) = (VAL))
+#define cpu_set_page(PROC,VAL)     ((PROC->cpu_regs.page) = (VAL))
 
 /* 68HC12 specific and Motorola internal registers.  */
 #define cpu_set_tmp3(PROC,VAL)     (0)
@@ -306,10 +295,9 @@
 inline address_word
 phys_to_virt (sim_cpu *cpu, address_word addr)
 {
-  if (addr >= cpu->bank_start && addr < cpu->bank_end)
-    return ((address_word) (addr - cpu->bank_start)
-            + (((address_word) cpu->cpu_regs.page) << cpu->bank_shift)
-            + cpu->bank_virtual);
+  if (addr >= 0x8000 && addr < 0xc000)
+    return ((address_word) (addr) - 0x8000)
+      + (((address_word) cpu->cpu_regs.page) << 14) + 0x01000000;
   else
     return (address_word) (addr);
 }
@@ -592,9 +580,7 @@
 extern void sim_set_profile_size (int n);
 extern void sim_board_reset (SIM_DESC sd);
 
-#define PRINT_TIME  0x01
-#define PRINT_CYCLE 0x02
-extern const char *cycle_to_string (sim_cpu *cpu, signed64 t, int flags);
+extern const char *cycle_to_string (sim_cpu *cpu, signed64 t);
 
 #endif
 
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index 7ab1394..b34adb5 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,13 +1,3 @@
-2003-08-11  Shrinivas Atre  <shrinivasa@KPITCummins.com>	
-	* sim/sh/gencode.c ( tab[] ): Addition of MAC.L handler and 
-	correction for MAC.W handler
-	* sim/sh/interp.c ( macl ): New Function. Implementation of 
-	MAC.L handler.
-
-2003-08-07  Michael Snyder  <msnyder@redhat.com>
-
-	* gencode.c (expand_ppi_code): Comment spelling fix.
-
 2003-07-25  Michael Snyder  <msnyder@redhat.com>
 
 	* gencode.c (pshl): Change < to <= (shift by 16 is allowed).
diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index a4a1c2d..d078fc6 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -580,11 +580,12 @@
   },
 
   { "nm", "nm", "mac.l @<REG_M>+,@<REG_N>+", "0000nnnnmmmm1111",
-    "macl(&R0,memory,n,m);",
+    "trap (255, R0, PC, memory, maskl, maskw, endianw);",
+    "/* FIXME: mac.l support */",
   },
 
   { "nm", "nm", "mac.w @<REG_M>+,@<REG_N>+", "0100nnnnmmmm1111",
-    "macw(&R0,memory,n,m,endianw);",
+    "macw(R0,memory,n,m,endianw);",
   },
 
   { "n", "", "mov #<imm>,<REG_N>", "1110nnnni8*1....",
@@ -2323,7 +2324,7 @@
 
 static int ppi_index;
 
-/* Take a ppi code, expand all varying fields in it and fill all the
+/* Take an ppi code, expand all varying fields in it and fill all the
    right entries in 'table' with the opcode index.  */
 
 static void
diff --git a/sim/sh/interp.c b/sim/sh/interp.c
index 91899f4..887b7a6 100644
--- a/sim/sh/interp.c
+++ b/sim/sh/interp.c
@@ -169,7 +169,6 @@
 
 #if 1
 static int maskw = 0;
-static int maskl = 0;
 #endif
 
 static SIM_OPEN_KIND sim_kind;
@@ -652,7 +651,6 @@
 
 #define RUWAT(x)  (RWAT(x) & 0xffff)
 #define RSWAT(x)  ((short)(RWAT(x)))
-#define RSLAT(x)  ((long)(RLAT(x)))
 #define RSBAT(x)  (SEXT(RBAT(x)))
 
 #define RDAT(x, n) (do_rdat (memory, (x), (n), (maskl)))
@@ -1350,56 +1348,6 @@
   MACL = sum;
 }
 
-static void
-macl (regs, memory, n, m)
-     int *regs;
-     unsigned char *memory;
-     int m, n;
-{
-  long tempm, tempn;
-  long prod, macl, mach, sum;
-  long long ans,ansl,ansh,t;
-  unsigned long long high,low,combine;
-  union mac64
-  {
-    long m[2]; /* mach and macl*/
-    long long m64; /* 64 bit MAC */
-  }mac64;
-
-  tempm = RSLAT(regs[m]);
-  regs[m] += 4;
-
-  tempn = RSLAT(regs[n]);
-  regs[n] += 4;
-
-  mach = MACH;
-  macl = MACL;
-
-  mac64.m[0] = macl;
-  mac64.m[1] = mach;
-
-  ans = (long long)tempm * (long long)tempn; /* Multiply 32bit * 32bit */
-
-  mac64.m64 += ans; /* Accumulate   64bit + 64 bit */
-
-  macl = mac64.m[0];
-  mach = mac64.m[1];
-
-  if (S)  /* Store only 48 bits of the result */
-    {
-      if (mach < 0) /* Result is negative */
-        {
-          mach = mach & 0x0000ffff; /* Mask higher 16 bits */
-          mach |= 0xffff8000; /* Sign extend higher 16 bits */
-        }
-      else
-        mach = mach & 0x00007fff; /* Postive Result */
-    }
-
-  MACL = macl;
-  MACH = mach;
-}
-
 static struct loop_bounds
 get_loop_bounds (rs, re, memory, mem_end, maskw, endianw)
      int rs, re;
diff --git a/sim/testsuite/sim/sh/ChangeLog b/sim/testsuite/sim/sh/ChangeLog
index 7df64f7..832eac4 100644
--- a/sim/testsuite/sim/sh/ChangeLog
+++ b/sim/testsuite/sim/sh/ChangeLog
@@ -1,9 +1,3 @@
-2003-08-11  Michael Snyder  <msnyder@redhat.com>
-
-	* macl.s: New file.
-	* macw.s: New file.
-	* allinsn.exp: Add new tests for mac.w and mac.l.
-
 2003-07-25  Michael Snyder  <msnyder@redhat.com>
 
 	* pshai.s, pshar.s, pshli.s, pshlr.s: New files.
diff --git a/sim/testsuite/sim/sh/allinsn.exp b/sim/testsuite/sim/sh/allinsn.exp
index 7192e81..8664af0 100644
--- a/sim/testsuite/sim/sh/allinsn.exp
+++ b/sim/testsuite/sim/sh/allinsn.exp
@@ -24,8 +24,6 @@
     run_sim_test fsqrt.s  sh
     run_sim_test fsub.s   sh
     run_sim_test ftrc.s   sh
-    run_sim_test macl.s   sh
-    run_sim_test macw.s   sh
     run_sim_test paddc.s  shdsp
     run_sim_test padd.s   shdsp
     run_sim_test pand.s   shdsp
diff --git a/sim/testsuite/sim/sh/macl.s b/sim/testsuite/sim/sh/macl.s
deleted file mode 100644
index 39b3b7d..0000000
--- a/sim/testsuite/sim/sh/macl.s
+++ /dev/null
@@ -1,54 +0,0 @@
-# sh testcase for mac.l 
-# mach: all
-# as(sh):	-defsym sim_cpu=0
-# as(shdsp):	-defsym sim_cpu=1 -dsp 
-
-	.include "testutils.inc"
-
-	start
-	# force S-bit clear
-	clrs
-
-init:
-	# Prime {MACL, MACH} to #1.
-	mov #1, r0
-	dmulu.l r0, r0
-
-	# Set up addresses.
-	mov.l	pfour00, r0	! 85
-	mov.l	pfour12, r1	! 17
-
-test:
-	mac.l @r0+, @r1+
-
-check:
-	# Check result.
-	assert_sreg	0, mach
-	assert_sreg	85*17+1, macl
-
-	# Ensure post-increment occurred.
-	assertreg0	four00+4
-	assertreg	four12+4, r1
-
-doubleinc:
-	mov.l	pfour00, r0
-	mac.l	@r0+, @r0+
-	assertreg0 four00+8
-
-
-	pass
-	exit 0
-
-	.align 1
-four00:
-	.long	85
-	.long	2
-four12:
-	.long	17
-	.long	3
-
-	.align 2
-pfour00:
-	.long four00
-pfour12:
-	.long four12
diff --git a/sim/testsuite/sim/sh/macw.s b/sim/testsuite/sim/sh/macw.s
deleted file mode 100644
index 7e3ebc0..0000000
--- a/sim/testsuite/sim/sh/macw.s
+++ /dev/null
@@ -1,56 +0,0 @@
-# sh testcase for mac.w 
-# mach: all
-# as(sh):	-defsym sim_cpu=0
-# as(shdsp):	-defsym sim_cpu=1 -dsp 
-
-	.include "testutils.inc"
-
-	start
-	set_grs_a5a5
-
-	# Prime {MACL, MACH} to #1.
-	mov	#1, r0
-	dmulu.l	r0, r0
-
-	# Set up addresses.
-	mov.l	pfour00, r0	! 85
-	mov.l	pfour12, r1	! 17
-
-test:
-	mac.w	@r0+, @r1+	! MAC = 85 * 17 + 1
-
-check:
-	# Check result.
-	assert_sreg	0, mach
-	assert_sreg	85*17+1, macl
-
-	# Ensure post-increment occurred.
-	assertreg0	four00+2
-	assertreg	four12+2, r1
-
-doubleinc:
-	mov.l	pfour00, r0
-	mac.w	@r0+, @r0+
-	assertreg0 four00+4
-
-	set_greg	0xa5a5a5a5, r0
-	set_greg	0xa5a5a5a5, r1
-
-	test_grs_a5a5
-
-	pass
-	exit 0
-
-	.align 2
-four00:
-	.word	85
-	.word	2
-four12:
-	.word	17
-	.word	3
-
-
-pfour00:
-	.long four00
-pfour12:
-	.long four12
diff --git a/src-release b/src-release
index 78d9f83..2b8fa45 100644
--- a/src-release
+++ b/src-release
@@ -160,14 +160,6 @@
 	done
 	cd etc && $(MAKE) info
 	$(MAKE) distclean
-	# Kludge for pr gdb/708.  'configure' configures in
-	# dejagnu/example/calc, but 'make distclean' does not clean in
-	# dejagnu/example.  Someday somebody might fix this in dejagnu,
-	# and then import a new dejagnu into sourceware.  Right now, a
-	# couple of 'rm' commands will get the gdb snapshots working
-	# again.  -- chastain 2003-08-15
-	rm -f dejagnu/example/calc/config.status
-	rm -f dejagnu/example/calc/config.log
 	#
 	mkdir proto-toplev/etc
 	(cd proto-toplev/etc; \
diff --git a/symlink-tree b/symlink-tree
index 22132c7..5b18cab 100755
--- a/symlink-tree
+++ b/symlink-tree
@@ -1,31 +1,6 @@
 #!/bin/sh
 # Create a symlink tree.
 #
-# Copyright (C) 1995, 2000, 2003  Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-#
-# Please report bugs to <gcc-bugs@gnu.org>
-# and send patches to <gcc-patches@gnu.org>.
-
 # Syntax: symlink-tree srcdir "ignore1 ignore2 ..."
 #
 # where srcdir is the directory to create a symlink tree to,